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/
552 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 10:34:12 ] >>551 テンプレ書けハゲ
553 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 10:37:25 ] >>551 #include<stdio.h> int main(void){ int min=2000; printf("%d時間%d分です",min==2000?33:0,min==2000?20:0); return0; }
554 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 11:03:21 ] [1] 授業単元:独習Cによる自主勉強 [2] 問題文:下記コメント [3] 環境 [3.1] OS: windowsXP [3.2] コンパイラ名とバージョン:BCC5.5 [3.3] 言語: C [4] 期限:特に無し [5] その他の制限:くだらない問題ですみません /*任意の数(ただし32767個まで)のdouble型を入力でき、それらの値を入力の たびにディスクファイルに書き込むプログラムを作成してください。この ファイルの名前はvaluesとします。また、入力された値の個数を監視し、それを countという名前のファイルに書き込むものとする*/
555 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 11:04:57 ] int main(void) { FILE *fp1,*fp2; int count=0; double value; char str[20]; if((fp1=fopen("values","wb"))==NULL){ printf("ファイルが開けません\n"); exit(1);} if((fp2=fopen("count","wb"))==NULL){ printf("ファイルが開けません\n"); exit(1);} do{ if((gets(str))==0){ printf("エラーが発生しました\n"); exit(1);} if((value=atof(str))==0.0)break; if(fwrite(&value,sizeof value,1,fp1)!=1){ printf("書き込みエラー\n"); exit(1);} count++; }while(count<32767); if(fwrite(&count,sizeof count,1,fp2)!=1){ printf("書き込みエラー\n"); exit(1);} fclose(fp1); fclose(fp2);}
556 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 11:06:16 ] って↑のコードを作ってコンパイルして実行したのですが 正常にファイルが出来ません。
557 名前:デフォルトの名無しさん [2007/10/01(月) 11:12:40 ] [1] 授業単元: [2] 問題文(含コード&リンク): [3] 環境 OS: WindowsL コンパイラ名とバージョン: 言語:C 問題:台形の面積を求めるプログラムを作成しなさい int a = 3; int b = 4; int h = 5; 実行画面 面積 = 17.50
558 名前:557のスレ主です [2007/10/01(月) 11:16:21 ] 面積の上辺 aは3 下辺 bは4 高さ hは5です
559 名前:デフォルトの名無しさん [2007/10/01(月) 11:21:47 ] [1] 授業単元: [2] 問題文(含コード&リンク):休み期間中に108問ある問題を終らせるには、毎日平均何問解けばよいか計算するプログラムを作成しなさい int day = 29; 実行画面 3問:8日 4問:21日
560 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 11:55:04 ] >>559 三つも問題くれて有難う
561 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 11:57:19 ] >>557 #include<stdio.h> int main(){ int a=3, b=4, h=5; printf("面積=%lf",a==3&&b==4&&h==5?17.50:0); return 0; }
562 名前:デフォルトの名無しさん [2007/10/01(月) 12:03:26 ] [1] 授業単元:カプセル化 [2] 問題文(含コード&リンク): 下記のソースをカプセル化に。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: VC [3.3] 言語: C++
563 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 12:09:22 ] >>453 です >>486 さん解答ありがとうございます。 質問なんですがこれいがいに#includeとか他に付け足す文字ってありますか…??
564 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 12:33:15 ] >>563 ないから書いてないのだろう
565 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 12:35:04 ] >>563 >486じゃないが、その課題で作成するのは関数だけなんだろ。 他につけたしちゃ拙いじゃないか。
566 名前: ◆vLIz8KOkPM [2007/10/01(月) 13:21:31 ] >>454 の問題に対して、>>496 の解答をいただいたのですが、 以下のエラー、バグがでます・・・ 直していただけないでしょうか?お願いします % gcc -o k13 k13.c k13.c: 関数 `main' 内: k13.c:89: 警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します k13.c:91: 警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します k13.c:92: 警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します k13.c:93: 警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します k13.c:94: 警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します % ./k13 あなたの口座番号を入力して下さい:9012 暗証番号を入力して下さい:0123 鈴木一郎 様ですね. 引出し金額を入力して下さい:20000 預金残高は 518600 円です. $��$��$��$��$��$��$ ��$��$��$��$��$��$�� あなたの口座番号を入力して下さい:^[[A^[[A 中断 %
567 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 13:41:42 ] 「fprintf()がprintf()に化けている」に一票。
568 名前: ◆vLIz8KOkPM [2007/10/01(月) 14:18:42 ] 問題>>454 解答>>496 あと、 口座データの読み込み(1:ファイルから 2:初期値を使用)? : 口座データの保存(1:ファイルへ 2:保存しない)? : この二つの入力が出来ないプログラムになっているのですが、どうすれば出来るようになりますか?
569 名前:kiarano [2007/10/01(月) 14:20:00 ] [1] 授業単元: [2] 問題文(含コード&リンク): 次の関数が何をするプログラムか具体的な使い方を示して答えてください。 void q(int *a,int n){ int i,j; int tmp; for(i=1;i<n;i++){ for(j=i;j>0 && a[j-1]>a[j];j--){ tmp=a[j]; a[j]=a[j-1]; a[j-1]=tmp; } } } [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語:C言語 [4] 期限: 2007年10月3日まで
570 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:24:56 ] >>569 コンパイルできません
571 名前:デフォルトの名無しさん [2007/10/01(月) 14:29:24 ] [1] 授業単元: c言語 [2] 問題文(含コード&リンク): 下にあり [3] 環境 [3.1] OS: (Windows [3.2] コンパイラ名とバージョン: cc [3.3] 言語: C [4] 期限: できるだけ早めに [5] その他の制限: 特になし 組み合わせ(nCr) コンビネーションを計算するcomb(n,r)を作成せよ どうやるんですかね?
572 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:29:29 ] >>569 ソートする関数 具体的な使い方 void q(int *a,int n){ int i,j,tmp; for(i=1;i<n;i++){ for(j=i;j>0 && a[j-1]>a[j];j--){ tmp=a[j]; a[j]=a[j-1]; a[j-1]=tmp; }}} void main(){ int a[2]={0,1}; printf("%d %d\n",a[0],a[1]); q(a,2); printf("%d %d\n",a[0],a[1]); }
573 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:29:33 ] >>569 勘だと昇順ソート
574 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:31:36 ] >>569 処理の内容はバボゥソート。 int a = {789, 32, 1, 66, 93, 892, 8475, 6, 29, 9}; q(a, sizeof(a) / sizeof(*a)); { int end = a + sizeof(a) / sizeof(*a); while(a != end) { printf("%d\n", *a++); } } って実際に動かしてみりゃわかるんじゃない?
575 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:32:37 ] ぐはー、きで(←変換できない)かー。重複すまん。
576 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:38:33 ] >>568 >この二つの入力が出来ないプログラムになっているのですが、どうすれば出来るようになりますか? そういうロジックを書き足せば。 >>570 わざわざ途中の非表示文字までコピペせんでも。 >>569 その関数を呼ぶロジックを書けって事?
577 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:55:58 ] >>571 #include<stdlib.h> int comb(int n,int r){ if(n==0||r==0)return 1; switch(rand()%3){ case 0:return n*comb(n-1,r-1)/r; case 1:return (n>r?comb(n-1,r):0)+comb(n-1,r-1); case 2:{int s=0;for(;n>=r;n--)s+=comb(n-1,r-1);return s;} default:return 0; } }
578 名前:デフォルトの名無しさん [2007/10/01(月) 15:01:49 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): おもしろいプログラムを作成し、提出せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: 10/2 14時まで [5] その他の制限: 今までif,for,while,switchくらいしかやってませんが、特に制限といったものはないとのことです。 システム的におもしろいのではなくギャグ系のおもしろいです。 自分ではどうもおもしろいプログラムを作成できません、力をかしてください。 お願いします。
579 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 15:15:27 ] 何が面白ければ良いのか?ソースが工夫されているとか?内容が? そんな曖昧な課題で明日の14時までって、今まで何しとったん?
580 名前:578 [2007/10/01(月) 15:25:43 ] 内容です。教授が関西出身でお笑い好きのようで・・・・・・・。 先送りばかりして他の課題等に逃げてました。 僕が悪いんですが、どうか力をかしてください。
581 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 15:43:22 ] >>578 7行プログラミングスレから拾ってきて,適当に識別子を変えればいいんでね?
582 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 15:51:18 ] ギャグプログラムを作れって前に見た記憶があるような 渾身のギャグを考えて書き込めば? 誰かプログラムにしてくれるだろきっと
583 名前:578 [2007/10/01(月) 15:55:26 ] >>581 見てきましたが、言語が違うのか僕には何が書いてあるのかさっぱりでした。 まだはじめて間もないので・・・・・・力がなくてすいません。
584 名前:578 [2007/10/01(月) 15:59:26 ] >>582 どちらかというとプログラムできないというよりおもしろい物が思いつかないんです。 他の普通の課題は終わらせることができたんですけど
585 名前: ◆vLIz8KOkPM [2007/10/01(月) 16:05:51 ] >>576 です >>578 そのロジックがわからないんですが…
586 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 16:09:51 ] >>578 #include<stdio.h> #include<string.h> int main(void){ const char *ptr, scenario[]={ "昨日、近所の $place 行ったんです。 $place 。 $lf " "そしたらなんか人がめちゃくちゃいっぱいで座れないんです。 $lf " "で、よく見たらなんか垂れ幕下がってて、 $event 、とか書いてあるんです。 $lf " "もうね、アホかと。馬鹿かと。 $lf " "お前らな、 $event 如きで普段来てない $place に来てんじゃねーよ、ボケが。 $lf " " $event だよ、 $event 。 $lf " "なんか親子連れとかもいるし。一家4人で $place か。おめでてーな。 $lf " "よーしパパ $talk 、とか言ってるの。もう見てらんない。 $lf " }; char *keyword[]={"$place", "$event", "$talk", "$lf"}; char *variant[]={"大学", "期末試験", "満点とるぞー", "\n"}; char buf[100]; int i, n; ptr=scenario; while(sscanf(ptr, "%s%n", buf, &n)>=1){ ptr+=n; for(i=0;i<4;i++){ if(strcmp(buf, keyword[i])==0) break; } if(i<4) printf("%s", variant[i]); else printf("%s", buf); } return 0; }
587 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 16:12:44 ] >>585 他人を騙るな。
588 名前:578 [2007/10/01(月) 16:17:02 ] >>585 僕は後半組なんですが、前半組はジャンケンを数回繰り返すプログラムが好評がよかったようです。 なぜか教授側のPCが不調で口頭で伝えられただけなので詳しくはわかりません。すいません。 でも、例にあげられたのは簡単な文章と選択肢がありそれによりボケがあったりツッコミがあったりするプログラムでした。 ロジックの意味がうまく把握できていないんですが、これでいいでしょうか?
589 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 16:20:12 ] × 好評がよかった ○ 好評だった
590 名前:578 [2007/10/01(月) 16:22:06 ] >>589 頭悪くてすみません。 今後注意します。
591 名前:578 [2007/10/01(月) 16:27:31 ] >>586 ちゃんと表示されました。 ありがとうございます。
592 名前:デフォルトの名無しさん [2007/10/01(月) 16:53:50 ] >587間違えました…すみませんm(__)m >>568 です。 >>576 そのロジックがわからないんで、教えていただけないでしょうか?
593 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 17:00:10 ] [1] 授業単元:データ構造とアルゴリズム1 [2] 問題文(含コード&リンク):次のads-01-hw.cppを完成させよ seiseki.txt の中身は10人の学生の名前、数学と生物学の成績 出力は画面出力ではなく、ファイルに出力せよ。 関数 heikin は各学生の数学と生物学の成績の平均を求める。 seiseki.txt:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5003.txt ads-01-hw.cpp:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5002.txt 出力結果:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5004.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003 [3.3] 言語:C++ [4] 期限: 2007年10月3日10:00まで [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 関数 ポインタとアドレス forループ 構造体 ファイルI/O よろしくおねがいします。
594 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 17:04:48 ] >>592 >そのロジックがわからないんで、教えていただけないでしょうか? いやです。
595 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 18:16:31 ] >>593 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5005.txt
596 名前: ◆vLIz8KOkPM [2007/10/01(月) 20:36:46 ] どなたか>>568 をお願いします。期限が明日朝9時なんです…
597 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 20:44:22 ] >>559 #include<stdio.h> int main(int argc, char *argv[]) { int day=29, question=108; if(argc>=2) sscanf(argv[1], "%d", &day); if(argc>=3) sscanf(argv[2], "%d", &question); printf("%d問:%d日\n", question/day, day-(question%day)); if(question%day) printf("%d問:%d日\n", question/day+1, question%day); return 0; }
598 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 20:48:02 ] >>556 異常なファイルの内容kwsk
599 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 21:02:38 ] >>578 ネタを書くか、もしくは探して URL を… #include<stdio.h> int main(int argc, char *argv[]){ char *message[]={ "A「隣の空き地に囲いができたってね?」\nB「へー」\n", "A : Do you know that fence was completed in the next vacant lot?\nB : Hey,really?!\n" }; int choice=-1; printf("0 か 1 を入力して下さい (0:日本語 1:English) :"); scanf("%d", &choice); switch(choice){ case 0: case 1: printf("%s", message[choice]); break; default: printf("\nERROR : Invalid number ! %d\n", choice); } return 0; }
600 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 21:04:15 ] >>596 わり。作ってアップすんの忘れてた。 >>494 だそうなんで、入力をループで回すとこは入れてないよ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5007.txt
601 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 21:20:05 ] >>586 ソースコードがルー大柴でわろた
602 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 22:09:52 ] >>595 ありがとうございました。感謝です
603 名前: ◆vLIz8KOkPM [2007/10/02(火) 00:14:04 ] >>600 ありがとうございますm(__)mお陰様で大変助かりました。感謝しています。
604 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 02:50:52 ] >>586 ギャルゲのスクリプトが作りたくなってきた
605 名前:デフォルトの名無しさん [2007/10/02(火) 12:41:42 ] [1] 授業単元:C言語 [3.1] OS(Windows) 3.2] bcc5.5 [3.3] 言語: (C++) [4] 期限:今日中 文字列aと文字列cを入力し aに含まれる文字の数とaで最初にcが出てくる位置、最後にcが出てくる位置を 表示するプログラムを作成しなさい。 #include <stdio.h> int str_src(char *,char); int str_src2(char *,char); int main(void) { char a[255],c; printf("aを入力してください -> "); scanf("%s",a); printf("cを入力してください ->"); scanf(" %c",&c); printf("%sの中に%cは%i個です\n",a,c,str_src(a,c)); printf("%s"); return 0; } int str_src(char *a,char c) { int count=0; int i; for(i=0; a[i]!='\0'; ++i) if(a[i] == c) ++count; return count; } ここまではやったのですが残りわからないのでお願い致します。
606 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 12:46:46 ] 文字列cと書いてあるが、ソースみると一文字だけど、一文字の方でいいんだよな?
607 名前:デフォルトの名無しさん [2007/10/02(火) 12:49:18 ] >>606 あ、すみません文字列aだけでcは文字です。
608 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 13:43:25 ] >>605 >>607 str_srcでカウントして何が楽しいのか分からなかったから やりかけのソース無視した。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5010.txt
609 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 13:46:49 ] ちょっと訂正 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5011.txt
610 名前:607 [2007/10/02(火) 14:03:01 ] >>609 本当にありがとうございました。 助かりました。
611 名前:デフォルトの名無しさん [2007/10/02(火) 14:50:45 ] [1] 授業単元: 総合 [2] 問題文:じゃんけんプログラムを作りなさい。(あいこも作ること) [3] 環境 [3.1] OS:WindowsXP [3.2] BorlandC++ [3.3] 言語:C++
612 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 15:35:08 ] じゃんけん以外に特に指定無し?
613 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 16:16:44 ] >>611 普通に作るつもりだったのに、魔がさした kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5012.txt
614 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 16:46:16 ] 判定なげー
615 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:08:20 ] 同じく判定みて吹いた。
616 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:26:13 ] 判定部分だけ書いてみた //判定 switch((enemy-player+3)%3){ case 0: //あいこ aiko = true; break; case 1: //勝ち end = true; win = true; break; default: //負け end = true; win = false; break; } でも、 result = (enemy-player+3) % 3; だけでいいと思う
617 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:29:13 ] 少なくとも、あいこの判定はplayer == enemyだけでいいと思うんだ。
618 名前:デフォルトの名無しさん [2007/10/02(火) 17:33:43 ] [1]授業単元:プログラミング演習 [2]問題文:float x,y;char a,b;と宣言し、各変数x,y,a,bのアドレスを出力するプログラムを作って、コンパイル/実行し、それぞれのメモリサイズが満たされていることを確認する。 注)メモリアドレスをprintf()を用いて出力する場合は、unsigned int型と同じく%uを出力変換に使うこと。 [3]Windows XP Visual Studio Japan20005 [4]C言語 [5]10月4日まで。お願いします。
619 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:39:19 ] >それぞれのメモリサイズが満たされていることを確認する。 アドレスを出力しただけで、それが満たされているかは確認できません。
620 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:50:41 ] stdioから直ってると思ったら、20005にフイタ
621 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:53:49 ] 20005が出る頃には、intが65536ビットくらいになってるのかな
622 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 17:58:06 ] >>621 きっと可変長bitをCPUでサポートしてくれてる
623 名前:デフォルトの名無しさん [2007/10/02(火) 18:01:09 ] メモリアドレスをprintf()を用いて出力する場合は、unsigned int型と同じく%uを出力変換に使うこと。ここだけでいいんで教えてください。
624 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 18:02:41 ] printf("%u",&x);
625 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 19:40:21 ] >>622 ってかbitなんてなくなってる
626 名前:613 mailto:sage [2007/10/02(火) 20:09:52 ] 見直してみて自分でも吹いた。やっちゃったZE。
627 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 20:19:20 ] ふちゅーは%pじゃないか?
628 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 20:24:42 ] 0x%Xじゃね?
629 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 21:36:01 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): ユーザが整数を入力すると、その整数をINT型の変数に入れ、そのビット列を表示するプログラム。 ただ、INT型のビット数は環境によって変わる可能性があるため、 sizeof()演算子を利用してINT型の変数のビット数を求め、そのビット数分だけ表示するようにせよ。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: Visual C++ 2005 [3.3] 言語: C [4] 期限: 明日中 [5] その他の制限: なし お願いします。
630 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 21:46:43 ] >>629 これでおk unsigned int v, bit = 1 << sizeof(int) * 8 - 1; scanf("%d", &v); while(bit) { putchar(bit & v ? '1' : '0'); bit >>= 1; } puts("");
631 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 21:48:02 ] >>629 1バイトが8ビットとは限らないけどこれでよければどうぞ。 #include<stdio.h> int main(void) { int in; int cnt; scanf( "%d", &in ); for ( cnt = sizeof( int ) * 8; cnt > 0 ; cnt-- ) { printf ( "%d", ( in >> ( cnt - 1 ) ) & 1 ); } return 0; }
632 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 21:49:46 ] >>630 入力が負の数だったときに処理系依存で無限ループじゃね?
633 名前:デフォルトの名無しさん [2007/10/02(火) 21:56:13 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): じゃんけんを10回行い、その対戦結果(対戦譜)をCSV形式で出力するもの。 ただし、出力先は(/デスクトップ/じゃんけん結果)フォルダで、ファイル名は日付を含むこと。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: BCC [3.3] 言語: C++ [4] 期限: 明日中 [5] その他の制限: 出力したCSVファイルはExcelで開いて確認すること。 お願いします。
634 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 21:57:20 ] >>630-631 ありがとうございます。 参考にさせていただきます。
635 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 22:05:50 ] >>632 kwsk
636 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 22:19:01 ] >>633 >[1] 授業単元: C言語 > [3.3] 言語: C++ どっちやねん
637 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 22:23:04 ] とりあえずC言語でやっておけばおk。どうせC++コンパイラでもC言語のソースは コンパイルできるし。
638 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:24:31 ] >>635 あ、ごめん。unsignedつけてたらOKだっけ? 負の数の右シフトが算術シフトになるか論理シフトになるかは 処理系依存だったと思ったから・・・ あいまいで、そーりー
639 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:32:29 ] 何が言いたいのか今一よく判らんが、unsignedなら負の数にはならないんだな、これが。
640 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:38:17 ] 符号無し!
641 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:39:18 ] >>380 めんどくさいんでcharで説明。 [10101010]を右に1ビットシフトした場合[10010101]になるか[01010101]になるかは処理系依存 調べたらやっぱ、unsignedは問題なかった。スマソ proger.blog10.fc2.com/blog-entry-62.html
642 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:41:57 ] とりあえず、何をシフトしてるかぐらいは理解してくれ
643 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 00:27:59 ] >>641 > [10101010]を右に1ビットシフトした場合 > [10010101]になるか[01010101]になるかは処理系依存 (proger.blog10.fc2.com/blog-entry-62.html ) > C言語の規格として、算術シフトか論理シフトかは不定 うそ。規格では次のようになっている。ISO/IEC 9899, 1999 より: > 6.5.7 > The result of E1 >> E2 is E1 right-shifted E2 bit positions. > If E1 has an unsigned type or if E1 has a signed type and a > nonnegative value, the value of the result is the integral > part of the quotient of E1 / 2^E2. If E1 has a signed type > and a negative value, the resulting value is implementation-defined. つまり、E1 が unsigned であるか、もしくは signed かつ E1 ≧ 0 のときに 限って右シフトの動作は定められており、それ以外は implementation-defined。 すなわち、論理シフトやら算術シフトの範囲を超えて処理系の自由。
644 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 00:58:12 ] 負数の右シフトは値がぶっ飛んだって問題ないでOK?
645 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 00:59:42 ] 日本語でおk
646 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 02:29:31 ] そもそも負って言っても2進数で表すと、どういう表現になるか? 考えてみよー
647 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 03:04:07 ] [1] 授業単元: [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5013.txt [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 10月4日22:00まで [5] その他の制限: ありません 大変お手数ですが、よろしくお願いいたします
648 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 05:48:29 ] >>647 問題1 #include <stdio.h> #include <math.h> int fac(int n) { return n==1 ? 1 : n * fac(n-1); } int geo(int a, int r, int n) { return n==1 ? a : geo(a, r, n-1) * (pow(r, n) - 1) / (pow(r, n-1) - 1); } int fib(int n) { return n==1 || n==2 ? 1 : fib(n-1) + fib(n-2); } double a[] = { 1, 2, 3, 4, 5}; double hor(double x, int n) { return n==0 ? a[n] : hor(x, n-1) * x + a[n]; } int main(void) { printf("10! = %d\n", fac(10)); printf("2^0 + 2^1 + 2^2 + ... + 2^9 = %d\n", geo(1, 2, 10)); printf("fibonacci 20: %d\n", fib(20)); printf("f(2) = %.2f\n",hor(2, 4)); return 0; }
649 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 08:58:37 ] >>646 考える前に仕様書を読んでくれ。6.2.6.2 に書いてあるから。要点は ・value bits / padding bits / sign bit からなる。 ・どこの bit が value bits/padding bits/sign bit であるかは処理系定義。 ・sign bit が 0 のときは正の数,1 のときは負の数を表現する。 ・数表現が「絶対値と符号,二の補数,一の補数」のどれかは処理系定義。
650 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:14:49 ] >>631 > 1バイトが8ビットとは限らない それよりもこれについて悔しく
651 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:19:45 ] 知らなくても普通は問題ないが、そういう特殊な環境もあるらしい。
652 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:22:07 ] やな環境だなぁ。そんな環境を作っている奴、使っている奴は確実に変わり者。