1 名前:デフォルトの名無しさん [2009/06/24(水) 23:28:21 BE:454421568-DIA(282072)] あなたが解けない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++の宿題片付けます 127代目 pc12.2ch.net/test/read.cgi/tech/1244449887/
49 名前: ◆/91kCCQXBo mailto:sage [2009/06/25(木) 22:42:24 ] >>045 C:\a.exe >a.txt line 255-261* を見れば、 >>014 (9548) OK >>前1000 は間違い
50 名前:デフォルトの名無しさん [2009/06/25(木) 22:43:26 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):下に示すように,最初に整数を読み込み,その後,その個数だけ整数を読み込んでいき,そ の合計と平均を表示するプログラムを作成せよ。 整数は何個ですか: 6 No.1 : 65 No.2 : 23 No.3 : 47 No.4 : 9 No.5 : 153 No.6 : 777 合計値: 1074 平均値: 179.00 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Visual Studio 2008 [3.3] 言語: C [4] 期限: 09年07月02日 [5] その他の制限:どうかよろしくお願いします。
51 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 22:45:37 ] >>46 せっかく作ったから便乗アップ。動作は保障しない。 #include <stdio.h> int main(){ unsigned int N,S; printf("Input Number:"); scanf("%d",&N); S=0; do{ }while(N>(1<<S++)); S--; printf("%d is upper then 2^%d ->%d!!\n",N,S-1,1<<(S-1)); return 0; }
52 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 22:48:59 ] >>50 #include <stdio.h> int main(void) { int i, n, x = 0; printf("整数は何個ですか: "); scanf("%d", &n); for (i = 0; i < n; ++i) { int t; printf("No.%d : ", i + 1); scanf("%d", &t); x += t; } printf("合計値: %d\n平均値: %.2f\n", x, (double)x / n); return 0; }
53 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 22:50:47 ] >>31 > trace実行後の出力ファイル(point.out)の内容は > 1,2 > 2,0 ここは2,2じゃないのかなあと、ガウス平面というものを知らずにレス
54 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 22:55:14 ] >>49 うpされたコードを見てなかったんだ。 スマソ
55 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 22:58:54 ] >>42 なんかよくわからんのだが、 「環境はwin avr, avr studio4です」で通じる話なのか? どんなデバイス使ってるとかわからんと手の出しようがないような わかる人にはわかるのかね 動作させるってのは実際にデバイス動かして 表示させるってのはデバイス上の液晶画面か何かに表示させるってことなんだよな?
56 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 23:02:53 ] >>37 % を含む文字列を出力できない
57 名前:デフォルトの名無しさん [2009/06/25(木) 23:08:30 ] >>55 自分も正直何をやっているのかわかっていません・・・。 デバイスの関してはatmega88pというのを使います。 液晶画面に自分の名前のアルファベットを表示させるのですが、デバイスやらUSBライターなどは教授が持っているので、自分で確認することが出来ません。
58 名前: ◆/91kCCQXBo mailto:sage [2009/06/25(木) 23:09:43 ] >>035 BMI 出力が標準出力でない。 #include <stdio.h> #define FILENAMELEN 64 #define NAMELEN 31 int main(void) { FILE *ifp; char filename[FILENAMELEN]; char name[NAMELEN]; double height, weight, BMI; fgets(filename, FILENAMELEN, stdin); filename[strlen(filename)-1] = '\0'; ifp = fopen(filename, "r"); if(ifp == NULL) return 1; while (fscanf(ifp, "%30s%lf%lf", name, &height, &weight) != EOF) { BMI = weight / height / height * 10000; if (BMI < 18.5 || BMI >= 25.0) printf("%s\n", name); } fclose(ifp); return 0; }
59 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 23:19:34 ] >>56 あるある
60 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 23:20:46 ] >>37 strchr が NULL を返したらどうするんだ
61 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 23:23:52 ] >>57 ぶっちゃけ、エスパーじゃないと無理。 一般人は、回路図とデバイスの仕様が無いと書きようがない。
62 名前:デフォルトの名無しさん [2009/06/25(木) 23:27:13 ] >>57 そうですか、わかりました。ありがとうございます。
63 名前:61 mailto:sage [2009/06/25(木) 23:45:35 ] >>57 7セグメントディスプレイは何個ついてるの? 問題文からは3つかな?
64 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 00:01:19 ] >>63 確か三つだったと思います。
65 名前:61 mailto:sage [2009/06/26(金) 00:19:45 ] >>64 7セグメントディスプレイにA(01110111)を表示する時の様に、 0から9の数字を出すパターンはできてるんだよね? それを3つのポート(PORT-B,PORT-C,PORT-D)に喰わせれば良いんじゃないか? 例えば、PORT-Bが1の位、PORT-Cが10の位、PORT-Dが100の位の 7セグメントディスプレイと繋がっていると仮定すると、 char segdat[10] = { {0を表示するパターン}, ・・・, {9を表示するパターン} }; int i; for ( i = 0; i < 256; i++ ) { int d100 = i / 100; int d10 = ( i - d100 ) / 10; int d1 = i % 10; PORTD = segdat[ d100 ]; PORTC = segdat[ d10 ]; PORTB = segdat[ d1 ]; } これだけじゃね?
66 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 00:25:04 ] >>65 今かやってみます。ありがとうございます。
67 名前:61 mailto:sage [2009/06/26(金) 00:30:36 ] >>65 訂正。 ×int d10 = ( i - d100 ) / 10; ○int d10 = ( i % 100 ) / 10;
68 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 01:40:23 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): じゃんげんプログラムを作成せよ。次の関数を用いること。 get_hand_player() print_hand() judge() [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 六月二十九日 [5] その他の制限: 関数まで。お願いします。
69 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 02:17:27 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): ほとんど質問に近いのですが、 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9552.txt のようなプログラムを人に聞きながら作ったのですが、 /*0.5を足してから*/ で示した文、kinri += 0.5; ってどういう意味があるのでしょうか? 試しに抜いてみたのですが結果は変わりませんでした。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 無期限 [5] その他の制限: 関数まで。お願いします
70 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 02:27:23 ] >>69 恐らく四捨五入をさせているものと思われる。 int型にすると小数点以下全て切り捨てだから、 0.5を足してあげると丁度四捨五入になるかと。
71 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 02:40:00 ] >>70 ああ、なるほど・・・そういうことか。 ありがと!
72 名前:デフォルトの名無しさん [2009/06/26(金) 03:08:09 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):下に示すように,二辺の長さと個数を読み込んで,読み込んだ個数だけ横長の長方形を表示 するプログラムを作成せよ. 一辺(その1) : 3 一辺(その2) : 5 個数: 4 ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Visual Studio 2008 [3.3] 言語: C [4] 期限: 09年07月01日 [5] その他の制限:特になし
73 名前:68 mailto:sage [2009/06/26(金) 03:29:04 ] >>68 の回答、 前スレにあった。どうも同じ大学の人がいるらしい。 ありがとー。
74 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 04:31:28 ] >>72 #include<stdio.h> int main(void){ int width=4, height=3, num=2, i, j, k; printf("一辺(その1) : "); scanf("%d", &height); printf("一辺(その2) : "); scanf("%d", &width); printf("個数: "); scanf("%d", &num); for(i=0;i<height;i++){ for(j=0;j<num;j++){ if(j) printf(" "); for(k=0;k<width;k++) printf("*"); } printf("\n"); } return 0; }
75 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 04:49:01 ] [1] 授業単元: C [2] 問題文(含コード&リンク): キーボードから入力された1以上の整数nについて、次の例に示すように行番号と*を表示するプログラムを作成せよ 。また、0や負の数が入力された場合はプログラムが終了するようにせよ。 表示結果の例 正の整数:6 1****** 2 ***** 3 **** 4 *** 5 ** 6 * [3] 環境 [3.1]linux [3.2] gcc [3.3]C [4]6月29日 [5]繰り返しの課題なので繰り返しまででお願いします。 スペースをどういれたらいいかわからない・・・。
76 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 04:52:10 ] >>75 ごめん、問題文ミス。 1***** 2 **** 3 *** 4 ** 5 *
77 名前:デフォルトの名無しさん [2009/06/26(金) 05:11:14 ] >>75 #include<stdio.h> int main(void){ int a=1,b,n,i,j,k; printf("n…\n"); scanf("%d",&n); if(n<=0){ return 0; } b=n; for(i=1;i<=n;i++){ for(j=b;j<=n;j++){ printf(" "); } for(k=a;k<=n;k++){ printf("*"); if(k==n)printf("\n"); } b--; a++; } return 0; }
78 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 06:09:38 ] 前スレのプログラムへの質問なんですが、 前スレ675氏のプログラム、 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9553.txt を実行すると、 Usage: exefile 10000 とだけ出力されて終了してしまうのですが、 これは自分の転記ミスなんでしょうか? [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C
79 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 06:28:49 ] >>77 ありがとう。 せっかく作ってくれた所悪い、 問題文のとおり行番号がいるんだ。
80 名前:デフォルトの名無しさん [2009/06/26(金) 06:34:11 ] >>79 #include<stdio.h> int main(void){ int a=1,b,n,i,j,k; printf("n…"); scanf("%d",&n); if(n<=0){ return 0; } b=n; for(i=1;i<=n;i++){ printf("%d",i); for(j=b;j<=n;j++){ printf(" "); } for(k=a;k<=n;k++){ printf("*"); if(k==n)printf("\n"); } b--; a++; } return 0; }
81 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 07:13:02 ] >>78 17s/argc != 2/argc != 3/
82 名前:前675 mailto:sage [2009/06/26(金) 10:16:03 ] >>78 やっちまったみたい、17行目と18行目を、次の2行に置き換えてみて、教えて。 //if(argc != 2) {puts("Usage: exefile 10000"); return 1;} //max_days = atoi(argv[1]); if(argc < 2) max_days = 10000; else max_days = atoi(argv[1]);
83 名前:デフォルトの名無しさん [2009/06/26(金) 16:39:26 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 自分の名前の英字名のASCIIコードを順番に表示するプログラムを作りなさい。 [3] 環境 [3.1] OS: Windows vista [3.2] コンパイラ名とバージョン:Visual Studio 2008 [3.3] 言語: C [4] 期限: 09年07月01日 [5] その他の制限:特になし どうかよろしくお願いします。僕の能力では作ることができませんでした。
84 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 16:54:23 ] #include <stdio.h> int main() { int i; char name[30] = "Taro Aso"; for ( i = 0; name[i] != '\0'; i++ ) printf("%3d %c", name[i], name[i]); return 0; }
85 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 18:09:15 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9554.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 7月1日 17:00 [5] その他の制限:
86 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 18:10:43 ] >>28 です。 答えてくだっさた方々ありがとうございました。
87 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 19:12:34 ] >>85 #include<stdio.h> #include<ctype.h> #include<string.h> int main(void){ char code[26][30]={{0}}, buf[30], filename[FILENAME_MAX], alpha; FILE *fp; int moji; scanf("%s\n", filename); fp=fopen(filename, "r"); if(fp==NULL) return 1; while(fscanf(fp,"%c,%[^\n]\n", &alpha, buf)==2){ if(isalpha(alpha)){ strcpy(code[tolower(alpha)-'a'], buf); } } fclose(fp); while((moji=getchar())!=EOF){ if(isalpha(moji)){ printf("%s", code[tolower(moji)-'a']); }else{ putchar(moji); } } return 0; }
88 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 19:23:31 ] 30って気持ち悪いw
89 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 19:28:57 ] >>83 #include<stdio.h> #include<ctype.h> int main(void){ char name[]="Nanasi no Gonbee Jr.2"; int i; for(i=0;name[i];i++){ printf("%c:%d\n", name[i], name[i]); } return 0; }
90 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 19:36:17 ] なんでctype.h?
91 名前:デフォルトの名無しさん [2009/06/26(金) 21:55:22 ] >>10 有難うございました!
92 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 23:25:43 ] [1]数値情報解析 [2]ドゥーリトル法によるLU分解でn元連立1次方程式を解くプログラムを作りなさい。 LベクトルとUベクトルと解ベクトルを表示すること。 [3] [3.1]Windows [3.2]Visual Studio [3.3]C [4]2009年7月1日 [5]ほぼ素人なので、少しでも優しい表現にしていただくようよろしくお願い致します。
93 名前:デフォルトの名無しさん [2009/06/27(土) 00:37:12 ] 前スレ930のものです。 前スレで回答してもらえず、前スレが落ちてしまったのでもう一度質問させてください。 [1] 授業単元:計算機システム構成原理 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9559.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 6月30日まで [5] その他の制限: 特になし よろしくお願いします。
94 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:39:17 ] 長くてめんどくさいだけの課題はやる人あんまりいないよな。
95 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 01:27:02 ] >>93 ftp.gnu.org/gnu/bash/bash-4.0.tar.gz
96 名前: ◆/91kCCQXBo mailto:sage [2009/06/27(土) 02:17:57 ] >>032 LED コンパイルはしてない。0b01111111 rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/737.zip
97 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 05:39:00 ] 11 ★pc1つで毎日3万稼ぐ★ ★翌日入金★ ★2009年最新在宅ワーク!★☆ toutou.nantomo.dousetsu.com/
98 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 06:30:45 ] >>27 Dll_BMP_C.h ってのを晒さないと誰もできないぞ (もし Dll_BMP_C.c みたいなのがあったらそれも)
99 名前:デフォルトの名無しさん [2009/06/27(土) 07:24:15 ] >>27 >>98 D_llBMP_C.h kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9560.txt
100 名前:83 [2009/06/27(土) 09:54:43 ] >>84 様 ありがとうございましたm(__)m
101 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 09:56:38 ] >>99 thx DllBmpReadImage()とかの実体のDLLかソースコードもあるとうれしい (というかそれがないとできない)
102 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 10:04:27 ] なんかこのやり取りを良く見る気がする 一般的でないライブラリを使用するときは 一緒にアップしろとテンプレに明記した方がいいんじゃないか
103 名前:デフォルトの名無しさん [2009/06/27(土) 10:11:06 ] >>95 どうみてもbash
104 名前:デフォルトの名無しさん [2009/06/27(土) 10:37:35 ] [1] 授業単元:C言語 [2] 問題文:2つの整数型の変数を入れ替える関数swapを定義して、それを使用して配列中の数字をランダムに入れ替えるプログラムの作成。 1から52までの数が順番に入った配列を用意し、十分に入れ替えた結果を表示すること。 [3] 環境 [3.1] OS: windows [3.3] 言語: C [4] 期限: 7月2日まで [5] その他の制限: 特になし
105 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 10:44:04 ] #include <stdio.h> #include <stdlib.h> void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main(void) { int i, a[52]; srand(time(NULL)); for(i=0; i<52; i++) a[i] = i + 1; for(i=52; i> 0;) { int j = rand() / (RAND_MAX + 1.0) * i--; swap(a+i, a+j); } for(i=0; i<52; i++) printf("%d ", a[i]); return 0; }
106 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 11:30:32 ] >>92 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9562.txt
107 名前:デフォルトの名無しさん [2009/06/27(土) 14:22:30 ] [1] 授業単元 C言語 [2] 問題文 回文の判断をせよ ただ、小文字、大文字の区別はしない、記号、空白も考えない。 例 Madam, I’m Adam Able was I ere I saw Elba この二つの文は回文である。 Ad czv zC Daのような文も回文 [3] 環境 [3.1] OS Windows [3.2] コンパイラ名とバージョン VisualC++ [3.3] 言語 C [4] 期限: 6月29日
108 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 16:01:45 ] >>107 眠りながら適当に書いた #include<iostream> #include<algorithm> #include<string> #include<cctype> #include<functional> int main(){ std::string line; getline(std::cin,line); std::string tmp = line; tmp.erase(std::remove_if(tmp.begin(),tmp.end(),std::not1(std::ptr_fun(std::isalpha))),tmp.end()); std::transform(tmp.begin(),tmp.end(),tmp.begin(),std::toupper); std::cout << (std::equal(tmp.begin(),tmp.end(),tmp.rbegin()) ? "回文です" : "回文じゃないです") << std::endl; }
109 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 16:02:35 ] おおっとすまん課題はC言語だったか。適当に書き直すわー
110 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 16:03:34 ] >>107 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9564.txt
111 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 16:15:54 ] 書いてるうちに他の人が書いたけど悔しいから出してみる #include<stdio.h> #include<ctype.h> #include<string.h> void copyAlpha(char*dst,const char*src){ while(*dst = *src)if(isalpha(*src++))++dst; } void lowerCase(char*dst){ for(;*dst;++dst)*dst=tolower(*dst); } void reverseStr(char*dst,const char*src){ 0[dst += strlen(src)]=0; while(*src)*--dst=*src++; } int main(){ char src[80],rev[80]; gets(src); copyAlpha(src,src); lowerCase(src); reverseStr(rev,src); puts(strcmp(rev,src)==0 ? "回文です" : "回文じゃないです"); }
112 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 17:44:30 ] ポインタなしver.がないので isalphaの行をどうにかマクロにしたかったw int is_anagram(const char str[]) { int head, tail, len; head = 0; tail = (len=strlen(str))-1; for ( len /= 2; head < len && len < tail; head++, tail-- ) { if ( !isalpha(str[head]) ) { head++; continue; } if ( !isalpha(str[tail]) ) { tail--; continue; } if ( tolower(str[head]) != tolower(str[tail]) ) return 0; return 1; } }
113 名前:デフォルトの名無しさん [2009/06/27(土) 17:50:07 ] [1] 授業単元: コンピュータプログラミング [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/clip.gif [3] 環境 [3.1] OS: windows [3.2] VisualC++ [3.3] 言語: c [4] 期限: 2009年6月30日 [5] その他の制限:配列はcharやdouble, 並び替えはdo,for,if,whileなどで習いました。 お願いします。
114 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 17:55:56 ] URLが
115 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 17:56:14 ] >>113 大きいクリップ、リンクが変。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9568.zip
116 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 17:57:34 ] >>113 問題文のリンクがちがうぞw
117 名前:デフォルトの名無しさん [2009/06/27(土) 18:07:55 ] <<115のが正しいです。 すみません。
118 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 18:33:49 ] >>112 retrun 1; の位置が明らかにおかしい
119 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 19:36:14 ] >>107 俺もブームに乗って作ってみた。動作は保障しない。怪文21面相〜♪ そうそう、全角文字には対応してないんだからね!サンプルをコピペしてハマッタ。ソースの整形はご自分で! #include <stdio.h> #include <ctype.h> #include <string.h> int main(){ unsigned char str[1024]={'\0',}; char *ch; int i=0,j=0,N=0; printf("input string:"); fgets(str,1024,stdin); str[1023] ='\0';ch = strchr(str,'\n'); if(ch != NULL) *ch ='\0'; for(i=0;str[i]!= '\0';i++){ if(isalpha(str[i])){//アルファベット置換と移動 str[j++] = toupper(str[i]); } if(isdigit(str[i])){//数字移動 str[j++] = str[i]; } } str[j]='\0'; N=j/2; for(i=0;i<N;i++){ if(str[i]!=str[j-1-i]){ printf("string is no match!\n"); return 1; } } printf("string is Match!\n"); return 0; }
120 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 20:15:38 ] >str[1023] ='\0'; 無意味
121 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 20:18:23 ] >>120 保険だよ。一行削れるから、ないほうがよかったかなぁ。。。
122 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 20:25:14 ] 行削りたいなら if(isalum(str[i])) str[j++] = toupper(str[i]); でいいだろ
123 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 20:37:25 ] >>122 あぁ、それでいけるのね。 toupperを普段使わないから、認識が曖昧だった。勉強になります。
124 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 20:41:01 ] >>121 fgets()は必ず終端に'\0'を付けると>>120 は言ってるんだろう fgets()で付く場合と付かない場合があるのは'\n'だ
125 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 20:45:29 ] >>124 それも認識が曖昧だった。なるほど、勉強になります。
126 名前:デフォルトの名無しさん [2009/06/27(土) 21:07:38 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): int型配列:int x[]と、int型配列xの大きさ:int sizeの2つの引数を用いて、 クイックソートで昇順に並べ替えるvoid quicksort(int x[], int size)と 二分木の中間走査によって昇順に並び変えるvoid inorder(int x[], int size) の作成 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 明日 [5] その他の制限: 特になし
127 名前:デフォルトの名無しさん [2009/06/27(土) 22:03:12 ] >>27 u9.getuploader.com/himajinn/download/190/DLL_files.zip
128 名前:93 [2009/06/27(土) 23:06:49 ] >>95 これは違うと思うのですが…。 すいませんがどなたか>>93 のをお願いします。
129 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 23:42:52 ] >>128 >>94-95
130 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 23:54:48 ] >>106 さんありがとうございました。 ホントに助かりました!
131 名前: ◆/91kCCQXBo mailto:sage [2009/06/28(日) 01:42:21 ] >>113 ソートのアルゴリズムは習ってないということで。 pc12.2ch.net/test/read.cgi/tech/1232367742/676
132 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 02:54:57 ] 【質問テンプレ】 [1] 授業単元: C言語演習 [2] 問題文(含コード&リンク):3つの分数の和を求めるプログラムの作成. 但し,2つの分数の和をもとめる関数bunnsuwa(..)を作ってそれを利用して3つの分数を求める. [3] 環境 [3.1] OS:Windows/vista [3.2] コンパイラ名とバージョン Visual Studio 2008 [3.3] 言語:C++ [4] 期限: ([7月2日まで] [5] その他の制限: 下の手順でプログラムを作成すること 1.二つの分数を入力して,その和をmain関数で計算して結果を表示する 1.1 分数を二つ入力 b/a, d/c とする: ここは整数変数4つにデータを入力 1.2 二つの分数の和をf/eに計算: 普通に計算してf,eを表示 2.その二つの分数の和を計算する部分を取り出し関数bunnsuwa(..)を作成する: 3.bunnsuwa(..)を複数回適用し、三つの分数の和を求めるプログラムを作成する 4 約分をできるようにする。また分母が0のときにエラー処理をする。 4.1 yakubun(..)という関数を作ってみるのもよい 例えば、void yakubun(int *a, int *b)で *b/*aを約分して更新する 5 マイナスの分子や分母が入れられた時や,分母が1になった時もきれいに表示できるようにする お願いします〜
133 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 10:36:59 ] >>132 こんな感じでよいか? #include<stdio.h> void yakubun(int*a,int*b){ int x=*a,y=*b,z; while(y){z=x%y;x=y;y=z;} *a/=x;*b/=x; if(*a<0)*a=-*a,*b=-*b; } void bunnsuwa(int*a,int*b,int*c,int*d){ *b=*b**c+*a**d;*a*=*c; } int main(){ int a=!0,b=0,c,d,i; for(i=1;i<4;i++){ for(;;puts("やりなおせ")){ printf("%dつ目の 分子 分母 = ",i);scanf("%d%d",&d,&c); if(c)break; } bunnsuwa(&a,&b,&c,&d); yakubun(&a,&b); printf("合計 = %d",b); if(a>1&&b!=0)printf(" / %d",a); puts(""); } return 0; }
134 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 10:37:30 ] [1] 授業単元: C言語 [2] 問題文: (1) 整数と4つの演算子(+, -, *, /)とカッコ ( ) から 成る計算式の文字列から計算木を作成する関数を作れ。 ただし、再帰は使ってはならない。 (2) 整数と4つの演算子(+, -, *, /)から成る計算木から 計算式の文字列を作成する関数を作れ。優先順位に注意 して、必要な箇所をカッコ ( ) でくくれ。ただし、 再帰は使ってはならない。 [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] C言語 [4] 期限:6/30 お願いします。
135 名前:93 [2009/06/28(日) 11:15:59 ] >>129 本当にわからなくて>>95 のが与えられてもよくわかりませんでした。 すいませんがせめて>>95 のどれを見たらわかるかだけでも教えていただけないでしょうか?
136 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 11:41:43 ] >>132 一応やってみた。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9569.txt
137 名前:デフォルトの名無しさん [2009/06/28(日) 13:36:16 ] [1] 授業単元:数理物理 [2] 問題文(含コード&リンク):www.mns.kyutech.ac.jp/~kamada/suuributuri/sub8.html [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:どちらでも可 [4] 期限:6/30まで [5] ヒントのプログラムから最後のprintfのところのxのあたいがよくわからないのでよろしくお願いします。
138 名前: ◆/91kCCQXBo mailto:sage [2009/06/28(日) 13:41:47 ] >>132 >>136 のGCDを参考にした。 3個の分数の和は、分数の和+1個の分数の和が題意だと解釈してみた。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9570.c
139 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 14:02:12 ] >>133 >>136 >>138 ありがとうございました!とても参考になりました。
140 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 14:15:05 ] >>87 答えてくださってありがとうございます。しかし、これを実行してみたら、フォネティックコード 化はちゃんとなっているんですけど、入力→フォネティックコード化→入力・・・・とずっと続 いてしまいます。 ポインタとファイルだけは何がどうなっているのかさっぱりわからないので自分で修正する こともできなくて・・・。修正よろしくおねがいします。
141 名前:デフォルトの名無しさん [2009/06/28(日) 14:48:24 ] >>96 遅くなりましたが、ありがとうございます。
142 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 15:16:05 ] >>137 xは微分方程式を解いたときのx(t)の値だと思う double func(double x, double v, double t) { return (-x-v*v*v+1+cos(t)); } に変えるだけでいいんじゃないかな
143 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 15:23:56 ] >>140 こうかな? ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9571.c
144 名前:143 mailto:sage [2009/06/28(日) 15:30:17 ] while((moji=getchar())!=EOF){ if(isalpha(moji)){ printf("%s", code[tolower(moji)-'a']); }else{ if (moji == ']') break; putchar(moji); } } 前のだと無駄に ] を出力しちゃうのでこっちの方で。
145 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 16:04:07 ] >>144 if (moji == '\n') // 改行で終わる(笑!) break;
146 名前:デフォルトの名無しさん [2009/06/28(日) 16:13:13 ] [1] 授業単元: C言語 [2] 問題文:f(x)=xe^x-6を2分法とニュートン法で解きなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Visual Studio 2008 [3.3] 言語: C 「4」期限:6/28 [5] その他の制限: 配列が終わった程度しかやってません
147 名前:デフォルトの名無しさん [2009/06/28(日) 17:17:34 ] >>142 助かりました。 プログラムは一応完成しました。 感謝します。
148 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 17:41:06 ] >>146 #include <stdio.h> #include <math.h> double f(double x) { return x * exp(x) - 6; } double fd(double x) { return (1 + x) * exp(x); } /* 繰り返し回数、初期値は任意 */ int main(void) { // 二分法 { int i, n = 10; double a = 0, b = 5, x; for (i = 0; i < n; i++) { x = (a + b) / 2; if (f(x) < 0 && f(a) < 0) { a = x; } else { b = x; } } printf("%f\n", x); } // ニュートン法 { int i, n = 10; double x = 0; for (i = 0; i < n; i++) { x = x - f(x) / fd(x); } printf("%f\n", x); } return 0; }
149 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 18:00:11 ] >>148 即レスthxです 参考にさせてもらいます