1 名前:デフォルトの名無しさん mailto:sage [2010/06/18(金) 06:27:59 ] あなたが解けない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++の宿題片付けます 136代目 pc12.2ch.net/test/read.cgi/tech/1274827528/
620 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 23:53:18 ] #include <stdio.h> int main() { int a, b, c, d; scanf( "%d", &a ); scanf( "%d", &b ); scanf( "%d", &c ); scanf( "%d", &d ); int value= a*d - b*c; printf( "| %d %d | =%d\n", a, b); printf( "| %d %d |\n", c, d ); return 0; } エラー z:\プログラミング演習\sample\sample\sample01c.c(12) : error C2143: 構文エラー : ';' が 'type' の前に必要です。 cl.exe の実行エラー どこを直せば良いのですか?
621 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 23:54:42 ] #include <stdio.h> int main() { int unit_price; // 単価 int num; // 個数 printf( "買う商品の単価: " ); scanf( "%d", &unit_price ); printf( "個数: " ); scanf( "%d", &num ); int total_price = unit_price * num; // 小数を使うと誤差がでるので使わない if ( num >= 20 ) total_price = total_price*6/10; else if ( num >= 10 ) total_price = total_price*8/10; else if ( num >= 5 ) total_price = total_price*9/10; printf( "合計金額: %d", total_price ); } エラー Z:\プログラミング演習\sample\ensyu8\ensyu8.c(14) : error C2143: 構文エラー : ';' が 'type' の前に必要です。 Z:\プログラミング演習\sample\ensyu8\ensyu8.c(18) : error C2065: 'total_price' : 定義されていない識別子です。 cl.exe の実行エラー これもお願いします。
622 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 23:58:40 ] >>621 変数の宣言場所をブロックの先頭に移動
623 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 23:59:05 ] #include <stdio.h> const int n = 10; int main() { int i, j; int s[n][2]; for (i = 0; i < n; i++) { printf( "%d: ", i ); scanf( "%d", &s[i][0] ); } for (i = 0; i < n; i++) { s[i][1] = 0; for (j = 0; j < n; j++) { if (s[i][0] < s[j][0]) s[i][1]++; } s[i][1]++; } for (i = 0; i < n; i++) printf( "s[%d]: %d\n", i, s[i][1] ); return 0; } /* end */ Z:\プログラミング演習\sample\sample33\ensyu33.c(7) : error C2057: 定数式が必要です。 Z:\プログラミング演習\sample\sample33\ensyu33.c(7) : error C2466: サイズが 0 の配列を割当てまたは宣言しようとしました。 Z:\プログラミング演習\sample\sample33\ensyu33.c(7) : error C2133: 's' : サイズが不明です。 cl.exe の実行エラー すみませんこれも駄目でした。 お願いします。
624 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:01:53 ] >>622 ありがとうございます。 しかし警告が出てしまいました。 Z:\プログラミング演習\sample\ensyu8\ensyu8.c(7) : warning C4700: 値が割り当てられていないローカルな変数 'unit_price' に対して参照が行われました。 Z:\プログラミング演習\sample\ensyu8\ensyu8.c(7) : warning C4700: 値が割り当てられていないローカルな変数 'num' に対して参照が行われました。
625 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:18:06 ] もしかして↓みたいな感じにしてない? int unit_price; // 単価 int num; // 個数 int total_price = unit_price * num;
626 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:19:39 ] >>625 なってます。 初心者ですみません。 正しいやり方教えてください。
627 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:27:29 ] int unit_price; // 単価 int num; // 個数 int total_price; printf( "買う商品の単価: " ); scanf( "%d", &unit_price ); printf( "個数: " ); scanf( "%d", &num ); total_price = unit_price * num;
628 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:30:08 ] >>627 できました! どうもありがとうございました。
629 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 00:34:44 ] >>620 自己解決できました。
630 名前:デフォルトの名無しさん [2010/07/08(木) 02:22:04 ] [1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: (visual stadio 2008) [3.3] 言語: (C) [4] 期限: [2010年07月08日13:00まで] [5] その他の制限:ほんの入門級なので、if,for,whileぐらいしか使えません あと配列は禁止 概要:数値を1つ(2〜9の数字)入力し、その個数分の"*"を1辺とする 完成図(*=★、空白=☆): 3を入力した場合 ★★★ ☆☆★ ★★★ 9を入力した場合 ★★★★★★★★★ ☆☆☆☆☆☆☆☆★ ★★★★★★★☆★ ★☆☆☆☆☆★☆★ ★☆★★★☆★☆★ ★☆★☆☆☆★☆★ ★☆★★★★★☆★ ★☆☆☆☆☆☆☆★ ★★★★★★★★★ ーーーーーーーーーーーーーーーー 自分の考え方で進んでみましたが、ifの条件式の部分が分からなくて 助力を求めます
631 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 07:27:39 ] >>630 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10793.c 奇数のみ出力できるモノで良ければ
632 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 10:01:13 ] [1] 授業単元:C・プログラミング [2] 問題文(含コード&リンク): 下記のGPA計算のプログラムを読み込んだ数値を入れる配列を指すポインタを用いて書き換えよ.ただし,配列は1次元配列を用い,また関数を使う必要はない. kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10794.txt [3] 環境 [3.1] Windows 7 [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:2010年7月10日迄 よろしくお願いします。
633 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 10:51:09 ] >>632 void input(int sei[][N2], int n); ↓↓↓↓ void input(int (*sei)[N2], int n); for(i=0; i<n; i++){ ↓↓↓↓ int (*p)[N2]; for (p = sei; p < sei + n; p++) { sei[i][2]= 0; ↓↓↓↓ (*p)[2]= 0;
634 名前:デフォルトの名無しさん [2010/07/08(木) 11:18:09 ] C言語プログラミング(再帰)について質問です。 コインの種類(例えば、1円、5円、8円、10円、15円)に対して、金額を入力すると その金額を払うのに最も枚数が少なくて済むコインの出し方を出力してくれる プログラムを書こうと思っています。 例えば、23円と入力すると、「10円1枚・8円1枚・5円1枚の計3枚」と出力できるプログラムです。 ただし、「10円2枚・1円3枚の計5枚」は「最小」ではないため、上の出力を優先します。 そこで、下のようなプログラムを書いたのですが、合計枚数を出すまでしかできませんでした。 これを、それぞれのコインが何枚必要か出力するように書き換えてください!お願いします。 ソースコードは次の書き込みで。
635 名前:デフォルトの名無しさん [2010/07/08(木) 11:19:16 ] #include<stdio.h> #include<limits.h> int coinfunc(int *c, int k, int m) { int i, tmp, min = INT_MAX; if (m == 0) return 0; else if (m < 0) return -1; for (i = 0; i < k; i++) { tmp = coinfunc(c, k, m - c[i]); if (tmp < 0) continue; else if (tmp < min) min = tmp; } return min + 1; } int main(void) { int m, c[] = {1, 5, 8, 10, 15}; printf("m=?\n"); while (scanf("%d", &m) != 1) scanf("%*[^\n]"); printf("%d\n", coinfunc(c, sizeof(c)/sizeof(*c), m)); return 0; }
636 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 11:21:49 ] 23円は15と8じゃダメですか? ><;
637 名前:デフォルトの名無しさん [2010/07/08(木) 11:28:10 ] >>636 すいません!!23円のときは15と8が最小ですね。。
638 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 11:57:17 ] >>634 codepad.org/GanifMOO
639 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 12:01:39 ] 性帝トーマス△
640 名前:デフォルトの名無しさん [2010/07/08(木) 12:17:43 ] >>638 33円 -> 15円1枚、10円1枚、8円1枚 が最小。
641 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 12:26:46 ] 1 #include<stdio.h> 2 #include<string.h> 3 typedef struct K{ 4 char* name; 5 int tensuu; 6 }K; 7 int main(void) 8 { 9 FILE *fp; 10 char str[256]; 11 char *p1,*p2; 12 int i,j,n; 13 double d,e,f; 14 int a[250]; 15 char b[250][250]; 16 int x; 17 18 if((fp=fopen("seiseki.txt","r"))==NULL){ 19 printf("ファイルがありません\n"); 20 return -1; 21 }else{ 22 /*while(fgets(str,256,fp)!=NULL){ 23 p1=strtok(str," "); 24 p2=strtok(NULL," "); 25 a.name=p1; 26 a.tensuu=atoi(p2);*/ 27 i=0; 28 while(fscanf(fp,"%s %d",&b[i],&a[i])!=EOF){ 29 i=i+1;
642 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 12:28:08 ] 30 } 31 n=i; 32 printf("----------入力データ------------\n"); 33 for(i=0;i<n;i++){ 34 printf("%s %d\n",b[i],a[i]); 35 } 36 for( j=0; j<n; j++){ /* 未処理データの先頭 */ 37 for( i=1; i < n-j; i++){ 38 if( a[i-1] < a[i] ){ /* 隣り合うデータの交換*/ 39 x = a[i-1]; 40 a[i-1] = a[i]; 41 a[i] = x; 42 43 strcpy(str,b[i-1]); 44 strcpy(b[i-1],b[i]); 45 strcpy(b[i],str); 49 } 50 } 51 } 52 53 } 54 printf("----------出力データ------------\n"); 55 for(i=0;i<n;i++){ 56 printf("%s %d\n",b[i],a[i]); 57 } 58 fclose(fp); 59 return 1; 60 } 61
643 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 12:29:05 ] ファイル処理の応用 switch 文を使用して 1. データファイルの新規作成 2. データファイルの追加作成 3. データファイルの読み込みと表示 4. 終了 をメニュー形式で処理するプログラムを作成せよ。 ファイル名はキーボードから入力する。 1〜4の処理はユーザ関数として定義すること。 void data_write(void) void data_append(void) void data_read(void) void the_end(void) 1〜4以外の数値が入力されたら再入力させること。 switch 文については教科書 56 ページを参照すること。
644 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 12:31:22 ] 1. 新規作成の実行例 ********** 成績処理 ********* ← メニューの表示 ファイルの新規作成・・・・・1 ファイルの追加作成・・・・・2 ファイルの読み込みと表示・・3 終了・・・・・・・・・・・・4 ← データ入力の誤り 処理番号を入力して下さい(1〜4):9 ********** 成績処理 ********* ファイルの新規作成・・・・・1 ファイルの追加作成・・・・・2 ファイルの読み込みと表示・・3 終了・・・・・・・・・・・・4 処理番号を入力して下さい(1〜4):1 ← ファイル名の入力 Input file name= abc.txt name=?oota tensuu=?10 oota 10 name=?yamada tensuu=?50 yamada 50 name=? ← 入力の終了 Ctrl + D
645 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 12:33:27 ] 2. 追加作成の実行例 ********** 成績処理 ********* ファイルの新規作成・・・・・1 ファイルの追加作成・・・・・2 ファイルの読み込みと表示・・3 終了・・・・・・・・・・・・4 処理番号を入力して下さい(1〜4):2 name=?isida tensuu=?90 isida 90 name=?torii tensuu=?70 torii 70 name=? ← 入力の終了 Ctrl + D 3. 読み込みと表示の実行例 ********** 成績処理 ********* ファイルの新規作成・・・・・1 ファイルの追加作成・・・・・2 ファイルの読み込みと表示・・3 終了・・・・・・・・・・・・4 処理番号を入力して下さい(1〜4):3 Input file name= abc.txt oota 10 yamada 50 isida 90 torii 70
646 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 18:25:35 ] >>633 ありがとうございます。助かりました。
647 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 18:25:53 ] >>641-645 >>1
648 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 18:29:13 ] [1] 授業単元: [2] 問題文(含コード&リンク): 2〜9の数字を入力その数字に応じて図形を表示させる関数を作る 正方形 三角形 六角形 菱形 星 渦巻き 星と渦巻き以外できたからこの2つについて知りたい 例 7を入力したとき 左:渦 右:星 ******* * * * * * * * ***** * *** * * * ******* * *** * *** * * * * * ******* * * * [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: よくわからない 申し訳ないVS2008使ってる [3.3] 言語: C [4] 期限: 2010年7月13日 [5] その他の制限: 配列は禁止
649 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 18:44:06 ] >>648 ほー。配列は禁止。 printf("******* * * * \n"); printf(" * * * * \n"); printf("***** * *** \n"); printf("* * * ******* \n"); printf("* *** * *** \n"); printf("* * * * * \n"); printf("******* * * * \n"); は禁止?
650 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 18:51:34 ] 面白いと思ってやってんの?
651 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 19:11:07 ] >>648 渦巻きの偶数パターンが分かればコードが書けるんだが
652 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 22:56:04 ] >634 ってさ、たとえば 36 のときみたいに解が複数あるときはどうすんの? 15,15,5,1 の4枚と、10,10,8,8 の4枚。
653 名前:デフォルトの名無しさん [2010/07/08(木) 23:06:15 ] >>630 ありがとうございます 助かりました
654 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 23:20:25 ] >>653 いえいえ
655 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 23:32:53 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 以下の仕様に従って,分数の四則演算を行うプログラムを作成せよ。 [仕様1] 以下のような構造体を定義し,分数のデータ構造に利用すること。 struct fraction{ int parent; /* 分母(denominator) */ int child; /* 分子(numerator) */ }; [仕様2] 以下の実行結果となるようなプログラムを作成せよ。 プログラムの実行結果↓ 1つ目の分数を入力して下さい。 3/4 ←キーボードより入力 2つ目の分数を入力して下さい。 1/4 ←キーボードより入力 演算方法(1.加算,2.減算,3.乗算,4.除算)を入力して下さい。 2 ←キーボードより入力 3/4 - 1/4 = 1/2 計算結果は約分をして表示 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 7月9日 [5] その他の制限:ポインタ変数、データ構造まで習いました よろしくお願いします
656 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 23:41:48 ] >>651 特に指示はないからこっちに任せただと思う だから左上からスタートで ******** * ****** * * * * * * * * * **** * * * ******** >>649 ifかswitchでそれをつくろうかと思ったがさすがにふざけてると思われそうなのでやめた
657 名前:デフォルトの名無しさん mailto:sage [2010/07/08(木) 23:51:27 ] >>656 日本語でおk。偶数パターンを出力してからものを言え
658 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 00:02:35 ] >>657 すまなかった 6 4 2の順で ****** * **** * * * * * * ****** **** * * * **** 2は正方形でも右の形でもどっちでもいい ** ** ** *
659 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 00:34:07 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): yonex1.cis.ibaraki.ac.jp/~yonekura/Socket-base/Sock-prog9.html [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 4.3.4 [3.3] 言語:C [4] 期限:2010年7月11日 [5] その他の制限: よろしくお願いします。
660 名前:デフォルトの名無しさん [2010/07/09(金) 01:28:45 ] 次のプログラムを、分かりやすく疑似コードに直してください!! 分かり易ければOKです! static int coin[] = {1, 5, 8, 10, 15}; int main(void){ int *nr, *hist, money, c, n, new; printf("input money : "); while (scanf("%d", &money) != 1) { scanf("%*[^\n]"); printf("input money again : "); } scanf("%*[^\n]"); nr = (int *)malloc((money + 1)*sizeof(*nr)); if (nr == 0) { perror("calloc"); return 1; } hist = (int *)calloc(money + 1, sizeof(*hist)); if (hist == NULL) { perror("calloc"); goto err; } for (n = 0; n <= money; n++) nr[n] = n; for (c = 0; c < sizeof(coin)/sizeof(*coin); c++) for (n = coin[c]; n <= money; n++) { new = nr[n - coin[c]] + 1; if (new < nr[n]) { nr[n] = new; hist[n] = c;} } printf("total number : %d\n", nr[money]); printf("coins : "); for (n = money; n > 0; n -= coin[hist[n]]) printf("%d ", coin[hist[n]]); printf("\n"); free(nr); free(hist); return 0; err: free(nr); return 1; }
661 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 02:34:47 ] >>648 > 2〜9の数字を入力 2はどうなのよ、2の時は?
662 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 04:46:59 ] >>602 お願いします!!
663 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 07:59:57 ] >>655 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10795.txt
664 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 16:09:48 ] >>661 星は正方形で 渦巻きは>>658 でおねがいします
665 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 20:03:15 ] codepad.org/hm0UfG3p
666 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 20:21:22 ] > codepad.org ↑便利だ。 コンパイルまでしてくれる必要は無いんだけど、 もっと色々な言語(Pascalとかverilogとか)貼り付けて、 整形して表示してくれるアプローダ無いかな?
667 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 20:26:18 ] ideone.comは?整形して表示の意味がよく分からないけど
668 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 20:40:12 ] >>667 ありがとう。これでいいです。 こんなんとかPascal似の言語とか貼り付けたかったのです。 ideone.com/zrjGj
669 名前: ◆QZaw55cn4c mailto:sage [2010/07/09(金) 22:04:40 ] ideone.com は対応している言語が多いけれども、コンパイルエラーの表示に難があるからなあ。 ideone.com/ffzm5 正解は、 transform(radians.begin(), radians.end(), sines.begin(), (double (*)(double))sin);
670 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 22:41:13 ] 整数を入力:18 1 2 3!? (中略) 13!? 14 15!? 16 17 18!? こんなプログラムはどうやって書くんですか?
671 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 22:48:40 ] さぁ、世界のナベアツ先生に聞いてちょっ
672 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 22:49:53 ] 誘導されてきたんだなぁ。ってか宿題だったのか。 次は>>1 を読もう。
673 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 22:57:56 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):3の付く数字と3の倍数の時にアホになりなさい。 [3] 環境 [3.1] OS: (Windows/Linux/等々)windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)Borland C++ 5.5.1 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 20日(火)
674 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 23:19:04 ] >>673 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10796.txt
675 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 23:27:09 ] >>674 こうすれば文字列操作が不要になるんでは。 int isAho(int n) { if (n % 3 == 0) return 1; while (n) { if (n % 10 == 3) return 1; n /= 10; } }
676 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 23:28:12 ] >>675 最後にreturn 0;するの忘れてた。
677 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 23:45:55 ] 30台もどうかとは思うが300、3000台にもなるとアホばかりで疲れるわ・・・
678 名前:デフォルトの名無しさん mailto:sage [2010/07/10(土) 00:17:05 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 以下の機能を持つプログラムを作ること。 -1から100の数字の中から素数を抽出する (配列に直接数字を指定することは不 可) -抽出した素数を大きい順(降順)にソートする -ソートした素数を1行につき5個表示する(6個目以降は次の行に表示する) 但し、以下の4つの機能を使ったプログラムにすること。 -サブ関数 -配列 -if文 -for文 以下の点に関して工夫をした場合は加点の対象とする -素数の計算時間の低減 -見つけた素数の数のカウント -ソートのアルゴリズム高速化 -実行時間の表示 作成したプログラムの特徴を提出時のコメントに記入すること (素数の見つけ方、ソートの仕方、表示方法での工夫など) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010/07/23 初心者ですがよろしくお願いします。
679 名前:デフォルトの名無しさん mailto:sage [2010/07/10(土) 02:06:24 ] >>678 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10797.c
680 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 09:13:45 ] ソートはなんならクイッ クソート があるでおじゃる
681 名前:618 mailto:sage [2010/07/10(土) 09:33:45 ] その他制限はありません。一通り学びましたが初心者です。 よろしくおねがいします
682 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 10:10:43 ] >>589 該当する関数をこれに置き換えると早くなる int coin_func_r(int result[], int c[], int m, int n){ int i, num; if(m<0 || result[m]==0) return -1; if(result[m]>0) return result[m]; for(i=0;c[i]>0;i++){ num=coin_func_r(result, c, m-c[i], n+1); if(num>0 && (result[m]<0 || result[m]>num+1)) result[m]=num+1; } if(result[m]<0) result[m]=0; return result[m]; } int coin_func(int c[], int amount){ int i, lcm_all=1, rest, c_max=1, *result, ret; for(i=0;c[i]>0;i++){ lcm_all=lcm(lcm_all, c[i]); if(c_max<c[i]) c_max=c[i]; } result=calloc(lcm_all, sizeof(int)); for(i=0;i<lcm_all;i++) result[i]=-1; for(i=0;c[i]>0;i++) result[c[i]]=1; rest=amount%lcm_all; coin_func_r(result, c, rest, 0); ret=result[rest]+(amount-rest)/c_max; free(result); return ret; }
683 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 10:24:32 ] >>511 ありがとうございます!
684 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 10:28:20 ] [1] 授業単元:C言語入門 [2] 問題文(含コード&リンク): 二つのint型整数の小さい方の値を返す関数 int i_minof(int x, int y){ /* ... */} を作成せよ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年7月12日まで よろしくお願いします。
685 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 10:40:05 ] [1] 授業単元:C言語入門 [2] 問題文(含コード&リンク): 下に示すように、整数値を読み込んで、その値を0までカウントダウン しながら表示するプログラムを作成せよ。なお、負の値を読み込んだ時は 何も表示しない(改行も表示せず終了する)ようにせよ。 ===== 整数を入力してください:9 9 8 7 6 5 4 3 2 1 0 ===== [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年7月12日まで よろしくお願いします。
686 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 10:41:38 ] >>684 int i_minof(int x, int y){ return rand()&1?x:y; }
687 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 11:41:06 ] >>684 の訂正です。 [1] 授業単元:C言語入門 [2] 問題文(含コード&リンク): 二つのint型整数の小さい方の値を返す関数 int i_minof(int x, int y){ /* ... */} を作成せよ。 ===== 二つの整数を入力してください。 整数1:49 整数2:92 小さい方の値は17です。 ===== [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年7月12日まで よろしくお願いします。
688 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 11:42:32 ] >>687 ×小さい方の値は17です。 ○小さいほうの値は49です。 何度も訂正すいません。
689 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 12:21:49 ] >>687 int i_minof(int x, int y){ if(x<y){ return x; } else{ return y; } }
690 名前:689 mailto:sage [2010/07/10(土) 12:24:03 ] 補足すると 条件演算子を使えばもっと簡単になる 参考 ttp://www5c.biglobe.ne.jp/~ecb/c/05_08.html
691 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 14:55:54 ] >>685 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10798.txt
692 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 17:55:41 ] >>691 ありがとうございます。
693 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/10(土) 18:01:33 ] 【質問テンプレ】 [1] 授業単元:プログラミングC [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10799.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:[無期限] お願いします。
694 名前:名無しさん@そうだ選挙に行こう [2010/07/10(土) 23:01:52 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、3つの色成分(Blue, Green, Red)に分離し、 それぞれを異なるファイルに保存するプログラムを実装しなさい。 プログラム中でやることは以下のことである。 1.ヘッダ部分を適切に読み込む 2.読み込んだヘッダ部分(ファイルヘッダ、情報ヘッダ)を用いて、適切なバイト数(画素数×1画素あたりのバイト数)を読んでくる。 3.分離したい色成分以外を0に書き換え、ヘッダ部分と色情報をファイルに書き込む。 ただし、以下のような構造体を使用する。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10800.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年7月12日 [5] その他の制限:特にありません。よろしくお願いします。
695 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 02:36:18 ] クイックソートのソースをとりわけ、クイックソースと言うでおじゃる
696 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 10:40:06 ] 【質問テンプレ】 [1] 授業単元:Visual C++ でのプログラミング演習 [2] 問題文(含コード&リンク):課題4.3.bをお願いします。www.dotup.org/uploda/www.dotup.org1020755.jpg [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual C++ 200 [3.3] 言語:C++ [4] 期限:[無期限]
697 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 11:07:13 ] >>696 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10801.txt 動作例から推測するに、恐らく最小の整数ではなく最小の自然数を出力するのだろう。 (1+1/n)^n は n>0 で単調減少だから、二分探索で解を求める。
698 名前:697 mailto:sage [2010/07/11(日) 11:12:36 ] 単調減少ではなく、単調増加でした
699 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 11:14:30 ] > while 型繰り返し > #include <stdio.h> ん〜〜〜
700 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 11:26:33 ] >>696 C言語でかいた #include<stdio.h> #include<math.h> int main(void){ int n = 0; double fn; while((fn=pow(1+1.0/n, n))<=2.71 || 2.72<=fn) n++; printf("n = %d\n", n); return (0); }
701 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 11:41:33 ] math.hを使うことを宣言し マス! って言ってみたかった
702 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 11:53:54 ] >>697 さま >>700 さま 有難うございました。無事解決できました。 また質問で申し訳ないのですが while((fn=pow(1+1.0/n, n))<=2.71 || 2.72<=fn) n++; ↓ while((fn=pow((double)(1+1/n), n))<=2.71 || 2.72<=fn) n++; のようにdouble型にキャストをすると実行中にエラーが出るのですが何故でしょうか?
703 名前:700 mailto:sage [2010/07/11(日) 11:56:42 ] >>702 ごめん 0 除算エラーだね n の初期値を 0 から 1 に変更してちょ
704 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 11:59:42 ] >>702 n>=2 のとき (double)(1+1/n) は常に 1.0 になってしまうぞ
705 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:11:50 ] >>703 n=0→1でエラーはでなくなりました! >>704 Googleさんで調べても分からなかったのですが キャストするとなぜだめ(1.0になる)なのでしょうか・・・?
706 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:13:47 ] 除数をキャストしてごらん。あるいはnをdouble型にする
707 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 12:33:26 ] >>706 割り算は整数だけではだめなのですね・・・。 最初から最後までご教授いただきありがとうございました。 #include <stdio.h> double a = (double)1/2; double b = 1/(double)3; double c = 1/4; printf("%f\n%f\n%f\n",a,b,c); 実行結果 0.500000 0.333333 0.000000
708 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 16:02:06 ] インチをセンチに変換するプログラムを作れという課題が出たのですが、わかりません! 明日の1限までに仕上げなければならないので、大至急お願いします! 下のところまでは書けたのですが、???のところがわかりません。 定数を掛けるというところまでは想像出来るのですが、何を掛けたらいいのか全然想像付きません。 #include <stdio.h> #include <stdlib.h> #include <string.h> double to_cm(double in) { return in * ???; } int main(int argc, char *argv[]) { double in; char str[32]; if (argc > 1) { strncpy(str, argv[1], 31); } else { printf("input inch: "); fgets(str, 31, stdin); } in = atof(str); printf("%f [in] = %f [cm].\n", in, to_cm(in)); return 0; }
709 名前: ◆QZaw55cn4c mailto:sage [2010/07/11(日) 16:05:01 ] >>708 return in * 2.56 あと、 fgets(str, 31, stdin); は fgets(str, 32, stdin); でいい。
710 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 16:07:24 ] >>709 出来ましたああああ!!!!!!!!111 先週出た課題でずっと悩んでたんですがこれで提出できそうです! あとプログラムの問題点まで指摘してくださってありがとうございました。 それから、次からはちゃんとテンプレを守ります。すみませんでした。
711 名前:709 mailto:sage [2010/07/11(日) 16:08:05 ] >>708 失礼、 return in * 2.54; だった。1 inch = 2.54 cm。
712 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 16:43:25 ] ちなみに、12インチ=1フィート=30.48cm、3フィート=1ヤード=91.44cm これ豆知識な。マイルの計算もしっかり出来ないと、参るぜ?
713 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 16:45:13 ] ∧_∧∩)) ( ・∀・)彡 パーン! ((⊂彡☆∩ _, ,_ ⊂(⌒⌒(;`Д´) `ヽ_つ ⊂ノ ←>>712
714 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 16:50:16 ] >>713 まぁそうフィートアップするなよ
715 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 17:11:59 ] パンパンパーン ∧_∧ ∩ ( ・∀・)彡☆ ⊂彡☆))Д´) >>714 ☆
716 名前:名無しさん@そうだ選挙に行こう [2010/07/11(日) 18:26:12 ] [1] 授業単元: プログラム [2] 問題文(含コード&リンク): imepita.jp/20100711/659870 画像のプログラムを下のEOFを探して処理を行う方法に書き換えてプログラムを実行せよ また、input.dataの中身を10行未満にしても正常に動く事を確かめてみよ。 int counter=0; while (!input_file.eof()){ input_file>>data[counter]; counter++ } for(i=0;i<counter;i++) output_file << data[i]*2 << '\n'; [3] 環境 [3.1] OS: linux [3.3] 言語: C++ [4] 期限: ([2010年7月11日22時まで] [5] その他の制限: なるべく簡単にしてください。お願いします。
717 名前:名無しさん@そうだ選挙に行こう [2010/07/11(日) 18:29:40 ] [1] 授業単元: プログラム [2] 問題文(含コード&リンク): imepita.jp/20100711/660110 画像のプログラムの九九表を以下の様に書き換えよ 1 画面に表示してた部分(coutの部分)をファイルに書き出す様にする 2 一番目のcoutにある''を','に変更する 3 出力ファイル名を"output.csv"とする。 この九九表が入っているファイルをExcelで読み込んで、九九表を見ることができるか確かめてみよ [3] 環境 [3.1] OS: linux [3.3] 言語: C++ [4] 期限: ([2010年7月11日22時まで] [5] その他の制限: なるべく簡単にしてください。お願いします。
718 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 19:19:51 ] >>693 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10802.c
719 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 22:01:05 ] >>717 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10803.txt
720 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 22:46:43 ] [1]授業単元:プログラミング基礎 [2] 課題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10804.txt [3] 環境:指定無し 言語C(なるべく) [4] 9/1迄(夏期課題) [5]意味がよくわからないので丸投げします