ddnp009のプロフィール
- ベストアンサー数
- 15
- ベストアンサー率
- 25%
- お礼率
- 0%
- 登録日2004/09/13
- STLのmapについて
いつもお世話になっております。 今回はmapについてお聞きしたいです。 現在mapを使っていますが、mapを構造体に入れようと struct PARAM { int i; char str; map<int, int> map; }; のようにしていますが、<が不正です、のようなことを言われてうまくいきません。 構造体にmapを入れることは可能なのでしょうか? 可能ならばその方法を教えていただけると幸いです。 以上、ご教授願います。 環境は OS WindowsXP SP2 VC++6.0 です。
- C言語 逆順の配列の仕方を教えてください
今、大学でC言語の課題をやっています。サンプルが与えられています。 その課題は、配列の逆順です。 for文を使って、実行結果は以下のようにならなければならなく、「並び替えの結果は再び num1, num2 に保存される」という条件なのですが、逆順になるにはどのようなプログラムを組めば良いのでしょうか? ソースの「 /* ここに処理を書く */」にプログラムを書かなければいけないのですが、まったくの初心者でわかりません。誠にお手数ですが、教えていただければ幸いです。宜しくお願いいたします。 -----実行結果----- C:\c_lang>reverse --- before --- 2 4 9 10 5 3 1 7 8 6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 --- after --- 6 8 7 1 3 5 10 9 4 2 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 -----以下ソース----- #include <stdio.h> void print_num( int *num, int len ); void reverse_num( int *num, int len ); int main( void ) { int num1[10]={2,4,9,10,5,3,1,7,8,6}; int num2[15]={1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15}; printf("--- before ---\n"); print_num( num1, 10 ); print_num( num2, 15 ); /* 逆順に並べ替え */ reverse_num( num1, 10 ); reverse_num( num2, 15 ); printf("--- after ---\n"); print_num( num1, 10 ); print_num( num2, 15 ); return 0; } void print_num( int *num, int len ) { int i; for( i=0; i<len; i++ ){ printf( "%d ", num[i] ); } printf("\n"); } void reverse_num( int *num, int len ) { /* ここに処理を書く */ } -----ソースここまで-----
- std::stringクラスのc_str()で取得した文字列をいじることは可能ですか?
c++で、以下のようなコードは問題ないでしょうか? // chrの中身の小文字を大文字にする void func(char* chr); std::string str("aaa"); const char* str_p = std.c_str(); func((char*)str_p); ←これは大丈夫ですか? //このあとstrに対して文字列を追加したりいろいろ処理する。 このようにc_strで取得したconst char*をconstをはずして 強引にいじくることは問題ないでしょうか?
- プログラム問題(4)
以下の問題のプログラムをやったのですが、コマンドプロンプトで実行してみるとエラーになってしまうのですが、どなたか問題点を指摘していただけないでしょうか? 【問題】 学籍番号、氏名、出席からなる10人分のデータがある。出席の悪いものから並び替 えて表示するプログラム。 例 CA180002 山田太郎 70 CA170001 山田次郎 60 データは、適当なものを使います。 【プログラム】 #include <stdio.h> #include <string.h> typedef struct student_t { char id[9]; char name[51]; unsigned int attendance; } student; student stu[10]; int stu_i = 0; void student_new(const char *, const char *, unsigned int); void student_sort(void); int main(void) { int i; student_new("5", "宮本恒靖", 5); student_new("14", "三都主アレサンドロ", 1); student_new("21", "加地亮", 9); student_new("22", "中澤佑二", 6); student_new("7", "中田英寿", 2); student_new("8", "小笠原満男", 8); student_new("10", "中村俊輔", 7); student_new("15", "福西崇史", 3); student_new("9", "高原直泰", 4); student_new("13", "柳沢敦", 0); student_sort(); for (i = 0; i < stu_i; ++i) { printf("%s %s %d\n", stu[i].id, stu[i].name, stu[i].attendance); } } void student_new(const char *id, const char *name, unsigned int att) { strcpy(stu[stu_i].id, id); strcpy(stu[stu_i].name, name); stu[stu_i].attendance = att; stu_i++; } void student_sort(void) { int i, j; student tmp; for (i = 0; i < stu_i; ++i) { for (j = i + 1; j < stu_i; ++j) { if (stu[i].attendance > stu[j].attendance) { tmp = stu[i]; stu[i] = stu[j]; stu[j] = tmp; } } } }
- ベストアンサー
- C・C++・C#
- hamasaki--
- 回答数1