1 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 06:56:18 ] あなたが解けない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++の宿題を片付けます 112代目 pc11.2ch.net/test/read.cgi/tech/1215439445/
180 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 18:20:21 ] >>177 #include<stdio.h> #include<stdlib.h> int fib(int i){ static int count; int answer; if(i==0){ int ret=count;count=0;return ret; } if(i <=2){ return 1;} answer = fib(i-1) + fib(i-2); // 3回加算 count+=4; // 1回加算 計4回 return answer; } int fib2(int i){ static int count; int n, fib_n_0=1, fib_n_1=1, fib_n_2=1; if(i==0){ int ret=count;count=0;return ret; } for(n=3;n<=i;n++){ // 1回加算 fib_n_2=fib_n_1+fib_n_0; // 1回加算 fib_n_0=fib_n_1; fib_n_1=fib_n_2; count+=3; // 1回加算 計3回 } return fib_n_2; } int main(int argc, char *argv[]){ int fib_n=20; printf("%d ", fib(fib_n)); printf(" %d\n", fib(0)); printf("%d ", fib2(fib_n)); printf(" %d\n", fib2(0)); return 0; }
181 名前:174 mailto:sage [2008/07/15(火) 18:52:33 ] >>178 回答ありがとうございます。 いただいたのをもとにプログラムを書いてみたんですが、うまく削除できてないみたいなんです・・・ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7387.c これを実行すると@を5回表示するんですが、bintree 〜 is deleted.のほうは表示されなくて。 申し訳ありませんがもう1度見ていただけますか。
182 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 18:56:27 ] >>181 削除は出来ている。 ただ、ローカル変数のta0とかの値は削除したからって自動でNULLにならない。 単にbintree 〜 is deleted.の部分のif文がおかしいだけ。
183 名前:174 mailto:sage [2008/07/15(火) 19:10:38 ] >>181 調べてみたら、確かにfreeした後の領域はNULLではなくて、 何があるかわからないということが書いてありました。 そうすると、削除したかどうかってどうやって調べればいいんでしょう・・・。
184 名前:デフォルトの名無しさん [2008/07/15(火) 19:13:47 ] >>35 なのですが、関数を使わずにか、 #include <stdio.h> void swap(int *a, int *b) { int c; c=*a; *a=*b; *b=c; } int main() { int max1 = 0, max2 = 0, num; while(scanf("%d", &num) == 1){ if(num == 0) break; if(num < 0 || num % 2 == 1) continue; if(num > max2) max2 = num; if(max1 < max2) swap(&max1, &max2); } printf("%d\n", max2); return 0; } *aやcontinue、&max1を使わずに出来ないでしょうか? 何度も申し訳ありません。
185 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:18:37 ] >>184 このスレ内に汝の欲するものは既にある
186 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:19:55 ] 空白文字の個数を保ったまま、文字列を単語単位で処理をしたいんですが どのように記述するのが良いのでしょうか 例えば次の文字列があり、単語の先頭にあるaだけ大文字にしたいです _aba__dea__aga__ (_は空白) _Aba__dea__Aga__ (こうなってほしい) stringstreamでパースして、後で結合する方法を思いつきましたが、この方法だと空白は消えてしまいました。 地道に1文字ずつみて、str[i]==0 || (str[i-1]==' ' && str[i]!=' ') こういった判定をする以外に良い方法ってありますか?
187 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:24:39 ] UDP:相手先のオンライン、着信確認をせずに送ること TCP:相手先がオンラインであること、着信確認を取った上で送ること という理解でいいでしょうか?
188 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:31:55 ] >>186 こういうことをしたいのかな? それともaだけを大文字にするのかな? #include<iostream> #include<string> #include<cctype> int main(void){ std::string foo=" aba dea aga "; std::cout << foo << std::endl; for(int i=0,next_toupper_flag=1;i<foo.size();i++){ if(next_toupper_flag) foo[i]=toupper(foo[i]); // 書き換えてるけどこれっておk? if(isspace(foo[i])) next_toupper_flag=1; else next_toupper_flag=0; } std::cout << foo << std::endl; }
189 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:37:21 ] >>186 while (*str) { while (*str == ' ') str++; if (*str == 0) break; else if (*str == 'a') *str = 'A'; while (*str && *str != ' ') str++; }
190 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:37:29 ] うpローダー使おうよ
191 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:49:53 ] 複数レスにならない限り過去ログに残るほうがうれしい 質問者側としては検索で出てくるのはまずいかもしれないが… 変数名変えれば多分大丈夫さw
192 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:51:40 ] [1] 授業単元:C言語 [2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7388.txt [3] 環境 [3.1] OS: Windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C [4] 期限:7月18日 お願いします
193 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:05:21 ] >>192 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7389.txt
194 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:06:24 ] すいませんがお願いします。 [1] 授業単元: Cプログラミング演習 [2] 問題文(含コード&リンク) 以下のようなdouble型配列がある。配列の全要素の合計と平均を求める プログラムをポインタを使用して作成しなさい。 [配列の定義] double date[5]={10.8,20.3,30.6,40.4,50.5} [実行結果] 配列の内容 date[]=10.800000,20.300000,30.600000,40.400000,50.500000 合計=152.600000 平均=30.520000 [3] 環境 [3.1] OS: (Windows vista) [3.2] コンパイラ名とバージョン: (visual studio 2005 ) [3.3] 言語: (C言語) [4] 期限:今週いっぱいまで [5] その他の制限: (シンプルにおねがいします)
195 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:07:51 ] >>193 どうもです!!
196 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:35:23 ] >>194 #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]){ double date[5]={10.8,20.3,30.6,40.4,50.5}, *p=date, sum, ave; int i; printf("date[]=%.6f", sum=*p++); for(i=1;i<5;i++,p++){ printf(",%.6f", *p); sum+=*p; } ave=sum/5; printf("\n合計=%.6f\n", sum); printf("平均=%.6f\n", ave); return 0; }
197 名前:デフォルトの名無しさん [2008/07/15(火) 20:36:13 ] >>184 やっぱりわからないです…
198 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:47:23 ] [1] 授業単元: Cプログラミング [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7390.txt [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] 言語:C [4] 期限:7月17日 お願いします。
199 名前:194 mailto:sage [2008/07/15(火) 20:48:48 ] >>196 すごい、完璧に動きました。 ありがとうございます!
200 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:50:55 ] 完璧に動く > 完動 > 感動した!
201 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 21:06:53 ] >>194 シンプル > #include <stdio.h> #define COUNT 5 double date[5]={10.8,20.3,30.6,40.4,50.5}; void main(void) { int i; double *p=date, sum=0.0, ave; printf(" 配列の内容\n date[]="); for(i=0; i<COUNT; i++, p++) { sum += *p; printf("%f", *p); if(i < COUNT-1) printf(","); } ave = sum / COUNT; printf("\n 合計=%f\n 平均=%f\n", sum, ave); }
202 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 21:09:30 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7391.txt [3] 環境 [3.1] OS:windowsXP [3.2] コンパイラ名とバージョン:VC6.0 [3.3] 言語: C++ [4] 期限: 至急 [5] その他の制限:問題文をソースの上に載せています。よろしくおねがいします
203 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 21:09:34 ] >>198 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7392.txt
204 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 21:11:27 ] 動作は完璧かもしれないが、出題内容のdateはdataに変えるべきだと思った。
205 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 21:12:53 ] >>198 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7393.txt
206 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 21:20:39 ] どうか>>50 をお願いします!!
207 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 21:21:22 ] [1] 授業単元:数値計算 [2] 問題文(含コード&リンク): y' = x +y y(0) = 0 の厳密解を求めるプログラムを作って☆ [3] 環境 [3.1] OS:mac os x leopard [3.2] コンパイラ名とバージョン:gcc.4.0.1 [3.3] 言語: C [4] 期限: 至急 [5] その他の制限:printfもfprintfもしなくて結構です。ええ、そうです。私ができないのは積分なのです…orz すいませんすいませんすいませんすいませんすいません…。公式分かってるけど、計算ミスが多すぎて何が何だかなのです><
208 名前:186 mailto:sage [2008/07/15(火) 21:26:37 ] >>188 ありがとうございます。 next_toupper_flagで単語の先頭(書き換えるべき箇所)を保持してるわけですね 書き換えもOKだったので助かりました。 >>189 ポインタ苦手なんですが、何とか理解できました。 最初、全てのaを置換しているのかと思いましたが 最後のwhileで先頭以外を読み飛ばしてるんですね
209 名前:デフォルトの名無しさん [2008/07/15(火) 21:41:29 ] >>184 ですが 関数使わずにか* & continueを使わない方法ないですか? 図々しいとは思いますが、今日中なので頼みます
210 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 21:46:25 ] >>209 >>166 でダメなら諦めるしかない
211 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 21:55:52 ] >>107 >>110 Zako[0] = new Chara(200, 80,"bmp/teki.bmp", 1,NULL,3, 0, 0,5, 2,40,40); にすればいいだけなのに(´;ω;`) >>126 引数4は 0-背景 1- パターン1 → パターン2 → …… → パターンN → パターン1→ …… 2- パターン1 → パターン2 → …… → パターンN → パターンN-1 → パターンN-2 → …… → パターン1 → ……
212 名前:デフォルトの名無しさん [2008/07/15(火) 21:58:06 ] >>210 アドバイスありがとうございます。
213 名前:198 mailto:sage [2008/07/15(火) 22:02:15 ] >>205 ありがとうございます! 初めて見る単語の理解に努めます・・・
214 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 22:12:06 ] [1] 授業単元: Cプログラミング演習 [2] 問題文 20次元の2つのベクトル余弦cos(θ)を求めよ。 ベクトルの要素はそれぞれ、ユーザーが入力すること。ベクトル要素は double型とすること。 [3] 環境 [3.1] OS: (Windows vista) [3.2] コンパイラ名とバージョン: Linux [3.3] 言語: (C言語) [4] 期限:7/16 [5] その他の制限: 特になし
215 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 22:42:36 ] >>4 07/15 13:00 線形リスト >>17 07/15 14:00 分数の四則演算を計算するプログラム >>35 07/15 17:00 キーボード入力と表示 : >>72 , >>141 , >>161 , >>166 >>37 07/15 17:00 数字の読み方 : >>39 , >>40 , >>42 ? >>44 07/17 --:-- 4択3種 >>45 07/15 07:00 ゲーム? : >>108->110 その他アドバイスは多数 >>46 07/18 --:-- メディアン : >>47 , >>49 >>50 07/17 00:00 減衰振動 >>51 07/15 12:00 ソーティング:基本交換法と挿入法 : >>91 >>55 07/15 14:00 文字列中の特定文字を削除 : >>125 , >>131 >>58 07/15 18:00 木構造を用いた数式の処理 >>84 07/16 12:30 自由落下・BMI : >>86
216 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 22:44:03 ] >>100 07/17 --:-- フェボナチ数列 : >>180 >>145 --/-- --:-- 5ごとに丸め >>162 >>146 --/-- --:-- 数字入力と度数分布表示 : >>170 >>148 --/-- --:-- ポインタ演算 : >>171 >>152 07/21 14:00 = >>17 : >>167 >>159 07/16 --:-- 複素数演算・ソーティング >>174 07/16 12:00 領域開放 : >>178 ? >>179 --/-- --:-- 2文木->配列 >>186 ? : >>188 , >>189
217 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 22:44:33 ] >>192 07/18 --:-- ? : >>193 >>194 07/18 --:-- 配列の全要素の合計と平均 : >>196 , >>201 >>198 07/17 --:-- 大文字小文字3題 : >>203 , >>206 >>202 --/-- --:-- (ごめんなさい、よくわからないです。) >>207 --/-- --:-- 微分方程式の解析解 >>214 07/16 --:-- 20次元の2つのベクトル余弦
218 名前:84 mailto:sage [2008/07/15(火) 22:45:01 ] >>86 ありがとうございます! まさかこんなに早く答えていただけるとは・・・助かりました。 見たことある単語がいくつもあったので自分にも理解できそうです。
219 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 22:49:39 ] >>214 20次元の場合の計算方法はこれでいいのか? #include<stdio.h> #include<math.h> #define EPS (1.0e-20) typedef struct tag_vector20d_t{ double num[20]; }vector20d_t; double vector20d_size(const vector20d_t *vector20d){ int i; double x2=0.0; for(i=0;i<20;i++) x2+=vector20d->num[i]*vector20d->num[i]; return sqrt(x2); } double vector20d_inner_product(const vector20d_t *a, const vector20d_t *b){ int i; double ret=0.0; for(i=0;i<20;i++) ret+=a->num[i]*b->num[i]; return ret; } double vector20d_cos(const vector20d_t *a, const vector20d_t *b){ double size_a, size_b; size_a=vector20d_size(a); size_b=vector20d_size(b); if(size_a<EPS || size_b<EPS) return -10.0; return vector20d_inner_product(a, b)/(size_a*size_b); } int main(void){ int i; vector20d_t a, b; for(i=0;i<20;i++) scanf("%lf", &(a.num[i])); for(i=0;i<20;i++) scanf("%lf", &(b.num[i])); printf(" %f\n", vector20d_cos(&a, &b)); return 0; }
220 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 23:09:22 ] >>100 ありがとは? >>596 過去ログ嫁
221 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 23:13:59 ] >>201 ループの中に無駄な分岐を入れるのはバカ
222 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 23:16:34 ] >>221 どのくらい早くなりますか?
223 名前:174 mailto:sage [2008/07/15(火) 23:27:22 ] 追記です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7387.c でta1のltをta4にしたとき(合流点があるとき)、@を1つ出力したあとAbortedと出て強制終了してしまいます。 (↑ta4をfreeしたあとta3でta4にアクセスしようとするから?) 他にも、ta3のrtをta2にするとSegmentation Errorとなってしまいます。 ループのときは正しく動いているようなので、上の2つのようなときに正しく動けばいいんですが・・・ よろしくお願いします。(引き続き>>183 も答えていただけると幸いです)
224 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 23:27:27 ] >>2 01 このばあいほとんど分岐が起こらないから、きにする必要なし。
225 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 23:39:35 ] 分岐結果の分布がどうとかではなくて毎回判定処理が動作することを懸念してるんで無いの? 今回の場合は大差ないし、そういうのは必要に応じてやればいいと思うけど。
226 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 23:45:30 ] なんでもループにまとめたり、短く書くことがいいことだと思う時期があんだよな。
227 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:14:21 ] >>223 あーそれは俺のバグだなぁ。 たしかにfreeを実行するタイミングが早すぎた。 修正してみた。あんまり自明なアルゴリズムじゃなくなってしょんぼり。 void delgraph2(bintree tree,bintree*rest){ static bintree_node dummy; if(tree && tree->lt != &dummy) { bintree lt = tree->lt , rt = tree->rt; tree->lt = &dummy; tree->rt = *rest; *rest = tree; delgraph2(lt,rest); delgraph2(rt,rest); } } void delgraph(bintree tree){ bintree rest = NULL; delgraph2(tree,&rest); while(rest){ bintree self=rest; rest = rest->rt; free(self); } }
228 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:18:00 ] [1] 授業単元: Cプログラミング演習 [2] 問題文 #include<stdio.h> #include<string.h> main() {char string[]= "I write the book about internet search engine."; printf("%s",string); } string内の配列内の文字列の順番を逆にせよ。ただし出力だけが逆文字 に表示されては駄目である。配列の中身自体を変えなければいけない [3] 環境 [3.1] OS: (Windows vista) [3.2] コンパイラ名とバージョン: Linux [3.3] 言語: (C言語) [4] 期限:7/16 [5] その他の制限: 特になし
229 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:23:19 ] #include <stdio.h> int main(void) { char string[] = "I write the book about internet search engine.", *p, *q, temp; printf("%s\n", string); for(p=string; *p; p++); q = string; while(p-- > q) { temp = *p; *p = *q; *q++ = temp; } printf("%s\n", string); return 0; }
230 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:25:13 ] >>228 過去ログ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7350.txt
231 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:27:38 ] [1] 授業単元:プログラム実習 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7395.txt [3] 環境 [3.1] OS: windows xp [3.2] コンパイラ名とバージョン:vc6.0 [3.3] 言語: C++ [4] 期限: 早急に… [5] その他の制限: 配列の問題です よろしくおねがいします
232 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:33:58 ] >>231 すまないが、配列の配列は動的に確保できないんじゃよ。We apologize for your inconvenience...
233 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:40:22 ] >>231 >>28 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7369.txt
234 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 01:24:02 ] [1] 授業単元:数値解析 [2] 問題文(含コード&リンク):減衰振動の運動方程式 m(d^2x/dt^2)=−kx−α(dx/dt) をルンゲクッタ法で解くやり方を教えてください m k αはキーボードからの入力値です 初期条件はx(0)=0 , x'(0)=0です [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C [4] 期限: >>50 でしましたが、とりあえずこれだけわかればなんとかできそうなんで・・・
235 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 01:56:00 ] >>234 ルンゲクッタ法とか法がつくものは、やり方のことだよ。 明日朝以降にもう一度お願いすれば、もしかしたら 誰かが解いてくれてるかも
236 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 02:02:46 ] >>235 解くまでもなく 0しか答えがないので釣りとみなされました。
237 名前:デフォルトの名無しさん [2008/07/16(水) 02:16:12 ] [1] 授業単元: [2] 問題文(含コード&リンク):ランダムに現れる#、$、%、&を同じ記号で3つ揃えるスロットゲームの作成 条件:スロットをするかどうかをy、nで判定 スロットを行う 実行結果通りの結果を出力させる [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 至急 [5] その他の制限:実行結果の例 スロットをを回しますか?(y/n)>>>y 幸運をお祈りします ### 大当たり スロットを回しますか?(y/n)>>>n ありがとうございました どうかよろしくお願いします
238 名前:44 mailto:sage [2008/07/16(水) 02:31:44 ] だれか>>44 の問題お願いします
239 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 03:35:38 ] >>44 ,238 1.1 [A] struct xyz [B] struct xyz [C] {0,0,0} [D] t 1.2 [A] struct xyz * [B] (*x).x [C] (*x).y[D] (*x).z 2.1 typedef struct tDate{ int y,m,d }Date; 2.2 void printDate(Date d) { fprintf( stdout, "%4d/%2d/%2d", d.y,d.m,d.d ); } 2.3 void printDateGen(Date d) { #define DD(Y,M,D) ((Y)*10000+(M)*100+(D)) char *Era[] = {"","明治","大正","昭和","平成"}; int y, e, dd = DD(d.y,d.m,d.d); e = ( dd >= DD(1989,1,8) ) ? 4 : ( dd >= DD(1926,12,25) ) ? 3 : ( dd >= DD(1912,7,30) ) ? 2 : ( dd >= DD(1868,9,8) ) ? 1 : 0; y = d.y - ( ( e == 1 ) ? 1867 : ( e == 2 ) ? 1911 : ( e == 3 ) ? 1925 : ( e == 4 ) ? 1988 : 0 ); if ( y == 1 ) { fprintf( stdout, "%s 元年 %2d月 %2d日", Era[e], d.m, d.d ); } else { fprintf( stdout, "%s %2d年 %2d月 %2d日", Era[e], y, d.m, d.d ); } }
240 名前:237 [2008/07/16(水) 03:44:28 ] >>>237 誰かお願いします 切羽詰ってます
241 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 04:17:34 ] >>240 「至急」なんて書かれても、「その内やる」としか思わないんじゃね?
242 名前:237 [2008/07/16(水) 04:24:04 ] >>>237 午前7時まで
243 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 04:41:34 ] >>240 >>237 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7400.c スペースキーを押すと、左から順に止めることが出来る仕様
244 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 04:42:30 ] あぁ、すまん、繰り返すかの y/n は自分で適当に組み込んでおいて
245 名前:237 [2008/07/16(水) 04:59:02 ] >>>244 ありがとうございます! 繰り返すのはfor文ですよね?
246 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 05:11:44 ] うむ。やっぱ、もう少し書き直してみるんでお待ちを
247 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 05:20:46 ] >>240 >>237 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7401.txt これでどうかな?
248 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 08:01:50 ] >>234 とりあえず解いてみてください ちなみにこれであってる? 一般解の形は x(t)=a*e^(-b*t*i)+c 但し e をネイピア数、i を虚数単位とする
249 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 08:15:52 ] >>202 コンパイルエラーを取る問題。無理なのでネタと判断した。
250 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 08:16:29 ] [1] 授業単元: Cプログラミング演習 [2] 問題文 構造体配列struct tfield name[10];がありメンバにchar str1;があるとします 文字列を適当にabscedと標準入力したとして その文字列を1文字ずつ構造体配列name[i].str1にいれるように. 最終的にそのname[i].str1を表示するブログラムを [3] 環境 [3.1] OS: LINUX [3.3] 言語: (C言語) [4] 期限:7/16 [5] その他の制限: 特になし
251 名前:248 mailto:sage [2008/07/16(水) 08:21:46 ] >>248 の一般解、定数 b が複素数かも よーわからん 忘却の彼方なので数学部分は中学レベルまでにして
252 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 08:32:55 ] >>250 文字列の終端はどうするの? #include<stdio.h> struct tfield{ char str1; }; int main(void){ struct tfield name[10]; char buf[10+1]=""; int i; fgets(buf, sizeof(buf), stdin); for(i=0;buf[i];i++) name[i].str1=buf[i]; // for(i=0;name[i].str1=buf[i];i++); for(i=0;i<10;i++) printf("%c\n", name[i].str1); return 0; }
253 名前:249 mailto:sage [2008/07/16(水) 08:51:07 ] void (*a)(const strtype) = show; void (*b)(const strtype&) = show; a(hello); b(hello);
254 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 10:14:17 ] キーボードから50人分の点数を入力し 90点以上の人の番号と点数を表示せよ。 っていうプログラムってどんな感じですか?
255 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 10:17:58 ] 入力が大変です
256 名前:デフォルトの名無しさん [2008/07/16(水) 10:19:34 ] [1] 授業単元: Cプログラミング演習 [2] 問題文 キーボードから50人分の点数を入力して、90点以上の人の番号と点数を表示せよ [3] 環境 [3.1] OS: vista [3.3] 言語: (C言語) [4] 期限: [5] その他の制限: 特になし
257 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 10:53:56 ] >>254 50人分の点数をテキストファイルにでも保存して リダイレクトを使えば、プログラムを実行してから 毎回入力する手間は省けるが。 あとは、受け継いだ点数から90以上のものをカウントする プログラムを作ればええがな。
258 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 10:57:34 ] あ、カウントじゃなくて番号と点数で良いのか。 まぁ、そういうことで、1行ずつ先頭から番号、点数、改行して 50人分の点数を記述するか、点数も乱数を使って発生させるのもありやな。 ってことで、誰かやってちょっ。自分はちと席を外すんで。
259 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 11:14:17 ] >>256 リダイレクト使った成績入力は自分でやってくれ #include <stdio.h> #define CLASSMAX (2) /* クラスの人数 */ #define MAXNAME (128) /* 名前の最大文字数 */ #define BOADER_POINT (90) /* 表示する最低点数 */ /* 生徒1分の成績 */ typedef struct tagRECORD { char name[MAXNAME]; int point; } RECORD; void input_record(RECORD *r, int i) { const int MAXBUF = 128; char buf[MAXBUF]; printf("Name[%d]?:", i); scanf("%s", r->name); printf("Point[%d]?:", i); scanf("%d", &(r->point)); } void print_record(RECORD *r) { printf("Name: %s, Point: %d\n", r->name, r->point); }
260 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 11:14:58 ] >>259 続き int main(int argc, char *argv[]) { RECORD clsRecord[CLASSMAX]; int i; /* クラスの成績を入力 */ for (i = 0; i < CLASSMAX; i++) { input_record(&clsRecord[i], i); } /* BOADER_POINT以上の生徒の成績表示 */ printf("\n***** Over %d students *****\n", BOADER_POINT); for (i = 0; i < CLASSMAX; i++) { if (clsRecord[i].point >= BOADER_POINT) { print_record(&clsRecord[i]); } } return 0; }
261 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 11:17:38 ] // 入力フォーマット: [番号],[得点] int main() { int i; int number; int score; for ( i = 0; i < 50; i++ ) { scanf( "%d,%d", &number, &score); if ( score >= 90 ) { printf("%d,%d", number, score); } } }
262 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 11:39:01 ] アンカー忘れてる、は回答プレ?
263 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 12:56:07 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): #include<stdio.h> main() { char ch; while(scanf("%c", &ch)==1){ ch-=0x20; printf("%c", ch); } } 上記のプログラムを改良し、アルファベットは大文字と小文字を逆転し、それ以外の文字はそのまま表示するようにしなさい。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:? [3.3] 言語:C [4] 期限:[本日16:30まで] 宜しくお願いします。
264 名前: ◆03xZ2wWsBw mailto:sage [2008/07/16(水) 12:57:49 ] [1]C言語中上級 [2] 3つの65535以下の非負整数a,b,cを乱数で生成します。a,b,cから次のような文字列を作ります。 [a+b][b+c][c+a][a][b][c][|a-b|][|b-c|][|c-a|][ab][bc][ac] [m]はmを10進表示した文字列を表す |m|はmの絶対値を表す それを10進数表示し結合した文字列を作り、それらをdecomposite関数に引数渡しして、 元の3つの数を再現する処理をC言語プログラムで記述しなさい。 元の3数は、decompositeからはアクセスできない、呼び出し側のローカル変数領域の外側に公開しないで下さい。 ☆23,39,17が生成された場合文字列 62564023391716226897663391をdecompositeに渡す。 ☆生成された3つの数、渡す文字列共に出力してから、decomposite関数を呼び出して下さい。 (関数の中で、決定された3数を出力) ☆一意に元の数を決定できない場合はdecomposite関数の中で一意決定不能と表示し、すべての候補を 出力して下さい。 [3]linux/gcc/C [4]7/30 12:00 時間がまだあるので、急ぎません。 少なくとも本日はこのスレを覗きません(これからバイトに行きますので) 明日以降、どなたかよろしくお願いします。
265 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:03:04 ] >>239 ありがとうございます マジで助かりました
266 名前: ◆03xZ2wWsBw mailto:sage [2008/07/16(水) 13:03:27 ] 問題文に誤りが見つかりました。 -それを10進数表示し結合した文字列を作り、それらをdecomposite関数に引数渡しして、 +それをdecomposite関数に引数渡しして、 として下さい。
267 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:07:10 ] >>263 っつか、そのプログラムの意図は? ttp://e-words.jp/p/r-ascii.html
268 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:13:59 ] >>263 ライブラリ使っていいなら以下。 #include<stdio.h> #include<ctype.h> main() { char ch; while(scanf("%c", &ch)==1){ if(islower(ch)!=0) ch=(char)toupper(ch); else if(isupper(ch)!=0) ch=(char)tolower(ch); printf("%c", ch); } }
269 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:16:36 ] >>263 #include <stdio.h> main() { char ch; while(scanf("%c", &ch)==1){ if(ch >= 0x40){ if(ch >= 0x61) ch-=0x20; else ch+=0x20; } printf("%c", ch); } }
270 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:18:36 ] >>267 小文字を大文字にしてるんでないの?
271 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:20:44 ] >>270 アッ、ナール
272 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:23:47 ] >>263 >>269 ミスってた #include <stdio.h> main() { char ch; while(scanf("%c", &ch)==1){ if(ch >= 0x41 && ch <= 0x5a) ch+=0x20; else if(ch >= 0x61 && ch <= 0x7a) ch-=0x20; printf("%c", ch); } }
273 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:24:11 ] [1] 授業単元:オペレーティングシステム [2] 問題文(含コード&リンク): 以下のプログラムを完成してください。 共有バッファを用いたプロセス間メッセージ通信をするプログラム。 親/子プロセスでメッセージを書き込み、子/親で読み出す。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7402.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:2008年7月16日23:59まで よろしくお願いします。
274 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:29:50 ] >>263 せっかくだからキモイコードを張るぜ #include<stdio.h> main() { char ch; while(scanf("%c", &ch)==1){ ch=(ch|32U)-'a'<26?ch^32:ch; printf("%c", ch); } }
275 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:33:38 ] >>263 ならば、おいどんのキショースも出すでごわす #include<stdio.h> int main(void) { char ch; while(scanf("%c", &ch)==1){ if( ch>='a' && ch<='z') ch=ch-'a'+'A'; else if( ch>='A' && ch<='Z' ) ch=ch-'A'+'a'; printf("%c", ch); } }
276 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:47:52 ] 悪法回答テンプレが一掃されて以来スレが清々しいなw でもまだコードと一緒にアンカーと、コメント書く奴が多いな。
277 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:49:44 ] どうでもいいけどな
278 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:50:12 ] >>276 (・∀・)ニヤニヤ (・´ω`・)ンダゴルァ (・`ω´・)ナッナンダッテー
279 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 14:59:48 ] >>274 キモッ >>275 キショくなくてこまる
280 名前:263 mailto:sage [2008/07/16(水) 16:25:55 ] >>272 ありがとう。おかげで間に合ったよ。