1 名前:デフォルトの名無しさん [2007/09/21(金) 08:46:37 BE:340816166-2BP(12)] あなたが解けない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++の宿題を片付けます 95代目 pc11.2ch.net/test/read.cgi/tech/1187944110/
313 名前:デフォルトの名無しさん [2007/09/26(水) 12:16:23 ] なにかIOCCC風な高度のテクニックを使っているプログラムを教えてください。 お題はなんでもいいです。
314 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 12:22:53 ] >>313 IOCCC見てくればいいじゃん
315 名前:よこ ◆2LEFd5iAoc [2007/09/26(水) 12:27:16 ] 【質問テンプレ】 [1] 授業単元:システム演習 [2] 問題文(含コード&リンク):行列の乗算のプログラムを作ってみよ。大きな行列要素(1000×1000)でも実行できるように作っておくこと。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: ([2007年09月26日17:00まで] [5] その他の制限: 制限はないです。お願いします。
316 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 12:47:39 ] >>315 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct tag_matrix_t{ int column, row; double **data, *data_area; }matrix_t; matrix_t *matrix_alloc(int column, int row){ matrix_t *matrix; int x, y; matrix=malloc(sizeof(matrix_t)); matrix->column=column; matrix->row=row; matrix->data_area=malloc(sizeof(double)*column*row); matrix->data=malloc(sizeof(double*)*column); for(y=0;y<column;y++) matrix->data[y]=&matrix->data_area[y*row]; for(x=0;x<row;x++) matrix->data[0][x]=0.0; for(y=1;y<column;y++) memcpy(matrix->data[y], matrix->data[0], sizeof(double)*row); return matrix; } matrix_t *matrix_mul(matrix_t *a, matrix_t *b){ matrix_t *c; int i, j, k, x; if((x=a->row)!=b->column) return NULL; c=matrix_alloc(a->column, b->row); for(i=0;i<a->column;i++) for(j=0;j<b->row;j++) for(k=0;k<x;k++) c->data[i][j]+=a->data[i][k]*b->data[k][j]; return c; }
317 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 12:59:34 ] >>315 が見えない。 どっかで暴れてた糞コテか?
318 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 13:15:15 ] >>315 はトリップ #1111 安直だからどこかで誰かが使ったんでしょう
319 名前:デフォルトの名無しさん [2007/09/26(水) 13:36:18 ] [1] 授業単元:基本プログラミング [2] 問題文(含コード&リンク):30個以下の非負の数値データを入力したあとそれらのデータをそのまま出力する。次に1行あけて(改行を出力して)から今度は大きい順に出力する。 データ入力はキーボードから行い、適当な数値を数個入力したところでEOFを示すCtrl−Dを入力する。また、入力される数値データは必ず非負であると仮定してよい(つまりエラーチェックは不要)ただし30個以上の入力は受け付けないようにする。 プログラムは以下のステップで作成すること。 a:30個以下の数値入力データを配列に格納し、そのまま出力するプログラムを作成する。 b:n個の配列データを大きい順に出力するために、以下のことをn回繰り返す。 b1:配列データから最大値を持つ配列要素を探し、その添字を覚えておく。 b2:b1で覚えた添字のデータを出力し、同時にその要素に-1を代入する。 実行例 input number:1 2 3 4 6 32 34 56 21 11 1 2 3 4 6 32 34 56 21 11 56 34 32 21 11 6 4 3 2 1 [3] 環境 [3.1] OS:Windows [3.3] 言語:C++ [4] 期限:明日 よろしくお願いします
320 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 14:27:41 ] >>319 #include <iostream> const int sanju=30;class hairetsu {private: int arr[sanju]; int n; void nyuuryoku(); void shutsuryoku() const; int b1() const; void b2(int);public: void a(); void b();}; void hairetsu::a(){ nyuuryoku(); shutsuryoku();} void hairetsu::nyuuryoku(){ int i; for(i=0; i<sanju; ++i){ if(!(std::cin >> arr[i])) break; } n=i-1;} void hairetsu::shutsuryoku() const { for(int i=0; i<=n; ++i){ std::cout << arr[i] << ' '; }} void hairetsu::b(){ for(int i=0; i<=n ; ++i){ b2(b1()); }} int hairetsu::b1() const { int i,index=0; for(i=1;i<=n;++i){ if(arr[i]>arr[index])index=i; } return index;} void hairetsu::b2(int index){ std::cout << arr[index] << ' '; arr[index]=-1;}int main(){ hairetsu h; h.a(); std::cout << std::endl; h.b();}
321 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 15:41:15 ] >>319 #include <iostream> using namespace std; int main() { int array[30], n = 0; while (n < 30 && cin >> array[n]) ++n; for (int i = 0; i < n; ++i) { // a cout << array[i] << ' '; } cout << endl << endl; for (int i = 0; i < n; ++i) { // b int k = 0; // index of maximum element for (int j = 0; j < n; ++j) // b1 if (array[j] > array[k]) k = j; cout << array[k] << ' '; // b2 array[k] = -1; } cout << endl; }
322 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 16:20:58 ] >>320 >>321 ありがとうございました
323 名前:デフォルトの名無しさん [2007/09/26(水) 19:41:12 ] 1 授業問題 2 ポインタ int data[10] ={10,20,30,40,50,60,70,80,-999} このようなint配列があります 配列の内容を実行結果のように表示するプログラムを作りなさい -999になれば処理を終了します ポインタを固定して表示させる処理とポインタを変化させて表示させる処理の2つ作成しなさい この内容がわからないので教えて下さいお願い致します
324 名前:デフォルトの名無しさん [2007/09/26(水) 19:43:02 ] ちなみに999}の最後に:がつきます 宜しくお願い致します
325 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:43:38 ] >>323 テンプレ読んでからやりなおせ。アホ。
326 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:46:31 ] >>325 お前、来なくて良いよ。アホとか書くな、アホっ
327 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:47:52 ] >>323 >>1 を読め。
328 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:49:22 ] >>327 お前が >>323 を読まなきゃ良いだろ
329 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:50:04 ] >>328 読まなくていいものを書き込むな。
330 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:50:24 ] >>329 オマエモナー
331 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:50:42 ] >>330 >>1 を読め。
332 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:50:53 ] まあ携帯だろうからそこは大目に見ようも 日本語はもうちょっと上手く使わないとね…
333 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:50:55 ] テンプレ利用しろよ。
334 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:51:41 ] >>323 のようなやつはマナーを知らんな。
335 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:51:43 ] >>331 >>330 を読むな
336 名前:デフォルトの名無しさん [2007/09/26(水) 19:52:07 ] お前ら、テンプレ読まない奴はスルーしろ。
337 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:52:26 ] >>334 のような奴はスルーを知らんなw
338 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:52:57 ] >>323 駄目な奴は何をやっても駄目
339 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 19:57:24 ] >>331 >>329 >>327 <お前らが >>1 を読め。 > 気に入らない質問やその他や発言はスルーの方向で。
340 名前:デフォルトの名無しさん [2007/09/26(水) 20:15:19 ] 323 ですが すいませんバージョンとかわかりません でも 一応大丈夫なんじゃないんですか?教えて貰えたら光栄ですバカでもアホでもわからないので教えてもらえれば光栄なのでお願い致しますあとWindoを使ってることはわかります宜しくお願い致します
341 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:19:30 ] 323ですが、僕はアホです。っていうか涙目みたいな・・・っていうか俺ってマジやばいから。 俺怒らすと怖いですよ(ぉ っていうか、俺の友達なら知ってることだけどな。 お前ら知らんだろ。
342 名前:デフォルトの名無しさん [2007/09/26(水) 20:23:19 ] ちなみに私は341ではないですなんせ・・・この点々は使ったことないです誰か教えてくださいお願いします
343 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:30:30 ] >>341 あのなぁ、お前みたいな茶化したりする騙りなんてバレバレなんだよ。 なんでそう質問者をバカにするだけで質問に答える能力が無いくせに このスレで、でけぇ面してんだ?鬱陶しいんだよ、他の回答者からしてみてもお前は
344 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:30:46 ] >>323 #include<stdio.h> int main(void){ int data[10]={10,20,30,40,50,60,70,80,-999}; int *ptr, i; for(i=0,ptr=data;*(ptr+i)!=-999;i++) printf("%d\n", *(ptr+i)); for(ptr=data;*ptr!=-999;ptr++) printf("%d\n", *ptr); return 0; }
345 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:31:32 ] >>344 もっと分かりやすく書けや。気に入らん奴は回答せんでええって。 俺、怒らすと怖いよ。
346 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:32:55 ] >>323 マルチポストかよ!試験は実力で受けろカス! ttp://pc11.2ch.net/test/read.cgi/tech/1188748806/970
347 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:33:07 ] オレはツレから「キレたら怖い奴」って良く言われる それは自覚してるけど狼の血は止められない
348 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:41:59 ] >>347 オオカミ少年乙
349 名前:デフォルトの名無しさん [2007/09/26(水) 20:49:42 ] 344さんありがとうございました 恩にきります また宜しくお願いいたします
350 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:52:43 ] 切られたなり!
351 名前:デフォルトの名無しさん [2007/09/26(水) 21:18:41 ] [1] 授業: 教科書 [2] OS Windows VC60 [3]問題 int data[10] ={5,8,10,2,1,14,35,6,12}: 配列中の最大値と最小値を表示するプログラムをポインタを使用して作成するプログラムが解らないので教えて貰えませんか? 期限9月27木曜です
352 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:21:31 ] >>351 10分くらいするとマルチポストし始めるのでしょうか?
353 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:40:43 ] >>351 #include<stdio.h> int cmp_big(int a, int b){ return a>b; } int cmp_small(int a, int b){ return a<b; } int *search(int arr[], int arr_size, int (*cmp)(int,int)){ int i, index=0; for(i=1;i<arr_size;i++) if(cmp(arr[i], arr[index])>0) index=i; return &arr[index]; } int main(void){ int data[10]={5,8,10,2,1,14,35,6,12}; printf("maximum : %d\n", *search(data, sizeof(data)/sizeof(data[0]), cmp_big)); printf("minimum : %d\n", *search(data, sizeof(data)/sizeof(data[0]), cmp_small)); return 0; }
354 名前:デフォルトの名無しさん [2007/09/26(水) 21:53:00 ] 352さんありがとうございました
355 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:54:15 ] 976 名前:デフォルトの名無しさん[] 投稿日:2007/09/26(水) 21:21:46 [1] 授業単元: 教科書 [2] OS Windows [3]問題 int data[10] ={5,8,10,2,1,14,35,6,12}: 配列中の最大値と最小値を表示するプログラムをポインタを使用して作成するプログラムが解らないので教えて貰えませんか? 【初心者歓迎】C/C++室 Ver.42【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1188748806/
356 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:54:31 ] >>353 こういうプログラムはいいな。 このまま提出したら質問主が疑われそうなもの。
357 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:59:29 ] 疑われるって?
358 名前:デフォルトの名無しさん [2007/09/26(水) 22:00:59 ] >>305 >>308 感謝っす!
359 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:02:21 ] maximum → 最大値 minimum → 最小値 でいいんじゃね
360 名前:デフォルトの名無しさん [2007/09/26(水) 22:05:48 ] [1] 授業: 教科書 [2] OS Windows [3]問題 double data[5] ={10.8,20.3,30,6.40,10.4,2.12}: 配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 誰か宜しくお願いします ちなみに初心者です
361 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:06:54 ] いまさらだけど、[1] 授業: 教科書。ワロタwww
362 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:18:34 ] >>360 #include<stdio.h> double get_average(double arr[], int arr_size){ double *ptr, average=893; int i; ptr=arr; for(ptr=arr,i=0;i<arr_size;i++,ptr++) average=(average*i+*ptr)/(i+1); return average; } double get_sum(double arr[], int arr_size){ double *ptr; ptr=arr; return *ptr+((arr_size>0)?get_sum(ptr+1, arr_size-1):0); } int main(void) { double data[]={10.8,20.3,30,6.40,10.4,2.12}; printf("sum : %f\n", get_sum(data, sizeof(data)/sizeof(data[0]))); printf("average : %f\n", get_average(data, sizeof(data)/sizeof(data[0]))); return 0; }
363 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:20:45 ] 親切なな人だね。 さすがにこれ以上は勘弁って感じだよ。
364 名前:デフォルトの名無しさん [2007/09/26(水) 22:21:08 ] もぅすこし初心者的なのはありませんか?ワガママですみませんが宜しくお願いします
365 名前:デフォルトの名無しさん [2007/09/26(水) 22:23:34 ] スレタイと直接関係ないんですけど FOX-toolkitの話ってどこに行けば聞けますか?
366 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:24:00 ] >>364 マルチしてんじゃねえよ
367 名前:>>281 1/4 mailto:sage [2007/09/26(水) 22:27:07 ] struct machine { struct product *p; int value; }; struct product { struct machine *ms[4]; struct product *original; }; struct machine *createm() { return (struct machine *)calloc(1, sizeof(struct machine)); } struct product *createp(struct machine *first, struct machine *second, struct machine *last) { struct product *p = (struct product *)calloc(1, sizeof(struct product)); p->ms[0] = first;p->ms[1] = second;p->ms[2] = last;p->original = p; return p; } struct product *clonep(struct product *original) { if (!original) return 0; struct product *p = (struct product *)calloc(1, sizeof(struct product)); *p = *original; return p; } struct product *clonep_at_random(struct product **ps, int size) { return clonep(ps[rand() % size]); } int n_completed(struct product *original, struct product **ps, int size) { int i, n = 0; for (i = 0; i < size; i++) { if (ps[i]->original == original && !ps[i]->ms[0]) n++; } return n; }
368 名前:>>281 2/4 mailto:sage [2007/09/26(水) 22:27:50 ] int n_existed(struct product *original, struct product **ps, int size) { int i, n = 0; for (i = 0; i < size; i++) { if (ps[i]->original == original) n++; } return n; } struct product *waitingproduct(struct machine *m, struct product **ps, int size) { int i; for (i = 0; i < size; i++) { if (ps[i]->ms[0] == m) { return ps[i]; } } return 0; } void shift(struct machine **ms) { ms[0] = ms[1];ms[1] = ms[2];ms[2] = ms[3]; } int main() { struct machine *ms[4]; ms[0] = createm();ms[1] = createm();ms[2] = createm();ms[3] = 0; struct product *p, *ps[4]; ps[0] = createp(ms[0], ms[1], ms[2]); ps[1] = createp(ms[1], ms[2], ms[0]); ps[2] = createp(ms[2], ms[0], ms[1]); ps[3] = 0; int values[][3] = {{5, 10, 15}, {10, 15, 5}, {15, 5, 10}}; int i, n, maxsize = 64, size = 0; struct product *products[maxsize]; for (n = 0; ; n++) {
369 名前:>>281 3/4 mailto:sage [2007/09/26(水) 22:28:31 ] // 289:各製品5回、発注が来たら終了でお願いします。 // = 各五個完成したら終了? if ( 5 <= n_completed(ps[0], products, size) && 5 <= n_completed(ps[1], products, size) && 5 <= n_completed(ps[2], products, size) ) break; // 289:各製品5回、発注が来たら終了でお願いします。 // = 終了の条件とは別に、発注の回数も各五回? // 287:他の製品の発注が来ることはありますが、同じ製品の追加はないです。 // = 作業中でない製品タイプの発注のみが来る? p = clonep_at_random(ps, 4); if (p && ( (p->original == ps[0] && 5 <= n_existed(ps[0], products, size)) || (p->original == ps[1] && 5 <= n_existed(ps[1], products, size)) || (p->original == ps[2] && 5 <= n_existed(ps[2], products, size)) || (ms[0]->p && ms[0]->p->original == p->original) || (ms[1]->p && ms[1]->p->original == p->original) || (ms[2]->p && ms[2]->p->original == p->original) )) { free(p);p = 0; } // 受注 if (p && size < maxsize) products[size++] = p; // 各機械が処理する製品を決定 for (i = 0; i < 3; i++) { if (!ms[i]->p && (ms[i]->p = waitingproduct(ms[i], products, size))) { ms[i]->value = values[(&ms[i] - &ms[0])][((void *)ms[i]->p->original - (void *)ps[0]) / sizeof(struct product)]; } } // 処理直前の状態。 char cs[] = {'A', 'B', 'C', 'Q'};
370 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:30:14 ] その長さなら>>1 のうpロダを使って欲しい
371 名前:>>281 4/4 mailto:sage [2007/09/26(水) 22:30:56 ] printf("%3d",n); for (i = 0; i < 3; i++) { if (ms[i]->p) { printf(" [%c:%d]", cs[((void *)ms[i]->p->original - (void *)ps[0]) / sizeof(struct product)], ms[i]->value); } else { printf(" []"); } } printf("\n"); // 処理と処理済処理 for (i = 0; i < 3; i++) { if (ms[i]->p) { ms[i]->value--; // 加工 if (ms[i]->value <= 0) { shift(ms[i]->p->ms); ms[i]->p = 0; } } } } printf("%dh", n); } // 根本的に何か勘違いしているような気もする。
372 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:33:06 ] >>370 すんまそん。
373 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:33:25 ] >>364 簡単にしてみた #include<stdio.h> double get_average(double arr[], int arr_size){ double average=0; int i; for(i=0;i<arr_size;i++,arr++) average=(average*i+*arr)/(i+1); return average; } double get_sum(double arr[], int arr_size){ return *arr+((arr_size>0)?get_sum(arr+1, arr_size-1):0); } int main(void){ double data[]={10.8,20.3,30,6.40,10.4,2.12}; printf("sum : %f\n", get_sum(data, 6)); printf("average : %f\n", get_average(data, 6)); return 0; }
374 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:45:06 ] >>355 >>360 添え字演算子はポインタ演算のシンタックスシュガーにすぎないんだから、 結局[]だってポインタ使ってるじゃないですか! って反抗するのもよいって本で言ってた。
375 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:46:04 ] >>374 「言ってた」って子供の絵本か!
376 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:50:12 ] >>313 Short Coding というのがあるよ。 有名な例だと、 main(n){gets(&n);putchar(n%85+5);} これをコンパイルして実行して、 1 2 とか 3 6 と入力すれば、足される。
377 名前:デフォルトの名無しさん [2007/09/26(水) 22:59:22 ] [1] 授業 [2] OS Windows [3]問題 double data[5] ={10.8,20.3,30,6.40,10.4,2.12}: 配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 誰か宜しくお願いします ちなみに初心者です
378 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:03:25 ] >>377 >>373 のどこが分からないのか説明してくれ
379 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:15:30 ] >>378 もう放置で…
380 名前:デフォルトの名無しさん [2007/09/26(水) 23:19:19 ] どなたか>>377 をお願いします
381 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:20:50 ] >>380 マルチポスト
382 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:24:31 ] [1] 授業 [2] OS Windows [3]問題 double data[5] ={10.8,20.3,30,6.40,10.4,2.12}: 配列の全要素の戦闘力と攻撃力を求めるプログラムをポインタを使って作成しなさい 誰か宜しくお願いします ちなみに小心者です
383 名前:fubu ◆dFztVLlF36 mailto:sage [2007/09/26(水) 23:26:35 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): atoi関数と同様の処理をする関数を作成しなさい [3] 環境 [3.1] OS: (Windows2000) [3.2] コンパイラ名とバージョン: CPad forBorland C++Compiler Ver2.31 [3.3] 言語: (C/C++ どちらでも可) [4] 期限: ([2007年09月28日10:00まで] [5] atoiは文字列を10進数に変換する処理をするということはわかるのですが、 関数の自作というのがわかりません、、よろしくお願いします!!
384 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:26:42 ] クマー
385 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:31:40 ] >>383 int my_atoi(const char *str){int n;sscanf(str,"%d",&n);return n;}
386 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:35:13 ] int mein_atoi(const char *str){return atoi(str);}
387 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:44:47 ] int my_atoi(const char *str){return (int)strtod(str, NULL);}
388 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:46:19 ] >>386 ちょw
389 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:48:28 ] int my_atoi(const char *str){int n;istringstream i(str);i>>n;return n;}
390 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 23:53:34 ] 空気を読まずにマトモなやつを #include<ctype.h> int atoi_(const char*str){ int sign = 0; int value= 0; while(isspace(*str))++str; if(*str == '+')++str; else if(*str == '-')sign = 1,++str; for(;isdigit(*str);++str){ value *= 10; value += *str-'0'; } if(sign)value = -value; return value; }
391 名前:デフォルトの名無しさん [2007/09/26(水) 23:56:16 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 下に記入します [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: 9月27日21時 [5] その他の制限:制限などは問題文にあるとおりです。 問題 char型の配列を使用し、ABCDEFGHIJKLMNというリテラルで初期化しておく。その後、 整数kを入力すると、k>0ならば文字列を右にk個巡回シフト、k<0なら左にk個巡回 シフトするプログラムを作成せよ。kはEOF入力まで繰り返し入力できるようにすること。 【実行例】どれだけシフトしますか--> 3 LMNABCDEFGHIJK どれだけシフトしますか--> 4 HIJKLMNABCDEFG どれだけシフトしますか--> -7 ABCDEFGHIJKLMN どれだけシフトしますか--> 17 LMNABCDEFGHIJK どれだけシフトしますか--> (EOF入力で終了) ちなみに実行例を見ればわかると思いますが、シフトは毎回ABC〜から始めるのではなく 前の結果から巡回シフトを開始します。 わかるかたよろしくお願い致します。
392 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 00:00:13 ] 夏休みの宿題を今からかよって感じだな
393 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 00:05:45 ] int myatoi(const char *cs) { int a = 1, b = 0; const char *c = cs; if (*c == '-') { a *= -1; c++; } for (; *c != '\0'; c++) { if (*c >= '0' && *c <= '9') b = (b * 10) + *c - '0'; else break; } return a * b; }
394 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 00:07:06 ] >>391 #include<string.h> #include<iostream> using namespace std; int main(){ char s[]="ABCDEFGHIJKLMN"; int size = strlen(s); char*end = s + size; int shift; while(cout << "どれだけシフトしますか--> ",cin>>shift){ shift %= size; if(shift < 0)shift += size; rotate(s,end-shift,end); cout << s << endl; } cout<<endl; }
395 名前:394 mailto:sage [2007/09/27(木) 00:10:00 ] あ、いけね。#include<algorithm>忘れてた。
396 名前:デフォルトの名無しさん [2007/09/27(木) 00:25:40 ] [1] 授業単元: リスト [2] 問題文: 問:対称に並んだ文字列を検出する関数 与えられた文字リストの中の数字(1桁)に対応する数をnとして、 その数字の前後 n文字が対称的である部分を見つけ、複製して返す関数mirror_ima ge()を作成せよ。 ここで「対照的」とは文字リストのi(i=1,2,...)番目の要素a(i)が 数字であり、それに対応 する数をnとすれば、条件a(i-1)=a(i+1),a(i-2)=a(i+2),...a(i-n )=a(i+n)を全て満たす事である。 対称的である部分が複数ある場合には、それらの内の最も長いもの を返すこと。 ただし最長の部分が複数ある場合には、そのいずれかを返せばよい 。 対称的な部分がなければ空リストを返す事。 関数mirror_image()のプロトタイプ宣言は以下の通りである。 struct node *mirror_image(struct node*); 他の関数はこれで御願いします↓ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img /4974.txt
397 名前:デフォルトの名無しさん [2007/09/27(木) 00:27:44 ] 他の関数はこれで御願いします↓ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4974.txt このプログラムに、例えばP1P、abcde3edcxyad、ba1ax4xa1af、ab2 ba2abを与えると、 それぞれ(P1P)、(cde3edc)、(a1ax4xa1a)、(ab2ba)又は(ba2ab)が 印字される。 また、USA、P2P、short5trohなどを与えると()が印字される。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 9月27日12:00まで [5] その他の制限: リストを配列にコピーするのは御法度です。 よろしくおねがいします。
398 名前:デフォルトの名無しさん [2007/09/27(木) 01:18:40 ] [1] 授業: 教科書 [2] OS Windows [3]問題 double data[5] ={10.8,20.3,30,6.40,10.4,2.12}: 配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 誰か宜しくお願いします ちなみに初心者です
399 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:22:55 ] 次からテンプレに「テンプレすら埋めれない池沼はお帰りください」って書こうぜ
400 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:26:37 ] ポインタは危険だから気をつけろよ。 #include <stdio.h> int main(void) { int i; double data[5] ={10.8, 20.3, 30, 6.40, 10.4, 2.12}, max = 0; char *p; for (i = 0; i < 5; i++) { max += data[i]; } p = "max = %f, average = %f\n"; printf(p, max, max / 5); return 0; }
401 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:28:58 ] 危険なのはレーザーポインタ ポインタ自身はそこまで危険じゃない
402 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:29:04 ] 問題文を読み返して思ったが double data[5] ={10.8,20.3,30,6.40,10.4,2.12}: だと変だな。 最後のコロンは置き換えたが、要素数が間違っているのまでは気づかなかった。 適当に修正してくれよ。
403 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:32:15 ] >>399 テンプレに沿わない質問に答える気がないならお前が答えなくて良いよ うっとうしいんだよ
404 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:37:14 ] テンプレに沿わない質問がうっとおしい
405 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:41:43 ] >>401 が>>400 にマジレスしているのがかわいらしい
406 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:44:05 ] >>403 無能乙www
407 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 01:58:34 ] >>399 が無能だろ。俺は普通に答えているわ、ボケが
408 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 02:08:18 ] 文字列いじる程度の簡単な奴だけだろw ちょっと難しいのになると出てこないくせに
409 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 02:10:24 ] テンプレに従ってなくても答えられるけど、従ってくれたほうが読みやすいことが多いね
410 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 02:24:52 ] 408 名前:デフォルトの名無しさん 投稿日:2007/09/27(木) 02:08:18 文字列いじる程度の簡単な奴だけだろw ちょっと難しいのになると出てこないくせに ↑なんだこいつ?きめぇ。初歩的なもの以外、答えていないと思ってんのか? お前がテンプレに沿った質問の仕方をしていないからって、答えないよと言っているだけで テンプレに沿っていないけど初歩的ともいえる問題に答えることすら出来ないんだろ?w gdgd言うなら別に答えなくて良いっつってんじゃん、ここはお前が主のスレじゃねーよ 答える側は任意
411 名前:デフォルトの名無しさん [2007/09/27(木) 02:26:46 ] double data[5] ={10.8,20.3,30,6.40,10.4,2.12}; int main() { int last_index = sizeof(data)/sizeof(data[0]); if (last_index-5)printf("This program is abnormal\n");// 平気か調べる。 for (double *p=data,sum=0.0;p!=data[last_index];p++){ sum+=*p; } char output_string[1024]; sprintf(output_string,"sum=%f,avg=%f",sum,sum/(float)last_index); puts(output_string); return 0; } 死ね!
412 名前:デフォルトの名無しさん [2007/09/27(木) 02:49:45 ] [1] 授業: 教科書 [2] OS Windows [3]問題 double data[5] ={10.8,30,6.40,10.4,2.12}: 配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい 誰か宜しくお願いします ちなみに初心者です
413 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 03:01:06 ] いいかげんこのネタやめろw