1 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:55:25 ] あなたが解けない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++の宿題を片付けます 102代目 pc11.2ch.net/test/read.cgi/tech/1197132472/
664 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:08:53 ] 一次配列の中身をランダムに置換して更に、それを 逆置換するプログラムを教えてください。 ある係数を渡すことで毎回同じ並びになるようにして 暗号のように使えるようにしないといけないみたいです。 例えば「1」という係数を渡すと [3 2 4 1]を[2 4 1 3]にシャッフルして それをもう一度[3 2 4 1]に戻したいです
665 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:25:04 ] >>664 > 一次配列の中身をランダムに置換して更に、それを逆置換する ・一次配列って一次元配列ってこと? ・ランダムに置換の,「ランダムに」ってどの程度のことを言っているの?
666 名前:664 mailto:sage [2008/01/27(日) 19:36:22 ] >>665 すみません「元」が抜けてましたね。 ランダムがどの程度か…そこまで指定されてないんですが 簡単な規則性が無ければ良いと思います。
667 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:38:22 ] >>664 #include <stdio.h> #include <stdlib.h> #include <string.h> #define ARRAY_SIZE 32 void shift(int *p, int v) { int *buf = (int*)malloc(sizeof(int)*v+1); memcpy(buf, p, sizeof(int)*v); memmove(p, p+v, sizeof(int)*ARRAY_SIZE); memcpy(p+(ARRAY_SIZE-v), buf, sizeof(int)*v); } void print(int *p) { int i = 0; printf("array[%d] = {", ARRAY_SIZE); do { printf("%d", p[i]); } while (++i < ARRAY_SIZE && putchar(',')); printf("}\n"); } int main () { int i, in, array[ARRAY_SIZE]; for (i = 0; i < ARRAY_SIZE; ++i) array[i] = i; print(array); scanf("%d", &in); shift(array, in%=ARRAY_SIZE); print(array); shift(array, ARRAY_SIZE-in); print(array); return 0; }
668 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:39:11 ] 例の > [3 2 4 1]を[2 4 1 3]にシャッフルして これがモロ規則性あるからその通りに作った。
669 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:54:07 ] >>659 Sort関数内に printf("%d,%d\n",i,j); を追加して、ちゃんとソートが行われているかどうか確認するといい
670 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:03:38 ] >>664 #include<stdio.h> #include<stdlib.h> typedef struct tag_dataset{int index, data;}dataset_t; void swap_int(int *a, int *b){int c;c=*a;*a=*b;*b=c;} void swap_dataset(dataset_t *a, dataset_t *b){dataset_t c;c=*a;*a=*b;*b=c;} void encode(int data[], int datanum, int seed){ int i; srand(seed); for(i=0;i<datanum;i++) swap_int(&data[i], &data[rand()%(i+1)]); } void decode(int data[], int datanum, int seed){ int i; dataset_t *tmp; srand(seed); tmp=malloc(sizeof(*tmp)*datanum); for(i=0;i<datanum;i++) tmp[i].index=i; for(i=0;i<datanum;i++) swap_dataset(&tmp[i], &tmp[rand()%(i+1)]); for(i=0;i<datanum;i++) tmp[i].data=data[i]; for(i=0;i<datanum;i++) data[tmp[i].index]=tmp[i].data; free(tmp); } void prt(int data[], int datanum){ int i; for(i=0;i<datanum;i++) printf(" %d", data[i]); printf("\n"); } int main(void){ int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10}, datanum=sizeof(data)/sizeof(data[0]); encode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */ decode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */ return 0; }
671 名前:581 mailto:sage [2008/01/27(日) 20:12:35 ] >>658 さん 解析サンプルまで付けてくださってありがとうございます(T_T) 本当に困っていたので助かりました!! これを元に(2)と(3)にも挑戦します・・・ でも期限には絶対間に合う予感がしない・・・orz
672 名前:670 mailto:sage [2008/01/27(日) 20:13:10 ] >>664 >>670 を書き直した #include<stdio.h> #include<stdlib.h> void swap(int *a, int *b){int c;c=*a;*a=*b;*b=c;} void encode(int data[], int datanum, int seed){ int i; srand(seed); for(i=0;i<datanum;i++) swap(&data[i], &data[rand()%(i+1)]); } void decode(int data[], int datanum, int seed){ int i, *tmp; srand(seed); tmp=malloc(sizeof(int)*datanum); for(i=0;i<datanum;i++) tmp[i]=rand()%(i+1); for(i=datanum-1;i>=0;i--) swap(&data[i], &data[tmp[i]]); free(tmp); } void prt(int data[], int datanum){ int i; for(i=0;i<datanum;i++) printf(" %d", data[i]); printf("\n"); } int main(void){ int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10}; int datanum=sizeof(data)/sizeof(data[0]); encode(data, datanum, 0); /* 0 の部分が乱数seed */ prt(data, datanum); decode(data, datanum, 0); /* 0 の部分が乱数seed */ prt(data, datanum); return 0; }
673 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:13:23 ] [1] 授業単元: cプログラミング入門」 [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5918.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:c言語 [4] 期限:1/31まで [5] その他の制限;特になし どうかよろしくお願い致します。
674 名前:659 mailto:sage [2008/01/27(日) 20:14:55 ] 自分でもう一度やってみたけど。分けわからなくなってきた。 もう本当に無理っぽい。 誰か、答えを教えてください。
675 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:38:56 ] 死ねカス
676 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:53:40 ] [1] 授業単元:C言語演習 [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5919.txt [3.1] OS:Linux [3.2] コンパイラ名:gcc [3.3] 言語:C言語 [4] 期限:1月28日中 [5] その他の制限:特にありません。 よろしくお願いします!
677 名前: ◆LnG.2EAY0A mailto:sage [2008/01/27(日) 21:01:19 ] 【質問テンプレ】 [1] 授業単元:C言語 [2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を ファイル操作を使って一括設定できるようにする。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5920.txt [3] 環境 [3.1] OS:WindowsVista [3.2] コンパイラ名とバージョン:VC 6 [3.3] 言語:C [4] 期限:2008年01月28日午前まで [5] その他の制限:ファイル操作を習う所まで授業で進みました。 自分でも試行錯誤してみたのですが中々うまく行かず・・・ 皆さんの知恵をお借りしたいと思います、よろしくおねがいします。
678 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:08:28 ] >>659 ここは宿題スレだ。 組んで欲しいならテンプレ使って正式に頼め。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5921.txt ギャーギャー騒がれると目障りだし、これ持って去りな。
679 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:36:04 ] >>678 なんというツンデレw
680 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:55:48 ] >>676 showpidがおかしくないか? #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/wait.h> int main() { pid_t pid; int i, status, flg = 0; for (i = 0; i < 10; ++i) { if ((pid = fork()) < 0) { fprintf(stderr, "error\n"); exit(1); } if (pid == 0) { execv("showpid", NULL); exit(1); } else { if (flg == 0) { flg = 1; printf("I am a parent with pid = %d.My child is %d.\n",getpid(),pid); } waitpid(pid, &status, 0); } } return 0; }
681 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 21:57:02 ] ## showpid ## #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { printf("I am a child with pid = %d,My parent pid is %d.\n",getpid(),getppid()); exit(EXIT_SUCCESS); }
682 名前:664 mailto:sage [2008/01/27(日) 22:07:09 ] >>870 助かりました☆ ありがとうございます!
683 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:08:13 ] >>870 やるじゃん
684 名前:637 [2008/01/27(日) 22:08:40 ] >>649 ありがとうございます! あとはなんとかしてみようと思います。
685 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:16:07 ] 簡単なゲームを作れといわれたのですがわかりません 誰か助けてください
686 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:16:43 ] >>685 >>677
687 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:50:20 ] >>686 むつかしくてわかりません、もっと簡単なのお願いします ポーカーとかでいいです
688 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:52:28 ] >>687 頭は大丈夫か?
689 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:57:01 ] ポーカーの方がよっぽど難しい罠
690 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 23:00:12 ] >>687 まあ何も考えずに>>677 の問題文にあるソースをコピってコンパイルして動かしてみろ そして中身を理解しろ ポーカーはそれからだ
691 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 23:05:29 ] オセロ作るスレってのがあったな
692 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 23:06:59 ] >>676 当方で確認した環境は Vine Linux 4.2 (kernel 2.6.16.36), 処理系は gcc 3.3.6 です。 showpid; kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5922.txt tentimes: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5923.txt 関係ないが、 espio.air-nifty.com/espio/ によると、鳥インフルエンザがインドではやっているらしい。1400 人超えたとか超えないとか。 それにしても日本ではなぜ報道されないのか?
693 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 23:07:04 ] 釣りだろ
694 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 23:14:30 ] >>673 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5924.txt
695 名前:692 mailto:sage [2008/01/27(日) 23:21:19 ] >>680 確かに提示されたshowpidはおかしいですね。私もひっかかってしまった。
696 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 00:00:31 ] 【時間切れ】 (1/27) なし 【未解決問題】 >>614 1/28 8:00 残:課題2 >>581 1/28 9:00 残:課題2、3 >>677 1/28 午前まで >>650 1/29 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >79 無期限 >144 無期限 問題文>148
697 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 01:05:26 ] オレも早くせっくるしたい、by20歳
698 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 02:54:34 ] >>614 (>>696 1行目) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5925.txt
699 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 03:04:20 ] [1] 授業単元:C演習 [2] 問題文(含コード&リンク): /*ガウスの消去法プログラム*/ #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<math.h> #define A(x,y) a[(x)*(L+1)+y] void output(double *a, int, int); int gauss(double*a,double*x,int L,int n,double eps,int isw) main(){ double amax,awap; int i,j,k,l,m,ii,irow; if(isw==1) output(a, L, n){ for(m=0;m<n-1;m++){ amax=fabs(A(m,m)); irow=m; for(i=m+1;i<n;i++){ if(amax<fabs(A(i,m))){ amax=fabs(A(i,m)); irow=i;} if(amax<=eps){ return(0);} if(m!=irow){ for(l=m;l<n+1;l++){ 続く [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cresent [3.3] 言語: C++ [4] 期限: 1月28日11:00まで
700 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 03:18:16 ] >>699 見難い。 出直して来い。
701 名前:673 mailto:sage [2008/01/28(月) 07:23:48 ] <<694ありがとうございます!参考にします。
702 名前:デフォルトの名無しさん [2008/01/28(月) 10:56:13 ] [1] 授業単元:データ構造とアルゴリズム [2] 問題文(含コード&リンク): 配列に整数を100個蓄える。 (1)蓄える整数は関数randによって与えられるものとし、 この配列をバブルソートによってソートした結果を出力するプログラムを作成せよ。 (2)また、上の問題を選択ソートを使用したプログラムに変更せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 1月29日 よろしくお願いします
703 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 11:26:39 ] >>702 ありきたりで申し訳ないが #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 100 #define SWAP(type, x, y) do{type tmp = x; x = y; y = tmp;}while(0) // バブルソート void bsort(int *a, int n){ int i, j; for(i = 0; i < n - 1; i++) for(j = i + 1; j < n; j++) if(a[i] > a[j]) SWAP(int, a[i], a[j]); } // 選択ソート void ssort(int *a, int n){ int i, j, min; for(i = 0; i < n - 1; i++){ min = i; for(j = i + 1; j < n; j++) if(a[min] > a[j]) min = j; SWAP(int, a[i], a[min]); } } int main(void){ int i, a[N]; srand((unsigned)time(NULL)); for(i = 0; i < N; i++) a[i] = rand()%100; for(i = 0; i < N; i++) printf("%4d", a[i]); printf("\n"); bsort(a, N); // ssort(a, N); for(i = 0; i < N; i++) printf("%4d", a[i]); }
704 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 11:42:15 ] >>702 #include <stdio.h> #include <stdlib.h> #include <time.h> //バブルソート int main(void){ int i,j,num[100],temp; srand(time(NULL)); for(i=0;i<100;i++)num[i]=rand(); for(i=99;i>0;i--){ for(j=0;j<i;j++) if(num[j]>num[j+1]){ temp=num[j]; num[j]=num[j+1]; num[j+1]=temp;}}} for(i=0;i<100;i++)printf("%d\n",num[i]); return 0; } //選択ソート int main(void){ int i,j,num[100],min,temp; srand(time(NULL)); for(i=0;i<100;i++)num[i]=rand(); for(i=99;i>0;i--){ min=i; for(j=0;j<i;j++)if(num[min]>num[j])min=j; temp=num[min]; num[min]=num[i]; num[i]=temp;} for(i=0;i<100;i++)printf("%d\n",num[i]); return 0; }
705 名前: ◆HXgzCCSIaM mailto:1 [2008/01/28(月) 13:00:19 ] 1] 授業単元:プログラミング演習T [2] 問題文(含コード&リンク): 構造体を用いて加減算を行う。 以下の空白(oooo)を埋めよ。 #include <stdio.h> struct { /* 構造体の宣言 */ struct{ int a; int b; }keisan; int main( void ) { int wa, sa; /* 変数の宣言 */ scanf( "%d, %d", &keisan.a, &keisan.b ); /* 入力 */ wa= oooo ; /* 加算 */ sa= oooo ; /* 減算 */ printf( "和は%d 差は%d\n", wa, sa ); /* 出力 */ return 0; [3] 環境 [3.1] OS: WindowsXP [3.2] VC 5.5 [3.3] 言語: (C) [4] 期限: 無期限 [5] その他の制限: 特になし 途中まで自分で埋めたのですが、oooo部分が違うと指摘されました。 よろしくお願いします。
706 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 13:20:35 ] >>705 wa = keisan.a + keisan.b sa = keisan.a - keisan.b
707 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 13:27:12 ] >>705 scanfの中も違う scanf( "%d %d", &keisan.a, &keisan.b); /* 入力 */
708 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 13:39:04 ] 合ってるんじゃね?
709 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 13:44:44 ] 問題は、出題の意図がどうであったか、だな。
710 名前: ◆HXgzCCSIaM mailto:1 [2008/01/28(月) 13:58:31 ] >706-709 ありがとうございます。問題部分はこれで解決しました。 甘えてもう1題 [2] 問題文(含コード&リンク): 2つの正の整数値a,bの最大公約数を出力するプログラムをユークリッドの互除法というアルゴリズムを用いて作成したい。 以下のプログラムの****部分に適切な処理をいれて,プログラムを完成させなさい。 #include <stdio.h> int main( void ) { int a, b; /* 変数の宣言 */ int m, n; scanf( "%d,%d", &a, &b );/* 2つの正の整数値を入力する */ m= a ; n= b ; while(m **** n){ /* ユークリッドの互除法を適用 */ if( m > n ) m = ***** ; else n = **** ; [3] 環境 [3.1] OS:WindowsXP [3.2] VC 5.5 [3.3] 言語: C言語 [4] 期限:無期限 [5] その他の制限: 特になし 同じく後半部分が解りませんでした。 よろしくお願いします。
711 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 14:12:14 ] >>710 while(m != n){ if(m > n) m = m - n; else n = n - m; }
712 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 14:13:21 ] #include <stdio.h> int main(void) { int a,b,m,n; scanf("%d %d",&a,&b); m=a; n=b; while(m*n) { if(m>n) m%=n; else n%=m; } printf("%dと%dの最大公約数は%dです",a,b,m+n); return 0; }
713 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 14:17:37 ] lcmやgcdの問題が多すぎ。
714 名前:デフォルトの名無しさん [2008/01/28(月) 15:16:02 ] 柴田望洋の本を使ってる授業多いNE。
715 名前: ◆HXgzCCSIaM mailto:1 [2008/01/28(月) 15:17:33 ] >711 ありがとうございます!助かりました。 >712 別の表記方法なんですね。 勉強になります。
716 名前:デフォルトの名無しさん [2008/01/28(月) 15:30:22 ] [1]プログラミング入門 [2]問題文 キーボードから月(1~12)を入力して、その月の日数を表示するプログラムを 完成させなさい [3]環境 [3.1] OS:WindowsXP [3.2] VC 5.5 [3.3] 言語: C言語 [4]期限:1月29日 [5]その他の制限特になし 初心者ですがよろしくおねがいします
717 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 15:35:48 ] >>716 #include <stdio.h> int main(void) { int month, Days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} scanf("%d", &month); printf("%d", Days[month - 1]); return 0; }
718 名前:デフォルトの名無しさん [2008/01/28(月) 17:27:31 ] [1]プログラミング演習U [2]問題文 sample.txt 0 1 2, 2 4 5, 3 4 2, 1 2 5, 2 2 2, 3 1 4, 1 1 2, 2 1 3, 3 5 4, 4 2 2, 上の外部テキストファイル(sample.txt)に書かれている座標データを読み込み、 1行ずつ順にx,y,zの配列に格納し、ちゃんと格納されたか出力してください。 [3]環境 [3.1] OS:WindowsXP [3.2] コンパイラ名:gcc [3.3] 言語: C言語 [4]期限:1月28日 17:00 [5]その他の制限特になし
719 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 17:32:35 ] 期限切れ
720 名前: ◆LnG.2EAY0A mailto:sage [2008/01/28(月) 18:21:22 ] 以前質問させてもらった>>677 です。 期限を01月28日と書きましたが、宿題の期限が伸びたので 図々しい様ですが、改めてお願いさせて頂いても良いでしょうか? 内容は変わりありません。 [1] 授業単元:C言語 [2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を ファイル操作を使って一括設定できるようにする。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5920.txt [3] 環境 [3.1] OS:WindowsVista [3.2] コンパイラ名とバージョン:VC 6 [3.3] 言語:C [4] 期限:2008年02月05日まで [5] その他の制限:ファイル操作を習う所まで授業で進みました。 自分でも試行錯誤してみたのですが中々うまく行かず・・・ 皆さんの知恵をお借りしたいと思います、よろしくおねがいします。
721 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 18:35:20 ] >>720 問題文の意図が明瞭でない。それだと答えようがない
722 名前: ◆LnG.2EAY0A mailto:sage [2008/01/28(月) 19:19:25 ] >>721 説明不足ですみませんでした。 問題文の元は、石取りゲームといって最初に全体の石の数・そこから一度に取れる数を設定しなければいけません、それが以下の部分です↓ printf("石を交互に取り、最後の1個を取った人が負けです\n"); while (1) { nOrder = 1; printf("石の数は(5以上100以下)=="); gets(answer); nStone = atoi(answer); if (nStone < 5 || nStone > 100) { printf("石の数が不正です\n"); continue; } while (1) { printf("一度に取れる石の数は(2以上)=="); gets(answer); nGet = atoi(answer); if (nGet >= nStone) { printf("一度に取れる石の数が多すぎます\n"); continue; } if (nGet < 2) { printf("一度に取れる石の数が少なすぎます\n"); continue; } break; } この部分で設定するのですが、最初の石の数・一度に取れる数を一度に設定できるようにしたいのです。例えば、 「一括設定を使いますか?→ y/n」→「難易度を選択して下さい→ 1:優しい 2:普通 3:難しい」 ここで1を入力すると、石の数と取れる数をファイルから読み込み、その設定でプレイする。といった感じです。 説明下手ですみません、追記させていただきました。
723 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 20:10:38 ] #include<stdio.h> #include<string.h> int main(void){ FILE *fp; char line[128], *p; int nStone, nGet, level, cnt; 〜省略〜 for(cnt=1; fgets(line, 128, fp) != NULL && cnt <= 3; cnt++){ if(level != cnt) continue; p=strchr(line, '\n'); if(p!=NULL) *p='\0'; sscanf(line, "%d %d", &nStone, &nGet); break; } 〜省略〜
724 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 21:08:06 ] [1]通信工学II [2]問題文(含コード&リンク): 次の文字送受信プログラム(IPv4専用)を、IPv4/v6デュアルスタックのプログラムに改良せよ。 クライアント:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5929.zip サーバー:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5930.zip [3]環境 [3.1] OS:Windows XP/Vista [3.2] コンパイラ名:Visual C++ 2005 SP1 [3.3] 言語:C++ [4]期限:1月31日 16:00 [5]その他の制限:特になし 丸投げですがよろしくお願いいたします。
725 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 21:15:27 ] なんかデカいのがきたな。
726 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 22:22:04 ] コメントそれなりについてるけど、このスレにしては確かにでかいな・・・ 変更が必要な箇所を明記してくれてるけど、専門外でさっぱりわかんねw
727 名前:デフォルトの名無しさん mailto:kokok [2008/01/28(月) 22:32:12 ] 素人でホントに困っています。よろしくお願いします 【質問テンプレ】 [1] 授業単元: 情報科学実習 [2] 問題文(含コード&リンク):() 問題> 次のような書式のファイルからデータを読み出して、標準体重の人の名前と 血液型一覧を別のファイルに出力せよ。ただし、classを用いること。また、 人のデータは必要によってメモリ割り当てすること *標準体重・・・まず。指数k=平均体重/(平均身長-100)を出す。 各人の理想体重は(身長-100)×kであり、標準体重は、理想体重の97〜103%。 ・データファイルの書式 一行目:人数 二行目以降:名前 血液型 身長 体重 ・データファイルの例 2 Mizumoto O 172 67 Otake A 170 62 [3] 環境 [3.1] OS: I Mac [3.2] コンパイラ名とバージョン: E macs [3.3] 言語:C++ [4] 期限: 2008年2月6日まで [5] その他の制限:繰り返し、条件式、配列、アドレス、ポインタ、スコープ、 クラスを習いました。
728 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 23:27:23 ] コンパイラ?
729 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 00:16:19 ] 【時間切れ】 (1/28) >581 >718 【未解決問題】 >>650 1/29 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >>724 1/31 16:00 >>720 2/5 詳細>>722 >>727 2/6 >79 無期限 >144 無期限 問題文>148
730 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 00:33:26 ] >>727 この計算式通り計算すると理想体重が170付近になってしまいますが 理想体重でなくて理想身長の間違いではないでしょうか? 電卓で計算してみて下さい。
731 名前:730 mailto:sage [2008/01/29(火) 00:35:05 ] あ、ごめんなさい。私の間違いでした。
732 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 00:53:45 ] >>727 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5933.txt data2.datというファイルに結果を出力しています。
733 名前:デフォルトの名無しさん [2008/01/29(火) 01:33:25 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク) 入力された整数を配列に順次格納する(昇順になるように入力すること)。 0が入力された時に整数の入力を終了し、次に入力された数字を、二分探索によって 配列から探索し、その配列の添え字番号を出力するプログラムを作成せよ [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 1月29日正午まで お願いします
734 名前:702 mailto:sage [2008/01/29(火) 01:44:08 ] >>703-704 ありがとうございました
735 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 02:21:02 ] >>733 #include <stdio.h> #include <stdlib.h> #define BUFFSIZE 32 #define ARRAYSIZE 256 int binary_search(int array[], int b, int e, int key) { int t = (e - b) / 2 + b; if (array[t] == key) return t; if (array[t] < key) return binary_search(array, t, e, key); if (array[t] > key) return binary_search(array, b, t, key); } int main(void) { int array[ARRAYSIZE]; char buff[BUFFSIZE]; int i; puts("Input Number(s)."); for (i = 0; i < ARRAYSIZE; ++i) { fgets(buff, BUFFSIZE, stdin); if (atoi(buff) == 0) break; array[i] = atoi(buff); } printf("Input Number. :"); fgets(buff, BUFFSIZE, stdin); printf("index: %d\n", binary_search(array, 0, i, atoi(buff))); return 0; }
736 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 02:59:26 ] gccは不思議だな。 停止性がなくとも止まってくれるのは何故だろう? printfとかを入れると止まらんけど。
737 名前:デフォルトの名無しさん [2008/01/29(火) 06:45:43 ] [1] 授業単元:データ構造とアルゴリズム設計 [2] 問題文(含コード&リンク) 名前と年齢を入力し、年齢をキーとして、ハッシュ(チェイン法)に登録する '-'を入力すると登録を終了し、次に入力された年齢を、ハッシュ法で検索し あればその名前を出力するプログラムを作成せよ。ハッシュ表の大きさは9とする [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2月1日まで よろしくお願いします。
738 名前:デフォルトの名無しさん mailto:kokok [2008/01/29(火) 08:03:26 ] >>732 ありがとうございます!!助かりました
739 名前:733 [2008/01/29(火) 08:55:01 ] >>735 ありがとうございました!
740 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 10:54:03 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5934.txt [3] 環境 [3.1] OS: Windows Xp [3.2] コンパイラ名とバージョン: Microsoft Visual Studio .NET 2003 [3.3] 言語: C [4] 期限: 1/29まで コンパイルするとエラーが出るのですが どこが間違っているのかわからなくなってしまいました。 よろしくお願いします。
741 名前:740 mailto:sage [2008/01/29(火) 10:59:25 ] 連投すいません 問題つけるの忘れてました 申し訳ありません これです kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5935.txt
742 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 11:31:24 ] 「エラーメッセージはコピペしてください。」 って>>1 に書いてある コンパイルを通したいだけなら、問題文よりコンパイラのメッセージをコピペしてくれよ
743 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 11:59:24 ] 回答者たちよ、実務では解決できるのかすら分からない難題に埋もれる中、 回答が出るよう作られた宿題回答で回帰逃避したい気持ちはよく分かるぞ。
744 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 12:36:05 ] 娯楽ってのはそういうもんだ
745 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 12:37:29 ] >>743 先生、回帰逃避がよく判らないです。
746 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 12:53:27 ] >>737 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5936.cpp
747 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 13:26:55 ] 前に回答して頂いた>>581 です。 期限が切れてしまいましたが、二月頭まで締切を伸ばしてもらったので、引き続き(2)と(3)の解答をお願いできませんか?? どうかよろしくお願いします…m(_ _)m
748 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 14:01:25 ] >>747 音声データを縮める、音声データを反転させる、の定義をしてくれたまえ。
749 名前:デフォルトの名無しさん [2008/01/29(火) 14:28:52 ] 718の者です。期限1/28の17:00までって書いたんですけど これは間違いで1/30の17:00までなのでよろしくお願いしますm(__)m
750 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:22:53 ] >>749 #include <stdio.h> #define DATAFILE "sample.txt" #define LINES 10 int main(void) { FILE *fp; char line[10]; int i = 0, x[LINES], y[LINES], z[LINES]; if (fp = fopen(DATAFILE, "r")) { while (fgets(line, sizeof(line), fp)) { sscanf(line, "%d%d%d", &x[i], &y[i], &z[i]); i++; } fclose(fp); for (i = 0; i < LINES; i++) printf("x[%d] = %d, y[%d] = %d, z[%d] = %d\n", i, x[i], i, y[i], i, z[i]); } return 0; }
751 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:17:12 ] [1] 授業単元:C言語I [2] 問題文(含コード&リンク):(元データ:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5937.txt 入.力画.像ファイ.ル名、出.力画.像ファイル名、縦、横の 縮.小率を実行時に与えることが出来るようにすること 以下の場合、エラーメッセージを標準エラーに出力し て、プログラムを終了させること ・正しくない縮.小率が入力された場合 ・入力ファイル名に存在しないファイルが指定された場合 ・すでに存在するファイル名が出.力画.像ファイル名に指定さ れた場合 [3] 環境 [3.1] OS:Linux OpenSuse [3.2] コンパイラ名とバージョン: すみません確認が分かりませんでした。cc でコンパイルしています。 [3.3] 言語: C [4] 期限: [2008年01月31日17:00まで] [5] その他の制限: 簡単な例について,プログラミングの基礎知識,変数と式,制御の流れ,関数,配列,文字列,ポインタ,構造体とユーザ定義型,ファイルです。 基本的に初心者からの講座ですので使えることは多くありません。元プログラムを見ていただければ程度が分かると思います。 問題文で不自然に'.'が入っているのは,万が一検索されたときの対策です。 気を悪く思ったかもしれません。すみません。 もしスレを監視していたら意味もないですが;
752 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:22:20 ] 丸投げしといて見つかりたくないか。そうか。
753 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:25:30 ] 姿勢が気に食わないな。
754 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:44:19 ] 完全に駄目元で言ってるな。
755 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:48:30 ] 問題文のコメントも文字化けしてワロタ。
756 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:50:57 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):除算計算のプロセス改良 詳細→(ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5938.zip) [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:visual C++ [3.3] 言語: C++ [4] 期限:2/4 [5] その他の制限: 演算子/使用不可。 ヒントが詳しくあり、その通りにするだけだと思うのですができず。 問題と試しに作ったのを同梱したので添削してもらえると助かります。
757 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:15:24 ] >>756 fdivrsub()内の1行目、if()の条件式 (powb <= a << (powb+powb)) を if ( a < ( powb+powb )) にしたらいいんじゃない?
758 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:25:32 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ある海賊団(総員10名)が100枚の金貨を手に入れた。 そこでみんなで分けようとしたが、この海賊団には以下の分配ルールがある。 一番年長の海賊(ボス)が誰に何枚割り振るかを決める。 ボスも含めたみんながその割り振りに賛成か反対か投票をする。 半数以上の賛成で可決される。ただし、賛成が半数未満ならボスは処刑され、 新たなボスがまた分配方法を決める。(10人は年が違うので新ボスを誰にするかでもめることはない) と、決まるまでこれが繰り返される。 そしてこの海賊団員の特徴として、 みんな限りなく賢く、それぞれみんなが賢いことも知っている。 みんな自分の命は一番大事。次に大事なのは金貨。だが処刑は大好きで、 今のボスを処刑しても次のボスからもらえる金貨の枚数が同じだろうと思ったら、反対に票を投じる。 それぞれあまり仲はよくないので談合はしない。及び金貨の共有もしない。 さて、今のボスは自分がなるべくたくさん金貨がほしい場合、 何枚手に入れることができるだろうか? [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限:無期限 [5] その他の制限: なし
759 名前:758 mailto:sage [2008/01/29(火) 22:36:55 ] スレ違いなので取り下げます
760 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:59:20 ] [1]プログラミング入門 [2]問題文 座標(X_1 Y_1)にある自転車1が角度A_1(度)の方向にV_1(m/s)で進み、座標(X_2 Y_2)にある自転車2が角度A_2(度)の方向にV_2(m/s)で進んでいる。 二つの自転車が出会う点の座標(X_3 Y_3)と、経過時間Tを求めなさい。 X軸の正方向を0(度)とする。 座標1目盛り1(m)とする。 [3]環境 [3.1] OS:WindowsXP [3.2] Visual studio 2003 [3.3] 言語: C++ [4]期限:1月30日 [5]その他の制限特になし 丸投げで本当に申し訳ありません! 何卒宜しくお願い致します!(>_<)
761 名前:デフォルトの名無しさん [2008/01/29(火) 23:16:13 ] >>750 ありがとうございました!! ほんと助かりました。
762 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:46:06 ] >>760 向かい合って一直線に進んでるならまだしも、 ちょうどぶち当たるなんてこと、限りなく無いに等しいがそれでもいいの?
763 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:48:00 ] >>762 自転車の長さが100mくらいあるのかも知れないwww
764 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:05:32 ] 【時間切れ】 (1/29) >650 >740 【未解決問題】 >>760 1/30 pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31 >>724 1/31 16:00 >>751 1/31 17:00 >>581 2月頭 残:課題2、3 >>720 2/5 詳細>>722 >79 無期限 >144 無期限 問題文>148