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/
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
414 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 03:02:22 ] >>396 node の定義や必要そうな include もこちらで補うのかい?
415 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 05:56:53 ] >>396 #include <stdio.h> #include <stdlib.h> #include <ctype.h> struct node { char element; struct node *next; }; int check(struct node *p, struct node *mid) { int i, j, n = mid->element - '0'; struct node *temp; for(i=0, temp = p; temp!=mid; i++, temp=temp->next); if(i!=n) return 0; for(i=0; i<n; i++, temp=temp->next) if(temp->next==NULL) return 0; for(i=0; i<n; i++, p=p->next) { for(temp=mid, j=0; j<n-i; j++, temp=temp->next); if(p->element != temp->element) return 0; } return 1; }
416 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 05:59:16 ] 続き struct node* mirror_image(struct node *list) { struct node *p, *buf = NULL, *temp, *ret = (struct node*)malloc(sizeof(struct node)); int max = 0; ret->next = NULL; for(p=list->next; p!=NULL; p=p->next) { for(temp=p->next; temp!=NULL; temp=temp->next) { if(isdigit(temp->element) && temp->element - '0' > max) { if(check(p, temp)) { buf = p; max = temp->element - '0'; } } } } if(buf) { int i, l = 2 * max + 1; for(i=0, temp = ret; i<l; i++, buf = buf->next) { temp = temp->next = (struct node*)malloc(sizeof(struct node)); temp->element = buf->element; } temp->next = NULL; } return ret; }
417 名前:デフォルトの名無しさん [2007/09/27(木) 07:02:54 ] >>396 眠いのに朝からやってやったお(^ω^) ループ文なしでやってみたお。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4980.c
418 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 07:11:59 ] - '0' とか意味無かったお・・・。冗長すぎワロタ欝出し脳
419 名前:デフォルトの名無しさん [2007/09/27(木) 11:01:25 ] >>365
420 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:09:09 ] >>396 1/2 char *createcs(struct node *list) { char *cs = 0; int i = 0; struct node *p; for (i = 0, p = list->next; p; i++, p = p->next) continue; cs = (char *)malloc(sizeof(char) * (i + 1)); for (i = 0, p = list->next; p; i++, p = p->next) cs[i] = p->element; cs[i] = '\0'; return cs; }
421 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:09:41 ] >>396 2/2 struct node *mirror_image(struct node *list) { char *cs = createcs(list); struct node *mirror = 0; int i, j, n, maxn_index = -1; for (i = 0; i < strlen(cs); i++) { if (!isdigit(cs[i])) continue; n = cs[i] - '0'; if (i < n || (strlen(cs) - 1 - i) < n) continue; // 無理 if (n < cs[maxn_index] - '0') continue; // 無駄 for (j = 0; j < n; j++) { // n個チェック if (cs[i - (j + 1)] != cs[i + (j + 1)]) break; } if (n == j && cs[maxn_index] - '0' < n) maxn_index = i; } cs[maxn_index + (cs[maxn_index] - '0') + 1] = '\0'; if (0 < maxn_index) { mirror = initclist(&cs[maxn_index - (cs[maxn_index] - '0')]); } else { mirror = (struct node *)calloc(1, sizeof(struct node)); } free(cs); return mirror; }
422 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:12:47 ] >リストを配列にコピーするのは御法度です
423 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:20:08 ] (ノ∀`) アチャー
424 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:22:00 ] >>396 リストの先頭が空って、なんか気持ち悪くない?
425 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 13:34:59 ] [1] 授業単元: プログラミング技術 [2] 問題文(含コード&リンク): 四則演算を関数としてもっているプログラム。 実数と整数の両方に対応し、式と結果を表示。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5 [3.3] 言語:C [4] 期限:10月1日 [5] その他の制限:scanfを使用、関数はPlus(float a,float b)。 main関数では2つの数字を入力、関数Plusを呼び出し。 考えでは↓ 実数では、float c; c=a+b; 整数では、int d; d=(int)a+(int)b; 最後にprintfを使って表示します。 宜しくお願いします<(_ _)>
426 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 13:52:40 ] >>425 #include <stdio.h> float Plus(float,float); int main() { float a,b; printf("1つ目=>"); scanf("%f",&a); printf("2つ目=>"); scanf("%f",&b); printf("float:%f\nint:%d",Plus(a,b),(int)Plus((int)a,(int)b)); return 0; } float Plus(float a,float b) { return a+b; } C++でもいいなら関数オーバーロードを使った方がいいと思うよ
427 名前:デフォルトの名無しさん [2007/09/27(木) 15:00:40 ] [1] ファイル入出力 [2] 引数で渡された文字列をファイルに出力する関数を作り、入力した文字列をファイルに出力する。 [3] 環境 [3.1]WindowsXP [3.2]BorlandC++ [3.3]C++ #include <stdio.h> #include <string.h> void sdata(char str); void main(void) { char str[128]; scanf("%s",str); } void sdata(char str) { FILE *fp; fp = fopen("Return.txt","w"); fwrite(str,sizeof(str),1,fp); } 一応自分でこんな感じかなみたいのはあるんですが…ここからよく分からないのです。
428 名前:425 mailto:sage [2007/09/27(木) 16:14:56 ] >>426 さん ありがとうございます。 四則の問題があるので、Plus()関数に int s; printf("1.+ 2.- 3.* 4./ =>"); scanf("%d",&s); if(1==s){return a+b; }else if(2==s){ return a-b; }else if(3==s){ return a*b; }else if(4==s){ return a/b; } と追加してみたら 1つ目=>4 2つ目=>2 1.+ 2.- 3.* 4./ =>4 1.+ 2.- 3.* 4./ =>3 float:8.000000 int:2 と出力されました。 1.+ 2.- 3.* 4./ =>のところを1回だけ表示するにはどうすると良いでしょうか?
429 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 16:55:26 ] [1] 授業単元: プログラミング技術 [2] 問題文(含コード&リンク):読み込んだ整数の段数を持つピラミッドを表示するプログラム 例:3 * *** ***** [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5 [3.3] 言語:C [4] 期限:10月1日 [5] その他の制限:scanf,forを使用
430 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 17:04:03 ] #include <stdio.h> int main(void) { int i, j, n; scanf("%d", &n); for(i=0; i<n; i++) { for(j=0; j<n-1-i; j++) putchar(' '); for(j=0; j<2*i+1; j++) putchar('*'); putchar('\n'); } return 0; }
431 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 17:25:37 ] >>428 >int s; >printf("1.+ 2.- 3.* 4./ =>"); >scanf("%d",&s); をPlus関数からmain関数に移し、Plus関数は新たに引数としてsを受け取るようにする
432 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 17:27:04 ] >>429 #include<stdio.h> int main(int c,int v){ if(c==1){ scanf("%d",&v); main(v+1,v); } else{ int i; if(c!=2)main(c-1,v); for(i=0;i<v-c+3/2;i++)printf(" "); for(i=0;i<2*c-3;i++)printf("*"); printf("\n"); } return 0; }
433 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 17:36:09 ] >>429 #include <stdio.h> int padd(int n, char c) { if (!n) return; putchar(c);padd(n - 1, c); } void pyramid(int n, int m, char c) { if (n <= m) return; padd(n - m - 1, ' '); padd(2 * m + 1, c); puts(""); pyramid(n, m + 1, c); } int main() { int n; scanf("%d", &n); pyramid(n, 0, '*'); }
434 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 17:36:19 ] >>428 関数名が悪い #include <stdio.h> #include <stdlib.h> float calc(float,float,int); int main() { int i,s; float a,b; char mode[]="+-*/"; printf("1つ目の数=>");scanf("%f",&a); printf("2つ目の数=>");scanf("%f",&b); printf("演算子\n"); for(i = 0;i < sizeof(mode)-1;i++){ printf("%d.%c\n",i+1,mode[i]); } printf("=>");scanf("%d",&s); printf("%f %c %f = %f",a,mode[s-1],b,calc(a,b,s)); return 0; } float calc(float a,float b,int s) { switch(s){ case 1:return a+b; case 2:return a-b; case 3:return a*b; case 4:if(b == 0){printf("0では割れない");exit(1); }else{return a/b;} default:printf("演算子指定が正しくない");exit(1); } }
435 名前:425 mailto:sage [2007/09/27(木) 18:23:54 ] >>431 さん、>>434 さん ありがとうございました。
436 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 20:34:23 ] test
437 名前:デフォルトの名無しさん [2007/09/27(木) 23:08:36 ] [1] 授業単元: [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4982.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 9月28日18:00まで [5] その他の制限: 特にないです どちらか1つだけでも結構ですので、どうぞよろしくお願いします
438 名前:fubu ◆dFztVLlF36 mailto:sage [2007/09/27(木) 23:20:04 ] >>390 ありがとうございますつД`)
439 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 23:29:36 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク):構造体(詳細は下記) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC [3.3] 言語: (C/C++ どちらでも可) [4] 期限: [9/30] [5] 問題文 「本」の商品名、価格、ページ数を10冊分入力し、 10冊分の価格の昇順・降順にソートするプログラムを作成しなさい。 よろしくお願いします
440 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 23:48:59 ] >>439 それぞれの限界値は指定しないのか?
441 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 23:51:00 ] >>439 #include<iostream> #include<string> #include<algorithm> using namespace std; struct bk{ string n;int v,p; void r(){cin>>n>>v>>p;} void w(){cout<<n<<" "<<v<<" "<<p<<endl;} bool operator<(const bk&b)const{return v<b.v;} }; int main(){ bk b[10]; for(int i=0;i<10;i++)b[i].r(); sort(b,b+10); for(int i=0;i<10;i++)b[i].w(); return 0; }
442 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 23:51:31 ] >>437 1つ目 改行が多いって言われたのでこっちで kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4983.c
443 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 00:14:32 ] >>440 すいません… 商品名[10]、価格[4]、ページ数[3]を入れるのを失念しておりました… ですので、 >>441 ありがとうございます!! こちらのソースを元になんとか自分で考えてみます。
444 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 00:45:51 ] >>437 2つ目 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4984.txt
445 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 01:20:44 ] >>437 先越されたけど2つ目 君の瞳に映った僕に乾杯 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4985.c
446 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 07:35:42 ] ----【即系サイト×優良サイト=即会い即やり!】----------------------- 優良出会い系サイトと即出会えるサイトを併用して使い、即会いライフを楽しんでいます。 これが面白いほど会える☆ 会った後は・・・ 俺の場合、出会い系サイト3つで女の子と週2〜3で出会えてます。 これ以外にもお気にの女の子とは週1で会ってます。 今回は皆さんにも出会いを楽しんでもらいたいので、俺が使っている 登録後一日以内に出会えたサイトを紹介するブログ始めました。 皆も休日にエンジョイしてください! ↓↓↓ 【即出会えるサイト紹介ブログ】 deaigets.blog97.fc2.com/ --------------------------------------------------------------------
447 名前:437 [2007/09/28(金) 09:35:59 ] >>442 >>444 >>445 本当にありがとうございます 助かりました
448 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 11:20:28 ] 任意の長さの文字列(英字のみ)データをファイルから読み込み、辞書順に並べ替えて 最終結果のみを表示するプログラムを作成する宿題なんですが、ファイルを読み込もうと するところでなぜか止まってしまいます。原因がよくわからないので助けてください…。 Cテキスト kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4986.txt 読み込みファイル用テキスト(これじゃなくてもOK) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4987.txt 細かい指定は、 ・英字の大文字小文字に関しては凝らなくていい ・データ最大数は1000 ・文字列の最大長は64 ・データは改行で区切られている
449 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 11:28:03 ] >>448 そういうときは、色々な変数の値をprintfで吐き出すと良いよ > scanf("%s,in_filename");
450 名前:448 mailto:sage [2007/09/28(金) 12:01:37 ] なんというくだらないミス\(^O^)/ 申し訳ありませんでした……
451 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 12:50:24 ] ファイル読めない時のエラーメッセージもだしとけよ
452 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 15:00:32 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): /****memo.txt********/ atsusa a ts u s a au a u awatadashii a w a t a d a sh i i awa a w a /*********************/ このmemo.txt というファイルがあるとして、 このファイルを読み込み、右の「a,ts,u,s,a」という単位で かかれてある右の列(2列目)を(atsusaを1列目、a,ts,u,s,aを2列目) a ts u s a と表示できるようにしなさい。 [3] 環境 [3.1] OS:LINUX [3.3] 言語:C [4] 期限:早いほうがいいです [5] その他の制限:なし
453 名前: ◆EtzJSByuaQ mailto:sage [2007/09/28(金) 16:43:58 ] 【質問テンプレ】 [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):圧力P一定の下、温度変化量ΔTしたとき、1molの理想気体のガス容積の変化量ΔVを算出する関数を作成しなさい [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:CPad for Borland C++Compiler ver2.31 [3.3] 言語:C++ [4] 期限:2007年09月28日20時くらいまで 本当にわからなくて困っています。よろしくお願い致します。
454 名前: ◆vLIz8KOkPM [2007/09/28(金) 17:29:14 ] [1] 授業単元: プログラミング演習 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 9月29日(土)午後9時まで [5] その他の制限: ポインタ、構造体、配列、関数まで習ったので、この範囲内でお願いします。 [2] 問題文(含コード&リンク): **発展課題**について【下に、発展課題の問題文、自分の作成したプログラムをのせます】、 各口座のデータをバイナリファイルに保存する機能(口座データが変更される度にfwriteで) 各口座のデータをバイナリファイルから読み込む機能(プログラム起動時に1 回のみfreadで)を追加せよ.実行例を下に示す。 % ./kadai13 口座データ読込み(1:ファイルから2:初期値を使用)? 1 口座番号を入力してください: 9012 暗証番号を入力してください: 0123 引出し額を入力してください: 20000 ありがとうございました.残高は518600 円です 口座データ保存(1:ファイルへ2:保存しない)? 1 口座番号を入力してください: ← 口座番号入力に戻る 発展課題の問題については>>455 それに対する自分のプログラムは>>456
455 名前: ◆vLIz8KOkPM [2007/09/28(金) 17:29:46 ] ****************発展課題の問題文**************** ATM(Automated Teller Machine; 現金自動預け払い機) システムを実現するプログラムを作成する. 最初に,氏名,口座番号,暗証番号,預金残高を要素とする構造体を定義し,512 人分の口座が作成可能なようにせよ. また,初期値として次のように構造体の内容を設定せよ. • 田中太郎の口座番号は1234 で,預金残高を1,234,560 円に設定する. • 山田花子の口座番号は5678 で,預金残高を 987,600 円に設定する. • 鈴木一郎の口座番号は9012 で,預金残高を 538,600 円に設定する. • 暗証番号は口座番号に1111 を足して10000 で割った余りに設定する. このとき引出しの機能を実現せよ。具体的には,口座番号の入力,暗証番号の入力と確認,支払額の入力,預金残高の更新をするプログラムを作成せよ. 実行例を以下に示す % ./kadai10 口座番号を入力してください: 5000 ← 存在しない 暗証番号を入力してください: 0123 口座番号または暗証番号が間違っています. 口座番号を入力してください: 9012 暗証番号を入力してください: 5555 ← 間違っている 口座番号または暗証番号が間違っています. 口座番号を入力してください: 9012 暗証番号を入力してください: 0123 引出し額を入力してください: 1000000 ← 預金額より多い 預金額が不足しています. 口座番号を入力してください: 9012 暗証番号を入力してください: 0123 引出し額を入力してください: 20000 ありがとうございました.残高は518600 円です. 口座番号を入力してください: ← 始めに戻る
456 名前: ◆vLIz8KOkPM [2007/09/28(金) 17:35:06 ] **********発展課題について自分が作成したプログラム*************** #include<stdio.h> #include<string.h> #define MAC 256 main(){ char save[MAC]; int account; int code; int draw; int i; struct{ char name[MAC]; int account; int code; int balance; }ATM[500]; strcpy(ATM[0].name,"田中太郎"); ATM[0].account=1234; ATM[0].code=(ATM[0].account+1111)%10000; ATM[0].balance=1234560; strcpy(ATM[1].name,"山田花子"); ATM[1].account=5678; ATM[1].code=(ATM[1].account+1111)%10000; ATM[1].balance=987600; strcpy(ATM[2].name,"鈴木一郎"); ATM[2].account=9012; ATM[2].code=(ATM[2].account+1111)%10000; ATM[2].balance=538600; printf("あなたの口座番号を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&account); for(i=0;i<=500;i++){ if(account==ATM[i].account) break; } if(account!=ATM[i].account){ printf("そのような口座は存在しません.\n"); } else{ printf("暗証番号を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&code); for(i=0;i<=500;i++){ if(code==ATM[i].code) break; } if(code==ATM[i].code){ printf("%s 様ですね.\n",ATM[i].name); printf("引出し金額を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&draw); if(draw<0){ printf("ERROR!!\n"); } else if(draw>ATM[i].balance){ printf("金額が不足しています.\n"); } else if(draw<=ATM[i].balance){ printf("預金残高は %d 円です.\n",ATM[i].balance-draw); }} else if(code!=ATM[i].code){ printf("認証に失敗しました.\n"); }} return(0); }
457 名前: ◆vLIz8KOkPM [2007/09/28(金) 17:40:24 ] 長文で申し訳ないですが、是非ともよろしくお願いします。m(_ _)m
458 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 18:00:37 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク):文字列AB、CD、EF、GHがある。キーボードから文字を入力しこの文字列があればそれを取り出す。 全部取り出したら終了する。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: BCC5.5 [3.3] 言語:C [4] 期限: 2007/10/1 [5] その他の制限:実行例 現在:AB、CD、EF、GH 文字を入力してください:AB ABはありました。 現在:CD、EF、GH 文字を入力してください:TR TRはありません。 現在:CD、EF、GH 文字を入力してください: ・ ・ ・ 現在:GH 文字を入力してください:GH GHはありました。 これで終了します。
459 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 18:46:37 ] #include <stdio.h> #include <string.h> int main(void){ char *a[]={"AB","CD","EF","GH"},b[9],c[]="現在:%s",d[]="、%s",*e;int i; while(1){ e=c; for(i=0;i<sizeof(a)/sizeof(a[0]);++i){ if(a[i]){ printf(e,a[i]); e=d; } } if(e==c) break; printf("\n文字を入力してください:"); scanf(" %8[^\n]",b); for(i=0;i<sizeof(a)/sizeof(a[0]);++i){ if(a[i] && !strcmp(a[i],b)){ printf("%sはありました。\n",b); a[i]=0; goto found; } } printf("%sはありません。\n",b); found:; } puts("これで終了します。 "); return 0; }
460 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 19:02:44 ] gotoかよw
461 名前:デフォルトの名無しさん [2007/09/28(金) 21:50:48 ] [1]授業単元:プログラミング演習 [2]問題文:ポインタをつかって@変数aのアドレスを獲得する。A変数bのアドレスを変数aのアドレスの4バイト後方におきたい。B変数aのアドレスの4バイト後方に(a+90)の値を代入する。CA、Bの結果をprintf文で出力。 [3]環境 [3.1]Windows、Visual stdio Japan2005 (注)エラーが出ると思いますが、結果は出ます。 お願いします。
462 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 21:58:40 ] 変数の型は?
463 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 22:12:58 ] 一気に宿題されすぎでおれの宿題が答えられてないな。。。 おれも片付けに参加しようかね。
464 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 22:16:59 ] どれ?
465 名前:デフォルトの名無しさん [2007/09/28(金) 22:48:52 ] >>459 >>460 blogs.wankuma.com/jitta/archive/2007/09/27/98335.aspx blogs.wankuma.com/jitta/archive/2007/09/28/98562.aspx
466 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:10:13 ] >>452 どの程度自由度があるかわかんね. "memo.txt"というファイル名に対して,a ts u saを表示するだけでいいの? それとも,そのコメント風の部分も評価しなきゃいけないの?
467 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:28:39 ] goto文使うとプログラム読みにくくなるしループとか抜け出すならbreakとかあるからな。 俺も極力使うなって言われたけど中にはそっちの方が分かりやすいって人もいるんじゃない?
468 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:35:31 ] >467 この例だと分かりにくいぞw 判定ループは関数化して、戻り値で ありました/ありません 表示だろ、普通。
469 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:58:10 ] 条件判定部にsizeof(a)/sizeof(a[0])なんて書いてるのみると、 深い考えがあってgoto使ってるようには見えないけどな