- 1 名前:デフォルトの名無しさん [2007/10/23(火) 23:48:35 ]
- あなたが解けない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++の宿題を片付けます 97代目 pc11.2ch.net/test/read.cgi/tech/1191937213/
- 152 名前:147 mailto:sage [2007/10/25(木) 02:07:00 ]
- >>111
念のため、 #define DAYS 10 // 販売期間 #define ITEMS 10 // 製品の種類数 の部分を #define DAYS 1000 // 販売期間 #define ITEMS 100 // 製品の種類数 と書き換えると題意に沿った回答になる。 ただし、このとき、出力が最悪200000行になるので注意。
- 153 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 06:10:11 ]
- >>82
課題にはそのとおり書いてあったんですが・・。 自分には問題の@〜Bの意味がさっぱりで・・・。 >>83 それが答えってことになるのですか?
- 154 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 06:30:23 ]
- こたえだね。
- 155 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 07:17:13 ]
- 答えかどうかもわからないって…
- 156 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 09:26:14 ]
- [1] 授業単元:情報システム基礎
[2] 問題文(含コード&リンク):このC言語で作られたプログラムをC++に変えて下さい kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5146.txt [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: すいません、よくわかりません。 講義では「Microsoft Visual Studio .NET 2003」を使用しています [3.3] 言語: CからC++へ [4] 期限: 明日が終わるまで [5] その他の制限: 特になし 明日までと急なことで申し訳ありませんがお願いします。
- 157 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 09:59:01 ]
- >>156
本当にそんな問題が……?
- 158 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 10:04:20 ]
- >>156
すでにC++ですっていって提出しちゃえば? 問題が曖昧すぎ
- 159 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 10:18:09 ]
- プログラムは配布されたプリントから打ち込みましたが、
問題文は文章でなく口頭で出題されました。全くこの通りです。 すでにC++になっているんでしょうか?
- 160 名前:156 ◆B5khfT.h4o mailto:sage [2007/10/25(木) 10:19:39 ]
- すいません、今更ですがトリップをつけるのを忘れていました
- 161 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 10:56:23 ]
- >>159
拡張子cppでコンパイルしてみな
- 162 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 11:03:08 ]
- class Helonを作ってコンストラクタで三辺の長さで初期化して
get()で返すとか、そういう風にすればどう? あとprintfをcoutに無理矢理直すとそれらしく見える。別にprintfでも C++の範囲内なのだが。
- 163 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 11:31:04 ]
- >>156
無理矢理C++にしてみた。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5147.txt
- 164 名前:デフォルトの名無しさん [2007/10/25(木) 13:40:38 ]
- >>147
一つ目の製品はちゃんと発注するんですけど、二つ目以降は発注が行われないんですけど どうすればいいんですか?
- 165 名前:147 mailto:sage [2007/10/25(木) 14:00:28 ]
- >>111 >>164
// 製品情報初期化 int ADD_NUM = (rand()%81)+FIRST_NUM; int ADD_NUM_LOWER = (rand()%31)+50; int ADD_DAYS = (rand()%5)+1; の部分に // 製品情報初期化 int ADD_NUM = (rand()%81)+FIRST_NUM; int ADD_NUM_LOWER = (rand()%31)+50; int ADD_DAYS = (rand()%5)+1; inc_day = 0; を書き足せばよかったみたい。 ということでソースは下記に。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5148.txt >>152も参考に。
- 166 名前:デフォルトの名無しさん [2007/10/25(木) 14:06:31 ]
- >>165
できました。本当にありがとうございました。
- 167 名前:65です [2007/10/25(木) 14:48:32 ]
- 遅くなりました。すいません。
変数を州ごとに集計して平均を出す部分がよくわかりません。 >67 ファンクションについてはまだ授業で習っていないので、先生に避けたほうがいいと言われました。 でも、Voidとか変数のReferenceとか基本的なことは本で読んだので、使ってくださってもけっこうです。 提出するコードは、ファンクションを使わないように書き換えます。 >70 はい。州の略はその通りで大丈夫です。
- 168 名前:デフォルトの名無しさん [2007/10/25(木) 15:30:40 ]
- >>147さん
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5149.txt っていう課題が新たに出されたので、やっていただけませんか? 以前のプログラムがとても見やすかったので、よろしくお願いします。
- 169 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 16:52:28 ]
- >>65 >>167
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5150.txt ・しっかりとgetlineを使っている。 ・line.substr(13, 2)とline.substr(23, 4)を使って読み込んでいるので、gasprices.txtの配置がずれたら限りなくアウト。
- 170 名前:デフォルトの名無しさん [2007/10/25(木) 16:54:31 ]
- >>14
まだ、待っています。出来る方お願いします。 アドバイスはいくつか貰ったのですが、関数から関数への受け渡しがうまく行きません。
- 171 名前:169 mailto:sage [2007/10/25(木) 17:00:34 ]
- >>65 >>167 続き
・1行目にある #include <algorithm> は削除。 ・出力は一応CSV のはず。 ・アメリカの略号に誤入力があるかもしれない。 ・アメリカの州って50だったっけ?
- 172 名前:コンパイルは出来たがあってないぞ [2007/10/25(木) 17:06:21 ]
- #include<stdio.h>
#include<string.h> void d_word(char st[], int pos, int len){ int l=strlen(st); int i; for(i=pos; i<=l-len; i++) { st[i] = st[i+len]; }} void search_del(char st1[], char st2[]){ int i, j; int m1=strlen(st1); int m2=strlen(st2); for(i=0; i<=m1-m2; i++) { for(j=0; j<m2; j++) { if(st1[i+j] != st2[j]) break; } if(j=m2) { d_word(st1, i, m2); m1 -= m2; }}} int main(){ char str1[256], str2[256]; printf("string? : "); gets(str1); printf("deleted word? : "); gets(str2); search_del(str1, str2); puts(str1); return 0;}
- 173 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 17:22:18 ]
- お願いします
問題【0からa-1までの整数の乱数をn個発生させ、発生した整数のヒストグラムを表示しなさい。 ただし。a<21とし、aとnはキーボードから入力する】 ______________________________________________とりあえずいままで作成したコードです__________________________________ #include <stdio.h> #include <math.h> #include <stdlib.h> main(void) { int n,a,b,i,val; int c[21]; printf("0からa-1までの整数の乱数をn個発生させ、\n"); printf("発生した整数のヒストグラムを表示させます\n"); printf("1から21までの任意の整数aを入力してください。\n"); scanf("%d",&a); printf("任意の正の整数nを入力してください。\n"); scanf("%d",&n); if(a<=0||a>=22) {printf("aの値を入力しなおしてください。\n");} else{ val=(double)rand()/(RAND_MAX+1)*a; if(n<=0) {printf("nの値を入力しなおしてください。\n");} else { for (i=0; i<=(a-1); i++) {printf("aが%dのとき、%d回\n",i,c[val]); c[val]=c[val]+1;} } } }___________________________________________________________________________________________________________________________
- 174 名前:173 mailto:sage [2007/10/25(木) 17:24:12 ]
- 結果表示はヒストグラムというか
〜は〜回という形式にします volとかそのへんの扱いかたがよく分からずに参っております よろしくお願いいたします。
- 175 名前:156 ◆B5khfT.h4o mailto:sage [2007/10/25(木) 17:26:49 ]
- レスしてくれた方やプログラムを作ってくれた>>163さん、ありがとうございました。
とりあえず課題を出したうえで、C++にするのはどういうことか詳しく聞いてみます。
- 176 名前:65です [2007/10/25(木) 17:31:19 ]
- >169さん
丁寧にありがとうございます。 はい、アメリカの州は50です。 ところで、私は途中まで以下のようにコードを組み立てたのですが、以下のようなやり方でも、プログラムを完成させることはできますか? #include <iostream> #include <string> #include <fstream> using namespace std; int main (int argc, char **argv) { char peek; ifstream myFile; string cityName, stateName; float gasPrice; myFile.open("gasprice_file.txt"); while((peek = myFile.peek () ) ! = EOF) { myFile >> cityName; myFile >> stateName; myFile >> gasPrice; If(! myFile) { myFile.clear(); cityName = cityName + " " + stateName; myFile >> sateName; myFile >> gasPrice; { myFile.close(); return 0; }
- 177 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 17:53:30 ]
- >>173
#include <stdio.h> #include <stdlib.h> #include <time.h> main(void) { int n=-1,a=0,b,i,val,c[21]; for(i=0;i<21;i++) c[i]=0; srand((unsigned int)time(NULL));// 乱数の初期化 printf("0からa-1までの整数の乱数をn個発生させ\n"); printf("発生した整数のヒストグラムを表示します。\n"); printf("1から21までの任意の整数aを入力してください。\n"); while(!(a>0&&a<22)){ scanf("%d",&a); if(a<1||a>21) printf("aの値を入力しなおしてください。\n"); } printf("任意の正の整数nを入力してください。\n"); while(n<0){ scanf("%d",&n); if(n<0) printf("nの値を入力しなおしてください。\n"); } for(i=0;i<n;i++){ val=(double)rand()/(RAND_MAX+1)*a; c[val]++; } for (i=0; i<=(a-1); i++) printf("%d = %d回\n",i,c[i]); } 表示はヒストグラムでなくてもいいのかな。
- 178 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 17:58:47 ]
- >>170
アドバイスって言うか>>20で回答もらってるじゃない。 ・if(j=m2)をif(j==m2) ・printf("%d\n", st1);をprintf("%s\n", st1); この2点の変更だけで動くはず。変更の仕方が間違ってるんだと思う。
- 179 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:06:46 ]
- >>177
whileの条件とループの中のifで2回判定するのはムダ
- 180 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:22:58 ]
- >>177の訂正。入力部分。
while(scanf("%d",&a),!(a>0&&a<22)) printf("aの値を入力しなおしてください。\n"); printf("任意の正の整数nを入力してください。\n"); while(scanf("%d",&n),n<0) printf("nの値を入力しなおしてください。\n"); >>179の指摘したムダを省くと多分こうなると思います。
- 181 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:26:06 ]
- ってやっちまった。>>180だと文字入力したら無限ループしてしまう。
while(scanf("%d",&a),!(a>0&&a<22)){ printf("aの値を入力しなおしてください。\n"); fflush(stdin); } printf("任意の正の整数nを入力してください。\n"); while(scanf("%d",&n),n<0){ printf("nの値を入力しなおしてください。\n"); fflush(stdin); } こうでした。
- 182 名前:デフォルトの名無しさん [2007/10/25(木) 18:34:53 ]
- >>178
この様にコード書いたけどコンパイラが通らないです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5151.txt
- 183 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:38:11 ]
- >>182
見ずにコメント。1.改行コード 2.全角スペース そろそろコンパイラが吐いたエラー貼ったらどうだ?
- 184 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:42:43 ]
- >>182
#include<string.h>を追加。もしかしてstr〜の関数習ってない?
- 185 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:45:55 ]
- >>177
ありがとうございます 実行してみたところ、 0以外の数字が何度やっても0回になってしまいますが これはどうすればよろしいのでしょうか?
- 186 名前:デフォルトの名無しさん [2007/10/25(木) 18:50:01 ]
- >>183
エラーが無いので下に張りました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5152.txt >>184 追加しても効果なかったです。関数str〜習ってます。
- 187 名前:デフォルトの名無しさん [2007/10/25(木) 18:52:46 ]
- >>186
「エラーが無いので」× 「エラーが長いので」○
- 188 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:54:50 ]
- 1] 授業単元:C言語
[2] 問題文:ファイルの内容を読み込んで、下記の例のように読み込んだ内容を ディスプレイに表示させよ。 ファイルの内容 誕生年:2000 誕生月:1 誕生日:2 身長:120.0 体重:21.0 名字:Kouno 名前:Hiro 実行例 氏名 Kouno Hiroです。 生年月日は2000年1月2日です 身長120,0cm 体重21,0kgです [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2007年10月26日 [5] その他の制限: ライブラリ関数は使っても大丈夫です。 読み込むことはできたのですが、fgetsを使うと「誕生年:2000」と読み込んで しまって2000だけ表示させることができません。 よろしくお願いします。
- 189 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:57:41 ]
- >>185
valにちゃんと値が入ってないのかな。 val=(double)rand()/(RAND_MAX+1)*a; を val=rand()%a; に変えてみてください。 >>186 インデントを全角スペースでやってない?
- 190 名前:デフォルトの名無しさん [2007/10/25(木) 19:04:06 ]
- >>189
盲点、スペースを全角でやっていました。 スペースを全て消したらコンパイルが通って、ちょんと動きました。 全角スペースでエラー返されるんですね、勉強になりました。 次からはスペースの全角/半角に気をつけます。
- 191 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 19:09:39 ]
- >>189
ありがとうございます!ちゃんとできました 助かりました
- 192 名前:デフォルトの名無しさん [2007/10/25(木) 19:57:16 ]
- >>188
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5153.txt
- 193 名前:169 mailto:sage [2007/10/25(木) 20:16:30 ]
- >>176
できます。あなたらならできます。
- 194 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 20:39:32 ]
- [1] 授業単元:プログラミング実験
[2] 問題文(含コード&リンク): case.f7.ems.okayama-u.ac.jp/statedu/lispstat-book/node85.html にならって以下のデータ平均分散を用いて確率を出せ。10次元です。 データ -18.858 1.046 -1.616 4.023 1.857 4.207 6.451 0.989 -3.807 0.744 平均 -6.388222e+00 -1.383500e+01 -1.249702e+01 -3.617623e+00 2.185494e-01 3.840833e+00 6.477101e+00 -1.552781e+01 4.537848e+00 -2.995257e+00 分散 1.504899e+01 2.376009e+01 2.176429e+01 2.650845e+01 2.850247e+01 5.442906e+01 3.594814e+01 7.991224e+01 2.946554e+01 3.397208e+01 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2007年10月26日まで [5] その他の制限: なし
- 195 名前:78&153 mailto:sage [2007/10/25(木) 20:56:27 ]
- すいません、問題Bに間違い&追加がありました。
実装仕様もあって、書いてたことが違ってました。 以下が訂正問題です。 [1] 授業単元:文字列操作プログラム [2] 問題文(含コード&リンク): 配列とポインタを使用し、文字列操作を行うプログラムを作成せよ。 @独自のstrlen関数mystrlen関数を自作する。 文字列のポインタを受け取り、文字列の長さを返す関数を作成する。 A独自のstrcpy関数mystrcpy関数を自作する。 文字列のポインタ2つを受け取り、文字列のコピーを行う関数を作成する。 B独自のatoi関数myatoi関数を自作する。 数値文字列のポインタを受け取り、数値を返す関数を作成する。 C独自のitoa関数myitoa関数を自作する。 数値を受け取り、指定された基数で文字列変換を行う関数を作成する。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:不明 [3.3] 言語:C言語 [4] 期限:2007年10月26日朝5:00まで >>196に続く
- 196 名前:78&153 mailto:sage [2007/10/25(木) 20:56:58 ]
- >>195の続き
[5] その他の制限:実装仕様として、 @int mystrlen(const char*s) 第一引数:文字列のポインタ 戻り値:文字列の長さを返す Achar*mystrcpy(char*s1,const char*s2); 第一引数:コピー先バッファのポインタ 第二引数:コピー元文字列のポインタ 戻り値:第一引数の文字列へのポインタを返す Bint myatoi(const char*nptr); 第一引数:変換元の数値文字列 戻り値:変換された値を返す Cchar*myioa(int value,char*buff,int radix); 第一引数:変換元の整数 第二引数:変換後の数値文字列を格納するバッファのアドレス 第三引数:基数(何進数で変換するか。2〜36の範囲内で指定可能) 戻り値:第二引数の文字列へのポインタを返す と、なっております。 すいませんが回答の方をよろしくお願いします
- 197 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 21:03:26 ]
- >>66 = >>71 = >>93 = >>130 = >>194
- 198 名前:デフォルトの名無しさん [2007/10/25(木) 21:28:40 ]
- >>195 >>196
いまさら?これから変更するの面倒だし 期限:2007年10月26日朝5:00 ってことは残り7時間、無理。 がんばれノシ
- 199 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 21:31:16 ]
- 標準ライブラリ使っちゃダメって書いてないんだからそのまま引数渡せばいいだろ。
- 200 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 21:31:22 ]
- >>123
ありがとうございます! 感謝します!
- 201 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 21:36:03 ]
- よろしくお願いします。
[1] 授業単元:C++プログラミング [2] 問題文(含コード&リンク): 次のクラス定義を参照して、関数 func 内の処理を記述してください。 関数 func 内では p が派生クラス MagazineMotorcycle のインスタンスを指すかどうかを調べて、 もしそうならメンバー関数 Reserve を呼び出してください。そうでなければ false を返してください。 class Magazine { public: virtual bool Order(int amount = 1) = 0; }; class MagazineMotorcycle : public Magazine { public: bool Order(int amount = 1) {} bool Reserve() {} }; bool func(Magazine* p) { // 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理 } [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C++ [4] 期限: 10/26 12:00 [5] その他の制限:なし
- 202 名前:78&153 mailto:sage [2007/10/25(木) 21:45:03 ]
- >>198
昨日書き込んで、今日間違い気づいたんですよorz できればお願いします。自分にとっては、これってホントに初級編!?って いうぐらい難しい
- 203 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 21:46:42 ]
- >>201
bool func(Magazine* p) { // 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理 if (MagazineMotorcycle* mm = dynamic_cast<MagazineMotorcycle*>(p)) mm->Reserve(); return false; } これでおk?
- 204 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:03:47 ]
- [1] 授業単元:データ構造とアルゴリズム1
[2] 問題文(含コード&リンク):stack.cpp 中のpushとpop関数を完成せよ。 stack.cpp:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5154.txt [3] 環境 [3.1] OS:win xp [3.2] Microsoft Visual Studio .NET 2003 [3.3] 言語:c++ [4] 期限:2007年10月26日9:30まで [5] その他の制限:(どこまで習っているか)構造体、ファイル処理まで どうかよろしくお願いします。
- 205 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:10:08 ]
- >>203
ありがとうございます。 こちらを提出してみます。
- 206 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:12:28 ]
- >>201
bool func(Magazine* p) { // 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理 if (MagazineMotorcycle* mm = dynamic_cast<MagazineMotorcycle*>(p)) return mm->Reserve(); return false; } こんどこそおk?
- 207 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:26:15 ]
- >>204
// データvalをスタック x に積む void push(int *x,int val) { // (1) スタックがオーバフローかどうかをチェック if (stack_pointer < stack_size) { // (2) オーバフローでなければデータ val をスタック x につむ x[stack_pointer++] = val; } } // データをスタック x からおろす void pop(int *x) { // (1) スタックがアンダーフローかどうかをチェック if (stack_pointer > 0) { // (2) アンダーフローでなければスタックxからデータをおろして、 // スタックポインターを調整 stack_pointer--; } } これでおk?
- 208 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:41:25 ]
- >>207おkです。感謝です。
本当にありがとうございます。 助かりました。
- 209 名前:57 mailto:sage [2007/10/25(木) 22:54:44 ]
- >>60
レスありがとうございます。 今日の朝、main関数を作って動かしてみたのですが、 おかしいです。 例えば、連結リストのaの値を10、11、12とすると、 11、10、56787 と、一番最後が変な数値になってしまいます。 並び替える前に表示すると、10、11、12となってちゃんと動作するので、 表示する関数は間違ってないと思います。 一応補足として、自分が扱っている連結リストは一番最初に、aに値が 含まれていない要素があり、その後からaに値が含まれる要素が並びます。
- 210 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:10:52 ]
- >>202
#include<stdio.h> int mystrlen(const char *s) { int len=0; while(*s++!='\0') len++; return len; } int myatoi(const char *nptr) { int i,n=0,sign=0,len=0; const char *s=nptr; while(*s++!='\0') len++; if(*nptr=='-'){ sign++; len--; *nptr++; } for(i=0;i<len;i++) n=10*n+*nptr++-'0'; return sign ? -n : n; } mystrcpy,myitoaは>>83のままで仕様満たしてるのでそれ以外を。
- 211 名前:デフォルトの名無しさん [2007/10/25(木) 23:11:09 ]
- >>147さん
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5149.txt っていう課題が新たに出されたので、やっていただけませんか? 以前のプログラムがとても見やすかったので、よろしくお願いします。
- 212 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:19:38 ]
- >>168さん、この生産管理プログラムの期限はいつまででしょうか。
- 213 名前:78&153 mailto:sage [2007/10/25(木) 23:21:11 ]
- >>83>>210
遅い時間に本当にありがとうございます。 お手数おかけ致しました。(TT)
- 214 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:21:23 ]
- >>209
糞リストの仕様を書かなかったほうが悪い。
- 215 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:22:42 ]
- お願いします!!
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): 1:int型整数をchar型配列の文字列に変換するitoa関数を作れ 2:long型整数をchar型配列の文字列に変換するltoa関数を作れ 3:float型小数をchar型配列の文字列に変換するftoa関数を作れ [3] 環境 [3.1] OS: XP sp2 [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語: C [4] 期限: 明日26日(金)の16時まで
- 216 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:33:35 ]
- >>215
1. char* itoa(int n){static char c[16];sprintf(c,"%d",n);return c;} 2. char* ltoa(long n){static char c[16];sprintf(c,"%ld",n);return c;} 3. char* ftoa(float n){static char c[16];sprintf(c,"%f",n);return c;}
- 217 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:34:03 ]
- >>215
itoaは >>83 にあるよ。ltoaはitoaとほとんど変わらん。 ftoaも小数点以下あるだけであんま変わらないな。
- 218 名前:57 mailto:sage [2007/10/25(木) 23:37:20 ]
- >>214
申し訳ないです。 リストの仕様は以下の様になります。 ・リストは連結リストで片方向リストです。 ・次の要素がない場合(リストの一番最後)は、次の要素へのポインタをNULLとします。 ・リストの一番最初には、aに値が含まれていない要素があります。 よろしくお願いします。
- 219 名前:デフォルトの名無しさん [2007/10/25(木) 23:42:13 ]
- 木曜日の15時までです。
- 220 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:45:52 ]
- >>218
static struct c *re_internal(struct c *l) { struct c *p; if(l->n==NULL) return l; p = re(l->n); l->n->n = l; l->n = NULL; return p; } struct c *re(struct c *l) { if(l->n) l->n = re_internal(l->n); return l; }
- 221 名前:デフォルトの名無しさん [2007/10/25(木) 23:49:08 ]
- 再帰は?
- 222 名前:215 mailto:sage [2007/10/26(金) 00:03:01 ]
- >>216
さすがにsprintfは使うわけにはいかないかと・・・w >>217 ありがとうございます。 >>83を参考にしてやってみようと思います。
- 223 名前:57 mailto:sage [2007/10/26(金) 00:03:47 ]
- >>219
減点はするけど、出さないよりは、ましだから今週の課題と一緒に来週に 出しなさいと言われました。 >>220 ありがとうございます。 リストの仕様は>>218に書いた通りですが、 問題自体は>>57に書いた通り、再帰を使わないと…
- 224 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 00:08:57 ]
- >>220
re_internalの中でre呼び出してる
- 225 名前:57 mailto:sage [2007/10/26(金) 00:23:54 ]
- >>224
再帰って自分自身の関数を呼び出すんじゃないですっけ? これだと、他の関数を呼び出してるだけな気がするのですが… 一つの関数で作ることって出来ないのですかね?
- 226 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 00:24:24 ]
- >>218 直した
static struct c *re_internal(struct c *l) { struct c *p; if(l->n==NULL) return l; p = re_internal(l->n); // <- この行 l->n->n = l; l->n = NULL; return p; } struct c *re(struct c *l) { if(l->n) l->n = re_internal(l->n); return l; } >>224 thx
- 227 名前:57 mailto:sage [2007/10/26(金) 00:50:35 ]
- >>226
ありがとうございます。
- 228 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 00:58:09 ]
- リストの先頭にデータを入れないことによってどんな利点があるの?
- 229 名前:168 [2007/10/26(金) 00:58:45 ]
- >>147・212
28日までにお願いしたいんですけど・・・ よろしくお願いします。
- 230 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 07:29:15 ]
- 1] 授業単元: C言語
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5156.txt [3] 環境 [3.1] OS:UNIX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2007年10月26日 [5] その他の制限: ライブラリ関数は使ってもおkです 徹夜で考えたんですが分からなかったのでお願いします kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5155.txtのよに書いたのですが セグメントエラーが出てしまいます。 ダメなところとかがあったら直して教えてください。
- 231 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 07:51:19 ]
- >>230
比較用演算子 == を使うこと. if(fop=NULL) if(fout=NULL) あと、終盤で下記不要 > heikin=goukei/NUM; > fprintf(fout,"番号\t平均点との差\n"); > for(i=0;i<NUM;i++) > { > fscanf(fop,"%d%d",&gakusei[i].bangou,&gakusei[i].seiseki); > goukei=+gakusei[i].seiseki; > } 最後は goukeiもNUMも整数なのでgoukei/NUMは整数となるのを防ぐ heikin=(double)goukei/NUM;
- 232 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 08:09:19 ]
- >>230
14〜21行目: 使わない変数 (fairu, cp, sirusi1, sirusi2) の宣言は外しましょう 21行目: heikin は int 型でいいんじゃない? double 型で行きたい場合、int型変数 (seiseki, goukei等) との計算をするときにキャストとか考えた方が良い 24,26行目: scanf("%s", &open); → scanf("%s", open); ポインタを習っているかは知りませんが、配列名は単独で使用するとポインタ型になります 30,42行目: if (fop=NULL) → if (fop == NULL) C言語での比較演算子は == です 56行目: goukei=+gakusei[i].seiseki; → goukei += gakusei[i].seiseki; 演算子を見直しましょう 63〜70行目: 平均2回計算してるから消そう 74行目: "%d\t%dn" → "%d\t%d\n" 改行文字は "\n" で表します
- 233 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 08:16:51 ]
- >>231さん
>>231さん 朝早くだったのにレスありがとうございます。 おかげ様でセグメントエラーも出ないで実行できました 来週中間試験があるので もっと勉強しなきゃいけないなと思いました。 ホントにお世話様でした
- 234 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 08:46:17 ]
- 中間試験って紙にコード書くの?
- 235 名前:課題お願いします [2007/10/26(金) 09:05:21 ]
- [1] 授業単元:プログラミング演習
[2] 問題文:n個からr個を選ぶ組み合わせは、nCr = n!/r!(n-r)! ただし、n! = 1*2*3*…*(n-1)*nで求められる。そこで、n!を求める関数functorial(n)を定義し、それを3度呼び出す形で、組み合わせnCrをもおめるプログラムを作成せよ。 [3] 環境 [3.1] OS: (WindowsXP) [3.2] コンパイラ名とバージョン:Visual C++ [3.3] 言語: C [4] 期限: 今日の昼までに。 [5] その他の制限: 授業で配列とポインタは習いました。この問題は「関数」というセクションの問題です。大学の授業なのであまり難しくなり過ぎないようにお願いします。
- 236 名前:235 mailto:sage [2007/10/26(金) 09:07:30 ]
- 書き間違いorz
[2] 問題文:n個からr個を選ぶ組み合わせは、nCr = n!/r!(n-r)! ただし、n! = 1*2*3*…*(n-1)*nで求められる。そこで、n!を求める関数functorial(n)を定義し、それを3度呼び出す形で、組み合わせnCr を求めるプログラムを作成せよ。
- 237 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 09:09:55 ]
- int function(int n)
{ return n<2 ? 1 : n * function(n-1); } int nCr(int n, int r) { return function(n) / function(r) / function(n-r); }
- 238 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 09:11:28 ]
- 一瞬で片付くというのもある意味爽快だ
- 239 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 09:20:03 ]
- >>234
中間試験は筆記と実技があって 実技は端末からサーバーにアクセスして書きます。 実技は今のままじゃ、受かる気がしません… ファイル処理、ポインタがかなりヤバイです
- 240 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 09:23:34 ]
- 関数名functorialだw
階乗ならfactorialだし、関数ならfunctionだからfuncだけみて間違っちまった。
- 241 名前:デフォルトの名無しさん [2007/10/26(金) 10:59:15 ]
- 1] 授業単元: プログラミング
[2] 問題文:3人の昼食代を入力し、その平均を関数aveにて計算し、 「割り勘で△円」と表示するプログラム (定義例:double ave(double c1,double c2,double c3)) [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: ([2007年10月26日まで] できれば早いほうがうれしいです。 [5] その他の制限:定義例を使ってください if,while,switch,forは習いました お願いします
- 242 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:01:22 ]
- なんで金額がdoubleなんだよ・・・
- 243 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:05:00 ]
- >>234
別人だけど、フロッピーでソース提出とか、メールで添付とかもあるけど、一番多いのは紙。 正直、このご時勢で紙でやるのは馬鹿だと思う。
- 244 名前:デフォルトの名無しさん [2007/10/26(金) 11:14:18 ]
- >>242
小数点出てもいいらしいです。要はaveを使って計算したいのだと思います。
- 245 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:18:40 ]
- 俺の高校は紙にVBA書かされたぜ
- 246 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:19:06 ]
- >>243
国がやってる情報処理系の資格試験は、全部紙だぞ?
- 247 名前:デフォルトの名無しさん [2007/10/26(金) 11:24:49 ]
- 先日はありがとうござました。
[1] 授業単元: C言語演習U [2] 問題文(含コード&リンク): 前回の授業で"姓/名"という形式の文字列を入力すると、これを姓と名を表す2つの文字列に分割するプログラムを作成した。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5158.txt このプログラムを関数を用いた形に書き換えようと思い、次のプログラムを作成した。 このプログラムを実行すると、おかしな出力になってしまった。 問題1:このプログラムのどこが間違っているのか、その理由を答えよ。 (ヒント:pt_s,pt_mはローカル変数) 問題2:プログラムを書き直せ。 (配列を渡す方法、ポインタのアドレスを渡す方法などある) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C言語 [4] 期限:29日(月)
- 248 名前:デフォルトの名無しさん [2007/10/26(金) 11:34:38 ]
- >>239
うちも紙〜 さすがにプログラムを卓上で作りコード全部書けは無いけど、 5〜6行くらいの穴埋めでプログラムを完成させよとか。
- 249 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:59:09 ]
- 流石に資格試験でソース全部書けは無いだろ。
あったら死ねるけどw 普段書かない記号とか書かなきゃならんし、 インデント一つ追加しようと思ったらその間書き直しだし、 書いてる事がタイプ以上に考えてる事に追いつかないし、 変数名チェックも全部自分でしなけりゃならんから面倒だし。
- 250 名前:デフォルトの名無しさん [2007/10/26(金) 12:01:52 ]
- >>239
うちは進んでるよ。 テストプログラムを当日教室で下してきて実行すると、P検みたいなプログラムが走って画面左半分が問題書いてあって、右半分の上がコマンドプロンプト?で下がテキストパッドになってる。 問題にある仕様のプログラムをテキストパッドで作って、「実行」ボタンがその下にあるから押すとコマンドプロンプトで自動的にコンパイル+実行してくれる。 作ってる途中のものを試しでコンパイルする度、実行はうざかった。 問題全部作ったら問題1番最後の回答終了を押すと自動で結果をサーバーに送信して、プログラム終了。 ファイヤーウォールに引っ掛かって提出できないとか、提出時に回線が込んでて提出できないとかで、良悪あるけどね。
- 251 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 13:04:09 ]
- >>250
なんだかすごい環境だな。
- 252 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 13:09:33 ]
- >>239
高専電気科の情報の授業では ごく普通にPCでやってるぞ しかも、授業で書いたコードを参照してもいいというオマケ付きで。 授業理解度を確かめるのならこういう方式でもよさげな気がする。
|

|