- 1 名前:デフォルトの名無しさん [2007/06/23(土) 23:03:25 BE:255611693-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++の宿題を片付けます 90代目 pc11.2ch.net/test/read.cgi/tech/1181802185/
- 82 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:10:35 ]
- >>80
ロダにUp汁
- 83 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:20:44 ]
- >>80
次のレスまだ〜〜〜?もしかして、次の スレ ってオチ?w
- 84 名前:依頼者 [2007/06/24(日) 19:31:12 ]
- [1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク): 変数xのyビット目の値を返す関数int bit_test(int x,int y)の作成。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio.net [3.3] 言語:C++ [4] 期限: 07年6月25日まで [5] その他の制限:特になし 演算子の問題ですがまったくわかりません。どなたかお願いします。
- 85 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:34:22 ]
- 前スレにも他のスレにもあったな。
>>84 int bit_clear(int x,int y){return x&~(1<<y);} int bit_test(int x,int y){return (x&(1<<y))>>y;}
- 86 名前:42 mailto:sage [2007/06/24(日) 19:46:42 ]
- >>44さんに教えて頂いたとおりで、動いたのですが。
配列宣言の頭にstaticをつける意味が分からなかったので、教えていただきたいです。 そもそも、なんでエラーになってるのかも分からない始末ですorz 少し調べたんですが、malloc というのを使えば領域確保?できるんでしょうか?
- 87 名前:デフォルトの名無しさん [2007/06/24(日) 19:49:45 ]
- [1] 授業単元: 2年プログラミング実習
[2] 問題文(含コード&リンク): 電卓計算のための、数式変換プログラムを作成せよ。 逆ポーランド法へと変換し、それを要素ごと配列へと格納せよ。 [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 6.25 [5] その他の制限: 最終的に、配列に文字型で式が格納されていること。 演算子の判別にはswitchを用いて、関数を作成する事。 switchの部分がわからんのだが、多分+なら1、-なら2と返す関数を作れって事だとおも。 最初の数式はargvは使わず、プロンプトメッセージの後にfgetsで読み込んでます。
- 88 名前:デフォルトの名無しさん [2007/06/24(日) 20:08:35 ]
- >>79
#include <stdio.h> int main(void) { int i,j,X=3,c[3][3]={0}; int b[3][3]={{5,-2,2}, {2, 3,1}, {1, 2,2}}; for(i=0;i<3;i++){ for(j=0;j<3;j++){ c[i][j]=b[i][j]; } } for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("%3d/%d",c[i][j],X); } printf("\n"); } return 0; } 私も初心者なんですが、書いてみました。 問題の意図にそくして無いかも。 それに配列cは用意する必要は無い気がするんだけどね…。
- 89 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:18:49 ]
- [1] 授業単元:プログラミング技術3
[2] 問題文(含コード&リンク): /*(1)date.txtというファイルを用意し、次のプログラムを実行せよ。 (2)このプログラムを書き換え、ファイル名をコマンドラインから指定出来るようにせよ。*/ #include<stdio.h> #include<stdlib.h> int main(void){ char c; char filename[] = "date.txt";//ファイル名 FILE *fp; //ファイルポインタ //ファイル「読み込み」で開く if ((fp == fopen(filename "r")) == NULL){ printf("File dose not exist. \n"); exit(1); } //ここからファイルを読み込んで処理 //例 一文字入力し表示 wile((c=getc(fp))!=EOF){ printf("%d\n" , c); } //開いたファイルを閉じる fclose(fp); } [EOF] ↑ 全くと言って分かりません。完全にお手上げです。 少々の解説も付加してくださると助かります。 よろしくお願いします。
- 90 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:20:25 ]
- >>87
switchの部分は↓的なことだと思う。 switch( ope ) { case '+': iAns += iNum; break; case '-': iAns -= iNum; break; (以下略)
- 91 名前:89 mailto:sage [2007/06/24(日) 20:20:27 ]
- 続きです。
[3] 環境 [3.1] OS:LINUX [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C++ [4] 期限: 07年6月26日まで [5] その他の制限:ポインタを少々習った程度です。
- 92 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:20:29 ]
- >>87
前スレの回答ではお気に召さなかったということかな? それっぽく直したよ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4373.txt
- 93 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:25:42 ]
- >>86
配列は領域を連続で確保できなければいけない。 mallocを使ったところで、確保できる保証は無い。 staticをつけた場合は、確保するために使用する領域が異なるため上手く行っているだけ。 (staticウンヌン部分について自信なし。詳しい人補足plz)
- 94 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:28:17 ]
- >>93
取り敢えず間違ってはいないよ。
- 95 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:29:14 ]
- >>89 変更部分だけ
int main(int argc, char *argv[]) { char c; FILE *fp; if(argc<2) { printf("ファイル名の指定がねぇ〜ぞゴルァ!\n"); return 1; } if((fp=fopen(argv[1],"r"))==NULL){
- 96 名前:デフォルトの名無しさん [2007/06/24(日) 20:52:01 ]
- >>97
・・・?前スレ?重複質問だったのか? とりあえず見てみた。マジ有難い。 提出用に少し変更してみて、不明な所があれば聞くかも知れないが、大丈夫かな。
- 97 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:52:16 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 以下のコマンドを実行可能な名簿管理システムを作成せよ。 1. メンバの追加 2. メンバの削除 3. メンバリストを名前順(アルファベット昇順)で表示 4. メンバリストのファイル出力 5. 引数として"-f ファイルパス"を指定することによるメンバ初期データの読込 メンバ情報としては、最低限、名前と学生番号を持つこと。システムの拡張は自由に行ってよい。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限:無期限 [5] その他の制限:構造体、ポインタがつかえるとよい どうかよろしくおねがいします
- 98 名前:デフォルトの名無しさん [2007/06/24(日) 20:52:40 ]
- >>96
>>92で
- 99 名前:89 mailto:sage [2007/06/24(日) 20:54:06 ]
- >>95
レスどうもです。 え〜と、main関数内の変更とファイルポインタの下にif(argc<2) { を printfの下にリターン文を、書けって事でいいんですか? また、if((fp=fopen(argv[1],"r"))==NULL){ は return1 exit(1); } if((fp=fopen(argv[1],"r"))==NULL){ のようにすればいいのでしょうか?
- 100 名前: ◆sJh8mwqDUo [2007/06/24(日) 20:58:03 ]
- [1] 授業単元: C言語入門(配列・関数)
[2] 問題文: 1. 0からN-1の間の擬似乱数整数を返す関数(myrandと名前をつける)を作成しなさい。 2. myrandでm×N個の擬似乱数を発生させて、出現しなかった整数の個数を、N個発生させる毎に求めなさい。 ただし、Nは1000以上に#defineし、mは実行時にキー入力するものとする。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 6月27日夜 [5] その他の制限: main関数にすべての処理を書くこともできるが、そうしないで関数に分割すること。 乱数発生関数の初期化を忘れないこと。 上記の通りです。どなたかできる方、よろしくお願いします。
- 101 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:03:10 ]
- 101
- 102 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:11:30 ]
- >>100
関数に分割するって、どこをすればいい? 無理矢理関数にしたほうがいいか? kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4374.c
- 103 名前: ◆sJh8mwqDUo [2007/06/24(日) 21:15:24 ]
- >>102
レスありがとうございます。 用はmyrandの関数をちゃんと作れって事ですかね。 実行結果がよければOKなのでどう解釈してもいいと思います。
- 104 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:26:37 ]
- >>96
うん重複だけど、注文のつきかたで、てっきし同じ人かと思った 質問は別にいいけど、あんまりしつこくはしないでね めんどくさいからw
- 105 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:02:39 ]
- [1] 授業単元:プログラム
[2] 問題文(含コード&リンク): 右利きの奴が左曲がりであることを検証するプログラムを作成せよ。 [3] 環境 [3.1] OS: (Windows/Linux/等々)WinXP [3.2] コンパイラ名とバージョン: gcc 3.4 or VC5以降 [3.3] 言語: C/C++/どちらでも可 [4] 期限: 6/24中 [5] その他の制限:使用可能なライブラリ stdio.h string.h stdlib.h memory.h
- 106 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:12:08 ]
- [1] 授業単元: 複雑学
[2] 問題文(含コード&リンク): 次のH´enon 写像(エノン写像) のボックスカウンティング次元を考える. (Xn,Yn)→(Xn+1,Yn+1)=(Yn+1-a*X^2*n, b*Xn) :a = 1.4, b = 0.3 に固定する. 10×10分割したマス目内にアトラクタの点が入っているかどうか調べる.点が入っているマス目の数を数えよ サンプルプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4376.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 25日正午 [5] その他の制限: 特にナシ
- 107 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:14:34 ]
- > ところどころ■で隠してあります
どうでもいいけど ちょっとエロいな
- 108 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:17:13 ]
- [1] 授業単元: 複雑学
[2] 問題文(含コード&リンク): 次のH´enon 写像(エノン写像) のボックスカウンティング次元を考える. (Xn,Yn)→(Xn+1,Yn+1)=(Yn+1-a*X^2*n, b*Xn) :a = 1.4, b = 0.3 に固定する. 10×10分割したマス目内にアトラクタの点が入っているかどうか調べる.点が入っているマス目の数を数えよ サンプルプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4376.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 25日正午 [5] その他の制限: 特にナシ よろしくお願いします。
- 109 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:21:36 ]
- >>107 でしょww お願いします。
- 110 名前:デフォルトの名無しさん [2007/06/24(日) 22:35:17 ]
- #include <stdio.h>
main() { FILE *fpin,*fpout; char c; int i,j; int B[3][3]; fpin = fopen("in-1.txt","r"); fpout = fopen("out-1.txt","w"); while(fscanf(fpin,"%c",&c)!=EOF) if(c == 'B') {for(i=0;i<3;i++) {for(j=0;j<3;j++) {fscanf(fpin, "%d", &B[i][j]); }}} for (i=0; i<3; i++) { for (j=0; j<3; j++) fprintf(fpout,"%3d",B[i][j]/3); fprintf(fpout,"\n"); } fclose(fpin); fclose(fpout); return(0); } 三行三列行列を3で割るというものなんですが、上のソースでやってもint型なんで 少数点以下がでません。float型にしてみても、うまく答えがでません。どこを直せば いいでしょうか。 B 5 -2 2 2 3 1 1 2 2 です。
- 111 名前:89 mailto:sage [2007/06/24(日) 22:44:22 ]
- 89です。
>>95氏のアドバイスを参考にやってみましたが、上手く動作しません。 #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]){ char c; char filename[] = "date.txt";//ファイル名 FILE *fp; //ファイルポインタ if(argc<2) { //ファイル「読み込み」で開く if((fp=fopen(argv[1],"r"))==NULL){ printf("File dose not exist. \n"); return 1; exit(1); } } //ここからファイルを読み込んで処理 //例 一文字入力し表示 wile((c=getc(fp))!=EOF){ printf("%d\n" , c); } //開いたファイルを閉じる fclose(fp); } [EOF] 何処が違うのでしょうか?
- 112 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:45:51 ]
- なんでおまえら、「うまくいきません」とか「うまく答えが出ません」とか、
糞の役にも立たない報告しかできないの? 無能なの?
- 113 名前:89 mailto:sage [2007/06/24(日) 22:49:58 ]
- smp3.c(17) : error C3872: '0x3000': この文字を識別子で使用することはできません
smp3.c(17) : error C3872: '0x3000': この文字を識別子で使用することはできません smp3.c(17) : error C2065: ' ' : 定義されていない識別子です。 smp3.c(17) : error C2143: 構文エラー : ';' が '}' の前にありません。 smp3.c(21) : error C2143: 構文エラー : ';' が '{' の前にありません。 smp3.c(27) : error C3409: 空の属性ブロックは認められません。 smp3.c(27) : error C2143: 構文エラー : ']' が '(' の前にありません。 smp3.c(27) : error C2059: 構文エラー : '-' smp3.c(27) : error C2059: 構文エラー : ')' ↑そまそ。こんな感じにエラーが出ます。 因みに、この確認はコマンドプロンプトで出したものです。
- 114 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:51:34 ]
- >>113
ソースに全角のスペース含まれてないか?
- 115 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:54:34 ]
- typo多過ぎだし、人間やめるといいよ。
- 116 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:55:12 ]
- wile → while
あとはわからん。 そもそもこのプログラム22行しかないのに、なんで27行目のエラーが出てるんだ?
- 117 名前:89 mailto:sage [2007/06/24(日) 22:58:15 ]
- >>114
全角のエラー修復できました。 smp3.c(21) : error C2143: 構文エラー : ';' が '{' の前にありません。 smp3.c(27) : error C3409: 空の属性ブロックは認められません。 smp3.c(27) : error C2143: 構文エラー : ']' が '(' の前にありません。 smp3.c(27) : error C2059: 構文エラー : '-' smp3.c(27) : error C2059: 構文エラー : ')'
- 118 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:01:09 ]
- >>89
ほれ。 #include <stdio.h> int main(int argc, char **argv) { int c; if (argc > 1 && !freopen(argv[1], "r", stdin)) return perror(argv[1]), 1; while ((c = getchar()) != EOF) printf("%d\n", c); return 0; }
- 119 名前:89 mailto:sage [2007/06/24(日) 23:01:55 ]
- >>116
レスどうもです。 smp3.c(17) : error C2143: 構文エラー : ';' が '{' の前にありません。 smp3.c(23) : error C3409: 空の属性ブロックは認められません。 smp3.c(23) : error C2143: 構文エラー : ']' が '(' の前にありません。 smp3.c(23) : error C2059: 構文エラー : '-' smp3.c(23) : error C2059: 構文エラー : ')' また一つエラーが減りました。 問題文も含めた場合の最終行が27行目です。 今回は問題文を消しました。
- 120 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:03:39 ]
- まさかとはおもうが
[EOF] ← これもソースにタイプしてるのか?
- 121 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:06:24 ]
- >100
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 1000 int myrand(void) { return (int)(rand() / (RAND_MAX + 1.0) * N); } int main(void) { int i, j, m; char check[N] = {0}; srand(time(NULL)); scanf("%d", &m); for(i=0; i<m; i++) { int cnt = 0; for(j=0; j<N; j++) check[myrand()] = 1; for(j=0; j<N; j++) if(!check[j]) cnt++; printf("出現しなかった整数の個数:%d\n", cnt); } return 0; }
- 122 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:13:23 ]
- >>110
- int B[3][3]; + double B[3][3]; - fscanf(fpin, "%d", &B[i][j]); + fscanf(fpin, "%lf", &B[i][j]); - fprintf(fpout, "%3d", B[i][j] / 3); + fprintf(fpout, "%g", B[i][j]/3); とりあえずこんなところでどうよ。
- 123 名前:デフォルトの名無しさん [2007/06/24(日) 23:27:56 ]
- >>122さん!
計算できました!ありがとうございます! そこでまた質問で申しわけないんですが答えが 1.66667-0.6666670.666667 0.66666710.333333 0.3333330.6666670.666667 のように表示されてしまうんですが、1.66667と1とかの間にスペースを設けたいん ですが何か手はありませんか?無知ですいません。
- 124 名前:デフォルトの名無しさん [2007/06/24(日) 23:32:44 ]
- [1] 授業単元:プログラミング C
[2] 問題文(含コード&リンク): 以下のPADとプログラムを作成しなさい≪面白いプログラム≫ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語:C [4] 期限: 6/25の9時まで [5] その他の制限: switch文を習った後の課題です。 他の課題は終わらせましたが、どうしても面白いと思えるものを作ることが出来ませんorz 力を貸してください。お願いします。
- 125 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:50:54 ]
- >>123
- fprintf(fpout, "%g", B[i][j]/3); + fprintf(fpout, "%g ", B[i][j]/3); これでおk
- 126 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:04:04 ]
- >>97
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4377.txt
- 127 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:30:14 ]
- [1] 授業単元:プログラミングU
[2] 問題文リンク:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4379.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C言語のみ [4] 期限: 2007年06月26日AM01:00まで [5] その他の制限: 特にないです。 自力ではどうしてもできませんでした。 どうかよろしくお願いします。
- 128 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:30:57 ]
- 【質問テンプレ】
[1] 授業単元: プログラミング言語 [2] 問題文: 数値の列を入力し,それをリスト構造にデータを 格納せよ.その際,数値が大きさの順に並ぶよう にせよ. - 入力する数値の数を限定してもよい - たとえば5個 • リストの内容を先頭から出力せよ. - 結果として入力された数値の列が,大きさ順 に並び替えられて表示されることになる. • リスト構成する要素(セル)はmalloc関数でヒー プ領域から確保するものとする. [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio2005 [3.3] 言語:C++ [4] 期限:6月28日まで [5] その他の制限:ポインタの練習です。一応、こんな感じらしいです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4380.txt どなたかご教授お願いします
- 129 名前:デフォルトの名無しさん [2007/06/25(月) 00:46:17 ]
- |
| ∧ ∧ |/ ヽ ./ .∧ | `、 / ∧ |  ̄ ̄ ̄ ヽ | ̄ ̄月曜日 ̄ ̄ ̄ ̄) | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.\ |ヽ-=・=-′ ヽ-=・=- / |:: \___/ / やぁ・・・・ |::::::: \/ /
- 130 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:52:10 ]
- 鬱入った。
寝る。
- 131 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:57:49 ]
- >>19
適当。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4381.txt
- 132 名前:デフォルトの名無しさん [2007/06/25(月) 01:33:09 ]
- >>125さん
できました!ありがとうございました!
- 133 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 02:53:58 ]
- >>131 ありがとうございました
- 134 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 03:06:59 ]
- [1] 授業単元:C++研究
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4262.txt(プログラム1) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4381.txt(プログラム2) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4383.txt(プログラム3) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4384.txt(プログラム4) 上記1〜4のプログラムを下記のように修正します。 クラス(設計図)部分を概要部分(ヘッダファイル)と実装部分(ソースファイルに分け) そしてメイン部分も分け、4つのプログラムを新しく作り直しなさい。 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:Visual studio.2005 [3.3] 言語: C++ [4] 期限: ([2007年6月26日12:00まで] [5] その他の制限:特になし どうかよろしくお願いします
- 135 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 03:17:42 ]
- >>134
単にソースをclass.cpp class.h main.cppとかってファイル作って にコピペしまくるだけで終了しない?
- 136 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 03:51:42 ]
- >>124
これは難問だ 何をもって面白いとするかがわからんことには作りようがない 技術的には>>124は全然問題なさそうだから、こんなのはどうだ? 怪しいswitch文だが、ちゃんとコンパイルは通る 実行結果が予想できるかい? プログラムの挙動的には面白いと思うんだが int main(){ switch(1){ while(1){ case 0: printf("0"); break; default : printf("default"); case 1: printf("1"); } } return 0; } 良い子はマネしないようにな
- 137 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 04:06:16 ]
- もう一つ怪しいswitch文
01default って出力されそうだけど、実行結果は case 1: のところで無限ループになる int main(){ int i = 0; switch(i){ while(1){ case 1: printf("1"); i++; continue; case 0: printf("0"); i++; continue; default : printf("default"); break; } } return 0; }
- 138 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 04:10:19 ]
- [1] 授業単元: プログラミング基礎A
[2] 問題文(含コード&リンク): n乗の数を求める関数を、作成しなさい。 ◎以下を参考の事 ・n乗値を求める関数 n乗値 数字iのn乗値を返す関数 関数定義 double myPow(double i, int n) 例1:i=1.2,n=3の場合,1.728になる 例2:i=1.2,n=-3の場合,0.5787[037]になる 例3:i=1.2,n=0の場合,1.0になる 正,0,負の3つの場合があることに注意 [3] [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003 [3.3] 言語:C++ [4] 期限:2007年6月25日10時30分 [5] その他の制限:出来るだけ複雑ではなく簡単(初歩的)なものにすること。 よろしくおねがいします。
- 139 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 04:27:21 ]
- >>137
コンパイラ何? もしかしてBCCじゃね?w
- 140 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 04:35:55 ]
- BCCでもよく見たら01111…ってなってた
てっきり11111…と怪しい動作するもんだと思った BCCを疑ってごめんなさい。
- 141 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 05:37:21 ]
- >>137
こんなコードは出来ればごめん被りたいが、 「switchはラベルに飛ぶだけ」てのが良く分かる例かもね。
- 142 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 05:43:33 ]
- [1] 授業単元: 複雑学
[2] 問題文(含コード&リンク): 次のH´enon 写像(エノン写像) のボックスカウンティング次元を考える. (Xn,Yn)→(Xn+1,Yn+1)=(Yn+1-a*X^2*n, b*Xn) :a = 1.4, b = 0.3 に固定する. 10×10分割したマス目内にアトラクタの点が入っているかどうか調べる.点が入っているマス目の数を数えよ サンプルプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4376.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 25日正午 [5] その他の制限: プログラムをリザイレクションしてdatファイルにしてGNUPLOTでグラフを表示させる。 グラフ vista.jeez.jp/img/vi8271774448.jpg よろしくお願いします。
- 143 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 07:23:55 ]
- >>138
double myPow(double i, int n) { double a=1.0; if(n<0){ n=n*-1; i=1/i; } if(n != 0){ while(n-->0) a*=i; } return a; }
- 144 名前:デフォルトの名無しさん [2007/06/25(月) 09:24:55 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 簡単な絵を書いて画面に出力しろ [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 無し [5] その他の制限: printf();などの出力関数のみを使った場合はNGとする
- 145 名前:124 [2007/06/25(月) 10:02:36 ]
- >>136
2つもレスしていただいて、本当にありがとうございます。 早速試してみます。 教授の面白いというのはどうもお笑い系のようです。 関西出身のようで、講義に使うプログラムもがんばって笑いを誘おうとしていますので。
- 146 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 10:34:26 ]
- >>142
nS hist[i][j] printf("%f %f\n", x, y), hist[px][py]++;
- 147 名前:デフォルトの名無しさん [2007/06/25(月) 10:56:51 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): テキストファイルを読み込み、A〜Zまでの文字がそれぞれ何個現れたかを数えろ。大文字と小文字は区別しないもとする。 [3] 環境 [3.1] OS: (Windows/Linux/等々) WinXP [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Borland C++ Compiler 5.5 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C言語 [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 無期限 [5] その他の制限: 自分で書いたコード ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4386.txt 上記のコードの中の /* ファイルに含まれているアルファベットの個数をカウント */ この部分がうまく働きません 何がいけないんでしょうか?
- 148 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:01:39 ]
- >>147
なんだこれ。 -- if('a' <= ch && ch >= 'z') -- やりたいことは、if (ch >= 'a' && ch <= 'z')かif ('a' <= ch && ch <= 'z')じゃないのか?
- 149 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:03:11 ]
- if('a' <= ch && ch >= 'z')
else if('A' <= ch && ch >= 'Z') if('a' <= ch && ch <= 'z') else if('A' <= ch && ch <= 'Z') chと文字の位置を変えるから(略
- 150 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:04:41 ]
- >>148
ああああああああああ、、、 アホみたいなミスしてました・・・ 恥ずかしい
- 151 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:07:42 ]
- [1] 授業単元: プログラミング
[2] 問題文: 1、英大文字は小文字に英小文字は大文字に変えて出力するプログラムを作りなさい 2、テキストの中に現れる0から9までの数字の頻度を調べるプログラムを作りなさい [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: ([2007年06月25日14:20まで [5] その他の制限:特にありません 時間があまりありませんが、できるところまででも よろしくお願いします
- 152 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:15:41 ]
- >>151
1 #include <stdio.h> #include <ctype.h> #include <conio.h> int main(void) { char ch; ch = getche(); if('a' <= ch && ch <= 'z') printf(" -> %c\n",toupper(ch)); else if('A' <= ch && ch <= 'Z') printf(" -> %c\n",tolower(ch)); return 0; } 2 >>147のアルファベットのとこを数字に変える
- 153 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:21:14 ]
- is関数使っとけ
- 154 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:34:14 ]
- <ctype.h>使ってるんならis関数使わないほうが不自然だよな。
- 155 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:39:39 ]
- isalpha( ) か
存在を忘れてた
- 156 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:41:20 ]
- >>151
1. #include <stdio.h> #include <ctype.h> int main(void){ int ch; while((ch = getchar()) != EOF){ if(islower(ch)) putchar(toupper(ch)); else if(isupper(ch)) putchar(tolower(ch)); else putchar(ch); } return 0; } 2. #include <stdio.h> #include <string.h> #include <ctype.h> int main(void){ int i, count[10] = {0}; char buf[2] = {0}, *p = buf; while((*p = getchar()) != EOF) if(isdigit(*p)) count[atoi(buf)]++; for(i = 0; i < 10; i++) printf("%d : %d\n", i, count[i]); return 0; }
- 157 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 12:26:34 ]
- >>128
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4389.txt 悪い。元のがちょっとアレだったんでコマンドライン引数から入力拾うように勝手に仕様変えちった 要点を掴んでほしい
- 158 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 12:47:34 ]
- 152ー156の方々非常に迅速な解答ありがとうございました
- 159 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:15:49 ]
- [1] 授業単元: プログラミング
[2] 問題文: 成績を管理するプログラムを作成する.一人一人の学生には,学籍番号(整数)がつけられているの で,学籍番号と成績(実数)の組みで管理することとする.本問題で作成するプログラムは,4人の学生について, 英語と数学の成績を入力すると,英語と数学の合計点で最高点を取った学生を出力するものとする. 成績を管理する構造体の名前をstudent_t(この名前はtypedefで定義した名前を指す)とし,構造体のメンバを, 学籍番号はint型とし,名前をidとする 英語の成績はdouble型とし,名前をengとする 数学の成績はdouble型とし,名前をmathとする とする.また,以下の関数を作成し,それを利用すること. n人のデータを入力する関数:void InputData(student_t s[], int n) 第一引数は学生の配列 第二引数は学生の人数 関数自体は,何人でも扱えるように作成すること 課題実行においては以下の点に注意すること. プログラム名は「score」とすること. 結果の表示は小数点以下3桁で表示すること. 各教科の得点は,正の数に限定してよい. 最高点が複数人いた場合は,最高点を取った中で最初に入力された人を表示すること. [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C 期限はいつでもいいです。よろしくおねがいします。
- 160 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:21:04 ]
- [1] 授業単元: プログラミング
[2] 問題文: 数字の書かれているテキストファイルを読み込んで、その数字に1を加えた数をテキストファイルに出力するプログラムを作成しなさい. 読み込むテキストファイルには1行目に整数が書かれており、2行目以降には何も書かれていないとする. 課題実行においては以下の点に注意すること. プログラム名は「count」とすること. 読み込むテキストファイル名はcount.txtとする. 出力するテキストファイル名はcount.txtとする. [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C これもわかりません。よろしくおねがいします。
- 161 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:23:20 ]
- >>159
#include <stdio.h> main() { FILE *fpin,*fpout; char c; int i,j; int B[3][3]; fpin = fopen("in-1.txt","r"); fpout = fopen("out-1.txt","w"); while(fscanf(fpin,"%c",&c)!=EOF) if(c == 'B') {for(i=0;i<3;i++) {for(j=0;j<3;j++) {fscanf(fpin, "%d", &B[i][j]); }}} for (i=0; i<3; i++) { for (j=0; j<3; j++) fprintf(fpout,"%3d",B[i][j]/3); fprintf(fpout,"\n"); } fclose(fpin); fclose(fpout); return(0); }
- 162 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:26:54 ]
- >>127
#include <iostream> #define STACK 10 #define QUEUE 10 typedef int stack; typedef int queue; static int sfirst = 0, slast = 0, qfirst = 0, qlast = 0, qcount = 0; int push(stack *s, int i){ return slast == STACK ? -1 : (s[slast++] = i);} int pop(stack *s){ return slast == sfirst ? -1 : s[--slast];} int enqueue(queue *q, int i){ if(qlast == qfirst && qcount) return -1; q[qlast] = i, qcount++; qlast = (qlast + 1)%QUEUE; return i; } int dequeue(queue *q){ int ret; if(qlast == qfirst && !qcount) return -1; ret = q[qfirst], qcount--; qfirst = (qfirst + 1)%QUEUE; return ret; } int main(){ stack s[STACK]; queue q[QUEUE]; std::cout << "push" << std::endl; for(int i = 0; i < 13; i++) std::cout << push(s, i) << std::endl; std::cout << "pop" << std::endl; for(int i = 0; i < 13; i++) std::cout << pop(s) << std::endl; std::cout << "enqueue" << std::endl;for(int i = 0; i < 13; i++) std::cout << enqueue(q, i) << std::endl; std::cout << "dequeue" << std::endl;for(int i = 0; i < 13; i++) std::cout << dequeue(q) << std::endl; return 0; }
- 163 名前:デフォルトの名無しさん [2007/06/25(月) 16:29:50 ]
- >>126さんありがとうございます
自分自身でも理解できるように勉強してみます
- 164 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:31:20 ]
- >>162
> [3.3] 言語: C言語のみ
- 165 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:32:25 ]
- >>160
#include <stdio.h> int main(void) { int n = 0; FILE *fp; if ((fp = fopen("count.txt", "r+")) == NULL) return 1; fscanf(fp, "%d", &n); rewind(fp); fprintf(fp, "%d\n", ++n); fclose(fp); return 0; }
- 166 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:41:16 ]
- >>144
$ cat vitamin.c #include <stdio.h> int main(int argc, char **argv) { if (argc < 2 || argv[1][0] == 0) return 0; putchar(argv[1][0]); ++argv[1]; return main(argc, argv); } $ cc vitamin.c $ ./a.out "簡単な絵"
- 167 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:50:21 ]
- >>165
ありがとうございました。
- 168 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:54:15 ]
- >>160
#include <stdio.h> int main(void){ FILE *fp = fopen("count.txt", "r"); size_t len; int i, flag = 1; char buf[1023], ret[1024] = {0}, *p; if(!fp) exit(1); fgets(buf, sizeof(buf), fp); if((p = strchr(buf, '\n')) != NULL) *p = '\0'; len = strlen(buf); for(i = 0; i < len; i++){ if(flag && (buf[len - i - 1] == '9')) ret[len - i] = '0', flag = 1; else if(flag) ret[len - i] = buf[len - i - 1] + 1, flag = 0; else ret[len - i] = buf[len - i - 1]; } if(flag) ret[0] = '1', p = ret; else p = ret + 1; if((fp = freopen("count.txt", "w", fp)) == NULL) exit(2); fputs(p, fp); fclose(fp); return 0; }
- 169 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:42:43 ]
- >>159
#include <stdio.h> typedef struct tag_student_t{ double eng, math; int id; }student_t; void InputData(student_t s[], int n){ int i; for(i = 0; i < n; i++){ printf("student %d\ninput data (id, eng, math) : ", i + 1); scanf("%d%lf%lf", &s[i].id, &s[i].eng, &s[i].math); } } int main(void){ student_t s[4]; double max = -1; int i, i_max = 0; InputData(s, 4); for(i = 0; i < 4; i++) if(max < s[i].eng + s[i].math) i_max = i, max = s[i].eng + s[i].math; printf("id : %d eng : %.3f math : %.3f sum : %.3f\n", s[i_max].id, s[i_max].eng, s[i_max].math, s[i_max].eng + s[i_max].math); return 0; }
- 170 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:48:10 ]
- >>162
#include <stdio.h> #define STACK 10 #define QUEUE 10 // <中略> int main(void){ stack s[STACK]; queue q[QUEUE]; int i; puts("push"); for(i = 0; i < 13; i++) printf("%d\n", push(s, i)); puts("pop"); for(i = 0; i < 13; i++) printf("%d\n", pop(s)); puts("enqueue"); for(i = 0; i < 13; i++) printf("%d\n", enqueue(q, i)); puts("dequeue"); for(i = 0; i < 13; i++) printf("%d\n", dequeue(q)); return 0; }
- 171 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:52:09 ]
- >>162
すいません。C言語までしか習っていないのでC言語のみでお願いします。
- 172 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:53:48 ]
- >>170
できればでいいのですが問1と問2にわけて頂けないでしょうか
- 173 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 18:15:22 ]
- >>172
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4390.txt
- 174 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 18:29:03 ]
- >>128
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4391.txt
- 175 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 19:18:34 ]
- [1] 授業単元:データ構造とアルゴリズム
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4394.txt [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio .NET 2003 [3.3] 言語:C [4] 期限:2007/6/26 10:30 [5] その他の制限:入力はfopen系関数を使用したものではなく、コマンドプロンプトから入力が保存されたテキストファイルを読み込む方法で行うようにしなければならない。 どんなに考えてもわかりません。わからないまま前日になってしまいました… よろしくお願いします。
- 176 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 19:24:03 ]
- まいったな……何の問題なのかも分からないや。
- 177 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 19:59:11 ]
- [1] 授業単元:プログラム技術
[2] 問題文: (2)次に引数の順番を入れ替えて逆順に表示するプログラムに直せ。 ソースプログラムを書き込んで提出せよ。*/ main(int argc , char *argv[]){ int i; printf("%d argument(s).\n" , argc -1); for(i=argc-1; i>=0; i--){ printf("argv[%d] : \"%s\"\n", i , argv[i]); } } 引数の順番を入れ替えると(char *argv[] , int argc)入力した文字は反映されず、argument(s).の前に 意味不明の数字が表示されて動作を終了してしまいます。 C:\c>smp2 a b c 3616655 argument(s). ちなみに、引数を入れ替えなければ、逆に表示されます。 回答、よろしくお願いします。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio .NET 2003 [3.3] 言語:C [4] 期限:2007/6/26 [5] その他の制限:
- 178 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:02:43 ]
- >>173
ありがとうございました! いろいろ注文多くすいませんでした。
- 179 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:05:55 ]
- >>177
argumentでスレを検索汁
- 180 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:07:42 ]
- >>177 >>14
- 181 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:11:23 ]
- >>177
> 引数の順番を入れ替えると(char *argv[] , int argc) っつか吹いたっw
- 182 名前:177 mailto:sage [2007/06/25(月) 20:16:15 ]
- >>179>>180
検索しましたが、何の参考にもなりませんでした。 まだ習い始めたばかりでよく分からないんです・・・ >>181 なにか根本的に間違っていたりしますか? いや、冗談抜きでこの授業分からないんです・・・
|

|