1 名前:デフォルトの名無しさん [2008/10/30(木) 07:49:39 BE:113605834-PLT(24065)] あなたが解けない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++の宿題を片付けます 116代目 pc11.2ch.net/test/read.cgi/tech/1222813731/
577 名前:522 mailto:sage [2008/11/11(火) 12:03:42 ] >>576 void push(int val) { stack[sp++] = val; } int pop(void) { return stack[sp-- - 1]; } int isempty(void) { /*スタックが空なら1、空でないなら0を返す関数 */ return sp == 0 ? 1 : 0; }
578 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 12:08:04 ] stack[sp++] = val; は普通だけど、 return stack[sp-- - 1]; って書き方がすごくきもく見えるw
579 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 12:13:05 ] return stack[--sp]; だよなぁ常考
580 名前:522 mailto:sage [2008/11/11(火) 12:37:34 ] >>578 >>579 貼ってから自分でもそうオモタ
581 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 12:59:00 ] 個人的に 論理式?1:0;とかif(論理式!=0)とかif(論理式==0) って書き方が好きじゃない。冗長な感じがして。
582 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 13:01:58 ] 真の時に1を返すと保障されている処理系ならば return sp == 0; でもいいんだけどね
583 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 13:03:56 ] C言語は保証されてる
584 名前:デフォルトの名無しさん [2008/11/11(火) 14:01:00 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 以下のプログラムを英文清書プログラムに書き換えよ。 元のプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7997.c 条件 ・文の先頭は大文字、それ以外は小文字。 ・アルファベット以外の文字は変換しなくてよい。 ・改行、スペース、タブにより単語の区切りとする。また文末は改行コードではなくピリオド"."で判定する。 ・\endまたは\ENDを挿入するとそのプログラムを終わるようにする。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008/11/12 23:59まで [5] その他の制限: 特にないです。 すみませんが、よろしくお願いします。
585 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 14:34:13 ] INExp.hって??
586 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 15:28:24 ] isalphaとtoupper使えればいいのかな ピリオド検索はstrstrで ポインタアドレスの差を文字列長にもしてげへへへ
587 名前:デフォルトの名無しさん [2008/11/11(火) 16:00:13 ] [1] 授業単元:単方向線形 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8000.c [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 11/18 [5] その他の制限: 特になし 全く分かりません。宜しくお願いします
588 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 16:12:52 ] >>587 うそつけw 考える気がないだろw
589 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 17:34:32 ] それを言ったらこのスレの存在意義がなくなるわけだが
590 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 17:36:25 ] どこのスレにだって黙ってればいいのに野暮ったい突っ込みする奴居るじゃん。
591 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:18:38 ] >>573 ありがとうございます
592 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:19:28 ] >>587 超めんどくさい!cの単方向リスト嫌い! kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8001.txt
593 名前:576 mailto:sage [2008/11/11(火) 18:22:40 ] >>577 ありがとうございます。>>522 と合わせてプログラムにしてみたんだが何もマップされないんです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8002.txt 自宅のubuntuのgcc(おそらくでやってるんですが環境のせいですか?変なところあったら指摘お願いします。
594 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:24:58 ] printf("%s\n", map[y]);
595 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:25:43 ] ごめんかんちがい
596 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:28:38 ] あ!コピペミスってるだけじゃん〜
597 名前:デフォルトの名無しさん [2008/11/11(火) 18:49:43 ] a
598 名前: ◆25LbU5YSxg mailto:sage [2008/11/11(火) 18:52:30 ] >>541 遅れましたが、解答ありがとうございました。
599 名前:577 mailto:sage [2008/11/11(火) 19:21:30 ] >>593 map データがなんだかやせ細ってるよ
600 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 20:20:46 ] 1] 授業単元: C言語 [2] 問題文(含コード&リンク): (1) 単項式を入力された順に出力されるように変更する (2)入力した単項式を次数の大きい順にするに出力されるように変更する ソースは以下を参考にしてください、たらない変数は任意で増やしてけっこうです kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8003.txt (1)と(2)は別解答 [3] 環境 [3.1] OS: Win [3.2] コンパイラ名とバージョン: 任意 [3.3] 言語: C [4] 期限: 2008年11月14日13:30まで 期限が迫ってるのでお願いします
601 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 20:28:18 ] この問題昔見たなw
602 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 20:32:57 ] すいません 前スレあたりで載せたんですがスルーだったようで自力でやろうとしたけど無理だったので再度^^; 最終期限がすぐであせってます
603 名前:576 mailto:sage [2008/11/11(火) 20:35:35 ] なんというミス(^o^) みなさまありがとうございました。明日も生きていけそうです。
604 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 20:37:29 ] [1] 授業単元: 文字列操作 [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8004.txt [3] 環境 [3.1] OS:Linux [3.2] cc [3.3] C [4] 期限:2008年11月12日15:00まで [5] その他の制限:問題文中に出てくる、frequency.c を利用せよ、とありますので、 なるべくそれを基盤にするようにお願いします。 ↓途中まで考えてみたものです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8005.txt
605 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 20:45:38 ] >>604 1問目 freqency.c の出力部分を以下のように修正 for(i = 0; i < 26; i++) { /* 結果出力 */ while(alpha[i]-- > 0) printf("*"); printf("\n"); }
606 名前:605 mailto:sage [2008/11/11(火) 20:54:39 ] >>604 2問目 main の中身だけ char c; int i, j, alpha[26], max = 0; for(i = 0; i < 26; i++) /* 配列のクリア */ alpha[i] = 0; c = getchar(); while(c != '\n') { if (c >= 'a' && c <= 'z') { /* 英小文字の処理 */ alpha[c - 'a'] += 1; if (alpha[c - 'a'] > max) max = alpha[c - 'a']; } else { if (c >= 'A' && c <= 'Z') { /* 英大文字の処理 */ alpha[c - 'A'] += 1; if (alpha[c - 'A'] > max) max = alpha[c - 'A']; } } c = getchar(); } for(i = 0; i < max; i++) { for(j = 0; j < 26; j++) { /* 結果出力 */ if (alpha[j] >= max - i) printf("* "); else printf(" "); } printf("\n"); } for(j = 0; j < 26; j++) /* 結果出力 */ printf("%c ", j + 'a'); printf("\n");
607 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 20:59:53 ] すいません・・>>491 をお願いします・・
608 名前:デフォルトの名無しさん [2008/11/11(火) 21:09:56 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 問1、ユークリッドの法則を使ってn(n≦100)個の正整数の最大公約数を求めるプログラムを作れ なお、最終的にはgcd(最大公約数を求める整数の羅列)=結果と画面上に表示するようにすること 問2、n個(n≦100以下)の正整数の最小公倍数を求めよ。 表示方法は先ほどの問いと一緒 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:11/13 [5] その他の制限: int gcd(int x, int y)の関数を使用してください あと、なるべく2つずつ比べるようにして、必ず大きい正数が変数xに入るようにしてください
609 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:15:18 ] >>607 ボールの初速とか角度は風の影響が全く無いときに当たるようにすればいいの? それとも投げたら絶対当たるように作るの?
610 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:18:17 ] [1] 授業単元:C [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8006.txt @2次元平面上の点を表す構造体 Point 型を定義して,その点に関する計算を行うプログラムを作成したい. 以下のプログラムを基にして完成せよ. 構造体 Point型は,double型の X座標と Y座標のメンバをもつ. 構造体 Point型を使用して,原点からの距離を求める関数 length_vector_pを作成する. ただし,「構造体ポインタ変数」を利用すること. 構造体 Point型を使用して,平面の点を表示する関数 print_v_pを作成する. ただし,「構造体ポインタ変数」を利用すること. A2次元平面上の点を表す構造体 Point 型を定義して,その点に関する計算を行うプログラムを作成したい. 以下のプログラムを基にして完成せよ. 構造体 Point型は,double型の X座標と Y座標のメンバをもつ. 構造体 Point型を使用して,平面の点を表示する関数 print_v_p2を作成する. ただし,「構造体ポインタ変数」を利用すること. 構造体 Point型を使用して,平面の点を代入する関数 input_point_pを作成する. ただし,「構造体ポインタ変数」を利用すること. 構造体ポインタ変数に対して,動的にメモリ領域を確保する. malloc を利用する. [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: visual stadio2008 [3.3] 言語: C [4] 期限: 2008年11月13日
611 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:21:25 ] >>607 前者でお願いします
612 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:25:52 ] >>600 とりあえず(1) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8007.txt
613 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:52:31 ] >>608 n 個の正数は a[] に入力されているとして。 #include <stdio.h> int gcd(int x, int y) { int r; if (x < y) { int t = x; x = y; y = t; } do { r = x % y; x = y; y = r; } while (r != 0); return x; } int main(int argc, char *argv[]) { int a[] = { 121, 11, 14641, 1331}; int n = 4; int i, g; g = a[0]; printf("gcd(%d", a[0]); for (i = 1; i < n; i++) { printf(", %d", a[i]); g = gcd(g, a[i]); } printf(") = %d\n", g); return 0; }
614 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:57:28 ] [1] 授業単元: 自作関数 [2] 問題文(含コード&リンク): 5つの数値を入力し(繰り返し入力)し、最大値を表示する。 [3] 環境 [3.1] OS: Windowsvista [3.2] VC 6.0等 [3.3] 言語: C [4] 期限: 今日までなのでよろしくお願いします [5] その他の制限:繰り返し文しかならってないです。
615 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:59:13 ] >>614 >>614 #include<stdio.h> int sori(int x, int y) { if( x>=y ) return(x); return(y); } int main(void) { int a,b,c,d,e,max; while ( scanf("%d%d%d%d%d",&a,&b,&c,&d,&e)==5) { max=a; max=sori(max,b); max=b; max=sori(max,c); max=c; max=sori(max,d); max=d; max=sori(max,e); printf("%d %d %d %d %d",a,b,c,d,e); printf("max=%d\n",max); } return (0); }
616 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:00:00 ] >>614 >>615 エラーメッセージ エラー E2209 kadai6-1.cpp 1: インクルードファイル 'stdio.h' をオープンできない エラー E2268 kadai6-1.cpp 9: 未定義の関数 'scanf' を呼び出した(関数 main() ) エラー E2268 kadai6-1.cpp 18: 未定義の関数 'printf' を呼び出した(関数 main() 上記のようなプログラムを自分で作ったのですが、 上に記したようなエラーメッセージが表示されてしまいました。 これ以上わかりません。どうかよろしくお願いします。
617 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:09:48 ] >>616 Linux だとちゃんとコンパイルできるから、ワークスペース作ってないとかの問題じゃないの? 以下の行を削除すれば、一応目的は達成できるぞ max=b; max=c; max=d;
618 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:17:17 ] >>617 試してみます。どうもありがとうございました。
619 名前:デフォルトの名無しさん [2008/11/11(火) 22:23:31 ] コンパイルしたら 「配列または、ポインタでない変数に添字が使われました」って怒られたんですが どう直せばいいでしょうか?
620 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:24:07 ] あきらめてください
621 名前:デフォルトの名無しさん [2008/11/11(火) 22:25:41 ] 配列またはポインタでない変数に、添え字を使わないようにすればいい
622 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:28:28 ] まずcppじゃなくてcにするとか
623 名前:619 [2008/11/11(火) 22:29:25 ] >>621 ありがとう!
624 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:30:24 ] てかsoriって関数名なんて意味?ソリ?サンタが乗ってるヤツ?
625 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:33:02 ] 飲み過ぎ食べ過ぎに、ソリマックス。
626 名前:604 mailto:sage [2008/11/11(火) 22:36:08 ] >>604 ,605 素早い対応ありがとうございます。 すいません、問題文のとおりプログラムは1つだけなんです。 つまり、freqency.cを拡張して、横に伸びるグラフと縦に伸びるグラフを 同時に表示したいのです・・・。 605の方を別に作って試してみましたが、縦のグラフは表示できました。 (上の方で1つずつ空白分がずれるのは仕様でしょうか?) 604は、元のプログラムの出力部の変更のみで表示できました。 が、605と一緒にしなければならないので、どうにか605の大文字と小文字の処理を604と 同じくしてできないかと困っています。 よろしければ検討をお願いしたいです。
627 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:38:57 ] >>626 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8008.txt 違う人だけど。
628 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 22:42:40 ] >>626 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8009.txt
629 名前:デフォルトの名無しさん [2008/11/11(火) 22:51:20 ] soriなんて名前付けてsorry・・・。
630 名前:お願いします [2008/11/11(火) 23:23:42 ] [1] 授業単元: アルゴリズムデータ構造U [2] 問題文(含コード&リンク): 複素数a,bを標準入力から入力し、それぞれの絶対値を求め、2つの複素数の和、差、積、商を求め 標準出力に出力するプログラムを作りたい。これらを求める関数として、複素数の絶対値を求める関数 および和、差、積、商を求める関数が double cabs(struct mycomplex) struct mycomplex wa(struct mycomplex,struct mycomplex) struct mycomplex sa(struct mycomplex,struct mycomplex) struct mycomplex seki(struct mycomplex,struct mycomplex) struct mycomplex shou(struct mycomplex,struct mycomplex) として作ることにした。これらの絶対値、和、差、積と商を求める関数を解答せよ なおこの構造体は予めCの処理系には用意されているが、それを利用せず独立に考えよ。 [3] 環境 [3.1] OS: Windows [3.2] [3.3] 言語: C [4] 期限: 11月16日まで [5] その他の制限:構造体の問題です 問題文に沿ってお願いします。
631 名前:604,626 mailto:sage [2008/11/11(火) 23:23:58 ] >>627 一部重複箇所(横グラフが2つ出ました)がありましたので、それを修正した上で 実行したところ、結果が得られました。 >>628 こちらも正しい結果が得られました。 627さんのプログラムは使われた文字のみの出力、 628さんのプログラムは全てのアルファベットについての出力が確認できました。 もう一度しっかり目を通した上で使わせていただきたいと思います。 レスからわずか10分足らずでの迅速な対応、本当にありがとうございます。
632 名前:お願いします [2008/11/11(火) 23:25:43 ] >>630 #include<stdio.h> #include<math.h> struct mycomplex {double re; double im;}; int main() {struct mycomplex a,b; struct mycomplex wa(struct mycomplex,struct mycomplex); struct mycomplex sa(struct mycomplex,struct mycomplex); struct mycomplex seki(struct mycomplex,struct mycomplex); struct mycomplex shou(struct mycomplex,struct mycomplex); double cabs(struct mycomplex); struct mycomplex cinput(void); void cprint(struct mycomplex); a=cinput(); b=cinput(); cprint(wa(a,b)); cprint(sa(a,b)); cprint(seki(a,b)); cprint(shou(a,b)); printf("絶対値 cabs(a)=%f\n",carbs(a)); printf("絶対値 cabs(b)=%f\n",cabs(b));} struct mycomplex cinput(void) {struct mycomplex z; scanf("%f %f",&z.re,&z.im); return z;} void cprint(struct mycomplex z) { printf("複素数 = %f + i*%f\n",z.re,z.im);}
633 名前:大輔 [2008/11/12(水) 00:18:51 ] [1] 授業単元:繰り返し処理(for文・while文) [2] 問題文(含コード&リンク):下に示すような九九の表を表示するプログラムを作成しなさい [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語:C++ [4] 期限:2008年11月14日15:00まで [5] その他の制限:printf,scanf,if,switch,程度の関数しか習っていません。for文の入れ子(二重のforループ)を使う。フォーマットをそろえるには、書式指定文字列(変換仕様)を利用。 1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 4 4 8 12 16 20 24 28 32 36 5 5 10 15 20 25 30 35 40 45 6 6 12 18 24 30 36 42 48 54 7 7 14 21 28 35 42 49 56 63 8 8 16 24 32 40 48 56 64 72 9 9 18 27 36 45 54 63 72 81
634 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:26:39 ] >>633 #include <stdio.h> main() { int i, j; for(i = 0; i < 10; i++) { for(j = 0; j < 10; j++) if (i == 0) if (j == 0) printf(" "); else printf("%2d ", j); else if (j == 0) printf("%d ", i); else printf("%2d ", i * j); printf("\n"); } }
635 名前:デフォルトの名無しさん [2008/11/12(水) 00:35:49 ] #include <stdio.h> void main(){ printf(" "); for(i=0; i<10; i++){ printf(" %2d", i); } printf("\n"); for(i=1; i<10; i++){ printf("%d", i); for(j=0; j<10; j++){ printf(" %2d", i*j) } printf("\n"); } }
636 名前:634 mailto:sage [2008/11/12(水) 00:37:47 ] >>635 こっちのほうがすっきりしてるね
637 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:39:11 ] ↑jも1からだった void main(){ printf(" "); for(i=1; i<10; i++) printf(" %2d", i); printf("\n"); for(i=1; i<10; i++){ printf("%d", i); for(j=1; j<10; j++) printf(" %2d", i*j) printf("\n"); } }
638 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:41:40 ] %2dじゃ空白が入らないんじゃないの?
639 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:47:29 ] [1] 授業単元:プログラミング言語 [2] 改行を含む文字を受け取るにはどうすればいいんでしょうか?getを使えばスペースを含む文字を変数に書き込めるのは分かったんですが、改行を含む文字を書き込む方法が分かりません。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: ごめんよく分からない。でも使っているのはMicrosoftからダウンロードしたVisual C++ [3.3] 言語: C++ [4] 期限2008/11/15 [5] その他の制限: 無し
640 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 00:48:35 ] >>639 getsのこといってんだろうか・・・・・・・・ fgetsを使えばいんじゃね?
641 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 01:23:17 ] [1] 授業単元:ハッシュ法 [2] 問題文(含コード&リンク):指定したファイルを読み込み開放番地法でのハッシュ表を生成し、 (i) 線形探査法 (ii) 二重分散法 に基づいた探索関数を作成せよ。 (i),(ii)の探索関数を用いて任意の値 (a) 表中に存在するキー 100個 (b) 表中に存在しないキー 100個 について連続で探索し、総探査回数、総実行時間を記録する。(一部略) [3] 環境 [3.1] OS: Linux [3.2] gcc [3.3] 言語: C [4] 期限: 11月12日21時迄 www1.axfc.net/uploader/He/so/157773 (pass: jik1) ↑中身は問題原文、指定されたファイル、自分で作成したプログラムソースです 対象ファイルの中身が文字列なので探索にstrcmpを用いようとしたのですが、実行時にエラーが出てしまってどうすればいいかわからない状態です よろしくお願いします
642 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 01:29:27 ] [1] 授業単元:アルゴリズム [2] 問題文:5人の学生の3教科の点数(0~100点)をランダムに表示させる。 それぞれの合計点を計算し、合計点の高い順に順位をつける。 [3] 環境 [3.1] WindowsXP [3.2] gcc 3.4 [3.3] C [4] 期限:なし どなたかおねがいします…orz
643 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 02:06:34 ] >>642 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8011.c
644 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 02:08:18 ] 変数tmpはいらないから消してくれ
645 名前:デフォルトの名無しさん [2008/11/12(水) 02:29:43 ] >>613 ありがとうございます 聞きたいんですが、a[]にn個の整数が入ってるとしてって所なんですけど、どうやって定義したんですか?
646 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 04:48:09 ] >>645 int a[] = { 121, 11, 14641, 1331};
647 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 05:36:33 ] 1] 授業単元:プログラミング演習1 C言語の基礎 [2] 問題文(含コード&リンク): S=1+2+・・・n<100 を満たす最大の自然数nとSを出力するプログラムを作成してください。 for文とwhile文を用いたのをそれぞれ作成すること。 考え方:ループを用いて1から順に自然数を足して行き、 和が100を段階で計算を打ち切るようにプログラムする [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc バージョンは最新 [3.3] 言語: C [4] 期限: 今日 [5] その他の制限:変数とハローワールドとscanf、条件文しかならってないはず 期限が近い・・・よろしくお願いします
648 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 06:06:08 ] >>647 #include <stdio.h> main() { int S = 0, n; for(n = 1; S + n < 100; n++){ S += n; } n--; // 足しすぎたので 1 引く printf("n:%d S:%d\n", n, S); S = 0; n = 1; while(S + n < 100){ S += n; n++; } n--; printf("n:%d S:%d\n", n, S); }
649 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 06:14:44 ] >>648 なるほど・・・条件にS<100だから105しかでてこなかったのか俺・・・。 ありがとうございまいした、勉強になりました
650 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 08:00:09 ] [1] 授業単元:画像情報工学 [2] 問題文(含コード&リンク): ブレゼンハムのアルゴリズムを用いて、ウインドウ内に線分を描画するプログラムを作成しなさい。 仕様1(マウスの左ボタンと右ボタンを使用する。候補線の表示は無し。) マウスの左ボタンクリック 線分の始点座標の指定 マウスの右ボタンクリック 線分の終点座標の指定及び線分の描画 [3] 環境 [3.1] OS:vista [3.2] コンパイラ名とバージョン:VC++ 2008 [3.3] 言語: C [4] 期限: 2008年11月12日まで [5] その他の制限: ライブラリの点を描画するAPI関数を使って線分を引くこと。直線を引くAPI関数を使ってはならない。 Cは簡単なものしかやったことなくて全く分かりません 誰か助けてくださいお願いします……
651 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 08:16:50 ] 誰か610お願いします
652 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 08:29:43 ] >>610 @ /* (x,y)-平面の点を座標で表す構造体 */ struct Point { double x; double y; }; /* 原点からの長さを求める関数 */ double length_vector_p(struct Point *p) { return sqrt(p->x*p->x + p->y*p->y); } /* 平面の点を表示する関数 */ void print_v_p(struct Point *p) { printf("%f %f\n", p->x, p->y); } int main(void) { struct Point p; printf("Input Point X: "); scanf("%lf", &p.x); printf("Input Point Y: "); scanf("%lf", &p.y); print_v_p(&p); /* print_v_pを使用して,座標の表示 */ printf("The length of vector: %f\n", length_vector_p(&p) ); return 0; }
653 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 08:32:46 ] >>610 A struct Point { double x; double y; }; void input_point_p(struct Point *p){ printf("X:"); scanf("%lf", &p->x); printf("Y:"); scanf("%lf", &p->y); } void print_v_p2(struct Point *p){ printf("%f %f\n", p->x, p->y); } int main(void){ struct Point *p; /* 構造体ポインタ変数 p */ int num, i; printf("Input number of vector: "); scanf("%d", &num); for (i=0; i< num; i++) { p = malloc(sizeof(struct Point)); /* malloc を使って領域確保 */ if( p == NULL ) { printf( "memory cannot alloc!\n" ); exit( 1 ); } input_point_p(p); /* 関数を使って要素を代入 */ print_v_p2(p); /* 関数を使って要素の表示 */ free(p); /* メモリの解放 */ } return 0; }
654 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 08:38:01 ] >650 期限は12日じゃなくて19日まででした……
655 名前:デフォルトの名無しさん [2008/11/12(水) 10:13:51 ] >>646 ありがとうございます!
656 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 11:27:53 ] >>650 ライブラリって何の? 専用のをつかってるならそれもうp
657 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 13:21:11 ] 期限が1日伸びたので>>491 をお願いできませんか?
658 名前:608 mailto:sage [2008/11/12(水) 13:21:57 ] ちょっと聞きたいんですけど、学校から>>608 に関係した問題が追加で出されたんだけど、それを解いてもらえることってできますか?
659 名前:デフォルトの名無しさん [2008/11/12(水) 13:24:12 ] [1] 授業単元 プログラミング基礎 [2] 問題文(含コード&リンク) マイナスの値が入力されるまで繰り返し整数値を入力し最大、最小を求める。 初期化で最大値には最小の値を、最小値には最大の値を設定しておく。 繰り返しにはwhile文を使用する。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年 11月14日 18時 [5] その他の制限: 特になし よろしくお願いします
660 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 13:40:57 ] >>656 渡されたプリントに書いてあったまんまなんで、自分でも良くわかりません…… 授業ではC言語はおろかPCにすら触ってません
661 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 13:59:59 ] >>660 単に授業を聞いてなかったとかサボってたとかじゃなくて? 何の前説もなしにそのプリントをぽんと渡されただけなら行く学校を間違えたな たぶん、説明はあったのに理解できなくてスルーしただけだろうけど
662 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 14:05:51 ] >>659 #include <stdio.h> int main (void) { int n, min=32767, max=0; while(1){ scanf("%d", &n); if(n<0) break; if(n > max) max = n; if(n < min) min = n; } printf("min = %d, max = %d\n", min, max); return 0; }
663 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 14:11:44 ] >>657 ' ' とか '■' とか '○' マルチバイト文字を扱うのが面倒 ' ' とか '*' とか 'o' でよかったらそんなにかからないけど
664 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 14:47:40 ] >>659 >>662 + 初期値可変入力 #include <stdio.h> int main( void ) { int i, n; int imin, imax; int nmin, nmax; printf( "最小値の最大を入力してください>" ); scanf( "%d" , &imin ); /* 数値の入力 */ printf( "最大値の最小を入力してください>" ); scanf( "%d" , &imax ); /* 数値の入力 */ nmin=imin; nmax=imax; while (1) { printf( "数値を入力してください>" ); scanf( "%d" , &n ); /* 数値の入力 */ if ( n < 0 ) /* 終了 */ { printf( "終了\n" );break;} if ( n < imin ) /* 最小値 */ { nmin= n;} if ( imax < n ) /* 最大値 */ { nmax= n;} } printf(" 最小:%d\n", nmin); printf(" 最大:%d\n", nmax); }
665 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 14:54:11 ] >>661 授業が元々コンピュータでの画像の描画方法についてなんです 今までプログラムなんて一切なしでアルゴリズム?みたなのを学んでて いきなりレポートの概要渡されました 授業は毎回出てますし、ノートも取ってます それに居眠りとか出来る状況じゃないので 説明はあったんですが、それまでの知識じゃ全く理解できませんでした
666 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 15:03:29 ] どなたか>>641 お願いできないでしょうか? ヒントだけとかでもいいので・・・orz
667 名前:デフォルトの名無しさん [2008/11/12(水) 15:39:48 ] >>646 調べたい整数の数を を選べるようにするにはどうすればいいの?
668 名前:639 mailto:sage [2008/11/12(水) 15:46:44 ] >>640 あ、すいません。 getsの間違いでした。 fgets…使ってみたんですが、エラーが出ました。 今作っているソースは #include<stdio.h> #include<iostream> #include<string> using namespace std; int main(){ char filename[20], time[100], data[1000000]; FILE *fp; cout<<"CPUtime?"<<endl; gets(time); cout<<"data?"<<endl; gets(data); fp = fopen("file.txt","w"); fprintf(fp,"%s\n",time); fprintf(fp,"%s",data); fclose(fp); } で、本当は「file.txt」ってなってるファイル名を、キーボードから受け取るようにして(filenameとは宣言したものの…) dataに、 「 0 1.99400005840289e-007 -1.99400005840289e-007 9.89100023673223e-014 2.63400000595493e-012 1e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89000006022811e-014 2.63400000595493e-012 2e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89100023673223e-014 2.63400000595493e-012 4.000015229e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89299991211411e-014 2.63400000595493e-012 …」みたいな改行を含んだ文字をコピーして実行画面(コマンドプロンプト)に貼り付けてテキストファイルを作りたいんですがよく分かりません。
669 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 15:48:54 ] >>667 調べたい整数をユーザに入力させたい、ってとこか? それならこんなかんじ。 int main(int argc, char *argv[]) { int *a; int n, i, g; printf("調べたい整数の数は?: "); scanf("%d", &n); a = malloc(n * sizeof(int)); for (i = 0; i < n; i++) { printf("%d 個目の整数を入力してください: ", i+1); scanf("%d", &a[i]); } g = a[0]; --- >>613 と同様 -- free(a); return 0; }
670 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:01:12 ] >>612 解答あり >>600 の(2)できる方おねがいします
671 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:10:20 ] >>663 それでお願いできますか?
672 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:14:23 ] >>665 理解できなかったのならなぜ質問しなかったのだろう? その感じだと実際に動作するコードを書くのではなく アルゴリズムや疑似コードをレポートにして提出しろってことなのか?
673 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:19:45 ] >>668 余計なお世話だけど、 time って関数があるから time という変数名は避けたほうがいいかも。 fp = fopen("file.txt", "w"); fprintf(fp, "%s\n", time); while (fgets(data, sizeof(data), stdin) != NULL) { fprintf(fp, "%s", data); } fclose(fp); とすれば、Ctrl-D を入力するまで読み取り続けます
674 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:21:11 ] >>671 よく考えたら、表示のときだけマルチバイト文字使って、内部データは 普通の int とか char とか好きなので行けるわ もう一点確認だけど、どっちからどっちに球が飛んでいけばいいの?
675 名前:デフォルトの名無しさん [2008/11/12(水) 16:22:19 ] 生活安全課のボツボツキモデブ●創価●警官名言集www 「俺の脅迫のおかげで家から出れなくした。俺の手柄だ!」 「昼間は市役所のパトロール隊を使う。夜は消防団を使う。」 「●指導●じゃない、パトロールを●お願い●してるだけだ。人権侵害行為は俺の責任じゃない!」 熊本隆談www
676 名前:デフォルトの名無しさん [2008/11/12(水) 16:23:34 ] >>669 : In function ‘main’: :22: 警告: incompatible implicit declaration of built-in function ‘malloc’ :24:8: 警告: 不明なエスケープシーケンス '\$' だそうです
677 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:29:14 ] >>676 #include <stdlib.h> を追加。 それから a = (int *)malloc(n * sizeof(int)); と、キャストしたほうがいいかも。 下のは知らん。日本語の文字列が正しく読まれてないのかもしれない。 適当に文字列を半角英数字のみにしてみて。