1 名前:デフォルトの名無しさん [2007/10/23(火) 23:48:35 ] あなたが解けない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++の宿題を片付けます 97代目 pc11.2ch.net/test/read.cgi/tech/1191937213/
331 名前:修正版 [2007/10/27(土) 04:06:02 ] >>330 #include <stdio.h> #include <math.h> double f(double x){return exp(-x*x);} double g(double x){return 1/sqrt(1+x*x*x*x);} #define F(x,h) (f(x) + 4*f(x+h) + f(x+2*h)) * h/3 #define G(x,h) (g(x) + 4*g(x+h) + g(x+2*h)) * h/3 int main(){ double x,sum,h=0.1; sum=0; for(x=0;x<1;x+=2*h)sum+=F(x,h); printf("%f\n",sum); sum=0; for(x=0;x<1;x+=2*h)sum+=G(x,h); printf("%f\n",sum);}
332 名前:デフォルトの名無しさん [2007/10/27(土) 04:12:10 ] 何か邪魔臭くなっていましたね さんくすこ
333 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:27:42 ] まだやってたのか。俺は寝てしまって今起きた #define F(x,h) (f(x) + 4*f(x+h) + f(x+2*h)) * h/3 #define G(x,h) (g(x) + 4*g(x+h) + g(x+2*h)) * h/3 じゃなくて #define F(x,h) (f(x) + 4*f(x+h/2) + f(x+h)) * h/6 #define G(x,h) (g(x) + 4*g(x+h/2) + g(x+h)) * h/6 にするかもしくはh=0.05にしないといけない。
334 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:35:59 ] すまん。寝ぼけて間違えた。 >>331 でOK。
335 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:37:39 ] やっと数値のずれが直ったので貼る #include<stdio.h> #include<math.h> double quadInterpol( double (*fun)( double ), double begin, double h ) { return ((*fun)( begin ) + 4.0*(*fun)( begin + h ) + (*fun)( begin + 2.0*h )) * h/3.0; } double integral( double (*fun)( double ), double begin, double end, double h ) { double result = 0.0; double pos = begin; do { result += quadInterpol( (*fun), pos, h ); pos += 2.0*h; } while( pos < end ); return result; } double f(double x) { return exp(-x*x); } double g(double x) { return 1.0/sqrt(1 + x*x*x*x); } int main(void) { const double diff = 0.1; printf("result=%f\n",integral(f,0.0,1.0,diff)); printf("result=%f\n",integral(g,0.0,1.0,diff)); return 0; }
336 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:55:22 ] ひゃっほう。
337 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 10:08:16 ] なんでシンプソン公式だけでこんなにスレ進むんだよw
338 名前:デフォルトの名無しさん [2007/10/27(土) 10:59:46 ] [1] 授業単元: プログラミング [2] 問題文:整数nをscanfで入力後"factorial"という関数を呼び出して、n!を 求めるプログラム(結果はmainにて表示) (定義例:int factorial(int num)) [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: ([2007年10月28日まで] [5] その他の制限:定義例を使ってください if,while,switch,forは習いました お願いします
339 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:06:51 ] #include <stdio.h> int factorial(int num) { int i, ret = 1; for(i=2; i<=num; i++) ret *= i; return ret; } int main(void) { int n; printf("nを入力:"); scanf("%d", &n); printf("%dの階乗は%d\n", n, factorial(n)); return 0; }
340 名前:デフォルトの名無しさん [2007/10/27(土) 11:17:19 ] >>339 全くわかんなかったのに数分で解いてるよ(>_<) ありがとうございました。
341 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:27:20 ] て言うか既出ネタだろ >>235-237 で
342 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:29:23 ] 階乗は頻出の基本問題だし、このスレで答えてる人なら数分とかじゃなくて、問題見た瞬間に即答だろ。
343 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:49:08 ] テンプレレベルだよな・・・と思ったらwikiにも書いてないな 今から編集してくる
344 名前:デフォルトの名無しさん [2007/10/27(土) 11:51:23 ] >>342 さすがですね 勉強不足ですいません
345 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:09:39 ] ×勉強不足 ○勉強する気がない
346 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:13:00 ] LU分解とか死ねwwwwww 京大電電でつけど、プログラムの課題がイミフwwwwwwww
347 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:15:15 ] それ、プログラム以前の問題だろ Fランの大学ですらやる基本的な問題だし
348 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 13:38:28 ] 【質問テンプレ】 [1] 授業単元: 画像工学 [2] 問題文(含コード&リンク):ある特定の画像を自動的に判別する フォルダ内の画像を自動的に判別し,緑の画像があればhighlightのフォルダに なければotherのフォルダに分別する [3] 環境 [3.1] OS: (Windows/Linux/等々) Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) よくわかりません [3.3] 言語: (C/C++/どちらでも可 のいずれか) Visual C++ 2005 [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 来週水曜日まで [5] その他の制限: 特にありません kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5159.zip
349 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 13:47:53 ] >>347 池沼でサーセンwwwww
350 名前:デフォルトの名無しさん [2007/10/27(土) 14:08:07 ] 348 こんなの面倒 授業でていたやつのほうが関数にくわしいだろ
351 名前:デフォルトの名無しさん [2007/10/27(土) 15:52:58 ] [1] 授業単元: C言語 [2] 問題文:2×2の行列A,Bの積(cのij成分=Σaのij成分bのij成分)を表示する a[i][j]=[0 4] b[i][j]=[5 0] [-5 -1] [0 -5] [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: ([2007年10月28日まで] [5] その他の制限:for文を用いてください
352 名前:デフォルトの名無しさん [2007/10/27(土) 16:02:13 ] #include <stdio.h> main(){ int i,j,x=0,a[2][2]={0,4,-5,-1},b[2][2]={5,0,0,-5}; for(i=0;i<2;i++)for(j=0;j<2;j++)x+=a[i][j]*b[j][i]; printf("%d\n",x); }
353 名前:デフォルトの名無しさん [2007/10/27(土) 16:12:53 ] 2次元配列のサイズを調べる方法ありますか?
354 名前:デフォルトの名無しさん [2007/10/27(土) 16:16:09 ] #include <stdio.h> main(){ int x[70][6],m,n; m=sizeof(x)/sizeof(x[0]); n=sizeof(x[0])/sizeof(x[0][0]); printf("%d %d",m,n); }
355 名前:デフォルトの名無しさん [2007/10/27(土) 16:27:45 ] #include <stdio.h> main(){ int i,j,k; int a[2][2]={0,4,-5,-1},b[2][2]={5,0,0,-5},c[2][2]; for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++) c[i][j]=a[i][k]*b[k][j]; for(i=0;i<2;i++){ for(j=0;j<2;j++)printf("%d ",c[i][j]); printf("\n");} }
356 名前:デフォルトの名無しさん [2007/10/27(土) 16:34:11 ] [1] 授業単元: C言語 [2] 問題文:キーボードから5点の座標を二次元配列に入力し、 原点から最も離れた点の座標を出力するプログラムを作成せよ [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: ([2007年10月28日まで] [5] その他の制限:多次元配列まで習ってます
357 名前:147 mailto:sage [2007/10/27(土) 16:35:47 ] 機械に仕事を割り当てるところまでやった すなわち、問題文の >5種類の性能の異なる加工機械が各1台ある工場で、100種類の製品を作っている。 >各製品がその日に受注した場合、LT(完成までにかかる日数)を表示するスケジューリングプログラムを作成せよ。 >また、ランダムに発注があり、発注があった場合にのみ実際に機械は使用される。 >すなわち、発注が一度もなければ100日間ずっと同じLTが表示され、発注があれば、 >その日以降は機械が使用されているので、LTが長くなる可能性があるということ。 ところまで。 // 生産計画・生産管理 // 97th-res: >>168 (>>111 , >>211 , >>229 ) // 2007/10/27 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5160.txt
358 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 16:46:34 ] >>356 #include<stdio.h> #include<math.h> int main(void) { double maximum_distance=0.0, distance; double x, y, point[5][2], (*maximum_point)[2]; int i; for(i=0;i<5;i++) { printf("Input x :"); scanf("%lf", &x); printf("Input y :"); scanf("%lf", &y); point[i][0]=x; point[i][1]=y; distance=sqrt(x*x+y*y); if(distance>maximum_distance || !i) { maximum_distance=distance; maximum_point=&point[i]; } } printf("\n( %lf , %lf )\n", (*maximum_point)[0], (*maximum_point)[1]); return 0; }
359 名前:入力うまくいかない [2007/10/27(土) 16:48:36 ] #include <stdio.h> main(){ int x[6],y[6],i,ban; double max=0,d; for(i=1;i<6;i++){ printf("\n%d 番目のx座標を入力して下さい ",i); x[i]=getchar(); printf("\n%d 番目のy座標を入力して下さい ",i); y[i]=getchar();} for(i=1;i<6;i++){ d=x[i]*x[i]+y[i]*y[i]; if(d>max){max=d;ban=i;}} printf("原点からもっとも遠い座標は(%d,%d)です ",x[ban],y[ban]); }
360 名前:scanfにしたら良くなったよ [2007/10/27(土) 16:54:18 ] #include <stdio.h> main(){ int x[6],y[6],i,ban; double max=0,d; for(i=1;i<6;i++){ printf("\n%d 番目のx座標を入力して下さい ",i); scanf("%d",&x[i]); printf("\n%d 番目のy座標を入力して下さい ",i); scanf("%d",&y[i]);} for(i=1;i<6;i++){ d=x[i]*x[i]+y[i]*y[i]; if(d>max){max=d;ban=i;}} printf("\n原点からもっとも遠い座標は(%d,%d)です ",x[ban],y[ban]);}
361 名前:356 [2007/10/27(土) 16:54:35 ] >>358 さん >>359 さん 早い回答ありがとうございました!
362 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:00:45 ] // >>356 ソート付き #include <iostream> #include <math.h> #define NUM 5 using namespace std; int main (void){ double p[NUM][2], absolute[NUM]; for (int i=0; i<NUM; i++){ cout << i+1 << "番目の点の" << endl; cout << "\tx座標を入力してください : "; cin >> p[i][0]; cout << "\ty座標を入力してください : "; cin >> p[i][1]; } for (int i=0; i<NUM; i++) absolute[i] = sqrt(p[i][0] * p[i][0] + p[i][1] * p[i][1]); double tempabs, tempx, tempy; for (int i=0; i<NUM-1; i++) { for (int j=NUM-1; j>i; j--) { if (absolute[j-1] > absolute[j]) { tempabs = absolute[j]; tempx = p[j][0]; tempy = p[j][1]; absolute[j] = absolute[j-1]; p[j][0] = p[j-1][0]; p[j][1] = p[j-1][1]; absolute[j-1] = tempabs; p[j-1][0] = tempx; p[j-1][1] = tempy; }}} cout << "(" << p[NUM-1][0] << ", " << p[NUM-1][1] << ")" << endl; return (0); }
363 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:05:37 ] >>356 既に何人も回答してるけど参考までに #include <stdio.h> int main(int argc, char* argv[]) { int i, p[5][2], r2[5], r2max = 0; printf("input points\n"); for(i=0;i<5;i++) { printf("point[%d] : ", i); scanf("%d %d", p[i], p[i]+1); r2[i] = p[i][0] * p[i][0] + p[i][1] * p[i][1]; if(r2max < r2[i]) { r2max = r2[i]; } } printf("maximum range points\n"); for(i=0;i<5;i++) if(r2[i] == r2max) printf("point[%d] : %d %d\n", i, p[i][0], p[i][1]); return 0; }
364 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:29:58 ] すいません!このJAVAコードをCに直せって言われました! 直してください!!!! public static int[] invoke(int[] input){ //WARNING: This will destroy the contents of the input array //This function assumes input.length=2^n, n>1 int[] output = new int[input.length]; for(int length = input.length >> 1; ; length >>= 1){ //length=2^n, WITH DECREASING n for(int i = 0; i < length; i++) { int sum = input[i*2]+input[i*2+1]; int difference = input[i*2]-input[i*2+1]; output[i] = sum; output[length+i] = difference; } if (length == 1) return output; //Swap arrays to do next iteration System.arraycopy(output, 0, input, 0, length<<1); } }
365 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:03:32 ] >>364 >>1 読んでから書き直し
366 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:07:30 ] >>365 つまりテンプレ通りに書けってこった とりあえずこのコードが何をするかぐらいは書いたほうがいい
367 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:20:27 ] >>357 根本的に考え方が間違ってるよ。 これは生産計画立案の問題。
368 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:20:53 ] (int[] input)これをcで引数一個で実現するのは無理では? 最後尾にNULL入れた配列が欲しくなったり、 サイズを持った構造体へのポインタにしたくなったり、 int *input, int sizeみたいに素直になりたかったり。
369 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:37:29 ] 突っ込むところはinput.lengthこっちだろ
370 名前:aho mailto:sage [2007/10/27(土) 19:02:35 ] >>364 今書いてて思ったけど何がしたいのかいまいち分からない。 sumとdifferenceを計算した後何でoutputを上書きするの? どんどん足し込む仕様じゃないの? とりあえず、今ので書いてみるよーん
371 名前:aho mailto:sage [2007/10/27(土) 19:08:59 ] どうもごめんちゃーい。 最後の行のarrayCopyみてませんでした。
372 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:09:34 ] >>370 ものすごい助かります(;; 離散ウェーブレット変換 ttp://ja.wikipedia.org/wiki/%E9%9B%A2%E6%95%A3%E3%82%A6%E3%82%A7%E3%83%BC%E3%83%96%E3%83%AC%E3%83%83%E3%83%88%E5%A4%89%E6%8F%9B のHaarWavletというものです。
373 名前:aho mailto:sage [2007/10/27(土) 19:24:07 ] /* メモリの確保は呼び出し元で行う。 この関数内でメモリを確保して配列を返すと、メモリの解放ができない。 \param input 入力配列 \param output 出力配列 \param size 入力配列の大きさ */ void invoke(int* input, int* output, int size){ // 1/2 for(int length = size >> 1; ; length >>= 1){ for(int i=0; i<length; i++){ int sum = input[i*2] + input[i*2 + 1]; int difference = input[i*2] - input[i*2+1]; output[i] = sum; output[length+i] = difference; } if(length == 1) return; //array copy for(int i=0; i<length<<1; i++){ output[i] = input[i]; } } } 一応作ってみた。 確認お願い!
374 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 21:27:54 ] >>373 ああ…ありがたい 今確認します!!!どうもありがとう!!!!涙出てきた
375 名前:デフォルトの名無しさん [2007/10/27(土) 22:51:52 ] [1] 授業単元: C言語入門 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5163.txt [3] 環境 [3.1] OS:Windows [3.3] 言語: C言語 [4] 期限: 10月28日午前12時30分まで よろしくおねがいします
376 名前:aho mailto:sage [2007/10/27(土) 23:01:10 ] 課題1 int sqr(int x){ return x * x; } int pow4(int x){ return sqr(x) * sqr(x); }
377 名前:デフォルトの名無しさん [2007/10/27(土) 23:01:24 ] >>375 最後のだけやってもいいよ 任意サイズでやってやるぜ
378 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:01:32 ] 関数sqrってなんだ?sqrtの間違い? でもなんで四乗値求めるのに平方根必要?
379 名前:aho mailto:sage [2007/10/27(土) 23:02:37 ] 課題2 void hello(void){ printf("こんにちは。\n"); return; }
380 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:02:42 ] squareって事ね。
381 名前:デフォルトの名無しさん [2007/10/27(土) 23:12:34 ] 任意サイズの2次配列を引数にするにはどうすればいい?
382 名前:aho mailto:sage [2007/10/27(土) 23:14:56 ] 課題3 void rev_intary(int vc[], int no){ int i; int* tmp = (int*)malloc(sizeof(int) * no); /* noをコピーしておく */ for(i=0; i<no; i++) tmp[i] = vc[i]; for(i=0; i<no; i++) vc[i] = tmp[no-1-i]; free(tmp); return; } stdlib.hをインクルードするように!
383 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:15:02 ] 配列のポインタかポインタのポインタを使う
384 名前:デフォルトの名無しさん [2007/10/27(土) 23:20:08 ] >>383 サイズをどうやって保存するの?
385 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:22:02 ] パンチで
386 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:22:17 ] 保存はできない。引数でサイズ指定するしかない。
387 名前:168 [2007/10/28(日) 00:20:59 ] >>357 ありがとうございます。 続きはやっていただけませんか?
388 名前:デフォルトの名無しさん [2007/10/28(日) 00:21:53 ] これうまくいかないけどなぜでしょうか?サイズがちゃんと求まりません #include <iostream> #include <vector> using namespace std; void sizehyoji(vector< vector<int> > x){ int m,n; m=sizeof(x)/sizeof(x[0]); n=sizeof(x[0])/sizeof(x[0][0]); printf("%d %d",m,n);} main(){ int i,j,M=200,N=100; vector< vector<int> > x; x.resize(M); for(i=0;i<M;i++)x[i].resize(N); for(i=0;i<M;i++)for(j=0;j<N;j++)x[i][j]=0; sizehyoji(x);}
389 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:24:21 ] >>388 vectorはsize()を使え
390 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:26:59 ] >>375 課題3 void rev_intary(int vc[], int no) { int temp, i, n = no / 2; for(i=0; i<n; i++) { temp = vc[i]; vc[i] = vc[no-1-i]; vc[no-1-i] = temp; } }
391 名前:デフォルトの名無しさん [2007/10/28(日) 00:27:20 ] >>389 できました vectorでやればサイズ渡せますね #include <iostream> #include <vector> using namespace std; void sizehyoji(vector< vector<int> > x){ printf("%d %d",x.size(),x[0].size());} main(){ int i,j,M=200,N=100; vector< vector<int> > x; x.resize(M); for(i=0;i<M;i++)x[i].resize(N); sizehyoji(x);}
392 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:32:19 ] >>375 課題4 void mul(const int ma[2][3], const int mb[3][2], int mc[2][2]) { int i, j, k; for(i=0; i<2; i++) { for(j=0; j<2; j++) { for(k=0; k<3; k++) mc[i][j] += ma[i][k] * mb[k][j]; } } }
393 名前:デフォルトの名無しさん [2007/10/28(日) 01:01:51 ] 任意サイズのやつやろうとしたけど面倒になった あとでやるかもしれない 書き込んでおく #include <iostream> #include <vector> using namespace std; class Gyouretu { vector< vector<int> > x; public: Gyouretu(){Gyouretu(1,1);} Gyouretu(int M,int N){int i,j;x.resize(M);for(i=0;i<M;i++)x[i].resize(N); for(i=0;i<M;i++)for(j=0;j<N;j++)x[i][j]=0;} resize(int M,int N){Gyouretu(M,N);} Gyouretu& Gyouretu::operator=(Gyouretu& y){ if(&x!=this){} return *this;} }; main(){ Gyouretu x; x.resize(6,5);}
394 名前:デフォルトの名無しさん [2007/10/28(日) 04:31:04 ] 全ディレクトリのファイルでサイズが一致するものをプルパスで出力せよ
395 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 04:38:32 ] プルパスについてkwsk
396 名前:デフォルトの名無しさん [2007/10/28(日) 04:42:58 ] 植田佳奈 さんってこんな人だったの・・・? 相手の人、可哀想;; www.nicovideo.jp/watch/sm1282003 25分14秒付近より ●植田佳奈、最近人生を丸投げしたくなることは?というフリに、「こないだー、悪口を絶賛喋ってた ら、後ろに本人いて(笑)あんなことほんとにあるんだ!って思って、超びっくりしちゃった(笑) 実名って言うかその人しかあり得ないような悪口をバンバン言ってたの。そしたら、”そんな風に思っ てたんだ、ごめんね”って逆に謝られちゃって…(笑)」
397 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 10:19:24 ] [2] 問題文(含コード&リンク):携帯の文字入力をコマンドプロンプトから行うプログラムをつくれ [3] 環境 [3.1] OS: WindowsXP [3.2] VisualStudio 2008 [3.3] 言語: C [4] 期限: はやめに 途中までは作っているのですが、シンボルが重複しているみたいなエラーがでてしまいます デバッグと、濁点等の変換処理を手伝ってもらえませんか? Shift-jisでやろうと思うのですがこれでいいのかよくわかりません・・・ テンプレのうpろだに何故かうpできなかったので、別のうpろだを使いました www.uploda.org/uporg1085799.zip.html よろしくお願いします
398 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 11:59:19 ] >>397 [1]が抜けてる 期限が曖昧 その上マルチ そしてVisualStudio2008ってまだβ版だろ、そんなもん宿題に使うな
399 名前:397 mailto:sage [2007/10/28(日) 12:41:20 ] すいません。あせってて・・・ [1] 授業単元: C言語 期限:今日中になりました VisualStudio2005でも同じエラーでした
400 名前:デフォルトの名無しさん [2007/10/28(日) 14:14:11 ] >>352 さん >>355 さん お礼の返事送るのが遅れて申し訳ありませんでした >>351 の問題に答えていただきありがとうございました
401 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 15:58:29 ] 1] 授業単元: c言語 [2] 問題文:1.文字列の先頭のアドレスを引数とし、 その文字列の中にある文字’A’を探してそれが何番目かを計算し、 ‘A’があればその値を、なければ0を返値とする関数を作成せよ。 2.1.で作成した関数を用いて、自分の学籍番号をポインタに代入し、 その中で文字'A'を探してそれを先頭に持ってくるプログラムを作成せよ。 [3] 環境 [3.1] OS:windows [3.2] VisualStudio2005 [3.3] 言語:c [4] 期限:10月31日まで [5] その他の制限:特になし 問題が2個ありますが、よろしくお願いします
402 名前:デフォルトの名無しさん [2007/10/28(日) 16:08:15 ] #include<stdio.h> fnc(char *c){ int n; for(n=0;c[n]!='\0';n++)if(c[n]=='A')break; if(c[n]=='A')return n+1; else return 0; } main(){ char c[]="btfguhnexthgd,gj.lhgjkgh,nfgnvhg"; printf("%d\n",fnc(c)); }
403 名前:デフォルトの名無しさん [2007/10/28(日) 16:11:30 ] #include<stdio.h> fnc(char *c){ int n; for(n=0;c[n]!='\0';n++)if(c[n]=='A')break; if(c[n]=='A')return n+1; else return 0; } main(){ int i,n; char c[]="Gakusekibango ha AGS000123"; printf("%s\n",c); n=fnc(c); for(i=n-1;i>=0;i--)c[i]=c[i-1];c[0]='A'; printf("%s\n",c); }
404 名前:デフォルトの名無しさん [2007/10/28(日) 16:30:14 ] [1] 授業単元: C言語 [2] 問題文:整数nをscanfで入力後"prime"という関数を呼び出して、 nが素数ならば1(それ以外は0)を繰り返し、mainにて「○は素数です(ではありません)」 を表示させよ [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Visual Studio 2005 [3.3] 言語: C [4] 期限: ([2007年10月28日まで] [5] その他の制限:if文を用いる
405 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:37:23 ] nが素数ならば1(それ以外は0)を返し、 だよな?
406 名前:デフォルトの名無しさん [2007/10/28(日) 16:42:35 ] #include<stdio.h> prime(int p){ int n,N=p/2; for(n=2;n<N;n++)if(p%n==0)break; if(n<N)return 0; else return 1;} main(){ int p; scanf("%d",&p); if(prime(p))printf("%dは素数です",p); else printf("%dは素数ではありません",p); }
407 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:46:57 ] >>406 N=p/2 でpが奇数だったらNに入るのはintじゃなさそうな気がする
408 名前:デフォルトの名無しさん [2007/10/28(日) 16:47:22 ] #include<stdio.h> prime(int p){ for(int n=2;n<p/2;n++)if(p%n==0)return 0;return 1;} main(){ int p;scanf("%d",&p); if(prime(p))printf("%dは素数です",p); else printf("%dは素数ではありません",p);}
409 名前:デフォルトの名無しさん [2007/10/28(日) 16:48:53 ] >>407 #include<stdio.h> main(){ int p=5; int N=p/2; printf("Nは%dです",N); }
410 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:59:01 ] #include<stdio.h> int prime(int p) { int n; for(n=2; n<=p/2; n++) if(!(p%n)) return 0; return 1; } int main(void) { int p; scanf("%d",&p); printf(prime(p) ? "%dは素数です" : "%dは素数ではありません", p); return 0; }
411 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:00:09 ] 0 1
412 名前:デフォルトの名無しさん [2007/10/28(日) 17:06:42 ] >>405 その通りでした。すいません
413 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:06:55 ] >>404 #include <stdio.h> int prime(int n) { int i; if(n<2) return 0; for(i=2; i*i<=n; i++) if(n%i==0) return 0; return 1; } int main(void) { int n; scanf("%d", &n); if(prime(n)==0) printf("%dは素数ではありません\n", n); else printf("%dは素数です\n", n); return 0; }
414 名前:デフォルトの名無しさん [2007/10/28(日) 17:43:11 ] cディレクトリのファイルでサイズが一致するものを出力せよ
415 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:10:14 ] はい。
416 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:10:35 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 8行10列の二次元配列においてです。 1行目の配列と2行目の配列を足します。(できた配列を配列Aとよぶ) 次に配列Aと3行目の配列を足します。(できた配列を配列Bとよぶ) 次に配列Bと4行目の配列を足します。(できた配列を配列Cとよぶ。) 次に 5行目の配列と6行目の配列を足します。(できた配列を配列aとよぶ) 次に配列aと7行目の配列を足します。(できた配列を配列bとよぶ) 次に配列bと8行目の配列を足します。(できた配列を配列cとよぶ。) そして配列Cを1行目、配列cを2行目とする 2行10列の二次元配列を表示しろ。(つまり4行の配列をたせということです) 配列のそれぞれの足し算は別関数にて行いなさい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2007年10月29日まで [5] その他の制限: なし よろしくお願いします。
417 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:15:39 ] >>416 これはなにか物理的演算なのかな?
418 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:18:12 ] >>416 1行目から4行目の各成分をそれぞれ足してCとする。 5行目から8行目の各成分をそれぞれ足してcとする。 Cとcを横に並べて2x10にする。 という意味?
419 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:19:05 ] 関数内はlogの加算にあとでかえますから。 logの加算じゃなかったらこんなめんどいことはしません。
420 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:21:16 ] 8X10の配列を 4X10と4X10とみて、4行ずつ配列を足します。そしたら1X10と1X10になるでしょう? でこの1X10と1X10をいっしょにして2X10というわけです。 対数の加算なので一辺には計算できないわけです
421 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:25:02 ] なんでこんな簡単なこともできないのに、そんなに偉そうなんだ?
422 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:27:08 ] >>420 言いたいことは分かるが4行ずつ配列を足してないだろ
423 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:28:55 ] #include <stdio.h> void add(const int *a, int *b, int n) { while(n--) b[n] += a[n]; } int main(void) { int a[8][10], b[2][10] = {0}; int i; for(i=0; i<8; i++) add(a[i], b[i/4], 10); return 0; }
424 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:44:51 ] >>416 配列A, B, a, b は配列として必要なのか?
425 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 20:42:09 ] わかる人いますか? [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 以下のような内容のテキストファイルを読み込んで それぞれ配列に格納した後、同じように出力せよ。 文章,文章,数字,数字,・・・,数字\n 文章,文章,数字,数字,・・・,数字\n 文章,文章,数字,数字,・・・,数字\n ただし行数および数字の列数は常に不定とする。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C/C++どちらでも可 [4] 期限: 2007年10月28日24:00まで [5] その他の制限: 特になし
426 名前:425 mailto:sage [2007/10/28(日) 20:46:49 ] すみません。 読み込むのはtxtファイルじゃなくてcsvファイルでした。 よろしくおねがいします。
427 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 20:49:03 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): e^x = 1 + x^1/1! + x^2/2! + x^3/3! + x^4/4! + … を利用して e^x を計算する関数 double myexp(double x) を作成せよ. k=0, 1, 2, 3, … について x^k/k! を加算してゆき, x^k/k!<10-6 となった時点で計算を打ち切るようにせよ (無限ループと break 文を用いるのが一解法). main から myexp を呼び出し, x=1.0, 2.0, …, 10.0 に対して myexp(x) の値を全体で 13 桁, 小数点以下 5 桁で表示せよ. [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語: C言語 [4] 期限: 2007年10月29日まで [5] その他の制限:特になし 次レスがプログラムです。実行はされますが値がおかしいです… よろしくお願いします。
428 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 20:50:56 ] #include <stdio.h> #include <math.h> double myexp(double); double x; int main( void ) { printf("\t x\t myexp(x)\n"); for(x=1.0;x<=10.0;x++) { printf("\t%.1f\t%13.5f\n",x,myexp(x)); } return 0; } double myexp(double x) { double r=1.0,f=1.0,y=1.0; int z,k; for(k=1;;k++) { for(z=1;z<=k;z++) { r=r*z; } if(pow(x,k)/r<1.0e-6) { return f; break; } f=f+pow(x,k)/r; } }
429 名前:とくめい [2007/10/28(日) 21:06:55 ] すみませんがプログラミングの宿題を教えてください。 「言語」= c++ 「問題」= 速度のfileを読み込みそれを微分して加速度を求めろ。速度を積分して距離を求めろ なおプログラムは1通です。 「os] = xp micro studio 2005
430 名前:とくめい [2007/10/28(日) 21:09:09 ] 上の追加です。 去年の参考にfile名は何でもいいので #include<stdio.h> FILE * fp1,* fp2,* fp3; //ファイルポインタの宣言 int main() { double k1=0,k;//k1=一つ前の距離、k=距離 double s1=0,s;//s1=一つ前の速度、s=速度 double T=0.4;//刻み値(台形の高さ) fp1 = fopen( "C:\\suzuki2\\car06spd.txt", "r" );//ファイルを読み込みで開く fp2 = fopen( "C:\\suzuki2\\sekibun.txt", "w" );//ファイルを書き込みで開く if( fp1 == NULL ){//fp1にデータがあるか確かる printf("ファイルが開けません。\n"); fclose( fp1 ); }
431 名前:とくめい [2007/10/28(日) 21:10:28 ] 書き込めなかったので2分割しました while( 1 ) {//無限ループ(微分) if( fscanf( fp2,"%lf",&k) == EOF ) break;//ファイルを読み終えたらループから抜ける s=(k-k1)*2/T*3600-s1;//速度(s)の式 、単位変換を行う fprintf(fp3,"%.0lf\n",s);//ファイルに速度sを出力する k1=k;//k1にkの値を入れる s1=s;//s1にsの値を入れる } fclose( fp2 );//ファイルを閉じる fclose( fp3 );//ファイルを閉じる return 0; }
432 名前:デフォルトの名無しさん [2007/10/28(日) 21:13:10 ] [1] 授業単元: C言語入門 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5164.txt [3] 環境 [3.1] OS: Windows [3.3] 言語: C言語 [4] 期限: 10月29日午前1時まで よろしくお願いします
433 名前:デフォルトの名無しさん [2007/10/28(日) 21:14:25 ] >>425 #include <iostream> #include <string> #include <vector> #include <fstream> using namespace std; main(){ string str="",buf; fstream fp("text.csv",ios::in); do {getline(fp, buf);str+=buf+"\n";}while(!fp.eof()); int m,n;vector<string> x; do{ m=str.find(",");n=str.find("\n"); if(m>n){x.push_back(str.substr(0,n));x.push_back("\n");m=n;} else x.push_back(str.substr(0,m)); str=str.substr(m+1);}while(m>=0); for(n=0;n<x.size();n++)cout<<x[n]; }
434 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:24:59 ] // >>427 eのマクローリン展開 #include <stdio.h> #include <math.h> double myexp(double); double x; int main( void ) { double x; printf("\t x\t myexp(x)\t exp(x)\n"); for(x=1.0;x<=10.0;x++) { printf("\t%2.1f\t%13.5f\t%13.5f\n", x, myexp(x), exp(x)); } return 0; } double myexp(double x) { double s = 0.0; double a = 1.0; s += 1.0; for (int n = 1; n < 20; n++) { a = a * x / n; s = s + a; } return s; }
435 名前:デフォルトの名無しさん [2007/10/28(日) 21:26:58 ] /* e^x を計算する関数 double myexp(double x) を作成せよ. k=0, 1, 2, 3, … について x^k/k! を加算してゆき, x^k/k!<10-6 となった時点で計算を打ち切る main から myexp を呼び出し, x=1.0, 2.0, …, 10.0 に対して myexp(x) の値を全体で 13 桁, 小数点以下 5 桁で表示せよ. */ #include <stdio.h> #include <math.h> double myexp(double x){ double r=1,sum=0; for(int k=1;;k++){ sum+=r; r*=x/k; if(r < 1.0e-6)return sum;}} int main( void ){ double x; printf("\t x\t myexp(x)\n"); for(x=1.0;x<=10.0;x++){ printf("\t%.1f\t%13.5f\n",x,myexp(x)); } return 0; }
436 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:28:11 ] // >>427 e(x)の計算 さっきのはforのなかで宣言があったんでC++ #include <stdio.h> #include <math.h> double myexp(double); int main( void ) { double x; printf("\t x\t myexp(x)\t exp(x)\n"); for(x=1.0;x<=10.0;x++) { printf("\t%2.1f\t%13.5f\t%13.5f\n", x, myexp(x), exp(x)); } return 0; } double myexp(double x) { double s = 0.0; double a = 1.0; int n; s += 1.0; for (n = 1; n < 20; n++) { a = a * x / n; s = s + a; } return s; }
437 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:28:25 ] [1] 授業単元: データ1 [2] 問題文(含コード&リンク): 長いのでうpしました。 簡易電卓を作成する問題です。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5165.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C [4] 期限:11/7まで [5] その他の制限:GUIで作ってはいけないそうです。 よろしくお願いします。
438 名前:デフォルトの名無しさん [2007/10/28(日) 21:29:20 ] #include <stdio.h> double myexp(double x){ double r=1,sum=0; for(int k=1;;k++){ sum+=r;r*=x/k; if(r<1.0e-6)return sum;}} main(){ printf("\t x\t myexp(x)\n"); for(double x=1.0;x<=10.0;x++)printf("\t%.1f\t%13.5f\n",x,myexp(x));}
439 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:31:11 ] >>437 厳しい制限だな。GUIで作っちゃだめなのか
440 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:34:38 ] >>432 #include <stdio.h> #include <math.h> int solve(double a, double b, double c); double answer1; double answer2; int solve(double a,double b, double c) { double check; check = b * b - 4 * a * c; if(check > 0){ answer1 = (b + sqrt(b * b - 4 * a * c)) / (2 * a); answer2 = (b - sqrt(b * b - 4 * a * c)) / (2 * a); return 2; }else if(check == 1){ answer1 = (b + sqrt(b * b - 4 * a * c)) / (2 * a); answer2 = answer1; return 1; } return 0; } main()は省略 汚いコードだけどこんな感じ
441 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:35:29 ] >>432 int solve(double a, double b, double c) { double d = b * b - 4 * a * c; if(d<0) return 0; answer1 = (-b + sqrt(d)) / 2 / a; answer2 = (-b - sqrt(d)) / 2 / a; return d == 0 ? 1 : 2; }
442 名前:デフォルトの名無しさん [2007/10/28(日) 21:36:31 ] >>440 それまちがってるよ
443 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:38:53 ] >>440 せっかくcheck計算してんのに、sqrtの引数に利用しないなんてムダすぎる
444 名前:440 mailto:sage [2007/10/28(日) 21:39:29 ] >>442 /(^o^)\bの前に”-”が抜けてた >>441 のほうが圧倒的に見やすくていいね
445 名前:425 mailto:sage [2007/10/28(日) 22:03:25 ] >>433 ありがとうございます!! あと数字は数字として格納して次の問題での計算に使いたいのですが 文字列として取得した数字を別の配列に整数型の数として取得するには どうすればいいでしょうか?
446 名前:デフォルトの名無しさん [2007/10/28(日) 22:08:48 ] st=str.substr(0,n)に対して st[i]が'0'から'9'にあればいい コードはちょっと待ってくれ
447 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:08:55 ] >>445 std::string str = "1.234"; double d; std::istringstream istr(str); istr >> d;
448 名前:デフォルトの名無しさん [2007/10/28(日) 22:30:14 ] stringが数値なら変換して違うならエラーを返す関数ってある?
449 名前:デフォルトの名無しさん [2007/10/28(日) 22:33:09 ] atofで良いんだな
450 名前:デフォルトの名無しさん [2007/10/28(日) 22:36:21 ] atofだと初めが数値だと計算してしまう
451 名前:デフォルトの名無しさん [2007/10/28(日) 22:38:30 ] .8222とか、100,000とかは数値にするのか?
452 名前:425 mailto:sage [2007/10/28(日) 22:42:07 ] >>446 その方法基本情報試験の勉強でやった覚えが!!! でもどうにも思い出せないです・・・ >>447 stringがvector<string>なためかうまくいきません。 atoiなどもvectorは拒否されてしまうみたいですね。 うーん、難しい・・・
453 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:44:19 ] #include<stdio.h> int main(int argc, char *argv[]){ int i, index; double value; for(i=1;i<argc;i++){ if(sscanf(argv[i], "%lg%n", &value, &index)>=1 && argv[i][index]=='\0') printf("%s は数値だ\n", argv[i]); else printf("%s は数値ではない\n", argv[i]); } return 0; }
454 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:50:47 ] [1] 授業単元:データ構造とアルゴリズム1 [2] 問題文(含コード&リンク):待ち行列シミュレーションするプログラムを作成せよ 完成する関数: void enqueue(char *x) void dequeue() void queue_print() 作成するプログラムについて:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5168.txt 実行例:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5169.txt ヒント:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5170.txt [3] 環境 [3.1] OS:win xp [3.2] Microsoft Visual Studio .NET 2003 [3.3] 言語:c++ [4] 期限:2007年10月29日9:30まで [5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで
455 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:56:52 ] >>437 符号反転キーと演算キーがかぶる気がするんだけどどうするの?
456 名前:デフォルトの名無しさん [2007/10/28(日) 22:58:12 ] class mojisu { string str; double su; } mojisu x; x.input("777"); という関数を作る 数値なら数字として保存 このとき文字は空にする 違うなら文字として保存
457 名前: ◆nzw4qNGj6U [2007/10/28(日) 22:58:19 ] [1] 授業単元:プログラミング2 文字列処理 [2] 問題文(含コード&リンク): 英文(英単語)を入力し、入力した文字列を、逆から表示するプログラムを作成すること。 [3] 環境 [3.1] OS:Windows [3.3] 言語:C [4] 期限:2007年10月29日0:00迄 [5] その他の制限:NULL文字を使用して下さい。 よろしくお願いします。
458 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:41:00 ] >>457 NULL文字をどこで使用するんだ・・・ #include <stdio.h> int main() { int i=-1; char buf[256]; while((buf[++i]=getchar())!=EOF); while(i>0&&putchar(buf[--i])!=EOF); return 0; }
459 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:48:49 ] >>458 きっとこういう風にするんだよ #include <stdio.h> int main() { int i=-1; char buf[256]; while((buf[++i]=getchar())!=EOF); while(i>0&&putchar(buf[--i])!=NULL); // ここ return 0; }
460 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 00:19:06 ] NUL文字?