1 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 12:30:56 ] あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。 【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう. ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク):() [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 【前スレ】C/C++の宿題を片付けます 108代目 pc11.2ch.net/test/read.cgi/tech/1211980711/
930 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:05:50 ] >>925 0を代入することでクリアしていた部分をコメントアウトすることでクリアしないようにした。 行、列の2箇所。
931 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:11:10 ] >>930 なるほど、そういう事だったんですね。ありがとうございました。
932 名前:919 mailto:sage [2008/06/18(水) 19:12:07 ] >>836 うpしてから思ったがABC#DEF#HIJをABC#FED#HIJではなくABC#FED#JIHにするっぽいな 後者ならフラグ要らんからrev_flagを含む行(5行)は削っとくれ
933 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:14:12 ] >>898 バッファオーバーフローのバグがあった kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6953.txt
934 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:16:49 ] 暇つぶしに 910 をといてみたぜ。 910の役にはたたないだろうがな。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6954.txt
935 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:17:15 ] >>850 #include <stdio.h> #define ROW 10 #define COL 5 int main(void){ int row[COL]={0},tr,tc[COL]={0},r,c; for(c=0; c<=COL; c++) printf("\t"); printf("合計\n"); // 各行 for(r=ROW; r>0; r--) { for(c=COL-1; c>=0; c--) { row[c]=r*COL-c; tc[c]+=row[c]; } for(c=0,tr=0; c<COL; c++) { tr+=row[c]; printf("\t%d",row[c]); } printf("\t%d\n",tr); } // 各列の合計 printf("合計"); for(c=0; c<COL; c++) printf("\t%d",tc[c]); puts(""); return 0; }
936 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:23:30 ] #include <stdio.h> int count_bits(unsigned) { int count = 0; while (x){ if (x & 1U) count++; x>>1 ; } return (count); } int int_bits(void) { return (count_bits(~0U)); } void print_bits(unsigned x) { int i; for (i= int_bits() - 1; i >= 0; i++) putchar(((x>>1 ) & 1U) ? '1' : '0'); } int main(void) { unsigned nx; printf("非負の整数を入力してください :"); scanf("%u", &nx); putchar('\n'); return 0; } というプログラムにおいて、int count_bits(unsigned)を int count_bits(signed x)とするとどのような現象が置きますか? 理由も書けという問題なのですが。
937 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:24:07 ] >>898 orz kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6956.txt
938 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:27:36 ] >>935 ありがとうございます! 合計値は、前列(行)の合計値を次々に足していく風にしなければならないのですが。。。 一次元配列に於いては次の列(行)にいく際どこでクリアされているのでしょうか。
939 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:36:33 ] >>938 >>850 #include <stdio.h> #define ROW 10 #define COL 5 int main(void){ int row[COL]={0},tr,tc[COL]={0},tmp,r,c; for(c=0; c<=COL; c++) printf("\t"); printf("合計\n"); // 各行 for(r=ROW,tr=0; r>0; r--) { for(c=COL-1; c>=0; c--) { row[c]=r*COL-c; tc[c]+=row[c]; } for(c=0; c<COL; c++) { tr+=row[c]; printf("\t%-d",row[c]); } printf("\t%-d\n",tr);} // 各列の合計 printf("合計"); for(c=0,tmp=0,tr=0; c<COL; c++) { tmp+=tc[c]; tr+=tmp; printf("\t%-d",tmp);} printf("\t%d\n",tr); return 0; }
940 名前: ◆DuoCt8/SKk mailto:sage [2008/06/18(水) 19:56:34 ] >>911-914 >>933 >>937 こんなにたくさん頑張って頂き本当にありがとうございます. これが第一段階らしく,第二・三段階もあるみたいなので,もし良かったら その時にも是非よろしくお願いします.
941 名前:デフォルトの名無しさん [2008/06/18(水) 20:01:32 ] [1] 授業単元:コンピュータプログラミング [2] 問題文(含コード&リンク): 標準入力(キーボード)から一つずつ数値(浮動小数点)を 読み込んで、データの数、平均値、標準偏差を出力するプロ グラムを作成せよ。ただし、データ入力は、空行の入力で終 了するものとする。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6957.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年06月18日まで [5] その他の制限:入力終了の判別方法は、このプログラムを参考にするとよいが、 今回の問題では、入力データを配列等に保存する必要がない ことに注意。配列に保存することにすると、配列の大きさで 入力できるデータ数が制限されてるので、好ましくない。 よろしくお願いします。m(_ _)m
942 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:30:45 ] #include <stdio.h> #include <math.h> int main(void) { double s = 0, a = 0, temp, sigma2; int cnt = 0; char buff[256]; while(1) { fgets(buff, sizeof buff, stdin); if(buff[0]=='\n') break; sscanf(buff, "%lf", &temp); s += temp * temp; a += temp; cnt++; } a /= cnt; s = sqrt(s / cnt - a * a); printf("データ数:%d\n平均:%f\n標準偏差:%f", cnt, a, s); return 0; }
943 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:41:42 ] [1] 授業単元:C++実習 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6958.txt [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC6.0 [3.3] 言語:C++ [4] 期限: [5] その他の制限: お願いします。。
944 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:44:39 ] ::
945 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:48:00 ] >>942 適当に改造してたら使ってない変数残った。 sigma2は消しといて
946 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:50:21 ] サセクア
947 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:55:08 ] [1] C演習 [2] 入力する3以上の整数nに対して、2以上n以下の整数の組の最大公約数を 「ユークリッドの互除法」を用いて計算するプログラムを作れ。 (例:n=6の場合、2と3、2と4、2と5、2と6、3と4、3と5、3と6 4と5、4と6、5と6の10通り) (表示例:n=6の場合) 3 4 5 6 2: 1 2 1 2 3: 1 1 3 4: 1 2 5: 1 [3] [3.1] LINUX [3.3] C [4]6月23日 [5]関数は習ってないので、if,while,forなどを使ってお願いします。 よろしくお願いします。
948 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:56:31 ] [1] C演習 [2] 入力する3以上の整数nに対して、2以上n以下の整数の組の最大公約数を 「ユークリッドの互除法」を用いて計算するプログラムを作れ。 (例:n=6の場合、2と3、2と4、2と5、2と6、3と4、3と5、3と6 4と5、4と6、5と6の10通り) (表示例:n=6の場合) 3 4 5 6 2: 1 2 1 2 3: 1 1 3 4: 1 2 5: 1 [3] [3.1] LINUX [3.3] C [4]6月23日 [5]関数は習ってないので、if,while,forなどを使ってお願いします。 よろしくお願いします。
949 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:02:52 ] >>943 inventory(char *item, double cost, int on_hand) { strcpy_s(inventory::item, item); inventory::cost = cost; inventory::on_hand = on_hand; } inventoryだけを上記のように変更。 namespaceによるローカル変数とメンバ変数の明示を問う問題っぽいけど実務では使うなよ。
950 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:03:11 ] >>945 ありがとうございます。
951 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:09:16 ] 1] 情報プログラミング演習: [2] 問題文(含コード&リンク):標準入力からのテキストデータ中に現れる単語の出現頻度数つき一覧を出力するプログラムを作成せよ。 [3] 環境 [3.1] OS: Windous [3.2] VC 6.0 [3.3] 言語: C++ [4] 期限:2008 6月いっぱい [5] ホントに困っていますのでどの問題でもかまいません 教えてください
952 名前:951 mailto:sage [2008/06/18(水) 21:11:21 ] 間違えました 1] 情報プログラミング演習: [2] 問題1 三角形の底辺の幅、あるいは段数(どちらか一つ)を入力すると、逆三角形を表示する。例えば、底辺5あるいは段数3を入力すると ***** *** * となる。 10個以下の任意のn個(データ数は入力)のデータを入力し、逆順に出力する。 実行結果は奇数と偶数個の例を示すこと。 。 [3] 環境 [3.1] OS: Windous [3.2] VC 6.0 [3.3] 言語: C++ [4] 期限:2008 6月いっぱい [5] ホントに困っていますのでどの問題でもかまいません 教えてください
953 名前:951 mailto:sage [2008/06/18(水) 21:12:26 ] 間違えました 1] 情報プログラミング演習: [2] 問題1 三角形の底辺の幅、あるいは段数(どちらか一つ)を入力すると、逆三角形を表示する。例えば、底辺5あるいは段数3を入力すると ***** *** * となる。 。 [3] 環境 [3.1] OS: Windous [3.2] VC 6.0 [3.3] 言語: C++ [4] 期限:2008 6月いっぱい [5] ホントに困っていますので教えてください
954 名前:デフォルトの名無しさん [2008/06/18(水) 21:12:33 ] [1] 授業単元:プログラミングT [2] 問題: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6959.txt [3.1] OS: WindowsXp [3.2] コンパイラ名とバージョン:visualstdio 2008 [3.3] 言語:C [4] 期限:6月21日 [5] その他の制限:なし。 よろしくお願いします.
955 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:14:01 ] >>948 #include <stdio.h> int main(void) { int i, j, n; scanf("%d", &n); printf(" "); for(i=3; i<=n; i++) printf("%2d", i); putchar('\n'); for(i=2; i<n; i++) { printf("%2d:", i); for(j=3; j<=i; j++) printf("  "); for( ; j<=n; j++) { int a = i, b = j; while((a=a%b)!=0) { b += a; a = b - a; b -= a; } printf("%2d", b); } putchar('\n'); } return 0; }
956 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:14:10 ] そういえば期末の時期だな。
957 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:18:54 ] >>954 #include <stdio.h> int main(void) { char string[100]; char *p; gets(string); p=string; while(*p!=' ') { if(*p=='\0') return 0; p++; } p++; while(*p!='\0'){ putchar(*p); p++; } putchar('\n'); return 0; }
958 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:19:48 ] またwindousか
959 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:20:13 ] >>951 #include<iostream> #include<string> #include<map> int main() { std::string tango; std::map<std::string,int> tango_count; while(std::cin >> tango) { tango_count[tango]++; } for(std::map<std::string,int>::iterator n=tango_count.begin();n!=tango_count.end();++n) { std::cout << n->first << " : " << n->second << std::endl; } return 0; }
960 名前:951 mailto:sage [2008/06/18(水) 21:24:50 ] >>959 さん ありがとうございます。
961 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:26:20 ] >>948 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6960.c
962 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:27:18 ] >>953 まちるだ
963 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:27:49 ] [1] 授業単元:プログラム演習 [2] 引数を2つの実数値とし,その2つのうち大きいほうの値を返す関数max()および小さいほうの値を返す関数min()を作成せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年06月20日まで [5] コンパイルできたのですが、正しい値が帰ってきません。 どこがおかしいのか教えてください。 よろしくお願いします。 ↓
964 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:28:15 ] #include<stdio.h> double max(double a,double b); double min(double a,double b); main(){ double x,y,MAX,MIN; printf("実数を二つ入力してください\n"); scanf("%f",&x); scanf("%f",&y); MAX=max(x,y); MIN=min(x,y); printf("max=%f\n",MAX); printf("min=%f\n",MIN); } double max(double a,double b){ double z; if(a<b){z=b;}else{z=a;} return(z);} double min(double a,double b){ double z; if(a<b){z=a;}else{z=b;} return(z);}
965 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:28:17 ] >>954 > ただし,文字列の入力には関数 gets を用いること. ダウト!!!!講師にやめれと抗議すべき
966 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:28:53 ] [1] 授業単元:暇潰し [2] 問題文(含コード&リンク): 平面上にn個の点について、それぞれ他の全ての点に対し2点を結ぶ辺を作り、その重みをユークリッドノルムとして計算し、昇順にソートする。 nは10万以上のため、全ての重みをメモリ上で保持してソートするのは現実的でない。現実の計算機上で高速に計算しソートする方法を示せ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: C++ [4] 期限: (無期限] [5] その他の制限: なし
967 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:33:01 ] >>966 (n-1)! 個の重みを昇順にソートするって事?
968 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:33:22 ] #ifdef gets #undef gets #endif #define gets fgets ...
969 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:33:56 ] >>965 その後の講義でバッファオーバーフローの説明があるのかもしれない
970 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:34:30 ] >>969 課題で使えと出している時点でダウト
971 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:37:38 ] >>967 n(n-1)個の辺の重みです。重みは可換ですからn(n-1)/2個で済みますが
972 名前:954 [2008/06/18(水) 21:46:13 ] >>957 ありがとうございました<m(__)m>。
973 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:48:40 ] >>970 そんなもん後から知ればいいこと。 道具の良し悪しよりも道具の使い方を知るタイミングだ
974 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:49:05 ] >>963 scanf("%f",...); →scanf("%lf",...); scanf の変換指定%f はfloat型 %lfはdouble型
975 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:52:26 ] >>973 いちいち客観的にタブーとされているものを擁護するレスがうぜーよ素人
976 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:56:41 ] 玄人ktkr
977 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:57:31 ] オーバーランについて理解していて、使うことを容認するような意見するか・・・ 明らかに考え方がおかしい。敢えて使わせることなんてせず、問題があるなら それは授業で説明すれば良いこと。問題を起こさせる課題だとしても 万が一生徒のコンピュータにトラブルが起こったら、賠償モンだよw
978 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:59:07 ] >>974 できました。 ありがとうございます。
979 名前:951 mailto:sage [2008/06/18(水) 22:02:16 ] >>962 さん ありがとうございます
980 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:03:28 ] getsなんて最初からなかったものとして教えなければいいのにな。 scanfのほうがいくらか安全だろう。
981 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:13:42 ] 宿題くらいにしか使えないんだからスルーしてやれ
982 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:15:27 ] >>975 玄人か。すげえな。 一応俺もプログラムでご飯食べてるけど、まあどんな関数でも いつobsoluteになるかわからんよね。 がんばってな。応援してるよ。
983 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:18:08 ] obsolute の検索結果 約 33,900 件中 1 - 10 件目 (0.18 秒) obsolete の検索結果 約 28,200,000 件中 1 - 10 件目 (0.18 秒)
984 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:18:37 ] Oberfoot取りイクナイ
985 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:18:39 ] [1] 授業単元:プログラム演習 [2] int型配列x,yを次のように宣言する。 int x[5]={3,-2,-4,2,3}; int y[7]={1,3,3,-2,3,0,5}; このとき,xおよびyの配列の各要素の合計を返す関数ArraySum()を作成せよ。 なお,xとyとで2つの異なる関数を作る必要はない。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年06月20日まで [5] これも、コンパイルできたのですが、正しい値が帰ってきません。 どこがおかしいのか教えてください。 よろしくお願いします。 ↓
986 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:19:06 ] #include<stdio.h> int ArraySum(int data[]); main(){ int x[5]={3,-2,-4,2,3}; int y[7]={1,3,3,-2,3,0,5}; int sumx=ArraySum(x); int sumy=ArraySum(y); printf("配列xの合計は%d",sumx); printf("配列yの合計は%d",sumy); } int ArraySum(int data[]){ int i,sum=0; for(i=0;i<sizeof(data)/sizeof(data[0]);i++){ sum=sum+data[i]; } return(sum); }
987 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:21:51 ] >>986 printf("%d\n", sizeof(data)); を追加してみ
988 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:27:26 ] >>984 Oberfootの検索結果 1 件中 1 - 1 件目 (0.02 秒)
989 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:29:44 ] >>984 120でした。 ということは、i<30になってるんでしょうか
990 名前:989 mailto:sage [2008/06/18(水) 22:30:12 ] >>987 でした すいません
991 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:31:46 ] >>986 int ArraySum(int data[], int size) { int i, sum = 0; for(i=0; i<size; i++) sum += data[i]; return sum; } 配列を関数に渡すときは、サイズも渡さないと。
992 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:32:59 ] この予想外の展開に玄人はどう答えるのか楽しみである
993 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:34:07 ] 自分が指摘されると、相手にお前はどうすんだと意見を請うところも 性格が捻くれているのがバレバレ。いちいちそういうこと言うから嫌われるんだよw おまけに、わけの分からない擁護。勝手な憶測でつじつま合わせにもならん 無駄な戯言を。
994 名前:989 mailto:sage [2008/06/18(水) 22:35:38 ] 配列を関数に渡してから、サイズを測ることはできますか?。
995 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:35:46 ] ポインタ一個で120B…ねーよ
996 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:36:03 ] >>993 謝るくらいなら最初からやんな
997 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:40:59 ] >>994 できません
998 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:41:16 ] 次スレ C/C++の宿題を片付けます 110代目 pc11.2ch.net/test/read.cgi/tech/1213796455/
999 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:42:29 ] ttp://jp.youtube.com/watch?v=RIL28wqOQGA getsの問題点知ってる?知らない? 知らないことあるかー、後で授業で説明するかもしれないだろっ! お前これどうすんだっ?ん?
1000 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:42:37 ] >>993 俺はあんたみたいなわけ分からんヤツには何も請うてない。 玄人の意見が聞きたいだけだ。
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。