C/C++の宿題片付けます 133代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/12/11(金) 20:59:32【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 132代目
http://pc12.2ch.net/test/read.cgi/tech/1258158172/
0002デフォルトの名無しさん
2009/12/11(金) 22:22:42[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10259.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [2009年12月14日12:00まで]
[5] 特になし
0003デフォルトの名無しさん
2009/12/11(金) 23:00:07それって これだよね?
http://www.cs.info.mie-u.ac.jp/~toshi/lectures/tree/ex1.html
0004デフォルトの名無しさん
2009/12/11(金) 23:04:26http://www.cs.info.mie-u.ac.jp/~toshi/lectures/tree/index.html
0005デフォルトの名無しさん
2009/12/12(土) 03:32:23[2] 問題文(含コード&リンク): 5教科のテストの点数を入力し、それらの合計点を算出するようなプログラムを作成せよ。実行結果の例を以下に示す。
-----------------------------------------------
国語:?
算数:?
理科:?
社会:?
英語:?
合計点は?点です。
[3] 環
[3.1] OS:vista (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C
[4] 期限:2009年1月6日
[5] その他の制限:佛教大学通信 数学科 でまだ5回目の授業の問題
0006デフォルトの名無しさん
2009/12/12(土) 03:42:26これも追加でお願いします。
問題2
長さX(cm:センチメートル)を入力すると、Y(inch:インチ)に変換するプログラムを作成せよ。1(inch)は2.54(cm)とする。実行結果の例を以下に示す。
------------------------------------------------
長さ(センチメートルで入力して下さい):2.54
2.54(cm)は 1.000(inch)です。
------------------------------------------------
問題3
ある整数Xを入力した時に、それを3で割った商と余りを算出するプログラムを作成せよ。余りを算出する演算子は%であるが、%を使わないこと。実行結果の例を以下に示す。
------------------------------------------------
X:35
商:11
余り:2
------------------------------------------------
問題4
平面上の2点(x1,y1)、(x2,y2)を入力し、それら2点間の距離を算出するプログラムを作成せよ。Aの平方根はsqrt(A)という数学関数で算出される(Aは引数でdouble型)。
数学関数を使用する場合、<math.h>というファイルから情報を得なければならないので、#include<stdio.h>の
下の行に#include<math.h>という命令文を付け加えなければならない(2つのinclude文)。実行結果の例を以下に示す。
------------------------------------------------
x1:0
y1:0
x2:1
y2:1
この2点間の距離は1.414214です。
------------------------------------------------
問題5
英字アルファベット大文字を入力すると、その文字の小文字が表示されるようなプログラムを作成せよ。実行結果の例を以下に示す。
------------------------------------------------
アルファベットの大文字を入力して下さい:A
小文字はaです。
------------------------------------------------
0007デフォルトの名無しさん
2009/12/12(土) 04:25:45#include<stdio.h>
main()
{
int kokugo;
int sansuu;
int rika;
int syakai;
int eigo;
int goukei = 0;
printf("国語;");
scanf("%d",&kokugo);
printf("算数;");
scanf("%d",&sansuu);
printf("理科;");
scanf("%d",&rika);
printf("社会;");
scanf("%d",&syakai);
printf("英語;");
scanf("%d",&eigo);
goukei = ;
goukei =
goukei =
goukei =
goukei =
printf("合計点は%d点です。"goukei);
}
0008デフォルトの名無しさん
2009/12/12(土) 05:23:23#include<stdio.h>
int main(void)
{
int kokugo;
int sansuu;
int rika;
int syakai;
int eigo;
int goukei = 0;
printf("国語 : ");
scanf("%d", &kokugo);
printf("算数 : ");
scanf("%d", &sansuu);
printf("理科 : ");
scanf("%d", &rika);
printf("社会 : ");
scanf("%d", &syakai);
printf("英語 : ");
scanf("%d", &eigo);
goukei = kokugo + sansuu + rika + syakai + eigo;
printf("合計点は%d点です。\n", goukei);
return 0;
}
0009デフォルトの名無しさん
2009/12/12(土) 05:29:01http://codepad.org/o0gp1oW3
例の書き方なら
http://codepad.org/ZQpjDWLX
問題2
http://codepad.org/ZU5Bebsk
問題3
http://codepad.org/fDtavLm7
問題4
http://codepad.org/ebAqvGsx
問題5
http://codepad.org/glJeBWhN
出来るだけ実行結果と同じ表示するようにした。
気にくわないところがあったら摘便書き換えてくだちい。
0010デフォルトの名無しさん
2009/12/12(土) 10:58:17[2]問題 コンソールから、年月日時分秒に対応する整数をそれぞれ個別に不正入力時には
再入力を促しながら読み込み、それをyyyymmddhhmmss(準グレゴリオ暦)形式の時刻表
現と解釈する。この処理を2回行い2つの時刻表現を取得する。それぞれが正しいフォー
マットかどうかを調べ、共に正しい場合は、日付が新しいものの順に
yyyy年mm月dd日hh時mm分ss秒の書式で出力)しその時刻差を秒単位、分単位、時間単
位、日単位で出力するプログラム(小数点一位以下四捨五入)
但し1900年1月1日0時0分0秒以前の時刻は与えられないとして良い。
また9999年12月31日23時59分59秒以後の時刻も与えられないとする。
うるう年は400の倍数か100の倍数でない4の倍数な年であるとし、2月の末日
にうるう日が付与されるものとする。実際の暦体系では不定期に付与されるうるう秒
は考慮しなくて良いものとする正しい日付でない場合はその旨出力し処理を中止する
[3] OS:Wndows 2000 VMWare上で動作。ホストOSはWindows Vista
処理系:LSI-C試食版 (16ビットコンパイラ)
言語:C
[4] 期限 再来週月曜日迄
[5] 制約 32ビット以上の整数型が存在しない処理系を前提。float doubleを利用しては
ならない。scanf関数gets関数getc fgetcを使用してはならない。多倍長整数計算ライブラリを
使用する場合はそのソースコードを取り込むこと。コンパイル済みのものとリンクする方法では
使用出来ない
0011デフォルトの名無しさん
2009/12/12(土) 12:20:28初心者かどうかにかかわりなく、バッファーオーバーランの可能性を秘めている gets() は薦められない。
仕様から危険性をよみとるのも、センスの一つ。
001211
2009/12/12(土) 12:21:400013デフォルトの名無しさん
2009/12/12(土) 12:24:39しつこい
そんな危険な関数ならさっさと標準から削除されてるはずだろ
C99になっても残ってるのはこれで十分な場合もあるからだ
0014デフォルトの名無しさん
2009/12/12(土) 12:50:55残っているからといって使っていいことにはならないでしょうに。
0015http://pc12.2ch.net/test/read.cgi/tech/1258158172/723
2009/12/12(土) 12:57:19やっとこさ、できました。いい勉強になりました。
http://codepad.org/sm5M5wCP
50MB ごとに内部ソート、あとはマージソート1段です。1GB のデータもソートできます。
0016デフォルトの名無しさん
2009/12/12(土) 12:58:22過去のソースを使いたいときのために残ってるだけでしょ。
0017デフォルトの名無しさん
2009/12/12(土) 13:08:29だからしつこい
お前らがいくら詭弁を弄したところで俺の意見は1ミリたりとも動かない
以上
文句有るなら俺より先にソース書け
0018デフォルトの名無しさん
2009/12/12(土) 13:12:10えー、たとえば >>15 で fgets(), realloc() で十分に処理できる例を示したつもりなんですけれどもね。
0019デフォルトの名無しさん
2009/12/12(土) 13:12:50gets はC言語の標準Cライブラリにおける、標準入出力ヘッダー(<stdio.h>)で宣言されている標準入力から1行分の文字列を取り出す入力関数である。
この関数はバッファオーバーランを防ぐことが出来ないという致命的な脆弱性を持っており、Linux Programmer's Manual では「絶対に使用してはならない」とされている関数である[1]。
byWiki:http://ja.wikipedia.org/wiki/Gets
0020デフォルトの名無しさん
2009/12/12(土) 13:14:02もう無視っとけよ。
0021デフォルトの名無しさん
2009/12/12(土) 13:24:000022デフォルトの名無しさん
2009/12/12(土) 13:24:23ファイル名が異なります!
0023デフォルトの名無しさん
2009/12/12(土) 13:25:05ファイルサイズが違う
0024デフォルトの名無しさん
2009/12/12(土) 13:26:11それ宿題?ならちゃんとテンプレどおりに
0025デフォルトの名無しさん
2009/12/12(土) 13:26:22だっておもしろいじゃないですか。
0026デフォルトの名無しさん
2009/12/12(土) 13:27:12int*********** a;
a=(int*)12345678;
みたいなのが可能だったがC++じゃできないんだな。不便だな。
0027デフォルトの名無しさん
2009/12/12(土) 13:31:34お前が悪い
0028デフォルトの名無しさん
2009/12/12(土) 13:36:30初めて見た
何それ
どう処理されてんの?
0029デフォルトの名無しさん
2009/12/12(土) 13:44:40またまたご冗談を(AA
0030デフォルトの名無しさん
2009/12/12(土) 14:43:52表1、表2のリンク先がたどれません。
0032デフォルトの名無しさん
2009/12/12(土) 17:59:36[2] 問題文(含コード&リンク):
次のA・Bの行列をA×Bの計算をして、その結果を表示するプログラムを作成しなさい。
A=[5 3] B=[7 1 5 4]
[3 8] [1 9 2 8]
[1 6]
[9 1]
解の表示) [38 32 31 44]
[29 75 31 76]
[13 55 17 52]
[64 18 47 44]
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語:C
[4] 期限: 12月15日
どなたかよろしくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10260.zip
>32 はヒマヒマ
0034デフォルトの名無しさん
2009/12/12(土) 18:01:590035デフォルトの名無しさん
2009/12/12(土) 18:04:05何度この手の問題を見てきたことやら。
0036デフォルトの名無しさん
2009/12/12(土) 18:07:53#include <stdio.h>
int main(void)
{
int a[4][2] = {{5,3},{3,8},{1,6},{9,1}}, b[2][4] = {{7,1,5,4},{1,9,2,8}}, c[4][4];
int i, j, k;
for(i=0; i<4; i++) {
for(j=0; j<4; j++) {
c[i][j] = 0;
for(k=0; k<2; k++) c[i][j] += a[i][k] * b[k][j];
}}
for(i=0; i<4; i++) {
for(j=0; j<4; j++) printf("%d ", c[i][j]);
putchar('\n');
}
return 0;
}
0037デフォルトの名無しさん
2009/12/12(土) 19:01:04ありがとうございます。
0038デフォルトの名無しさん
2009/12/12(土) 19:47:56[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10261.txt
[3] 環境
[3.1] OS:Windows/vista
[3.2] コンパイラ名とバージョン:VS2008
[3.3] 言語: C++
[4] 期限:2009年12月17日
[5] その他の制限: 特にありません。
よろしくお願いします
0039デフォルトの名無しさん
2009/12/12(土) 20:12:37あーはいはい
gets()でも十分でしたねその例では
>>19
Linuxなんか知った事か
0040デフォルトの名無しさん
2009/12/12(土) 20:15:12書いてないだろうがアホどもめ
0041デフォルトの名無しさん
2009/12/12(土) 20:18:350042デフォルトの名無しさん
2009/12/12(土) 20:19:38君もそう思うだろ?宿題ごときに最適化だのループに分岐を入れるなだの
うるさい馬鹿がいるんだよ
本当に困っている
0043デフォルトの名無しさん
2009/12/12(土) 20:20:58C言語なら俺に聞け(入門編)Part 57
http://pc12.2ch.net/test/read.cgi/tech/1260020924/
このスレは宿題を解くスレで動けばそれでいいんだ
0044デフォルトの名無しさん
2009/12/12(土) 20:24:15スルーしとけばいいんだよ。
0045デフォルトの名無しさん
2009/12/12(土) 20:30:12ちゃんとした仕事でやるような厳密なテクニックを押し付けるバカグラマがいるもんだ。
0046デフォルトの名無しさん
2009/12/12(土) 20:31:25へえ?C の規格ひょーにライブラリ関数の仕様のことがかいてあるんだ?
0047デフォルトの名無しさん
2009/12/12(土) 20:31:390048デフォルトの名無しさん
2009/12/12(土) 20:36:04そうだな
いちいち馬鹿どもを相手にしていたら相手と同じレベルに堕ちる
ここからは一切スルーする事にしよう
0049デフォルトの名無しさん
2009/12/12(土) 20:37:32それはまあそうですね。でもね、gets() はね。教育的にも避けたほうがいいと昔から言われているんですよ。
それに単に事実を指摘されただけで、顔を真っ赤にして反論するのは、見てて面白い。
0050デフォルトの名無しさん
2009/12/12(土) 20:37:39こいつらみたいな問題理解できてないくせに他人の答えに口出してくるやつは、
ほんとうぜーよなw
0051デフォルトの名無しさん
2009/12/12(土) 20:41:05ネットの向こうの人の顔色まで見えるエスパーがいるのか?
0052デフォルトの名無しさん
2009/12/12(土) 20:43:29顔真っ赤なんだなと思わせるw
0053デフォルトの名無しさん
2009/12/12(土) 20:48:07それをここで批判するのも自由なんだよ。
それがスルーできないなら、最初からチラシの裏にでも書いたほうがいいかもな。
0054デフォルトの名無しさん
2009/12/12(土) 20:49:23pow(-1.0, n) はちょっとひどいな、と思いましたが。
(n % 2) ? -1.0 : 1.0 で十分かと
0055デフォルトの名無しさん
2009/12/12(土) 20:54:25http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10262.c
ちょいとずるをしたけど。
テストデータとかは適当に修正して下さい。
0056デフォルトの名無しさん
2009/12/12(土) 21:01:26じゃあその批判を批判するのも自由ですね。
0057デフォルトの名無しさん
2009/12/12(土) 21:03:150058デフォルトの名無しさん
2009/12/12(土) 21:38:46自分の理解の記憶を確認する為に記述したコードをそのままコンパイラに
テストさせただけのを回答として貼付けてるケースが見受けられます。
あまり美しい行為とは言えないと思います。
0059デフォルトの名無しさん
2009/12/12(土) 22:02:51そんなに自由ではない
ここは質問と回答者が書くスレ
批判するスレではない
特に自分ではソースコードもあげずに批判ばかり
してる奴ははっきり言って必要ない
迷惑
0060デフォルトの名無しさん
2009/12/12(土) 22:13:30fgets(str,20,fp)
ネット上から引用しただけなので、この引数の意味がよく解りません
この場合の
strは、ここに一時的に格納
20は、読み込む文字数or20ビット
fpはわからん
これで合ってますか?
よく解らないので正しい知識を、どうか教えてください
0061デフォルトの名無しさん
2009/12/12(土) 22:16:40モジュール結合度は弱いほうがいいのでは?
それはそうと、ここのコードはソースファイルは単数、それも100行以内の書き捨てだからなあ。
0062C言語
2009/12/12(土) 22:23:07単純に、数字abだけを入力して計算結果を表示する場合は、
scanf("%d %d",&a,&b);
c=a+b;
printf("答えは%dです。\n",c);
と書けますが、式を読み込むにはどうすればいいのでしょうか?
例えば、「1+2」のような計算式を読み込んで計算結果を表示したいのです。
結果は答えだけでなく、「1+2=3」のように計算式も含めて表示したいです。
0063デフォルトの名無しさん
2009/12/12(土) 22:23:36残念ながら、ここは宿題スレなので。
こちらにどうぞ。
http://pc12.2ch.net/test/read.cgi/tech/1260020924/
http://codepad.org/mEo2Akfm
0064デフォルトの名無しさん
2009/12/12(土) 22:26:54かなりの難問です。過去問ですがこれぐらいの記述量になります。
http://codepad.org/KYXq1lkg
0065C言語
2009/12/12(土) 22:30:16なんだか、ずいぶん面倒くさそうですね・・・
006663
2009/12/12(土) 22:47:31http://codepad.org/vatmcleX
0067デフォルトの名無しさん
2009/12/12(土) 23:19:50[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10263.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 来週の月曜の午後5時までに
[5]関数の作り方というところまで習いました。
どなたかお願いします
00685です
2009/12/13(日) 02:07:59printfやscanfの基礎的関数のやり方しか習っていないので制御構造や標準的な関数
を使わず解いて頂いてもよろしいでしょうか。
0069デフォルトの名無しさん
2009/12/13(日) 02:50:25具体的に何番が厳しい?
00705です
2009/12/13(日) 03:23:113番の問題です。
0071デフォルトの名無しさん
2009/12/13(日) 03:42:369ではないけど、while{...} を
s = x / 3;
x = x - s * 3;
とするのはOK?
0072デフォルトの名無しさん
2009/12/13(日) 03:49:380073デフォルトの名無しさん
2009/12/13(日) 03:57:58libtcc.h のようなライブラリを使った例ならありますね。
http://alohakun.blog7.fc2.com/blog-entry-467.html
0074デフォルトの名無しさん
2009/12/13(日) 04:39:38main関数は適当につくってくれ
http://codepad.org/K2ZiH1RT
[3.2] コンパイラ名とバージョン:VS2008
[3.3] 言語: C++
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10264.c
00775です
2009/12/13(日) 22:26:43[2] 問題文(含コード&リンク): 必修課題1
2つの整数XおよびYを入力し、大きい数から小さい数をひいた差を算出するプログラムを作成せよ。実行結果の例を以下に示す。
X:32
Y:48
差は16です。
必修課題2
ある整数Xを入力した時に、ゼロあるいは、プラス、マイナスを判別して表示させるプログラムを作成せよ。プラスの場合の実行結果の例を以下に示す。
X:5
プラスです。
発展課題1
2つの整数XおよびYを入力し、大きい数を小さい数で除算するプログラムを作成せよ。実行結果の例を以下に示す。
X:45
Y:7
答えは6.428571です。
ヒント:簡単に考えて安易に作成すると大変なことになります。割り算である
ことを忘れないで下さい。例えば、「〜と等しくない」を意味する演算子は「!=」です。
発展課題2
2次方程式ax^2+bx+c=0の3つの係数を入力すると実数解が算出されるようなプログラムを作成せよ。実行結果の例を以下に示す。
2次方程式の係数を入力して下さい。
a:1
b:5
c:6
解は-2.00と-3.00です。
ヒント:判別式はD=b^2-4acであり、解の公式は(-b±√D)/2aである。
条件式を細かく考えてみよう。係数a、bが0の時はどうか?の分岐を考えてから、→判別式が0以上、0以下、0の時という分岐処理をする。
[3] 環境
[3.1] OS:vista (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C
[4] 期限:2009年1月6日
[5] その他の制限: 選択構造(分岐処理)を使って解いてみてください
0079デフォルトの名無しさん
2009/12/13(日) 23:27:250080デフォルトの名無しさん
2009/12/13(日) 23:32:110081デフォルトの名無しさん
2009/12/13(日) 23:36:250082デフォルトの名無しさん
2009/12/13(日) 23:39:56日本語が難しすぎる
0083デフォルトの名無しさん
2009/12/14(月) 00:54:08[2] 問題文(含コード&リンク):
文字列操作の標準ライブラリ関数を使用し、指定したファイルの中で、辞書列で最初に出てくる単語と最後に出てくる単語、さらに最も長い単語をを見つけ表示せよ。
ただし、同じ長さの単語がある場合最初に見つけた一つでいい。
ここでの単語とは、スペースや改行、タブで区切られた文字列のことである。
ただし、単語の長さは100文字以内と考えていい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:12月14日17時
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
008483
2009/12/14(月) 00:55:57よろしくお願いしますm(__)m
0085デフォルトの名無しさん
2009/12/14(月) 05:02:100086デフォルトの名無しさん
2009/12/14(月) 08:55:15アルファベットに限定してお願いしますm(__)m
0087デフォルトの名無しさん
2009/12/14(月) 09:19:39[2] 問題文(含コード&リンク):
txtファイルからデータを読み込み、人口順に並べ替えて、都道府県名、人口、面積を1行に表示せよ。
表示は全部で5行になる。
txtファイルの内容
Gunma
2016027
6363.16
Saitama
7104222
3797.25
Chiba
6108809
5156.60
Tokyo
12790202
2187.58
Kanagawa
8899545
2415.84
[3] 環境
[3.1] OS: Linux or Mac
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: 今週の水曜日までに
[5]どなたかご存じの方お願いします。
008887
2009/12/14(月) 10:00:02言語はC/C++どちらでもOKです。
0089デフォルトの名無しさん
2009/12/14(月) 10:14:01http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10266.txt
C++で書いてみた
009087
2009/12/14(月) 11:04:59すみません、説明不足でした。
まだ授業でC++言語の詳しい事はやってないので、
以下のソースを参考にして作成していただきたいのですが…orz
#include 省略
main() {
char n[5][100]; // 都道府県名(長さは最大で99文字+'\0')
int p[5]; // 人口
double a[5]; // 面積
ifstream pref; // ファイルから読み込むためのストリーム
pref.open("pref.txt"); // 指定したファイルを開く
pref.width(100); // 次に読む文字列の最大の長さを設定する
for(int z=0;z<5;z++){
pref >> n[z]; // 空白・改行が出てくるまで文字を連続して配列に読み込む
pref >> p[z]; // 次の行から整数を読む
pref >> a[z]; // その次の行から浮動小数点数を読む
//以下に人口順に並べ替えて、都道府県名、人口、面積を1行に表示するプログラムを書く。
申し訳ありませんがよろしくお願いしますorz
0091デフォルトの名無しさん
2009/12/14(月) 11:29:32http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10267.txt
0092デフォルトの名無しさん
2009/12/14(月) 11:33:33これは不要か
0093デフォルトの名無しさん
2009/12/14(月) 11:34:48// 都道府県名等の表示
for (int i = 0; i < N; i++)
cout << "都道府県名 = " << n[i]
<< ", 人口(人) = " << p[i]
<< ", 面積(km^2) = " << fixed << setprecision(2) << a[i] << endl;
0094デフォルトの名無しさん
2009/12/14(月) 12:18:48[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10268.txt
[3] 環境
[3.1] OS: Linux(Ubuntu 9.04)
[3.2] コンパイラ名とバージョン: gcc 4.4
[3.3] 言語: C
[4] 期限: [2009年12月17日11:00まで]
[5] 特になし
0095デフォルトの名無しさん
2009/12/14(月) 12:43:36[2] 問題文(含コード&リンク):
1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求めるプログラムを作ってみましょう。
途中経過も表示してください。
例:1^2 + 2^2 =
1^2 + 2^2 + 3^2 =
....
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: BCC Developer
[3.3] 言語: C++
[4] 期限: [2009年12月15日06:00まで]
[5] その他の制限: 特になし、最近Switch 文をやりました。
0096デフォルトの名無しさん
2009/12/14(月) 13:06:50int main(void)
{
int i, j, sum;
for(i=1,sum=0; i<=10; i++) {
sum += i * i;
printf("1^2");
for(j=2; j<=i; j++) printf("+%d^2", j);
printf("=%d\n", sum);
}
return 0;
}
0098デフォルトの名無しさん
2009/12/14(月) 13:36:01C++で、1^2=2は抜かすなら。
#include <iostream>
using namespace std;
int main()
{
for(int i=2,sum=1; i<=10; i++) {
sum += i * i;
cout << "1^2";
for(int j=2; j<=i; j++) cout << "+" << j << "^2";
cout << "=" << sum << endl;
}
}
0099デフォルトの名無しさん
2009/12/14(月) 13:39:42せんせ 1^2 は 1 でっせ (コードは sum=1 で正しい)
0100デフォルトの名無しさん
2009/12/14(月) 13:41:540101デフォルトの名無しさん
2009/12/14(月) 13:57:06C/C++では「^」は排他的論理和になるので、 1 ^ 2 = 3 になります。
0102デフォルトの名無しさん
2009/12/14(月) 14:01:000103デフォルトの名無しさん
2009/12/14(月) 14:01:04(直前までゴムの使い方知らなかったとか)
0104デフォルトの名無しさん
2009/12/14(月) 14:40:10[2] 問題文:多項式f(x)=Cn×�Iのn乗+Cn-1×�Iの(n-1)乗+...+C1×�I
+C0×�Iの0乗 の次数nと多項式の係数Cn,Cn-1,..,C1,C0を順に読み込み、
変数�I=0.0、0.1、0.2,・・、0.9、1.0に対する多項式f(x)の値を計算して見やすい形に
出力するCプログラム
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:Cです
[4] 期限: [2009年12月15日12:00まで]
[5] その他の制限:配列の問題です。 for構文を必ず使い、
f(x)=((...((Cn�I+Cn-1)�I+Cn-2)...)�I+C1)�I+C0
と単純な効率の良いプログラム計算するようなもの。つまり
fx←Cn
fx←fx*�I+Cn-1 というような代入を参考にして考えてみる
過去ログ検索で以下がひっかかったのですが、回答の707-708はレベルが高すぎて何がなにやら…
http://chomework.sakura.ne.jp/log1/1164079451_08.html
0105デフォルトの名無しさん
2009/12/14(月) 14:49:030106デフォルトの名無しさん
2009/12/14(月) 14:57:26#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j, n;
double *c;
scanf("%d", &n);
c = malloc((n + 1) * sizeof(double));
for(i=0; i<=n; i++) scanf("%lf", c + i);
for(i=0; i<=10; i++) {
double x = i / 10.0, ans = 0;
for(j=n; j>=0; j--) ans = ans * x + c[j];
printf("x = %f f(x) = %f\n", x, ans);
}
free(c);
return 0;
}
0107デフォルトの名無しさん
2009/12/14(月) 15:00:17010983
2009/12/14(月) 17:15:32どなたかご回答頂けませんでしょうかm(__)m
0110デフォルトの名無しさん
2009/12/14(月) 17:30:270111デフォルトの名無しさん
2009/12/14(月) 18:28:36つhttp://codepad.org/
ただし、回答側では、
コンパイルミスをなくす
結果を表示する
質問側では
コンパイルできないときのエラーメッセージをあわせて表示する
のに使っています。
0112デフォルトの名無しさん
2009/12/14(月) 18:37:05[2] 問題文(含コード&リンク):
ポーカーゲーム(の一部)をC言語にて作成する。
ポーカーゲーム(の一部)は以下の条件を満足させてください。
カードのシャッフルを行い、プレイヤ、ディーラにそれぞれ5枚ずつカードを配る。
プレイヤは配られたカードの中から交換するものを選択できるようにする。
ディーラ側の選択ルーチンはダミーの関数(たとえば全部交換、交換しない等)を用意すれば十分です。
プレイヤ、ディーラそれぞれの役を判定して勝敗を表示する。
表示、カードの選択は標準入出力を利用してください。
[3] 環境
[3.1] OS: windows7
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c
[4] 期限: 今週の水曜まで
[5] その他の制限: トランプはジョーカー抜きの52枚です。randを使います。お願いします。
0113デフォルトの名無しさん
2009/12/14(月) 18:42:58ほいきた。24時まで待ってください。
必修課題1 必修課題2 発展課題1 発展課題2
http://codepad.org/KG6A3xlQ
0115デフォルトの名無しさん
2009/12/14(月) 20:08:54こんな感じでどうでしょうか?
http://codepad.org/aXLhrl2o
自分で各ファイルに分割して下さい。
サーバのポート番号は決め打ちです。
サーバ指定は,IPアドレスで行います。
問題あれば,修正して下さい,もしくは文句を言って下さい。
0116デフォルトの名無しさん
2009/12/14(月) 20:13:09こんなサイトがあったのか
ありがとおおお
0117デフォルトの名無しさん
2009/12/14(月) 20:18:38ソケットなんざ、もう10年は触ってねえ。
0118113
2009/12/14(月) 20:30:05>>109
http://codepad.org/xhzJC0bs
0119デフォルトの名無しさん
2009/12/14(月) 20:33:270120デフォルトの名無しさん
2009/12/14(月) 21:06:150121デフォルトの名無しさん
2009/12/14(月) 21:09:24どんな長さの行/単語に対してもちゃんと動くようにするには、いちいち malloc()/realloc() しなおすしかないでしょう?
0122デフォルトの名無しさん
2009/12/14(月) 21:17:280123デフォルトの名無しさん
2009/12/14(月) 21:18:33え?なにが?
0124デフォルトの名無しさん
2009/12/14(月) 21:20:14#include<stdio.h>
#include<string.h>
#define WORD_LEN_MAX 100
#define BUF_SIZE (WORD_LEN_MAX+1)
#define FMTDUM(LEN) "%" # LEN "s"
#define FMT(LEN) FMTDUM(LEN)
int main(void){
char first[BUF_SIZE]="", last[BUF_SIZE]="", longest[BUF_SIZE]="";
char buf[BUF_SIZE];
FILE *fp;
fp=fopen("hogehoge.txt", "r");
if(fp==NULL) return 1;
while(fscanf(fp, FMT(WORD_LEN_MAX), buf)==1){
if(first[0]=='\0'){
strcpy(first, buf);
strcpy(last, buf);
strcpy(longest, buf);
}
if(strcmp(first, buf)>0) strcpy(first, buf);
if(strcmp(last, buf)<0) strcpy(last, buf);
if(strlen(longest)<strlen(buf)) strcpy(longest, buf);
}
puts(first);
puts(last);
puts(longest);
fclose(fp);
return 0;
}
0125デフォルトの名無しさん
2009/12/14(月) 21:21:50[2]
�@原点に静止していた電子を考える。ここに直線偏光した電磁波が入射してきたとき、電
子の運動の様子を計算せよ。円偏光のときはどうか。磁場の力は無視してよい。
�A地球をめぐる衛星は、大気の摩擦を受けて少しづつ落下する。この様子を計算せよ。値
は実際の値を入れなくともよいが、摩擦を受けつつ地球の重力を受けてまわる様子を正し
く微分方程式であらわし、それを解け。
�B有限の広さの薄い電極をもつ平行平板コンデンサーの周りの電場(電位)を計算し、可
視化する。平行平板コンデンサーの内部では一様な電場ができることはよく知られている。
しかし端の電場はどのようにずれているのであろうか。
(コンデンサーよりも十分大きい設置した箱型の境界を考える。その中にコンデンサーの極
板をおき、片方に電圧をかけて境界条件のように取り扱えばよい。)
[3] 環境
[3.1]Linux
[3.2] gcc
[3.3] C
[4] 期限:できれば木曜の12:00まで、因みに自主課題だからできなくてもいい
[5] その他の制限:特になし
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10269.txt
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン:visual studio 2008
[3.3] 言語: C
[4] 期限: 2009/12/15, 21:00まで
[5] その他の制限:出来るだけ簡単にお願いします。
0127デフォルトの名無しさん
2009/12/14(月) 21:25:54物理屋ではないから立式できない
0128デフォルトの名無しさん
2009/12/14(月) 21:26:56多めにmallocしてなるべくmalloc回数は減らすべきだってばっちゃんがいってた
0129デフォルトの名無しさん
2009/12/14(月) 21:28:40ネタにマジレス?
0130デフォルトの名無しさん
2009/12/14(月) 21:29:12>printf("[%d]を%d軸から%d軸へ移動\n",no,x,y);
を
printf("[%d]を%s軸から%s軸へ移動\n",no,pole[x-1],pole[y-1]);
に
0131デフォルトの名無しさん
2009/12/14(月) 21:36:25んー、メモリーリークに注意さえすれば、malloc() をバンバン使ったほうが見通しがいいのですが。
いや、未使用となった領域を再利用する際に長さをしらべて必要なら realloc() するっていうのは、わからないでもないですが。
0132デフォルトの名無しさん
2009/12/14(月) 21:48:32malloc使いすぎるとメモリが断片化していき、しまいにはメモリ確保に失敗して強制終了になる場合もある
0133デフォルトの名無しさん
2009/12/14(月) 21:48:37素早い対応ありがとうございます。
助かりました。
0135デフォルトの名無しさん
2009/12/14(月) 21:51:41ん、それもそうですね。ただ 100 文字にとらわれたくなかっただけで、まあ、かってに問題の拡大解釈をしただけです。他意はありません。
0136デフォルトの名無しさん
2009/12/14(月) 21:53:16DOS ならいざしらず、OS レベルでページングが有効な環境でも、やはり考慮しなければならない条件でしょうか?
0137デフォルトの名無しさん
2009/12/14(月) 22:26:54想定する入力が19700101〜20380119を逸脱しているから, time.hのmktimeが使えない。
そこで、GCCでunsigned long long を使って書いた後で、
LSI-C(16bit)という条件を見つけた。
もう、しめきり過ぎてるね。
0138デフォルトの名無しさん
2009/12/14(月) 22:54:08再来週はまださ
0139デフォルトの名無しさん
2009/12/14(月) 23:20:05究極的には自分でアロケータやガーベジコレクタ書く羽目になるから、課題レベルならどうでもいい
0140デフォルトの名無しさん
2009/12/14(月) 23:25:43幸せなことに、私はそこまでやる段階には到達しなかったのですが、メモリ管理も自前でやるしかないのですね、シビアな環境では。orz
0141140
2009/12/14(月) 23:28:080142デフォルトの名無しさん
2009/12/14(月) 23:36:290143デフォルトの名無しさん
2009/12/15(火) 00:24:07[2] 問題文(含コード&リンク):
#include<stdio.h>
int main(void){
char str[]="AbcdeFghijkLmnopqrstuv";
char *p
p=str;
while(条件){
ポインタを使って一文字ずつ表示させる。
}
printf("\n");
return 0;
}
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:visual studio2005
[3.3] 言語:C
[4] 期限:2009年12月15日 10:00
[5] その他の制限: while文の中でstrは使用できません
宜しくお願いします。
0144デフォルトの名無しさん
2009/12/15(火) 00:25:15yyyymmdd ---> 日数の部分だけ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10270.txt
0145デフォルトの名無しさん
2009/12/15(火) 00:29:48[2] 問題文(含コード&リンク):
#include<stdio.h>
void heikin(int x, int y, int z, double *a);
int main(void){
int kokugo,sugaku,eigo;
double av;
点数の入力
関数の実行
printf("3科目の平均は%.1lf点です\n",av);
return 0;
}
関数の定義
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:visual studio2005
[3.3] 言語:C
[4] 期限:2009年12月15日 10:00
立て続けにすみません。
こちらもどうか宜しくお願いします。
0146デフォルトの名無しさん
2009/12/15(火) 00:31:53while(*p != '\0'){
printf("%c",*p++);
}
0147デフォルトの名無しさん
2009/12/15(火) 00:32:27while (*p != '\0') {
printf("%c", *(p++));
}
0148デフォルトの名無しさん
2009/12/15(火) 00:43:250149デフォルトの名無しさん
2009/12/15(火) 00:51:530150デフォルトの名無しさん
2009/12/15(火) 00:53:11int main(void)
{
int kokugo, sugaku, eigo;
double av;
scanf("%d %d %d", &kokugo, &sugaku, &eigo);
heikin(kokugo, sugaku, eigo, &av);
printf("3科目の平均は%.1lf点です\n", av);
return 0;
}
void heikin(int x, int y, int z, double *a)
{
*a = (x + y + z)/(double)3.0;
}
0151デフォルトの名無しさん
2009/12/15(火) 00:56:26http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10271.txt
0152デフォルトの名無しさん
2009/12/15(火) 00:59:240153デフォルトの名無しさん
2009/12/15(火) 01:18:27>151のキャストは必要、演算子の優先順位からして正しい
0154デフォルトの名無しさん
2009/12/15(火) 01:18:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10272.c
0156デフォルトの名無しさん
2009/12/15(火) 02:27:40Enter>2994/11/05 18:58:98
format-error
Enter>2994/12/05 18:23:41
Enter>1900/11/15 22:13:19
2994年12月05日 18時23分41秒
1900年11月15日 22時13分19秒
秒単位:34522488622秒
分単位:575374810分
時間単位:9589580時間
日単位:399566日
こんな感じの出力結果が必要なの?(上の時間差の数字は適当)16ビット処理系だったら
ちと面倒だな
0157デフォルトの名無しさん
2009/12/15(火) 02:56:27個別入力じゃねーの?
Year>2009
Month>12
Day>31
Hour>55
Error
Hour>12
Minute>35
Second>33
みたいな
0158デフォルトの名無しさん
2009/12/15(火) 11:08:57[2] 問題文(含コード&リンク):
1から500までの整数から、3の倍数を1行に10個ずつ表示するプログラムを作れ。ただし、一個の整数を表示する桁数を5桁に指定すること。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: BCC Developer
[3.3] 言語: C++
[4] 期限: [2009年12月17日まで]
[5] その他の制限: 特になし。
0159デフォルトの名無しさん
2009/12/15(火) 11:36:52[2] 問題文(含コード&リンク):
全角の日本語をJISコードに変換したいです。
”あいうえお終”と入力したときに
2422
2424
2426
2428
242A
3D2A
のように返してくれるとうれしいです。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:visual c++ 2008 Express Edition
[3.3] 言語: C
[4] 期限: 2009/12/18
[5] その他の制限: 特になし
0160デフォルトの名無しさん
2009/12/15(火) 11:41:57#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void free_and_dup(char **current, const char *newword) {
free(*current);
*current = strdup(newword);
}
int main() {
char buff[100 + 1], *first = 0, *last = 0, *longest = 0;
FILE *fp = fopen("hogehoge.txt", "r");
if (!fp) exit(EXIT_FAILURE);
for (; fscanf(fp, "%100s", buff) != EOF; ) {
if (!first || strcmp(buff, first) < 0) free_and_dup(&first, buff);
if (!last || strcmp(buff, last) > 0) free_and_dup(&last, buff);
if (!longest || strlen(longest) < strlen(buff)) free_and_dup(&longest, buff);
}
fclose(fp);
puts(first);puts(last);puts(longest);
return 0;
}
0161デフォルトの名無しさん
2009/12/15(火) 12:30:33#include <stdio.h>
int main() {
int i;
for (i = 1; i * 3 < 500; i++) printf("%5d%s", i * 3, i % 10 == 0 ? "\n" : "");
return 0;
}
0163115
2009/12/15(火) 14:05:48ごめんなさい。buf のクリアをしてなかったから1桁になったとき
おかしくなってました。
というか石の数の初期値を5でテストしてたのが,
ばれてもうたw
修正しました。
確認してみて,まだ問題があったら,教えて下さい。
http://codepad.org/uHTKYINr
0165デフォルトの名無しさん
2009/12/15(火) 18:50:2016ビット int の中におさまりますか?
0167デフォルトの名無しさん
2009/12/16(水) 01:05:37あら素敵
0168デフォルトの名無しさん
2009/12/16(水) 01:08:280169デフォルトの名無しさん
2009/12/16(水) 11:13:30[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10273.txt
[3] 環境
[3.1] OS:Vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日
よろしくお願いします。
0170デフォルトの名無しさん
2009/12/16(水) 11:17:16[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10274.txt
[3] 環境
[3.1] OS:Vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日
すみませんこれもよろしくお願いします・・・
0171デフォルトの名無しさん
2009/12/16(水) 11:21:56#include <stdio.h>
int main(void)
{
char str1[256], str2[256], *p, *q;
printf("str1?");
scanf("%s", str1);
printf("str2?");
scanf("%s", str2);
for(p=str1; *p; p++);
*p++ = ' ';
for(q=str2; *p=*q; p++, q++);
printf("%s", str1);
return 0;
}
0172デフォルトの名無しさん
2009/12/16(水) 11:25:52{
int i, ret = 0;
for(i=0; str[i]; i++) if(str[i]==c) ret++;
return ret;
}
0173デフォルトの名無しさん
2009/12/16(水) 11:57:06char *scan_and_dup(const char *label) {
static char buff[256 + 1];
printf("%s", label);
scanf("%256s", buff);
return strdup(buff);
}
char *create_sepcat(const char *s1, const char *s2, const char *s3) {
int totallen = strlen(s1) + strlen(s2) + strlen(s3);
char *cs = (char *)malloc(totallen * sizeof(char));
strcpy(cs, s1);
strcat(cs, s2);
strcat(cs, s3);
return cs;
}
int main() {
char *str1 = scan_and_dup("str1?"), *str2 = scan_and_dup("str2?"), *sep = " ";
char *tmp = create_sepcat(str1, sep, str2);
free(str1);
str1 = tmp; // str1←str1&' '&str2の操作
puts(str1);
return 0;
}
0174デフォルトの名無しさん
2009/12/16(水) 12:08:320175デフォルトの名無しさん
2009/12/16(水) 12:44:23int str_chnum(const char str[], int c)
{
int i,count = 0;
for(i=0; str[i];i++){
if(str[i] == c)
count++;
}
return count;
}
0177デフォルトの名無しさん
2009/12/16(水) 15:21:15[2] 問題文(含コード&リンク)
1)f(x,y)=dy/dx=-4(x-1)y,y(0)=e^-2の一階微分方程式についてオイラーの方法で数値解を求めるプログラムを作成せよ。
2)dy/dx=f(x,y)=1-y,y(0)=0
dy/dx=f(x,y)=y(1-y),y(0)=0.01
dy/dx=f(x,y)=2yx,y(0)=1
の数値解をオイラー法によって求めよ。
[3] 環境
[3.1] OS: windowsVista
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2009/12/18
[5] その他の制限: 特にありません。
すいませんが、よろしくお願いします。
0178デフォルトの名無しさん
2009/12/16(水) 16:25:40>>175
ありがとうございました!
0179デフォルトの名無しさん
2009/12/16(水) 19:59:21[2] 問題文:・ハッシュ関数によるデータ格納を配列を用いて実現するプログラムの作成
・入力データは自然数
・配列の要素数とハッシュ関数は任意
・重複処理はオープンアドレス法を用いる
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:17日15時まで
[5] その他の制限: 特になし
急なお願いですがよろしくお願いします。
0180デフォルトの名無しさん
2009/12/16(水) 21:34:51物理屋さんはここには、おられないですか?
0181デフォルトの名無しさん
2009/12/16(水) 22:07:51必要な式とか用意してほしい
0182デフォルトの名無しさん
2009/12/16(水) 22:08:08方程式を立てるまでの議論も大事だが
このスレでは多分とてもじゃないがそ
の辺りまでは手が回らない
0183デフォルトの名無しさん
2009/12/17(木) 00:21:48物理
http://science6.2ch.net/sci/
宿題スレでも立ててろ
0184デフォルトの名無しさん
2009/12/17(木) 00:25:16各問題の物理の問題としての答えの導き出し方を書かないとダメだよ
その手順を元にプログラム化するから
物理の問題の答えまで期待するな
0186デフォルトの名無しさん
2009/12/17(木) 00:58:36xの範囲と刻み値を教えて下さい
0187デフォルトの名無しさん
2009/12/17(木) 01:05:10一階微分方程式?
オイラーの方法?
オイラー法?
0188デフォルトの名無しさん
2009/12/17(木) 02:23:33一個目は0<x<2で二個目も同じです。
>>187
dy/dxが一階微分方程式。ってことです。
オイラーの方法とかオイラー法とかで問題文ごちゃごちゃに書かれてますが、
オイラー法で間違いないです。
よろしくお願いします。
0189デフォルトの名無しさん
2009/12/17(木) 02:34:44>場違いでした
C言語舐め過ぎ
方程式立てるのも難しいし、その方程式を解くアルゴリズム
を発見するのも難しい。しかしそれ使ってコンピュータに
最善の方法でそれを近似的に行わせる技術やそれを言語化
する技術も同じように難しい。それぞれ次元が違う難しさ
があるんで。
0190デフォルトの名無しさん
2009/12/17(木) 02:51:05あと刻み値
H=0.05程度でいい?
0191デフォルトの名無しさん
2009/12/17(木) 03:13:23[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10275.txt
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン:Cpad for Borland 2.31
[3.3] 言語: C
[4] 期限: 明日午後12まで
[5] その他の制限:特になし
疑似プログラミングで作られてるプログラムを自分でCに戻す問題です
一応自分で考えてこうなりましたがエラーが出ます
#include <stdio.h>
int main(void){
int n,sum,i,x;
FILE *fp; /* ファイルのデータを読み込む作業 */
fp = fopen("sales.dat","r");
fscanf(fp,"%d",&n); /*教科書のread()のかわり */
sum=0;
for(i=1;i<=n;i++){
scanf("%d",sum);
sum=sum+x;
}
printf("%d",sum);
fclose(fp);
}
ファイルの読み込み方がおかしいのか構文がおかしいのかよくわかりません・・・よろしくお願いします。
0192デフォルトの名無しさん
2009/12/17(木) 03:59:43と
scanf("%d", sum);
の最後の引数をよく見比べてみる。
さらに,x を使う目的は?
を考えると・・・。
0193デフォルトの名無しさん
2009/12/17(木) 05:06:41xは1日ごとの売り上げを足すために使ってるんだと思うんですが・・・これが宣言とかなしで出てきてるのが駄目なのかな
具体的にどの行が間違ってるのか指摘してもらえるとありがたいのですが
0194デフォルトの名無しさん
2009/12/17(木) 07:04:04[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10277.txt
[3] 環境
[3.1] OS:vista (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C
[4] 期限:2009年1月6日
[5] その他の制限:反復構造を使って解いてください
0195デフォルトの名無しさん
2009/12/17(木) 07:46:25必修課題1
#include <stdio.h>
int main(void)
{
int i, j;
for(i=1; i<=9; i++) {
for(j=1; j<=5; j++) printf("%d ", i * j);
puts("");
}
return 0;
}
0196デフォルトの名無しさん
2009/12/17(木) 07:49:13必修課題2
#include <stdio.h>
int main(void)
{
int i, x, y, sum = 0;
printf("第X項から:");
scanf("%d", &x);
printf("第Y項まで:");
scanf("%d", &y);
for(i=x; i<=y; i++) sum += i;
printf("初項1公差1の等差数列において、\n");
printf("第%d項から第%d項までの数列の和は%dです。\n", x, y, sum);
return 0;
}
0197デフォルトの名無しさん
2009/12/17(木) 07:50:52発展課題1
#include <stdio.h>
int main(void)
{
int i, num;
for(i=num=1; num < 10000; i++) num *= 2;
printf("%d日目に%d個の細胞数になります。\n", i, num);
return 0;
}
0198デフォルトの名無しさん
2009/12/17(木) 09:29:49[2] 問題文
正規分布表をC言語でつくってみよう。
先生が最初のちょっとを教えてくれた。
#include<stdio.h>
#include<math.h>
#include<stdilb.h>
float normal_gauss_fn(float z)
{
return(exp(z*z/(-2.0))/sqrt(2.0*3.14));
}
[3] 環境
[3.1] OS:windowa vista
[3.2] コンパイラ名とバージョン:bcc 32
[3.3] 言語:C
[4] 期限:12月18日まで
[5] その他の制限:制限がよくわからないくらいの
レベルなので出来るだけ単純に
分かりにくいかもしれないですが、よろしくお願いします。
0199デフォルトの名無しさん
2009/12/17(木) 11:16:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10279.txt
ごめん昨日寝ちまった
それと刻み値は勝手にH=0.05にしたよ
順番に4つの方程式の解を表示するけど、都合が悪かったら
4つのプログラムに分割して下さい
0200デフォルトの名無しさん
2009/12/17(木) 13:30:16最初は,fscanf() を使っているのに,2回目はなぜにscanf() なのか?
-> ファイルから読み込みたいので,fscanf(fp, ...) を使う。
1回目の fscanf() では,&n を渡しているのに,
scanf() では sum をそのまま渡している。
-> &sum を使いたい。が,
その scanf() に &sum を渡したら,今までの合計が上書きされてしまう。
-> &x を使う。
#include <stdio.h>
int main(void){
int n,sum,i,x;
FILE *fp; /* ファイルのデータを読み込む作業 */
fp = fopen("sales.dat","r");
fscanf(fp,"%d",&n); /*教科書のread()のかわり */
sum=0;
for(i=1;i<=n;i++){
fscanf(fp, "%d",&x);
sum=sum+x;
}
printf("%d",sum);
fclose(fp);
return 0;
}
0201デフォルトの名無しさん
2009/12/17(木) 14:00:01[2] 問題文(含コード&リンク):
メモリ上に64バイトのデータがあります。これは4x16の行列です。
char buf[16][4] = { a0, b0, c0, d0, ... , a15, b15, c15, d15 };
組込関数を用いてxmmレジスタに4分割して読込みました。中のイメージはこうです。
__m128i t0 = { a0 , b0 , c0 , d0 , ... , a3 , b3 , c3 , d3 };
__m128i t1 = { a4 , b4 , c4 , d4 , ... , a7 , b7 , c7 , d7 };
__m128i t2 = { a8 , b8 , c8 , d8 , ... , a11, b11, c11, d11 };
__m128i t3 = { a12, b12, c12, d12, ... , a15, b15, c15, d15 };
ここから16x4の転置行列を得ましょう。内容のイメージはこうです。
__m128i r0 = { a0, ... , a15 };
__m128i r1 = { b0, ... , b15 };
__m128i r2 = { c0, ... , c15 };
__m128i r3 = { d0, ... , d15 };
禁じ手
r0 = _mm_set_epi8(buf[15][0], buf[14][0], ... , buf[0][0]);
こういう遅いプログラムはダメです。xmmレジスタの操作でカタを付けましょう。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:GCC 4.4.1
[3.3] 言語:C言語
[4] 期限:2009年12月18日 12:00:00まで
[5] その他の制限:SSE〜SSE3の組込命令を使って良い。
0202デフォルトの名無しさん
2009/12/17(木) 15:38:10[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10282.zip
[3] 環境
[3.1] OS: winXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 明日の昼まで
お願いします
>>155 を下敷きに多バイト長演算を組み込んで、LSI-C でもコンパイル・実行できるようにしました。
http://codepad.org/hfx8vGX9
0204デフォルトの名無しさん
2009/12/17(木) 18:41:03ファイル読み込みたいのにscanfにしてちゃ駄目だね、なるほど
期限には間に合わなかったけど詳しい説明ありがとう、ようやくわかったよ
0206デフォルトの名無しさん
2009/12/17(木) 20:32:30[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10285.txt
[3] 環境
[3.1] OS:vista (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C
[4] 期限:2009年1月6日
[5] その他の制限:
0207デフォルトの名無しさん
2009/12/17(木) 21:54:42発展課題1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10288.txt
0208デフォルトの名無しさん
2009/12/17(木) 21:58:310209デフォルトの名無しさん
2009/12/17(木) 22:20:26[2] 問題文(含コード&リンク):
五目並べの作成
主に終了判定関数、コンピューターによる着手の生成関数の作成
サンプルプログラム:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10289.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2010年1月5日まで
[5] サンプルプログラムを書き換えていく形でお願いします
0210デフォルトの名無しさん
2009/12/17(木) 23:06:03[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10290.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C言語
[4] 期限:2009/12/18(金) 23:59(減点されるが延長で12/19(日)12:00まで)
[5] その他の制限:特になし(だと思います)
期限が迫ってしまいましたが自己責任なので延長が許される土曜日の12日まで待ちます!
どうか、よろしくお願いします。
本当についさっきまで2ch規制されてましたが解除されました!
しかしまた規制されてしまったら申し訳ありません・・・。
0211デフォルトの名無しさん
2009/12/17(木) 23:11:050212210
2009/12/17(木) 23:13:32黒板で課題の内容を説明されただけです。
問題の意図が伝わっていないのならすみません・・・
0213デフォルトの名無しさん
2009/12/18(金) 00:39:51リスト構造ってのは、配列じゃなくて連結リストだと解釈していいのか?
0214210
2009/12/18(金) 00:44:040215デフォルトの名無しさん
2009/12/18(金) 00:48:07データとしては"名前","フリガナ",点数 ってのがいいかな
そうしないと例えば、今田ではイマダとコンタどっちもいるからね
0216デフォルトの名無しさん
2009/12/18(金) 01:18:16[2] 問題文(含コード&リンク):
1. 引数にファイル名を指定すると,そのファイルのサイズとファイルの種類(一般ファイル,デ
ィレクトリ,パイプ等),そして最終変更時刻を表示するコマンド(fview という名称とする)を作
成せよ.ただし,引数には,複数のファイルを指定できるようにすること.また,fstat システム
コールを用いること.
実行
$ fview aaa.txt bbb.txt ccc.txt …
ヒント
ファイルの種類は,fstat 構造体メンバのst_mode の上位4 ビットで表わされる.
2. 引数に指定した複数のテキストファイルの内容を結合して,一つのファイルにまとめるコマ
ンド(catfiles という名称とする)を作成せよ.ただし,まとめた内容を格納するファイル名は,
“concat.txt”とすること.ただし,cat コマンドをsystem 関数の内部で呼ぶような構成は認め
ない.システムコールとしては,open,close,read,write を用いること.また,結合してまとめ
た結果を格納するファイルが存在しない場合には,creat システムコールを用いて生成するこ
と.
実行
$ catfiles aaa.txt bbb.txt ccc.txt …
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: 2009年12月20日09:00まで
0217デフォルトの名無しさん
2009/12/18(金) 02:21:24[2] 問題文(含コード&リンク):問題ではないですがif文のところがうまく反映されてないので困っています
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10291.cpp
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:g++
[3.3] 言語:C++
[4] 期限: とくになし
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0218デフォルトの名無しさん
2009/12/18(金) 02:35:29↓
-0.5 <= x && x < 0.0
0.0 <= x <= 0.5
↓
0.0 <= x && x <= 0.5
0219デフォルトの名無しさん
2009/12/18(金) 02:38:19ありがとうございます。できました
まとめて書くことってできないんですね。今初めて知りました
0220デフォルトの名無しさん
2009/12/18(金) 02:40:09http://codepad.org/zjmMDKzF
聞いてくれ
小粋にシェーカーソートしようとしたら上手くいかず
しかたないからバブルソートで我慢しようと思ったらそれも上手く行かず
しかたないからブルーとフォースでやったんだ
0221デフォルトの名無しさん
2009/12/18(金) 02:44:01修正版
http://codepad.org/Hm0lzK9F
0222デフォルトの名無しさん
2009/12/18(金) 03:36:38そう・・・freeの存在を
というわけで更に修正版 or2
http://codepad.org/sqApPNGz
0223デフォルトの名無しさん
2009/12/18(金) 04:07:490224デフォルトの名無しさん
2009/12/18(金) 04:12:01[2] 問題文(含コード&リンク):
#include 〈stdio.h〉
#define NAME_MAX 20 /* 文字列の最大数 */
/* 構造体の宣言 */
struct student_data{
/* 各メンバーの宣言 */
int number; /* 学籍番号 */
char name[NAME_MAX+1]/* 氏名 */
double height; /* 身長 */
};
int main (void) /* 引数無しのmain関数 */
{
#define STUDENT_DATA_MAX 5 /* 入力する学生数 */
struct student_data input_data[STUDENT_DATA_MAX]; /* 構造体による変数宣言 */
struct student_data * data_p; /* 構造体によるポインタ変数宣言 */
int input_count+ /* カウンタ変数 */
0225デフォルトの名無しさん
2009/12/18(金) 04:13:56for (input_count=0; input_count < STUDENT_DATA_MAX; input_count +=1)
{
/* 構造体のメンバ指定 (変数の場合) */
printf("Student number->");
scanf("%d",&input_data[input_count].number);
printf("Name->");
scanf("%s",input_data[input_count].name);
/*またはscanf("%s",input_data[input_count].name[0]);*/
printf("Height->");
scanf("%lf",&inout_data[input_count].height);
}
/* データの出力 */
for (input_count=0,data_p = input_data;
input_count < STUDENT_DATA_MAX;
input_count +=1 , data_p ++)
{
/*構造体のメンバ指定(ポインタ変数の場合) */
printf("%d ",data_p->number);
printf("%s ",data_p->name);
printf("%lf\n",data_p->height);
}
return 0; /* 正常終了 */
0226デフォルトの名無しさん
2009/12/18(金) 04:14:43malloc.cをVisual Studioで実行して(5名以上入力)、実行結果をmalloc.c内の文末に「コメント行」として記載せよ。(コメント行を追加後も、ビルド可能か再確認)
[3] 環境
[3.1] OS: Vista
[3.2] コンパイラ名とバージョン: Visual studio 2005
[3.3] 言語:C++
[4] 期限: 2009年12月18日13時00分
[5] その他の制限:特になし。
助けてください…
>>225,>>226は>>224の続きです
0227デフォルトの名無しさん
2009/12/18(金) 05:03:17講義でどのあたりまでやっているかで書き方が変わると思うんだが
使用してもいいのは、malloc関数のみ?それともmalloc関数絡み(具体的にはrealloc)もいいのか?
0228227
2009/12/18(金) 05:42:35「malloc関数」を用いて と 上記を参考に との記述があるので
仕様として、最初に任意の人数を入力し、その後氏名、学籍番号、身長の入力を行うという形にした。
malloc関数しか使ってないし、コードもほとんど変更ない。
実行確認はしたけど、久しぶりにC使ったんで知識ある人いたら確認よろ
自分もfreeの存在を忘れてた組
http://codepad.org/VaVZSBqd
0229デフォルトの名無しさん
2009/12/18(金) 07:14:28l41にあーっなコードが含まれている
あと変数名が長すぎる気がする、また、記述に一貫性がないfor()の書き方と複合演算子
0230デフォルトの名無しさん
2009/12/18(金) 07:25:260231デフォルトの名無しさん
2009/12/18(金) 08:25:211. fview
http://codepad.org/avi7DvtE
2. catfiles
http://codepad.org/dD03AUgN
言語は C++ とあり,コンパイラは gcc とあるので,
とりあえず,C で書いてみた。
一応,g++ でのコンパイルも確認してあります。
C++ 的に書くとどうなるのだろうか。。。
creat() 使わずに,O_CREAT を使ったのでだめかも?
ファイルの種類は,「など」とあったので適当に。
問題あったら教えて下さい。
0232デフォルトの名無しさん
2009/12/18(金) 13:14:12すばやい回答ありがとうございました。
Cで大丈夫だったみたいです。後で学校に行って実行してみたいと思います。
0233デフォルトの名無しさん
2009/12/18(金) 13:24:39もう少しわからんところがあるから助けてほしいです
[1] 授業単元:if文とfor文
[2] 問題文(含コード&リンク):キーボードから6つの数値を入力し、
最大値を表示するプログラムを作成
• キーボードから入力する数値例:25 , 6 , 45, 18 , 57, 5
[3] 環境
[3.1] OS: vista
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C++
[4] 期限:無期限
[5] その他の制限:
• for文を用いてキーボードから値を読み込みながら,
それまでに読み込んだ値の最大値maxと比較し,
もし大きければmaxの値を更新する
for(i=?;i<=?;?){
scanf(?????);
if( ? > max) ???????;
}
頼んでばかりで申し訳ないが…
0234デフォルトの名無しさん
2009/12/18(金) 14:22:29int main(void)
{
int i, n, max;
scanf("%d", &max);
for(i=0; i<5; i++) {
scanf("%d", &n);
if(n > max) max = n;
}
printf("%d", max);
return 0;
}
0235デフォルトの名無しさん
2009/12/18(金) 14:27:28[2]課題:次のコードの空欄を埋めて完成させなさい。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int a[5],i;
srand(time(NULL));
for(i=0;i<5;i++) a[i]= rand() % 100;
for(i=0;i<5;i++)printf("%d: %d (昇順順位=%d)¥n",i,a[i],[空欄]);
return 0;
}
[3] OS:Windows XP IDE:Visual studio 2008 言語:C
[4] 12/25迄
[5]空欄を埋める以外、コードに手を加えてはいけない。実行させて意味が通るようにしなさい とのことです。
0236デフォルトの名無しさん
2009/12/18(金) 15:24:01(a[i]>a[0])+(a[i]>a[1])+(a[i]>a[2])+(a[i]>a[3])+(a[i]>a[4])+1
0237デフォルトの名無しさん
2009/12/18(金) 16:42:01Windowsのコンパイラには変態なものが
ある可能性があるんで(他言語移植を考慮して)修正
http://codepad.org/odnHlse1
0238デフォルトの名無しさん
2009/12/18(金) 17:06:09そこまで構文制限が強い問題には答えない(答えてはいけない)
というのが正解
0239デフォルトの名無しさん
2009/12/18(金) 17:10:57の問題は、C初心者に誤解を招きそうな類だな
これが当たり前の構文だと思い込ませかねない
0240デフォルトの名無しさん
2009/12/18(金) 17:13:13乙。すばらしい。
おれには思いつけなかったよっと。
0241デフォルトの名無しさん
2009/12/18(金) 17:14:09突っ込むところはここではないとは思うが、
\n を 10 にするのは蛇足ではないかい。
0243デフォルトの名無しさん
2009/12/18(金) 20:49:15貴様は俺を怒らせた
0244デフォルトの名無しさん
2009/12/18(金) 21:55:34試験問題でも
宿題の一種みたいなのでるから大目にみたげよや
0245デフォルトの名無しさん
2009/12/18(金) 23:27:270246デフォルトの名無しさん
2009/12/18(金) 23:46:07[2]課題: gets()などでなにかプログラムを書き、バッファオーバーランによる問題点がわかるようなプログラムを書け。
[3] OS:Windows XP 言語:C
[4] 来年
0247デフォルトの名無しさん
2009/12/19(土) 00:10:47そもそもサンプルプログラムの他の部分から書き換える必要があるだろ・・・
0248デフォルトの名無しさん
2009/12/19(土) 00:14:37#include <stdio.h>
int main(){
char buffer[2][10];
getc(buffer[1]);
getc(buffer[0]);
printf("buffer[0]=\"%s\"\nbuffer[1]=\"%s\"", buffer[0], buffer[1]);
return 0;
}
hogehoge.
fugafugafuga.
buffer[0]="fugafugafuga."
buffer[1]="ga."
今携帯だからテストはしてないが多分こうなるはず。
0249248
2009/12/19(土) 00:16:17printfの第一引数の最後に改行入れ忘れた
0250デフォルトの名無しさん
2009/12/19(土) 00:57:43[2] 問題文(含コード&リンク):
下記のような関数を作れ。
scanfをfgetsとsscanfを組み合わせた関数
int mscanf(int num , const char*str , const char*format, ...)
num:最大文字数 str:scanfでいうところの第一引数 format:scanfでいうところの第二引数以降
戻り値はscanfと同じにする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: [無期限]
[5] その他の制限: vsscanf使用可 mscanfないで一時的に使うかもしれない文字列の最大長は#defineで各自決めていい。
0251p2005-ipbf210niho.hiroshima.ocn.ne.jp
2009/12/19(土) 05:47:37[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10285.txt
[3] 環境
[3.1] OS:vista (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C
[4] 期限:2009年1月6日
[5] その他の制限: とくになし
0252デフォルトの名無しさん
2009/12/19(土) 06:59:18http://codepad.org/UX137LLy
こんなかんじかな
てきとーにやったんで、動かなくても知らない
0253デフォルトの名無しさん
2009/12/19(土) 09:10:15早速回答ありがとうございます。
ただ必修とかの題名はつけなくていいですよ。
---のなかに囲ってあるとこが表示されればおっけーです。
0254デフォルトの名無しさん
2009/12/19(土) 09:13:17煽りの才能に溢れてるなw
0255デフォルトの名無しさん
2009/12/19(土) 09:16:49ただし、0および負の整数を入力すると、「値が不適当です。」とメッセージが出るようにする。
階乗はn!=1×2×3・・・×nで表される。実行結果の例を以下に示す。
------------------------------------------------
整数を入力して下さい:5
5の階乗は120です。
------------------------------------------------
ヒント:if文の中にfor文やwhile文を入れ込むこともできます。
↑この問題だけうまいこといきません。
「整数を入力して下さい:?」で入力ができず、「0の階乗は5」ですが表示されます
#include <iostream>
int main() {
int n, i, total=1;
std::cout << "整数を入力して下さい:"; std::cin >> n;
for(i=1; i<=n; i++) total *= i;
std::cout << n << "の階乗は" << total << "です。 " << std::endl;
return 0;
}
0257デフォルトの名無しさん
2009/12/19(土) 10:02:49回答ありがとうございます
やってみたけどやっぱりだめです。
なにがいけないんでしょう?
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
0259デフォルトの名無しさん
2009/12/19(土) 10:06:540260デフォルトの名無しさん
2009/12/19(土) 10:44:540261デフォルトの名無しさん
2009/12/19(土) 12:14:09文字はいれないでね(笑)
http://codepad.org/LttCf4ty
>文字はいれないでね(笑)
Zero clear わすれてた(笑)
int main() {
int n=0, i, total=1;
printf( "整数を入力して下さい:" ); scanf("%d%*c", &n);
for(i=1; i<=n; i++) total *= i;
printf( "%dの階乗は%dです。", n, total);
return 0;
}
0263デフォルトの名無しさん
2009/12/19(土) 14:35:31舌足らずで申し訳ありません・・・
サンプルプログラム中の問いに答えるために、他の箇所も書き換えてもいいとのことでした
0264デフォルトの名無しさん
2009/12/19(土) 15:36:26とりあえずサンプルプログラムのエラーチェックとcheck関数は作ってみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10292.txt
うまく動かなかったらすいません。。。
レポート問題2は思考ルーチンとかになってくるので
詳しくないので、すぐには作れません><
0265デフォルトの名無しさん
2009/12/19(土) 16:35:47★質問者へ:問題の内容によっても異なりますが、最低24時間は回答は得られないと
思って締め切り期限ぎりぎりに投げるのではなく、余裕を持って投げて下さい。
質問後、回答が不要になった場合などは24時間以内に取り消して下さい。宿題データ、
問題文の24時間以内の訂正は可能ですが出来る限りしないでください。十分にチェッ
クしてから投稿して下さい。回答が得られない場合で再度請求する場合は最初に投稿
してから24時間経過してからにして下さい。
★回答者へ:出来るだけ早くとか翌日に期限が設定されているような問題には回答する必要
はありませんし、しないで下さい。質問者が取り消した場合、また質問されてから24時間
以内には回答しないようにして下さい。24時間以内に問題文の転記修正や取り消しが入る
かも知れません。24時間経過していてもスレが進んでいない場合は回答は控えて下さい。
24時間経過後回答者が再度請求した場合に初めて回答するのが理想です。
少なくとも問題と回答の公開を目的としたスレではありません。
0266デフォルトの名無しさん
2009/12/19(土) 16:37:100267デフォルトの名無しさん
2009/12/19(土) 17:27:140268デフォルトの名無しさん
2009/12/19(土) 18:00:10★質問者の方々へ:
期限までに回答が無かった場合はあきらめて下さい。すべての質問に期限内に答えられるとは限りません
期限を再延長するのは控えて下さい。再延長する場合はテンプレに従って
再度投稿することが出来ますが、回答してもらえる確率は減ることは否めません。
★回答者の方々へ:
期限の過ぎた問題の回答は避けて下さい。
0269デフォルトの名無しさん
2009/12/19(土) 19:06:34回答ありがとうございます!
問2に関しては了解しました
問題の目指すところが今ひとつわからなかったのですが、こんなものでいいですか?
http://codepad.org/RkZsKLrv
>>265
> 出来るだけ早くとか翌日に期限が設定されているような問題には回答する必要
> はありませんし、しないで下さい。
いやです。興味のある問題ならば期限や、その他テンプレの書きようにかかわらず、問題を解かせていただきます。
>質問者が取り消した場合、また質問されてから24時間以内には回答しないようにして下さい。
>24時間以内に問題文の転記修正や取り消しが入るかも知れません。
なぜ 24 時間も待たなくてはならないのですか?意味不明です。訂正が入れば、余裕があればそれにあわせてやればいいだけのこと。
>24時間経過していてもスレが進んでいない場合は回答は控えて下さい。
意味不明。
>24時間経過後回答者が再度請求した場合に初めて回答するのが理想です。
別に回答者から督促があろうが無かろうが、興味のある問題ならば喜んでとかせていただきますし、どうでもいいと思ったらスルーしますが。
>>少なくとも問題と回答の公開を目的としたスレではありません。
かってにスレの目的を決めないでください。
>>268
>期限の過ぎた問題の回答は避けて下さい。
興味のもてる問題ならば期限が過ぎても解かせていただきます。
意味不明の回答規制なのですが、最近の学校ではこういうのがはやっているのですか?中学校の生徒さんですか?
0271デフォルトの名無しさん
2009/12/19(土) 20:34:10テンプレに沿って質問して下さい
0272デフォルトの名無しさん
2009/12/19(土) 20:34:160273デフォルトの名無しさん
2009/12/19(土) 20:42:48>>270
のような「解いて下さる」方は珍重したほうがいいです。
0274デフォルトの名無しさん
2009/12/19(土) 21:50:350275デフォルトの名無しさん
2009/12/19(土) 22:11:45>>265,268 が宿題を出す側とは思えませんね。24時間ルールとやらは宿題を出す側にとっては不利ですから。
宿題を出す側でもなければ解く側でもない、とすれば、単なる自治中毒者でしょうね、意味もなく影響力を示したがるやっかいな連中ですね。
そんなに影響力を示したいのであれば、まず出された宿題を解くことからはじめればいいのでしょうに。
0277デフォルトの名無しさん
2009/12/19(土) 22:38:250278デフォルトの名無しさん
2009/12/19(土) 22:42:40宿題を投げる人と解く人のコラボだろ。
出す人がここにくるわきゃないw
0279デフォルトの名無しさん
2009/12/19(土) 22:47:05そうでしたか。出す人と投げる人とを混同しておりました。
宿題を出す人が妨害工作にでる可能性は、たしかにありますね。
0280デフォルトの名無しさん
2009/12/19(土) 22:50:27[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10294.txt
[3] 環境
[3.1] OS:vista (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C
[4] 期限:2009年1月6日
[5] その他の制限: とくになし
0281デフォルトの名無しさん
2009/12/19(土) 22:58:29必修1
#include <stdio.h>
int main()
{
double r;
double pi = 3.141592654;
printf("直径は?");
scanf("%lf",&r);
printf("直径5cmの円の円周は%lfcmです。\n",r*pi);
return 0;
}
0282デフォルトの名無しさん
2009/12/19(土) 23:28:35宿題を出す側は、実操作以外は本質的に小中学生向けの課題
の丸投げに迅速に回答出して人助けをしたんだと悦に行って
るよな人を苦々しく思ってるんだろけどね。
まあ幸いなことに大半は自演なんだろけど。
0283デフォルトの名無しさん
2009/12/19(土) 23:37:36必修2
#include <stdio.h>
void point(int r);
int main()
{
int r;
printf("何点ですか?:");
scanf("%d",&r);
point(r);
return 0;
}
void point(int r)
{
if(0 <= r && r < 60)
printf("不可です。\n");
else if(60 <= r && r < 70 )
printf("可です。\n");
else if(70 <= r && r <80)
printf("良です。\n");
else if(80 <= r && r <= 100)
printf("優です。\n");
else
printf("換算できません\n");
}
0284デフォルトの名無しさん
2009/12/19(土) 23:49:38必修3
#include <stdio.h>
int main()
{
double r=0, i;
for(i = 0;i < 10.0 ;i+=0.2)
r+=i;
printf("答えは%.1lfです\n",r);
}
0285デフォルトの名無しさん
2009/12/19(土) 23:59:17発展課題1
#include <stdio.h>
int hantei(int, int, int);
int main(){
int a, b, c;
printf("一つめの整数を入力して下さい:");
scanf("%d", &a);
printf("二つめの整数を入力して下さい:");
scanf("%d", &b);
printf("三つめの整数を入力して下さい:");
scanf("%d", &c);
printf("最大値は%dです\n",hantei(a,b,c));
}
int hantei(int a,int b,int c)
{
if(a - b > 0){
if(a - c > 0)
return a;
else
return c;
}
else{
if(b - c > 0)
return b;
else
return c;
}
}
0286デフォルトの名無しさん
2009/12/20(日) 00:03:36発展課題2
#include <stdio.h>
int main()
{
int i, j;
for(i = 1; i <= 9; i++){
for(j = 1; j <= 9; j++){
printf("%d ",i*j);
}
printf("\n");
}
}
0287デフォルトの名無しさん
2009/12/20(日) 00:45:09発展課題3
http://codepad.org/NZbIKUcv
すごく汚いです。ごめんなさい。
0288デフォルトの名無しさん
2009/12/20(日) 01:11:49ピンクサーモン色できれいに着色されてます。
0289デフォルトの名無しさん
2009/12/20(日) 01:24:120290デフォルトの名無しさん
2009/12/20(日) 08:30:12の所、% 11 ; でしょうか。
0291デフォルトの名無しさん
2009/12/20(日) 11:00:06#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{
int a, hit, miss = 0, x=0;
srand((unsigned)time(NULL));
hit = rand() % 11; printf("%d%c", hit, 012);
printf("0〜10までの数を入力して下さい。"); scanf("%d", &a);
do {
if(hit > a)
printf("もっと大きい数です。\n", ++miss);
else if(hit < a)
printf("もっと小さい数です。\n", ++miss);
else if(hit == a)
miss = 4;
if(miss == 4)
printf("大正解です。\n");
else if(miss == 1){
printf("あと2回挑戦することができます。\n"); scanf("%d", &a); }
else if(miss == 2){
printf("あと1回挑戦することができます。\n"); scanf("%d", &a); }
else if(miss == 3)
printf("あと0回挑戦することができます。\n残念!!不正解でした。\n");
} while(miss < 3);
return 0;
}
0293デフォルトの名無しさん
2009/12/20(日) 11:52:04発展課題3
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, n, ans;
srand(time(NULL));
ans = rand() / (RAND_MAX + 1.0) * 11;
printf("0〜10までの数を入力して下さい。");
for(i=3; i>0; ) {
scanf("%d", &n);
if(n > ans) printf("もっと小さい数です。\n");
else if(n < ans) printf("もっと大きい数です。\n");
else return printf("大正解です。\n");
printf("あと%d回挑戦することができます。\n", --i);
}
printf("残念!!不正解でした。\n");
return 0;
}
0294デフォルトの名無しさん
2009/12/20(日) 13:08:55発展課題2
#include <stdio.h>
int main(){
int i,j;
for(i=1;i<=9;i++) {
for(j=1;j<=9;j++) {
printf("%d%c",i*j,j==9?'\n':' ');
}
}
return 0;
}
http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/34
codepadは、scanf()などの入力関数をスキップするみたい。
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10295.txt
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: visual studio 2008
[3.3] 言語: C
[4] 期限: [2009年12月23日21:59まで]
[5] その他の制限:特にありません。
お願いします。
0297デフォルトの名無しさん
2009/12/20(日) 18:21:18[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10296.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 火曜日まで
[5] その他の制限:ポインタまで習っています
お願いします。
0298デフォルトの名無しさん
2009/12/20(日) 18:33:45int i;
for(i=0; i<n; i++) printf("%d ", a[i]);
putchar('\n');
すみません、printfだけで出来ると先生が言っていたので・・・
どなたかもう一度お願いします。
0300デフォルトの名無しさん
2009/12/20(日) 18:53:52そんなほんの少しのことくらい自分で考えないのかw
0301デフォルトの名無しさん
2009/12/20(日) 18:59:18もちろん自分で考えた上でここに書いてます。
一人で考えても答えが全然出ないなら誰かに頼るしかないです・・・
0303デフォルトの名無しさん
2009/12/20(日) 19:03:22キリッ
0304デフォルトの名無しさん
2009/12/20(日) 19:07:03こういうのって
printf("\n");
じゃいけないの?
0305デフォルトの名無しさん
2009/12/20(日) 19:17:44ありがとうございました。
他に協力して下さった皆さんもありがとうございました。キリッ
0307デフォルトの名無しさん
2009/12/20(日) 21:26:080308デフォルトの名無しさん
2009/12/20(日) 22:13:40>>216で質問した者です。
fview、catfilesそれぞれのプログラムのポイントも教えていただけないでしょうか。
2度手間になってしまい申し訳ないのですが、よろしくお願いします。
0309デフォルトの名無しさん
2009/12/20(日) 22:39:01[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10297.txt
[3] 環境
[3.1] OS:linux (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2009年12月21日 16:00
[5] その他の制限: 特になし
0310デフォルトの名無しさん
2009/12/20(日) 22:47:25[2] 問題文(含コード&リンク):
課題 関数(再帰)最大公約数
キーボードから自然数を2つ入力し、それらの最大公約数と最小公倍数を表示するプログラムを作成しなさい。
ただし、最大公約数の計算は関数(再帰)を用いること。最大公約数を計算する関数の名前はgcdとすること。
実行結果
自然数を2つ入力して下さい.
3243 6578
3243と6578の最大公約数は23,最小公倍数は 927498 です。
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C言語
[4] 期限:明日7:30までに
[5] その他の制限:
よろしくお願いします!
0311デフォルトの名無しさん
2009/12/20(日) 23:33:14スキップしてないよ 実行してる。ungetc()で文字押し入れてテストしてみた。
http://codepad.org/BHPUeJPH
0312デフォルトの名無しさん
2009/12/20(日) 23:34:07がんばれ
0313デフォルトの名無しさん
2009/12/20(日) 23:38:41明日の今頃の時間にここにくればコード貼ってやってもいい
0314デフォルトの名無しさん
2009/12/20(日) 23:51:34┏┛┗┓┗━┓┃┗━┛┃┃┃┏┓┃┃┏┓┃ .| i.|:.:.;イ:.:.i:.:| |i ィ ∨ ゝ リ|/`イ:.:.:ト:.Y、. ┃┃┃┃┃┃
┗┓┏┛ ┃┃┏━┓┃┃┃┗┛┃┗┛┃┃┏━| i,|:.:.| i:.:.|i:.:|ィェェク イミェュャ.レ:.:.i;,:.:) ヽ..━━┓┃┃┃┃┃┃
┏┛┗┓┏┓┃┃┗━┛┃┃┃┏┓┃ ┃┃┃ .i|.´i:.| i:.:.iヽi /// ヽ /// /:.:./、) \ ┃┃┃┃┃┃┃
┗┓┏┛┃┗┛┃ ┏┛┃┗┛┃┃ ┃┃┗ /リ i:.i .ト:.:i:.ゝ マ⌒ 、 /イ:.:.ifj´\ i. ヘ....┛┗┛┗┛┗┛
┃┃ ┗┓┏┛┏━┛┏┛ ┃┃ ┏┛┃ `ー <i\|\ヽ ヽ_ノ /:.:.:/Y ヽ. \ ,/.. ┏┓┏┓┏┓
┗┛ ┗┛ ┗━━┛ ┗┛ ┗━┛ ∨.|:.:.:`|`ゝ、 ,./i:.:.:/ .i| \ /.... ┗┛┗┛┗┛
0315デフォルトの名無しさん
2009/12/20(日) 23:52:220316デフォルトの名無しさん
2009/12/20(日) 23:55:07ここに何かヒントが書いてあったぞ
http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/EuclidRec.html
0318デフォルトの名無しさん
2009/12/21(月) 00:01:390319デフォルトの名無しさん
2009/12/21(月) 00:09:320320デフォルトの名無しさん
2009/12/21(月) 00:18:39んー、なるほど、それには気がつかなかったなあ。
0321デフォルトの名無しさん
2009/12/21(月) 00:19:58教育的な配慮は一切しない、自分が楽しみさえすればいいだけの、悪意に満ちたスレですから。
0322デフォルトの名無しさん
2009/12/21(月) 00:27:170323デフォルトの名無しさん
2009/12/21(月) 00:31:310324デフォルトの名無しさん
2009/12/21(月) 00:39:11自分でどこまで考えたか、調べたかも書くのが礼儀じゃないかな・・
0325デフォルトの名無しさん
2009/12/21(月) 00:43:28ダメぽコード書こうが環境依存していようが頼る奴が悪い。
0326デフォルトの名無しさん
2009/12/21(月) 00:44:410327デフォルトの名無しさん
2009/12/21(月) 00:48:28第一あんまし見てて気持ちいいもんじゃないな。「わかる?」「わかんな〜いw」的な
「やりとり」
コード貼るだけで、依拠理論に関しては一切ノーコメント。コードと結果で
判断してもらうというのがこのスレ的な筋だろ?
それじゃ教育の妨害になるってことも一つの考え。(てゆーかこのスレ
の依存構造に抵触)てことは、早漏防止メカニズム設計が正しい方向って
ことだろな
0328デフォルトの名無しさん
2009/12/21(月) 00:51:33気に入らない質問やその他の発言はスルーの方向で。
0329デフォルトの名無しさん
2009/12/21(月) 01:20:250330デフォルトの名無しさん
2009/12/21(月) 05:20:02[2] 問題文(含コード&リンク):
キーボードから数を入力として受け取り、その個数分のint型データをキーボードから受け取り、それらの最大値を画面に出力するプログラムをcallocを用いて書け。
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c
[4] 期限: 無期限
0331デフォルトの名無しさん
2009/12/21(月) 06:54:07出題者に申し訳ないけど calloc() 要らねー
0332デフォルトの名無しさん
2009/12/21(月) 08:17:47#include <stdlib.h> // 追加1行目
#include <malloc.h> // 追加2行目
http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/35
0334デフォルトの名無しさん
2009/12/21(月) 09:24:50これは大変興味深い課題と思います
なぜなら、まず、ユーザは数値以外を入力する可能性があるため、その処理をうまくできるかが試されるから
次にint型データ(?)で表現可能な値を超えた場合でも正常に動くかが試されるから
次に最大値を如何にクールに求めるアルゴリズムを見つけるかが試されるから
最後にcalloc()とその周辺知識について試されるから
0335デフォルトの名無しさん
2009/12/21(月) 09:48:45そんな事を言うと誰もしなくなっちゃうだろw
0336デフォルトの名無しさん
2009/12/21(月) 10:11:01#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int *p, i, n, max;
scanf("%d", &n);
p = calloc(n, sizeof(int));
for(i=0; i<n; i++) scanf("%d", p + i);
max = p[0];
for(i=1; i<n; i++) if(p[i] > max) max = p[i];
printf("%d\n", max);
free(p);
return 0;
}
0337デフォルトの名無しさん
2009/12/21(月) 10:44:02>>334
0338デフォルトの名無しさん
2009/12/21(月) 11:29:060339デフォルトの名無しさん
2009/12/21(月) 12:10:550340デフォルトの名無しさん
2009/12/21(月) 12:50:24私もこの再三繰り返される課題をhttp://pc12.2ch.net/test/read.cgi/tech/1257150194/
で取り上げようか、それとも見送ろうか、と迷ったのですが、
「キーボードから数を入力として受け取り」という部分が面白いと考えて、
使わせていただきました。数といった場合、整数とは限らないと思うので。
0341デフォルトの名無しさん
2009/12/21(月) 13:38:280342デフォルトの名無しさん
2009/12/21(月) 13:40:130343デフォルトの名無しさん
2009/12/21(月) 15:42:50[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10298.cpp
これでv[0]を0.0に固定したいのですが115行目においてみたのですが違うみたいなのでやり方教えてください
お願いします
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: g++
[3.3] 言語: C++
[4] 期限: 今日中
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0344デフォルトの名無しさん
2009/12/21(月) 18:11:40能力を示せ
0345デフォルトの名無しさん
2009/12/21(月) 18:38:16struct vec3 {
double x, y, z;
vec3() : x(0), y(0), z(0) {}
vec3(double x, double y, double z) : x(x), y(y), z(z) {}
vec3 &operator+=(const vec3 &v) {
x += v.x;y += v.y;z += v.z;return *this;
}
vec3 &operator-=(const vec3 &v) {
x -= v.x;y -= v.y;z -= v.z;return *this;
}
vec3 &operator*=(const vec3 &v) {
x *= v.x;y *= v.y;z *= v.z;return *this;
}
vec3 operator-() {
return vec3(-x, -y, -z);
}
vec3 operator+(const vec3 &v) {
return vec3(x + v.x, y + v.y, z + v.z);
}
vec3 operator-(const vec3 &v) {
return vec3(x - v.x, y - v.y, z - v.z);
}
vec3 operator*(const vec3 &v) {
return vec3(x * v.x, y * v.y, z * v.z);
}
vec3 operator*(const double &d) {
return vec3(x * d, y * d, z * d);
}
};
0346デフォルトの名無しさん
2009/12/21(月) 18:39:13return vec3(d * v.x, d * v.y, d * v.z);
}
struct Particle {
vec3 position, velocity;
};
void position(std::vector<Particle> *ps) { // ?
vec3 vp05, vm05, A(3.0,3.0,3.0);
for (std::vector<Particle>::iterator p = ps->begin(); p != ps->end(); p++) {
p[0].velocity.x = 0.0;
double dt = 0.01;
vp05 = vm05 + A;
p->position += dt * vp05;
p->velocity += vm05 + p->position + A * 0.5 * dt;
vp05 = vm05;
std::cout << std::fixed << std::setprecision(5)
<< "r " << p->position.x
<< " v " << p->velocity.x
<< " v[0]" << p[0].velocity.x<<std::endl;
}
}
0347デフォルトの名無しさん
2009/12/21(月) 18:41:47std::vector<Particle> *particles = new std::vector<Particle>();
{
double k = 1.0 / 20; // ?
for (double i = 0.5; i >= -0.5-k;i -= k) { // ?
Particle p;
p.position.x = i;
particles->push_back(p);
}
}
for(int i = 0; i < 5; i++) {
position(particles);
std::cout << " " << std::endl;
}
delete particles;
return 0;
}
>>343
> これでv[0]を0.0に固定したいのですが115行目においてみたのですが
> 違うみたいなのでやり方教えてくださいお願いします
うーん。
0348デフォルトの名無しさん
2009/12/21(月) 18:55:26ありがとうございます
参考にしてやってみます
0349デフォルトの名無しさん
2009/12/21(月) 19:06:34すいません。見やすくしてもらっただけのようでした。
0350デフォルトの名無しさん
2009/12/21(月) 19:15:20もしも、
> これでv[0]を0.0に固定したいのですが
のv[0]が、std::vector<Particle> *particlesの一番目の要素のvelocityのつもりだったら。
p[0].velocity.x = 0.0;
じゃなくて、
ps->at(0).velocity.x = 0.0;
と書くことになる。
0351デフォルトの名無しさん
2009/12/21(月) 19:31:44そういうことです
ありがとうございます
035210
2009/12/21(月) 21:58:31>>145
>>144
ありがとうございました。>>203さんのを
参考にさせて頂いた上で多少手直し(英語→日本語)
したのをだしました。助かりました。
0353 ◆PcWwLjlc5M
2009/12/22(火) 01:01:28[2] 問題文(含コード&リンク):以下の処理はサブ関数で作成する。数値(n)を反転した値を表示せよ。123→321
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:borand bcc55
[3.3] 言語:C
[4] 期限:12月22日 10:00 a.m.
[5]サブ関数まで学習済み
以下のプログラムは私が先生にはじかれたものです。
サブ関数内でprintfを使うなとのことでした。
#include<stdio.h>
int sub1 (int a) { int x;
for(x=0;a!=0;x++) { a=a/10; }
return(x); }
int sub2 (int a,int b) { int v,w,x,y,z;
x=10; y=1;
for(w=0;w!=b;w++) { z=a%x; v=z/y;
printf("%d",v); x=x*10; y=y*10; }
return; }
int main(void) { int m,n;
while(scanf("%d",&n)==1) { m=sub1(n);
printf("反転した結果は"); sub2(n,m);
printf("\n\n"); } return(0); }
何卒、お願いいたします…
0354デフォルトの名無しさん
2009/12/22(火) 01:51:10#include<stdio.h>
int sub1(int a, int b)
{
if(a<=0) return b;
return sub1(a/10, b*10+a%10);
}
int main(void)
{
int m,n;
while(scanf("%d",&n)==1)
{
m=sub1(n, 0);
printf("反転した結果は");
printf("%d\n\n", m);
}
return(0);
}
0355デフォルトの名無しさん
2009/12/22(火) 02:07:36ポインタやらシステムコールやら構造体やら
共用体とかやった後のかなーり後に習ったけどな
0356デフォルトの名無しさん
2009/12/22(火) 02:33:13どーみてもこのばあいの再帰呼び出しは
非効率な割に(初学者以外にも)わかりにくい件に
ついて
0357デフォルトの名無しさん
2009/12/22(火) 02:44:51#include<stdio.h>
int sub1 (int a) {
int x;
for (x=0;a!=0;x++) {
a=a/10;
}
return(x);
}
int sub2 (int a,int b) {
int v,w,x,y,z;
int u; /* 反転した値を入れる */
x=10; y=1; u = 0;
for (w=0;w!=b;w++) {
z=a%x; v=z/y;
u=u*10+v;
x=x*10; y=y*10;
}
return (u);
}
int main(void) {
int m,n,o;
while (scanf("%d",&n)==1) {
m=sub1(n);
printf("反転した結果は");
o=sub2(n,m);
printf("%d\n\n",o);
}
return(0);
}
0358デフォルトの名無しさん
2009/12/22(火) 02:50:31スマートなやり方で良く読めば理にかなってるじゃん
0359デフォルトの名無しさん
2009/12/22(火) 02:59:10>>355 再帰をサブ関数まで習ったというような段階で習うもんかね
あとLispやRubyとかならいいけど、Cの再帰はスタックを消費するから、お薦めはしない。
0360デフォルトの名無しさん
2009/12/22(火) 03:05:26そんなやたらと複雑にする必要性があるか?
#include<stdio.h>
int sub (int a) {
int x=0;
while (a) x=x*10 + a%10, a/=10;
return(x);
}
int main(void) {
int m,n;
while (scanf("%d",&n)==1) {
m=sub(n);
printf("反転した結果は");
printf("%d\n\n",m);
}
return(0);
}
でいいだろ。
>>348
再帰は場合によっては有用だが、関数呼び出しにはどうしてもオーバーヘッドが生まれる。
この場合は桁数が10桁程度しかないから再帰もその程度の回数で済むため速度的な問題は気にならないとは思うけど、ループ構文で済む所をわざわざ再帰にする必要性はないし、そういうことはしないように心掛けた方がいい。
上のsub()関数でも、数百万個の数値データとかに連続して呼び出したら違いが明確になるだろ。
0361デフォルトの名無しさん
2009/12/22(火) 03:08:47いずれにせよ再帰は僅かな変更でも動かなくなるデリケートなものが多いん
で使用は極力控え目に。パブリックな場所では使わないほうが無難
0362デフォルトの名無しさん
2009/12/22(火) 03:18:05問題に即した回答をしているんだから
そういうちゃちゃ入れはかわいそうだし、おかしい
0363デフォルトの名無しさん
2009/12/22(火) 03:22:180364デフォルトの名無しさん
2009/12/22(火) 03:28:230365デフォルトの名無しさん
2009/12/22(火) 03:29:17[2] 問題文(含コード&リンク):マインスイーパーを作ってください。
・縦の列はABC...で、横の列は123...で表示し、座標を繰り返し入力する
・枡の大きさは自由である(難易度ごとに大きさを選べる等要工夫)
・地雷の位置は毎回ランダムであること
・指定(入力)した座標には周囲の地雷の数を表示させる
・地雷のある座標を入力するか、全ての安置を入力することでクリアとする
・その他、工夫等が見られると加点
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C言語
[4] 期限:1月12日 24:00
[5] その他の制限:よく分かりませんが、学習して1年目の範囲でできる事でお願いします。
私があまりプログラミングが上手くないので、加点要素はあまり必要ありません。
もし作っていただけるのであれば、加点要素の無いものと2つ、ソースをもらえるとうれしいです。
0366デフォルトの名無しさん
2009/12/22(火) 03:55:52スレちだとうは思うけど「末尾再帰最適化」
0367デフォルトの名無しさん
2009/12/22(火) 04:07:22この場合はポリシーでもリテラシーでもどっちでもいいだろ
要するに一言多い馬鹿がいるって言いたいわけ
0369デフォルトの名無しさん
2009/12/22(火) 12:30:35質問すればよかったんじゃないかと。
先生が出した問題をそのまま書くだけで
期限さえ余裕があれば、期限迄に回答が出てくるかもよ
というのがこのスレの主旨(つまりC語翻訳サイト)
途中迄やったけど、どこが間違ってるでしょうか?
というのならそのように書くべき(=先生の出した問題
のようにフェイクする)
そしてそのように書かれている場合は、回答者はそれに
即して間違っている箇所だけを回答として指摘する。
それなりの日本語のスキルが無いとこのスレの活用は
難しいんだ。
曖昧な質問に答える回答者は実は微妙にスレの主旨に違
反してたりする。
0370デフォルトの名無しさん
2009/12/22(火) 12:43:31結局お前は質問スレに逝けって言いたいの? それとも何処が間違っているか教えてください>< ってこのスレで聞けって言いたいの?
0371デフォルトの名無しさん
2009/12/22(火) 12:53:09自分がやってみたプログラムが載ってるだけで、特殊な例だとは思えないが。
丸投げではないということでしょ。
0372デフォルトの名無しさん
2009/12/22(火) 12:55:09質問の仕方を変えるか
回答者は、余計なコメントを書かず期限前にスマートな
コードをさくっと出力。
回答者が回答予約を兼ねたプログレスバーを出力すると尚良いかも
例:
375 デフォルトの名無しさん
>>353 お待ち下さい
*--------------
402 375
>>353 お待ち下さい
******---------
409 375
>>353 お待ち下さい
**********-----
412 375
>>353 コード生成に失敗しました。
ってな感じ
0373デフォルトの名無しさん
2009/12/22(火) 13:01:30www
0374デフォルトの名無しさん
2009/12/22(火) 13:38:28>>353 コード生成に成功しています。
再請求すれば貼付けるかうpします。
↑こんな感じのレスが入れば問題解決なんじゃ?
0375デフォルトの名無しさん
2009/12/22(火) 14:00:17nの最大値はなんですか?(VC++2008EEです)
0376デフォルトの名無しさん
2009/12/22(火) 14:01:56char m[n] //mはなんでもいいです
nの最大値はなんですか?(VC++2008EE)
0377デフォルトの名無しさん
2009/12/22(火) 14:02:310378デフォルトの名無しさん
2009/12/22(火) 14:03:350379デフォルトの名無しさん
2009/12/22(火) 14:08:010380デフォルトの名無しさん
2009/12/22(火) 14:19:17***ーーーーーーー
0381デフォルトの名無しさん
2009/12/22(火) 14:32:45ttp://msdn.microsoft.com/en-us/library/5eay31s2.aspx
0x7CFFFFFF(x64でもかよ)
0382デフォルトの名無しさん
2009/12/22(火) 15:25:35つくってみようかなと思いきや、Cかよ…。
頭の中でもうクラス設計し始めてたのに。
0383デフォルトの名無しさん
2009/12/22(火) 15:38:20マインスイーパーはオセロ同様に得られるものが多いから
1度でも自分で作って欲しいところなんだが、スレ的には違うかw
配列だけでゴリゴリやるよりも構造体でハッシュテーブル作って
ランダム数から評価配置していった方が楽。
で、構造体はもう習った?
0384デフォルトの名無しさん
2009/12/22(火) 17:04:540385デフォルトの名無しさん
2009/12/22(火) 17:06:38[2] 問題文
次のクラスを作成しなさい。
クラス名:Value
メンバ変数:なし
メンバ関数:
純粋仮想関数 setValue() (intやfloatなど)なんらかの値をセットする
純粋仮想関数 getValue() 値を取得する
純粋仮想関数 show() 値を表示する
この問題は派生クラス(Intval、Floatval)があり、そちらのコンストラクタで値を設定し、
show()やgetValue()を用いて値を表示するのですが、そこは自分で考えるつもりです。
まずこの基本クラスの宣言が分かりません。
※この時点ではまだテンプレートは習っていません。
[3] 環境
[3.1] OS:Windows XP
[3.2] VS2008
[3.3] 言語: C++
[4] 期限:なし
[5] その他の制限: 特にありません。
0386デフォルトの名無しさん
2009/12/22(火) 17:42:11C++編(言語解説) 第10章 インタフェースクラス
http://www.geocities.jp/ky_webid/cpp/language/010.html
抽象クラス
http://wisdom.sakura.ne.jp/programming/cpp/cpp32.html
class Value
{
public:
virtual void setValue(int) = 0;
virtual int getValue() = 0;
virtual void setValue(float) = 0;
virtual float getValue() = 0;
virtual void show() = 0;
};
class Intval : public Value
{
};
class Floatval : public Value
{
};
あとは埋めてな。
関数を「一つずつ作れ」とは書かれてない。同一関数名で型等が違う関数を作れることを忘れないよーに。
0387デフォルトの名無しさん
2009/12/22(火) 18:45:11ttp://codepad.org/PNzrV6Ha
テラ素朴なので加点要素はないと思われます。
せっかく作ったから、おまいら遊んでやってください。
0388デフォルトの名無しさん
2009/12/22(火) 19:11:49[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10300.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年01月07日
[5] その他の制限: 特になし
お願いします
0389デフォルトの名無しさん
2009/12/22(火) 19:17:26とりあえずコンパイルは通ったがセグメンテーション違反でおちた
Debian@gcc 4.3.4
0390デフォルトの名無しさん
2009/12/22(火) 19:42:29報告サンクス。
>>387の実行環境はgcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
今回デバッグした環境はgcc (Debian 4.3.2-1.1) 4.3.2
#include <stdlib.h>
の追加と以下の変更で落ちなくなりました。
srand(time());
↓
srand(time(NULL));
0391デフォルトの名無しさん
2009/12/22(火) 21:37:08Code貼る前に、質問者がまだ居るか、欲しいのかどう
か確かめてから貼って下さい。
質問者は質問したら、最低一日一回は来て
回答してくれてる方が居るか確かめて。
CodePadはこのスレとは無関係だし
外国のサイトなんで使用には注意が必要
0392デフォルトの名無しさん
2009/12/22(火) 21:40:060393デフォルトの名無しさん
2009/12/22(火) 21:47:27*----------
問題文読むのも面倒なのでキャンセルされました
0394デフォルトの名無しさん
2009/12/22(火) 22:08:03もし回答を下さる予定でしたら、お忙しい中更にお手数をおかする
ことになりますが途中一度でも着手済完成予定情報を簡単な図でで
もかまいませんのでお知らせ下さると無視されていないことがわか
って他所の同様なサイトに聞き回らなくても済みますので
助かると思います。
0395デフォルトの名無しさん
2009/12/22(火) 22:35:280396デフォルトの名無しさん
2009/12/22(火) 23:04:25[1] 授業単元:自主勉
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10301.cpp
110行目付近でvp、vmがでてきますが、このままでは vm=vp としたときに
1つ前のコンテナのvpがvmに入ってしまいますが、1つ前のコンテナのvpではなく、
同じコンテナのループの一つ前のvpを入れるにはどうしたらいいですか?
たぶん大幅に改変しなくてはいけないような気がしますがよろしくお願いします。
できればイテレータは使ったままでお願いします。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: g++
[3.3] 言語:C++
[4] 期限: できれば12・23の朝まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0397デフォルトの名無しさん
2009/12/22(火) 23:22:24#include <stdio.h>
#include <stdlib.h>
int main(void)
{
while(1) {
int *s, i, j, n, m, dif=0, flg=0, a, b;
scanf("%d%d", &n, &m);
if(!(n|m)) break;
s = malloc((n+m) * sizeof(int));
for(i=0; i<n; i++) { scanf("%d", s + i); dif += s[i];}
for(; i<n+m; i++) { scanf("%d", s + i); dif -= s[i]; }
dif = abs(dif);
if(!(dif&1))
for(i=0,dif>>=1; i<n; i++)
for(j=n; j<n+m; j++)
if(abs(s[i]-s[j])==dif && (!flg || s[i]+s[j]<a+b))
a = s[i], b = s[j], flg = 1;
printf("Aさんのカード:");
for(i=0; i<n; i++) printf(" %d", s[i]);
printf("\nBさんのカード:");
for(; i<n+m; i++) printf(" %d", s[i]);
if(flg) printf("\nAさんの%dとBさんの%dを交換\n\n", a, b);
else printf("\n合計を等しくする交換はありません\n\n");
free(s);
}
return 0;
}
0398デフォルトの名無しさん
2009/12/22(火) 23:23:34法律の違う外国のサイトを利用する場合、国内でトラブルに
なって絡んできたりとか、大げさに騒がれたりとかいろい
ろとやっかいなことになる場合があるから絶対にトラブルを
起こさないという覚悟の上で利用するというのは言えてると
思いまつ
0399デフォルトの名無しさん
2009/12/23(水) 00:27:59ありがとうございます
0400デフォルトの名無しさん
2009/12/23(水) 06:44:43[2] 課題:いわゆる15パズル。
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15
のように配置された4x4のパネルを乱数を用いてシャフルする。シャフル時のパネルの動かし方は
ゲーム進行中のパネルを動かすやり方と同じルールが適用される。
パネル座標値(R,C) を入力させ (Rは行 Cは列 それぞれ1から4の値を取る)
対応するパネルが空白でないパネルで空白と隣接する場合はそこに移動させる方法で
ゲームを進行させ、最初の状態に戻った場合(完成)は「暇人さんご苦労様」と出力して終了。
完成するまで入力と移動を繰り返す。無効なマスの指定は「そんなパネル動かせへん」と警告を表示すること。
盤面状況はコンソール出力とし、動かした回数と共に入力の直前に随時、及びゲーム終了前に表示すること。
[3] Linux/gcc 4.0/C
[4] 2010年1月第一週の授業までに提出
[5]stdio.h,stdlib.hのみ使用可能 fgets,sscanf,rand,fprintfの使用を許可 4x4、16マスを仮定するが
一辺の長さを4については#defineで文字列レベルでの変更が出来るようにすること
0401400 ◆3prheF9ilc
2009/12/23(水) 06:47:390402デフォルトの名無しさん
2009/12/23(水) 12:29:26ttp://codepad.org/WfYn8xv2
確認した環境は
gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
0403396
2009/12/23(水) 12:41:020404デフォルトの名無しさん
2009/12/23(水) 12:49:38速い‥‥‥。
0405デフォルトの名無しさん
2009/12/23(水) 17:21:17[2] 課題:覆面算
ttp://www.iba.k.u-tokyo.ac.jp/~iba/C/lesson1.html
osaka + kyoto = tokyo
覆面算を解く。
同じ文字は同じ数字を、違う文字は異なる数字を表す。
先頭の文字が0にならないことに注意する。
[3] 環境
[3.1] OS windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C言語
よろしくお願いします<(_ _)>
0406デフォルトの名無しさん
2009/12/23(水) 17:24:23おーい、リンク先がらみの学生なら、これくらいがんばれ!
0407デフォルトの名無しさん
2009/12/23(水) 17:49:00どこかで聞いた名前だなと思ったら、この人の本持っていた
0408デフォルトの名無しさん
2009/12/23(水) 17:52:00**−−−−−−−− ←プログレスバー
知っています。コード生成に着手しました。
暫く(数日から一両日〜1週間程)お待ち下さい
フリーズしていると思う場合は、CTRL+ALT+DEL
を押してタスクマネージャーを起動し133-405.exeの
CPU使用量が0%の場合はフリーズしていますので
あきらめてください。アプリケーションを強制停止
させるとシステムに不具合が起こる場合もありますんで
ご注意下さい。
0409デフォルトの名無しさん
2009/12/23(水) 17:55:29自習問題は面白いですね。
積と和から2数を知る問題は、かなり昔の「初歩のラジオ」のパズルにありましたね。
0410デフォルトの名無しさん
2009/12/23(水) 18:20:03元の問題は大文字だったから一応そうしといた
先頭の文字のチェックは入れてない、覆面算って答えが一つしかないらしいので
http://codepad.org/6w2OJi1t
0411デフォルトの名無しさん
2009/12/23(水) 18:31:34呼んではならない
と定義されました
ならばC言語の宿題(=問題)は殆どが覆面算めいた
もので、それが重要な本質です。
回答競争みたいな行為はC言語を汚す行為とも
取れます。
0412405
2009/12/23(水) 18:32:53>>405です。とてもお早い回答有難う。
悩んで手がつかない状態だったのでうれしいです!
では勉強のほうに戻ります。失礼しました〜
0413デフォルトの名無しさん
2009/12/23(水) 18:32:550414デフォルトの名無しさん
2009/12/23(水) 18:35:12>>410みたいに最後にまとめて比較するのってどっちがいいんだろ。
0415デフォルトの名無しさん
2009/12/23(水) 18:42:22C言語はもともとそんなにきれいな言語じゃないんで
心配しなくていいって
0418デフォルトの名無しさん
2009/12/23(水) 21:56:54#include <stdio.h>
void store(char *str, char *p, int *cnt){
int i, j;
for(i=0; str[i]; i++) {
for(j=0; j<*cnt; j++) if(str[i]==p[j]) break;
if(j==*cnt) p[(*cnt)++] = str[i];}}
int conv(char *str, char *p, int *n, int *ret){
int i;
for(i=0; *str!=p[i]; i++);
if(!n[i]) return 0;
*ret = n[i];
while(*++str) {
for(i=0; *str!=p[i]; i++);
*ret = *ret * 10 + n[i];}
return 1;}
void mask(char *a, char *b, char *c, char *p, int *n, int pos, int cnt){
int i, j, an, bn, cn;
if(pos == cnt) {
if(!conv(a,p,n,&an)||!conv(b,p,n,&bn)||!conv(c,p,n,&cn)) return;
if(an + bn == cn) printf("%d + %d = %d\n", an, bn, cn);
return;}
for(i=0; i<10; i++) {
for(j=0; j<pos; j++) if(n[j]==i) break;
if(j==pos) { n[pos] = i; mask(a, b, c, p, n, pos+1, cnt);}}}
int main(void){
int n[10], cnt = 0;
char a[16], b[16], c[16], p[10];
scanf("%s%s%s", a, b, c);
store(a, p, &cnt);store(b, p, &cnt);store(c, p, &cnt);
mask(a, b, c, p, n, 0, cnt);
return 0;}
0419デフォルトの名無しさん
2009/12/23(水) 22:08:110420デフォルトの名無しさん
2009/12/23(水) 22:42:39素晴らしい!!
0421デフォルトの名無しさん
2009/12/24(木) 02:01:23[2] 問題文(含コード&リンク):
問1 辺の和が3以上1000以下の直角三角形の個数を求めよ。
各辺の長さは自然数で、ある直角三角形の各辺を定数倍したものもカウントすることとする。
問2 問1 で検索した直角三角形のうち、最も面積の大きい直角三角形の3辺の長さ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名:gcc
[3.3] 言語:C
[4] 期限:2009年12月25日
[5] その他の制限:forとifを使って作る
よろしくお願いします。
0422デフォルトの名無しさん
2009/12/24(木) 02:52:29最初のprint文は実行経過の確認用なので、不要ならコメントにされたし。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10303.txt
0423デフォルトの名無しさん
2009/12/24(木) 03:21:440424デフォルトの名無しさん
2009/12/24(木) 03:54:53あげるべきじゃないかと..
exactな値を求める問題とかだと間違ってたりすると匿名とは
言えども結構恥ずかしいからな
0425デフォルトの名無しさん
2009/12/24(木) 06:27:380426デフォルトの名無しさん
2009/12/24(木) 07:36:090427デフォルトの名無しさん
2009/12/24(木) 08:08:49#include <stdio.h>
int main(void)
{
int i, j, k, cnt = 0, max_area = 0;
for(i=1; i<1000; i++) {
for(j=1; j<i; j++) {
for(k=i-j+1; k<=j && i+j+k<=1000; k++) {
if(i*i==j*j+k*k) {
cnt++;
if(max_area<j*k) max_area = j*k;
}
}
}
}
printf("個数:%d\n最大面積:%.1f\n", cnt, max_area / 2.0);
return 0;
}
0428デフォルトの名無しさん
2009/12/24(木) 09:02:410429デフォルトの名無しさん
2009/12/24(木) 09:06:31学校が休みに入ったんだと感じる一瞬だ。
0430デフォルトの名無しさん
2009/12/24(木) 10:43:25面積じゃなくて3辺の長さか。
#include <stdio.h>
int main(void)
{
int i, j, k, cnt = 0, a, b, c, max_area = 0;
for(i=1; i<1000; i++) {
for(j=1; j<i; j++) {
for(k=i-j+1; k<=j && i+j+k<=1000; k++) {
if(i*i==j*j+k*k) {
cnt++;
if(max_area<j*k) {
max_area = j*k;
a=i,b=j,c=k;
}}}}}
printf("個数:%d\n最大面積の三辺:%.d %d %d\n", cnt, a, b, c);
return 0;
}
0431デフォルトの名無しさん
2009/12/24(木) 21:38:02[2] 問題文(含コード&リンク):
20000〜40000までの自然数のうち、数字の9を2個含む素数の個数を調べよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名:gcc
[3.3] 言語:C
[4] 期限:2009年12月25日
お願いします
0432デフォルトの名無しさん
2009/12/24(木) 22:15:180433デフォルトの名無しさん
2009/12/24(木) 22:19:340435デフォルトの名無しさん
2009/12/24(木) 22:25:22授業単元:プログラミング�T
言語:C
期限:無し
簡単なものですが自分にはやり方が分りません。
お願いします
0436デフォルトの名無しさん
2009/12/24(木) 22:28:10#include <stdio.h>
int main(void)
{
int i, j, k, cnt = 0;
for(i=20000; i<=40000; i++) {
if(i%2==0) continue;
for(j=3; j*j<=i; j+=2) if(i%j==0) goto label;
for(j=i,k=0; j; j/=10) if(j%10==9) k++;
if(k==2) cnt++;
label:
}
printf("%d\n", cnt);
return 0;
}
0437434
2009/12/24(木) 22:30:56個数でしたね。訂正します。
http://codepad.org/kQ0yzVlB
0438431
2009/12/24(木) 22:35:49助かりました
0439デフォルトの名無しさん
2009/12/25(金) 00:06:22[2] 問題文(含コード&リンク):
三角形の「底辺」「高さ」「面積」を表現するために,整数型の2つの変数teihenとtakasaと浮動小数点型(double型)の1つの変数mensekiの,計3つの変数をメンバとしてもつ構造体型sankakuを宣言しよう.
main関数の中で,構造体変数triangle1とtriangle2が次のように定義されているとする.
struct sankaku triangle1 = {2, 8, 0.0};
struct sankaku triangle2 = {3, 6, 0.0};
このとき,以下の式で三角形の面積を計算し,それぞれのメンバ変数mensekiに求めた値を格納しよう.(整数同士の計算結果は必ず整数型の値になってしまうため,「2.0」という小数点付の数で割る計算をすること.そうすると,小数点以下の値まで求められる)
(面積) = (底辺) × (高さ) / 2.0
さらに,格納されたそれぞれの面積の値(triangle1のmensekiとtriangle2のmenseki)を表示するプログラムを作成せよ.(表示の際にはdouble型の値を表示することになるので,printfの" "の中の書き方に注意すること)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2009年12月30日
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名:VS2005
[3.3] 言語:C
//
#if defined(_MBCS) // _UNICODE
#undef _MBCS
#define _UNICODE
#define UNICODE
#endif
#include <stdio.h>
#include <string.h>
#include <tchar.h>
#include <locale.h>
int main(void){
TCHAR m1[80]=_T("日本"), m2[80]=_T("東京都"), m3[80], m4[80];
int mojisu;
setlocale(LC_ALL, "");
_tcscat_s(m1, 80, m2);
mojisu = (int)_tcslen(m1);
_fgetts(m3, sizeof(m3), stdin);
m3[_tcslen(m3)-1] = '\0';
_tcscpy_s(m4, 80, m3);
_tprintf(_T("m1=%s\nmojisu=%d\nm3=%s\nm4=%s\n"), m1, mojisu, m3, m4);
return 0;
}
0441デフォルトの名無しさん
2009/12/25(金) 02:46:06#include <stdio.h>
/* 構造体 */
struct sankaku
{
int teihen;
int takasa;
double menseki;
};
int main(void) {
/* 定義 */
struct sankaku triangle1 = {2, 8, 0.0};
struct sankaku triangle2 = {3, 6, 0.0};
/* 三角形の面積を計算 */
triangle1.menseki = triangle1.teihen * triangle1.takasa / 2.0;
triangle2.menseki = triangle2.teihen * triangle2.takasa / 2.0;
/* 格納された面積の値を表示 */
printf("triangle1のmenseki=%f\n", triangle1.menseki);
printf("triangle2のmenseki=%f\n", triangle2.menseki);
return 0;
}
0442デフォルトの名無しさん
2009/12/25(金) 10:21:09[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10305.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: emacsで書いて、k-termでコンパイル。
[3.3] 言語: C++
[4] 期限: 今日までです!
すみません。今日締切なので、プログラミング得意な方、よろしくお願いいたします。
急いでいます。どうぞよろしくお願いいたします。
0443デフォルトの名無しさん
2009/12/25(金) 10:29:31問題。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10306.txt
0444デフォルトの名無しさん
2009/12/25(金) 10:42:160445デフォルトの名無しさん
2009/12/25(金) 12:55:010446デフォルトの名無しさん
2009/12/25(金) 12:56:180447デフォルトの名無しさん
2009/12/25(金) 13:23:44今学校にいて、下の画像データが手元にないので、少し手直ししたデータをUPします。
わかりにくいと思いますが、大体でいいんでどうかよろしくお願いいたします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10307.txt
0448デフォルトの名無しさん
2009/12/25(金) 14:31:51#include <iostream>
int main() {
int size;
std::cout << "データの数は?"; std::cin >> size;
int *a = new int[size];
for (int i = 0; i < size; i++) {
std::cout << i + 1 << "番目のデータを人力してください:";
std::cin >> a[i];
}
int sum = 0;
for (int i = 0; i < size; i++) {
sum += a[i];
}
std::cout << "和=" << sum << std::endl;
delete [] a;
return 0;
}
#include <iostream>
void print(char *name) {
std::cout << std::string(name).length() << " : " << name << std::endl;
}
void print_all(char **names, int size) { // ポインタのボインタを用いる
for (int i = 0; i < size; i++) print(names[i]);
}
int main() {
char *names[] = {"izumi", "Kanto", "Kudo", "Sato", "Sugawala", "Matuda", "Wada"};
print_all(names, sizeof(names) / sizeof(names[0]));
return 0;
}
0449デフォルトの名無しさん
2009/12/25(金) 14:33:03#include <iostream>
int main() {
char *str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *str2 = new char[sizeof(char) * (strlen(str1) + 1)];
char *p = str1 + strlen(str1) - 1, *q = str2; // ポインタを2個用いて
for (; str1 <= p; p--, q++) *q = *p;
*q = '\0';
std::cout << str2 << std::endl;
delete [] str2;
return 0;
}
#include <iostream>int main() {
int nhito, nkamoku;
std::cout << "クラスの人数は?"; std::cin >> nhito;
std::cout << "科目の数は?"; std::cin >> nkamoku;
int **table = new int*[nhito];
for (int i = 0; i < nhito; i++) {
table[i] = new int[nkamoku];
std::cout << i + 1 << "番目のの学生" << std::endl;
for (int j = 0; j < nkamoku; j++) std::cin >> table[i][j];
}
std::cout << "各科目の和は以下の通りです" << std::endl;
for (int j = 0; j < nkamoku; j++) {
int sum = 0;
for (int i = 0; i < nhito; i++) {
sum += table[i][j];
}
std::cout << sum << std::endl;
}
return 0;
}
0450デフォルトの名無しさん
2009/12/25(金) 14:35:53ありがとうございます。
大変助かりました。
0451デフォルトの名無しさん
2009/12/25(金) 14:45:31#if を使ってどう書けばいいでしょう?
0452デフォルトの名無しさん
2009/12/25(金) 14:47:05?の型ってなに?
0453デフォルトの名無しさん
2009/12/25(金) 14:49:11任意の型です、例えば
typedef unsigned char BYTE
#if ? BYTE
BYTEの型が未定義なら〜
このような感じで
#ifdef だと #define のしか対象にならなくて
0454デフォルトの名無しさん
2009/12/25(金) 14:55:590455デフォルトの名無しさん
2009/12/25(金) 15:03:49#if 〜 だと typedef の型定義は検出出来ないと思うけど
0456デフォルトの名無しさん
2009/12/25(金) 15:07:38typedefを宣言しているヘッダファイルをインクルードしているか否かで判断したらいいかと思います
0457デフォルトの名無しさん
2009/12/25(金) 20:12:14ktermを開いて、gcc -o 実行形式ファイル名
を打って、./a.out<return>と入力するとコンパイルされて作成された実行可能形式プログラムが実行されるやつでした。
どうかもう一度上記の方法でできるプログラミング組める方よろしくお願いします。
あらためて、
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10305.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: emacsで書いて、k-termでコンパイル。
[4] 期限: 今日までです!
0458デフォルトの名無しさん
2009/12/25(金) 20:35:120459デフォルトの名無しさん
2009/12/25(金) 20:43:29#include <stdio.h>
#include <stdlib.h>
int main(void){
int *num,sum,n,i;
sum=0;
printf("データの数は\?");
scanf("%d",&n);
num=(int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++){
printf("%d番目のデータを人力してください:",i+1);
scanf("%d",num);
sum+=(*num);
num++;
}
printf("和=%d",sum);
free(num);
return 0;
}
0460デフォルトの名無しさん
2009/12/25(金) 22:39:020461デフォルトの名無しさん
2009/12/25(金) 22:47:02459 じゃないが,なるべく変えないように修正してみた。
#include <stdio.h>
#include <stdlib.h>
int main(void){
int *num,sum,n,i;
sum=0;
printf("データの数は\?");
scanf("%d",&n);
num=(int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++){
printf("%d番目のデータを人力してください:",i+1);
scanf("%d",&num[i]);
sum+=num[i];
}
printf("和=%d\n",sum);
free(num);
return 0;
}
0462デフォルトの名無しさん
2009/12/25(金) 22:48:300463459
2009/12/25(金) 22:50:38おー、そういう書き方もありましたな>ポインタ
完全に忘却しておりました(;・∀・)
ポインタを使う場合、どっちの方が良いんでしょうか?
0464デフォルトの名無しさん
2009/12/25(金) 23:03:122:問題文
元金、単利と複利の利率に対して、次のものを求めるプログラムを作成しなさい。
30年後の残高。
30年以内に複利の残高は単利の残高を上回るか。
上回るならば何年後か。
3:環境
よくわからないのですが、マックのXcodeで行ってます。
4:期限
できれば12月31日までにお願いします。
0465デフォルトの名無しさん
2009/12/25(金) 23:07:06どっちがいいとかじゃなくて、>>459は明らかな間違い
0466デフォルトの名無しさん
2009/12/25(金) 23:12:09448さんがやったのをCにしてみました。
演習3
#include <stdio.h>
#include <string.h>
void print(char *name) {
printf("%d : %s\n", strlen(name), name);
}
void print_all(char **names, int size) { // ポインタのボインタを用いる
int i;
for (i = 0; i < size; i++) print(names[i]);
}
int main(void) {
char *names[] = {"izumi", "Kanto", "Kudo", "Sato", "Sugawala", "Matuda", "Wada"};
print_all(names, sizeof(names) / sizeof(names[0]));
return 0;
}
0467デフォルトの名無しさん
2009/12/25(金) 23:14:51続いて演習4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *str2 = NULL;
str2 = (char *)malloc(sizeof(char) * (strlen(str1) + 1));
char *p = str1 + strlen(str1) - 1, *q = str2; // ポインタを2個用いて
for (; str1 <= p; p--, q++) *q = *p;
*q = '\0';
printf("%s\n", str2);
free(str2);
return 0;
}
0468デフォルトの名無しさん
2009/12/25(金) 23:16:00演習5。連投すまんでした。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int nhito, nkamoku;
printf("クラスの人数は? "); scanf("%d", &nhito);
printf("科目の数は? "); scanf("%d", &nkamoku);
int **table = malloc(sizeof(int *) * nhito);
int i, j, sum = 0;
for (i = 0; i < nhito; i++) {
table[i] = malloc(sizeof(int) * nkamoku);
printf("%d番目の学生\n", i + 1);
for (j = 0; j < nkamoku; j++) {
scanf("%d", &table[i][j]);
}
}
printf("各科目の和は以下の通りです\n");
for (j = 0; j < nkamoku; j++) {
sum = 0;
for (i = 0; i < nhito; i++) {
sum += table[i][j];
}
printf("%d\n", sum);
}
for (i = 0; i < nhito; i++) { free(table[i]); }
free(table);
return 0;
}
0469デフォルトの名無しさん
2009/12/25(金) 23:20:37(´・ω・`)
大学4年間、それで通してきて誰にも指摘されなかった・・・
0470デフォルトの名無しさん
2009/12/25(金) 23:25:52#include <stdio.h>
#include <stdlib.h>
int main(void){
int *num, sum=0, n, i;
printf("データの数は?"); scanf("%d", &n);
num = (int *)malloc(sizeof(int)*n);
for(i=0; i<n; i++){
printf("%d番目のデータを人力してください:", i+1);
scanf("%d", num+i);
sum += *(num+i);
}
printf("和=%d", sum);
free(num);
return 0;
}
0471デフォルトの名無しさん
2009/12/25(金) 23:27:090472デフォルトの名無しさん
2009/12/25(金) 23:32:17#include <stdio.h>
#include <stdlib.h>
int main(void){
int *num,sum,n,i,*tmp;
sum=0;
printf("データの数は\?");
scanf("%d",&n);
tmp=num=(int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++){
printf("%d番目のデータを人力してください:",i+1);
scanf("%d",num);
sum+=(*num);
num++;
}
printf("和=%d",sum);
free(tmp);
return 0;
}
0473デフォルトの名無しさん
2009/12/25(金) 23:32:55free するアドレスが間違ってるからセグメンテーションフォルトで落ちるだけの話
malloc で貰ったアドレスは free するまで大事にとっておいて、コピーを弄れば問題なし
0474デフォルトの名無しさん
2009/12/25(金) 23:34:39ありがとうございます。
そういうことだったんですね。
0475デフォルトの名無しさん
2009/12/26(土) 03:14:150476デフォルトの名無しさん
2009/12/26(土) 05:25:570477デフォルトの名無しさん
2009/12/26(土) 07:16:21http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/36
0479デフォルトの名無しさん
2009/12/26(土) 18:07:020480デフォルトの名無しさん
2009/12/26(土) 21:49:19まさかつられたのか
0481デフォルトの名無しさん
2009/12/26(土) 22:19:26「C/C++」っていっしょくたに扱うことがあるから、このスレに宿題投げるような「単位必要だから仕方なく講義取ってます」って人は区別ついてなくても不思議はない気がするな。
教員がまともに説明してないのか授業をまともに聞いていないのか知らんがコンパイラをK-termとか言うぐらいだし
0482デフォルトの名無しさん
2009/12/26(土) 23:14:33emacsでコンパイルできない…
0483デフォルトの名無しさん
2009/12/27(日) 07:59:25だれ?
0484デフォルトの名無しさん
2009/12/27(日) 13:16:52本でてるから買って読め。
0485デフォルトの名無しさん
2009/12/27(日) 14:07:10C++ で C 風に書くことも出来ますし。
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10312.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2009年12月28日23:30まで
[5] その他の制限:特になし
0487デフォルトの名無しさん
2009/12/28(月) 01:14:50[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10311.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年01月07日
[5] その他の制限: 特にありませんが、アルゴリズムを記述しなければならないので、できるだけ簡単にお願いします。
主に授業で扱った内容は、関数、条件分岐、繰り返し文、配列などです。
0488デフォルトの名無しさん
2009/12/28(月) 01:55:200489デフォルトの名無しさん
2009/12/28(月) 13:17:26画像解析
[2] 問題文(含コード&リンク):
画像を、好きな倍率で大きくしたり小さくしたりするプログラムを作成してください
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
1月7日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0490デフォルトの名無しさん
2009/12/28(月) 14:08:51{
int type;
char [20];
} data_main;
typedef struct
{
int x,y,z;
} vec;
として、
mallloc で 構造体 data_main + vec のサイズ分メモリを確保したとき
void *data = malloc( sizeof(data_main) + sizeof(vec) );
その確保したメモリをそれぞれの構造体サイズ分でポインターへ割り当てしたいのですが
data_main *main_p = // 確保したメモリ(data)から 構造体 data_main のサイズ分を割り当て
vec *vec_p = // 確保したメモリ(data)から構造体 vecのサイズ分を割り当て
ここの処理方法が分かりません
どうすれば良いでしょうか?
0491デフォルトの名無しさん
2009/12/28(月) 14:21:01data_main *main_p = data; // 確保したメモリ(data)から 構造体 data_main のサイズ分を割り当て
vec *vec_p = (vec *)((char *)data + sizeof(data_main));?// 確保したメモリ(data)から構造体 vecのサイズ分を割り当て
data_main *main_p = (data_main *)((char *)data + sizeof(vec)); // 確保したメモリ(data)から 構造体 data_main のサイズ分を割り当て
vec *vec_p = data;?// 確保したメモリ(data)から構造体 vecのサイズ分を割り当て
0492デフォルトの名無しさん
2009/12/28(月) 14:23:27どうしてもまとめて扱う必要があるなら、一つの構造体にするとか。
0493デフォルトの名無しさん
2009/12/28(月) 14:27:48助かりました
>>492
ある事情で確保するメモリに+αの情報を
付けておかないといけなくて
0494デフォルトの名無しさん
2009/12/28(月) 14:38:09動的な型なら >>492 の1つの構造体の中に union が居る ってな感じにしそうだが
0495デフォルトの名無しさん
2009/12/28(月) 14:44:35そんな感じです
冷静に考えてみれば実に簡単な処理でしたね
こんな初歩的な質問に返答してもらえて感謝です
0496デフォルトの名無しさん
2009/12/29(火) 02:46:25[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10313.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C++
[4] 期限:1月1日
[5] その他の制限:
0497デフォルトの名無しさん
2009/12/30(水) 01:05:18[2]次のコードをif ,while ,do while文を用いずに同一の動作をするように書き換えなさい
char * strstr (char *buf, char *sub){
char *bp,*sp;
if (!*sub)return buf;
while (*buf){
bp = buf;sp = sub;
do {
if (!*sp)return buf;
} while (*bp++ == *sp++);
buf += 1;
}
return 0;
}
[3] Windows vista/Visual C++ 2008/C言語
[4] 2010/1/10迄
[5] 同一の動作をすることがわかるように、幾つかの場合について元コードと書き換えコード
に同じパラメータを与えて実行させ結果を比較するmain関数を付けること
よろしくお願いします。
0498デフォルトの名無しさん
2009/12/30(水) 03:32:20ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10314.txt
if文使わないのは難しいねぇ
0499デフォルトの名無しさん
2009/12/30(水) 08:09:31{
char *bp, *sp;
for(bp=buf, sp=sub; *sp && *bp==*sp; bp++, sp++);
return *buf ? *sp ? strstr2(buf+1, sp) : buf : 0;
}
0500デフォルトの名無しさん
2009/12/30(水) 08:17:18{
char *bp, *sp;
for(bp=buf, sp=sub; *sp && *bp==*sp; bp++, sp++);
return *buf ? *sp ? strstr2(buf+1, sub) : buf : 0;
}
だった
0501デフォルトの名無しさん
2009/12/30(水) 09:53:40課題2
main作ってない&動作確認していない&こんなんでいいなら
class Account
{
private: /* 以下追加 */
int number; // 通し番号
static int _number;
};
int Account::_number = 0;
Account(string n, string num, long z, Date op)
name(n), no(num), balance(z), open(op)
{
number = _number;
_number++;
}
0502デフォルトのつっこみさん
2009/12/30(水) 10:46:00識別番号がプライベートなのでmain()で確認できません。
それともGetNumber();を作りますか?
0503デフォルトの名無しさん
2009/12/30(水) 11:03:54public属性にしてもいいし、GetNumber()をつくってもいいんじゃない
0504デフォルトの名無しさん
2009/12/30(水) 11:13:35課題1
>>501同様に動作確認はやってない
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10316.txt
0505504
2009/12/30(水) 11:39:47一応動作確認してみたら、
コピーコンストラクタにバグあった。
String::String(const String& rhs)
{
s = new char[rhs.len+1];
strcpy(s, rhs.s);
len = rhs.len;
}
#include <iostream>
int main()
{
String s1("hoge"), s2(s1);
String s3(s1+"foo");
std::cout << s1 << std::endl;
std::cout << s2 << std::endl;
std::cout << s3 << std::endl;
return 0;
}
# 「+=」と比較演算子のオーバーロードが欲しいなぁ
0506デフォルトの名無しさん
2009/12/30(水) 12:04:46[2] 問題文(含コード&リンク):
勇者が10×10の盤面をキー入力によって移動し、
ある座標(x、x)に勇者が移動したらモンスターと戦闘になり、
勝ち負けを判定するプログラムを作成せよ。
(戦闘や勝ち負け判定は以下リンクのソースを参考に…)
http://web.keio.jp/~young-blood/rpgsource.txt
[3] 環境
[3.1] OS: Linux or Mac
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限:1月4日まで
[5] その他の制限:
勇者が10×10の盤面をキー入力によって移動するプログラムは作成済みなので、
後は勇者が座標(x、x)に移動した場合に戦闘が起こり、
戦闘の勝ち負けを判定する(勝った場合はそのままキー入力を続け、負けた場合はゲームオーバー)
プログラムを作るだけなのですが、
プログラム初心者の私には複雑すぎて何がなんだか…orz
ご存じの方いましたらよろしくお願いいたします
リンクのソースを参考にしていただければ幸いです。
0507デフォルトの名無しさん
2009/12/30(水) 12:34:51コピペミスってないかい?
同じ関数で中身が違うのがあったり、重複が酷い。
0508506
2009/12/30(水) 12:51:21すみません…コピペミスあったかもですorz
再度コピペした参考ソース貼っときます…。
http://web.keio.jp/~young-blood/rpg2.txt
0509デフォルトの名無しさん
2009/12/30(水) 13:13:07※mainの中身はネット上の情報を(ttp://www9.plala.or.jp/sgwr-t/lib/strstr.html)参考にしました。
char *strstr2(char *buf, char *sub) {
int i = 0;
for (; *buf != '\0' && *sub != '\0' && *buf != *sub; buf++) {}
for (i = 0; i < strlen(buf) && buf[i] == sub[i]; i++) {}
return 0 == strlen(sub) || 0 < i && strlen(sub) < strlen(buf) ? buf : 0;
}
int main() {
char s1[] = "abcdefghijklmn"; /* 検索対象文字列 */
char s2[] = "defgh"; /* 一致する場合 */
char s3[] = "xyz"; /* 一致しない場合 */
char s4[] = "abcdefghijklmnopqr"; /* 検索対象文字列より長い場合 */
char s5[] = ""; /* \0 */
printf("一致する場合 : %s\n", strstr(s1, s2));
printf("一致しない場合 : %s\n", strstr(s1, s3));
printf("検索対象文字列より長い場合 : %s\n", strstr(s1, s4));
printf("\\0 : %s\n", strstr(s1, s5));
printf("一致する場合 : %s\n", strstr2(s1, s2));
printf("一致しない場合 : %s\n", strstr2(s1, s3));
printf("検索対象文字列より長い場合 : %s\n", strstr2(s1, s4));
printf("\\0 : %s\n", strstr2(s1, s5));
return 0;
}
0510504
2009/12/30(水) 13:32:55よく見たら、加算演算子で左辺も変更されてるぅぅ。。
//String& operator+(const char* rhs); // 下記に修正
String operator+(const char* rhs) const;
String String::operator+(const char* rhs) const
{
std::string tmp(s); tmp += rhs;
return String(tmp.c_str());
}
0511デフォルトの名無しさん
2009/12/30(水) 14:08:04シンプルだけど、これで八割以上魔王に勝てる。
int power_of_2(int n);
int user_routin(
int level, int life, int maxlife, int attack, int rest_exp, int monster, int exp, int position
) {
int x;
double liferate = (double)life / maxlife;
double risk = 0;
int battle_level = position / 5 + 1;
int battle_life = battle_level * battle_level * 2;
int battle_attack = (power_of_2(battle_level + 1) - 1) / 4;
if (battle_attack > 100) battle_attack /= 2;
if (position == 50) {
x = 1; // 逃げられないので戦う
} else if (liferate < .8) {
x = 3; // ちょっと食らったらすぐ、回復するまで後戻り
} else if (0 < monster) {
battle_life *= monster;
battle_attack *= battle_attack;
risk = (double)battle_attack / life;
x = 0.3 < risk ? 3 : 1; // 危険になったら後戻り
} else {
x = 2; // 勇者だから前進
}
return x;
}
0512デフォルトの名無しさん
2009/12/30(水) 14:31:59for文を使うなんて軟弱な事はせずに解いた
int isprefixof(char*x,char*y){
return *y ? *x == *y ? isprefixof(x+1,y+1) : 0 : 1;
}
char *strstr2 (char *buf, char *sub){
return isprefixof(buf,sub) ? buf : *buf ? strstr2(buf+1,sub) : 0;
}
#include<stdio.h>
int main() {
char s1[] = "abcdefghijklmn"; /* 検索対象文字列 */
char s2[] = "defgh"; /* 一致する場合 */
char s3[] = "xyz"; /* 一致しない場合 */
char s4[] = "abcdefghijklmnopqr"; /* 検索対象文字列より長い場合 */
char s5[] = ""; /* \0 */
printf("一致する場合 : %s\n", strstr2(s1, s2));
printf("一致しない場合 : %s\n", strstr2(s1, s3));
printf("検索対象文字列より長い場合 : %s\n", strstr2(s1, s4));
printf("\\0 : %s\n", strstr2(s1, s5));
printf("一致する場合 : %s\n", strstr2(s1, s2));
printf("一致しない場合 : %s\n", strstr2(s1, s3));
printf("検索対象文字列より長い場合 : %s\n", strstr2(s1, s4));
printf("\\0 : %s\n", strstr2(s1, s5));
return 0;
}
0513512
2009/12/30(水) 14:35:47使うときは>>509さんのmain関数に戻しておいて(あと、#include<string.h>をたしといて)。
0514508
2009/12/30(水) 14:39:37□□□□□
□□□□□
□□☆■□
□□□□□
□□□□□
☆=勇者
■=モンスター
この5×5の盤上を勇者が動き、
モンスターと遭遇するプログラムは作成済みなので、
後は508のソースを参考にしてモンスターと隣合わせになった時に起こる
戦闘と勝ち負け判断のプログラムを作成するだけです。
0515デフォルトの名無しさん
2009/12/30(水) 15:46:17俺も俺も!と思って必死でforなくしてみたけど、
似たようなの、かつ改悪みたいになってしまった。
lispの人で末尾再帰がどうのに拘る人は、
スカッとした書き方を出来たりできるのだろうか。
int enough(char *a, char *b) {
return *a == *b ? enough(a + 1, b + 1) : *b == '\0' ? 1 : 0;
}
char *strstr4(char *buf, char *sub) {
return strlen(buf) < strlen(sub) ? 0 : *sub == '\0' || enough(buf, sub) ? buf : strstr4(buf + 1, sub);
}
0516デフォルトの名無しさん
2009/12/30(水) 15:49:01int enough(char *a, char *b) {
return *a == *b ? enough(a + 1, b + 1) : *b == '\0' ? 1 : 0;
}
char *strstr4(char *buf, char *sub) {
return strlen(buf) < strlen(sub) ? 0 : enough(buf, sub) ? buf : strstr4(buf + 1, sub);
}
0517デフォルトの名無しさん
2009/12/30(水) 16:00:450518デフォルトの名無しさん
2009/12/30(水) 16:48:41char *strstr2(char *buf, char *sub) {
char *t;
return *sub ? *buf ? *buf==*sub && (t=strstr2(buf+1,sub+1)) ? t-1 : strstr2(buf+1,sub) : 0 : buf;
}
0519512
2009/12/30(水) 16:49:35enoughにバグがあるよ。
たとえばa==bのときに無限の彼方に旅立ってしまう。
char* p= "Hoge";
strstr4(hoge,hoge);
あとstrstr4の中でstrlenを呼び出すと計算量がO(N^2)に跳ね上がるから注意
他にも細かい問題があるけど割愛
>>517
うーんwhile文使うなって問題で
for文使うって発想のほうが正直俺としてはひどいと思う。
while(expr)がfor(;expr;)と互換なんだから。
ただ、別関数にしてるのは指摘どおり、正直妥協の産物。
どうしても別関数作らないと奇麗に書けなかったから逃げてしまった。
0520デフォルトの名無しさん
2009/12/30(水) 16:58:130521デフォルトの名無しさん
2009/12/30(水) 17:06:560522デフォルトの名無しさん
2009/12/30(水) 17:08:38おれも最初にそれ思ったw しかし…forも三項演算子も使わないでできるだろうか…。
0523デフォルトの名無しさん
2009/12/30(水) 17:13:360524512
2009/12/30(水) 17:14:36もちろん出来る。
char *strstr2 (char *buf, char *sub){
LABEL1:
char*x = buf,*y = sub;
LABEL2:
switch(*y)case '\0':return buf;
switch(*x++ == *y++)case 1:goto LABEL2;
switch(*buf++)case'\0':return 0;
goto LABEL1;
}
まぁ半分ギャグだけど
0525デフォルトの名無しさん
2009/12/30(水) 17:16:20ばかもん!w
0526デフォルトの名無しさん
2009/12/30(水) 17:18:05switch とか 関数ポインタの配列を使う手があるよ
0527デフォルトの名無しさん
2009/12/30(水) 17:21:02とても美しい解決方法だな。
gotoは使うべきだ。
0528デフォルトの名無しさん
2009/12/30(水) 17:22:090529デフォルトの名無しさん
2009/12/30(水) 18:05:33[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10309.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 12月31日まで
[5] その他の制限:今習ってるプラグラム参考例↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10310.txt
よろしくお願いします。
0530デフォルトの名無しさん
2009/12/30(水) 18:09:07>>441
0531デフォルトの名無しさん
2009/12/30(水) 19:08:50その大学(専門学校?)の将来が不安になってしまうよね。
まぁ別にそいつらが考える力をなくしてくれても全然どうでもいいけど
0532デフォルトの名無しさん
2009/12/30(水) 19:18:520533デフォルトの名無しさん
2009/12/30(水) 21:59:29[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10317.txt
[3] 環境
[3.1] OS:wiindows vista
[3.2] コンパイラ名とバージョン:vs2008
[3.3] 言語:C
[4] 期限: 2010/01/06 14:59まで
[5] その他の制限:変更するのはif(□ != □) の□の部分のみ
お願いします。
0535デフォルトの名無しさん
2009/12/30(水) 22:21:040536デフォルトの名無しさん
2009/12/30(水) 23:11:39[2] 問題文(含コード&リンク):
課題1資料 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10318.txt
課題1 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10319.txt
課題1応用 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10320.txt
課題2 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10321.txt
課題2応用 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10322.txt
課題3 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10323.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VS2008
[3.3] 言語: C++
[4] 期限: 2010年1月17日まで
冬休みということで課題が多いです。お解りになられる方がいましたらよろしくお願いいたします。
0537デフォルトの名無しさん
2009/12/30(水) 23:21:28ありがとうございます。しかし、先生にif(□ != □) の□の部分のみを弄るよう課されているのです。
どうかそれをifの文にして頂けないでしょうか。
0539デフォルトの名無しさん
2009/12/31(木) 00:10:220542デフォルトの名無しさん
2009/12/31(木) 00:38:52printf("%d",a[m]);
if(i != m) printf(" ");
else printf("*");
}
{}で囲めばいい。
0543デフォルトの名無しさん
2009/12/31(木) 00:43:59適当に全部やった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10324.cpp
ありがとうございます。私の課題に時間を割いていただき感謝します。
0545デフォルトの名無しさん
2009/12/31(木) 14:07:48[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10325.txt
二問目のstep2の「課題11-2」という文は「一問目」の間違いです。すいませんでした。
[4] 期限:一月八日まで
[5] その他の制限:まだ習い始めたばかりですので基礎的なこともわかるかわからないかです。
関数定義やreturn文などを習ったばかりです。
できる限りは頑張ったのですがどうやら自分の力では出来る見通しがありません。
わずらわしいかもしれませんが、宜しくお願いします。
0546デフォルトの名無しさん
2009/12/31(木) 14:26:27[2] 問題文(含コード&リンク):
任意の奇数n(nは15以下)を入力しn×nの魔方陣を出力する。
そして、作成した魔方陣の縦、横、斜めの合計値も同時に出力せよ。
ただし、1は必ず一番左の列の真ん中に置くこと。
(例)
n=3の時
15
6 7 2 15
1 5 9 15
8 3 4 15
15 15 15 15
[3] 環境
[3.1] OS:vista
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C / C++
[4] 期限:2009年1月6日
冬休みの課題なのですが、考えて色々調べたのですがわかりません。どなたかわかる方がいればご教授お願いします。
0547デフォルトの名無しさん
2009/12/31(木) 15:48:38[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: 出来ればC
[4] 期限: [無期限]
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ヒントだけでも与えていただければと思い投稿させて頂きました。
参考になるhpなどありましたらお願いしますm(_ _)m
問)同時整数関係を見つけるプログラムを考えなさい。
整数の解を求めるプログラムと、複素数の解を求めるプログラムを考え、
それを組み合わせることで両方の解を同時に求め示すプログラムについて考えなさい。
0548デフォルトの名無しさん
2009/12/31(木) 16:38:15#include <stdio.h>
int main(void)
{
int i, j, k, n, ti, tj, sum, a[15][15] = {0};
scanf("%d", &n);
for(i=n/2,j=0, k=1; k<=n*n; k++) {
a[i][j] = k;
ti = i ? i - 1 : n - 1;
tj = j ? j - 1 : n - 1;
if(a[ti][tj]) j = (j + 1) % n;
else i = ti, j = tj;}
for(i=0, sum=0; i<n; i++) printf(" ", sum += a[n-1-i][i]);
printf("%4d\n", sum);
for(i=0; i<n; i++) {
for(j=0, sum=0; j<n; j++) printf("%4d", a[i][j], sum += a[i][j]);
printf("%4d\n", sum);}
for(i=0; i<n; i++) {
for(j=0,sum=0; j<n; j++) sum += a[j][i];
printf("%4d", sum);}
for(i=0, sum = 0; i<n; i++) sum += a[i][i];
printf("%4d\n", sum);
return 0;
}
0549デフォルトの名無しさん
2009/12/31(木) 17:01:58本当にありがとうございます。
あと、期限の年数を間違えていてすいませんでした。
0550デフォルトの名無しさん
2009/12/31(木) 22:20:54http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10326.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10327.c
0551デフォルトの名無しさん
2009/12/31(木) 22:22:290552デフォルトの名無しさん
2009/12/31(木) 22:45:06int main(void) {
char dat[]={
-29, -126, -120, -29, -127, -124, -29,
-127, -118, -27, -71, -76, -29, -126, -110
};
fwrite(dat, sizeof(char), sizeof(dat), stdout);
return 0;
}
0553デフォルトの名無しさん
2010/01/01(金) 00:27:30すみません、忘れてました。
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C++
0554デフォルトの名無しさん
2010/01/01(金) 07:57:450555デフォルトの名無しさん
2010/01/01(金) 09:56:01??
0556デフォルトの名無しさん
2010/01/01(金) 19:05:34同時整数関係について情報をください。web でもいいです。
それとも同次整数関係ですか?
0557デフォルトの名無しさん
2010/01/02(土) 21:44:48[2] 問題文(含コード&リンク):
オイラー級数を用いて、πの近似値を求めよ。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:visual studio 2008
[3.3] 言語:C
[4] 期限:2010年1月15日
0558デフォルトの名無しさん
2010/01/03(日) 17:10:16ごめんなさい、そうです。
同次整数関係です。
<Simultaneous Integer Relation>と書いてあったのでてっきり。
すみません。
0559デフォルトの名無しさん
2010/01/03(日) 17:36:34すみません。
訳すと同時になってしまうんですが、
なかなかヒットせず・・・。
訳がちがう気もするのですが、思いついたものではほとんど情報を得られず。
0560デフォルトの名無しさん
2010/01/03(日) 19:55:25#include<stdio.h>
#include<math.h>
double eular(int n){
double r = 0;
for(int i=n;i;--i)
r += 1.0 / i / i;
return r;
}
int main(){
printf("%f\n",sqrt(eular(1000000)*6));
}
0561560
2010/01/03(日) 19:56:50× for(int i=n;i;--i)
○ int i=n;for(;i;--i)
0562デフォルトの名無しさん
2010/01/04(月) 03:10:44ttp://www14.ocn.ne.jp/~kk62526/pi/index.html
こっちのアルゴリズムを想像してた
でもこの宿題は
速度は遅くても構わないから
固定小数点多倍長のライブラリを自作してみましょうね
ってな趣旨だと思た
0563デフォルトの名無しさん
2010/01/04(月) 18:03:31ありがとうございます
>>562
そうゆうことですよね…初心者すぎる自分はなにをすればいいかわかりませんでした
0564デフォルトの名無しさん
2010/01/06(水) 12:42:22どうか宜しくお願いします。
[1] 授業単元:基礎プログラミング実習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10325.txt
二問目のstep2の「課題11-2」という文は「一問目」の間違いです。すいませんでした。
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ名とバージョン:visual studio2008
[3.3] 言語:C++
[4] 期限:一月七日 午後七時まで
[5] その他の制限:まだ習い始めたばかりですので基礎的なこともわかるかわからないかです。
関数定義やreturn文などを習ったばかりです。
できる限りは頑張ったのですがどうやら自分の力では出来る見通しがありません。
わずらわしいかもしれませんが、宜しくお願いします。
0565デフォルトの名無しさん
2010/01/06(水) 13:39:28一つ確認。
scanf()を使う時点で、C++じゃなくてCなんだが、言語にはC++と書いてある。
ほんとはどっち?
0566デフォルトの名無しさん
2010/01/06(水) 13:56:50cstdio じゃなくて stdio.h を include してるから C じゃね
0567デフォルトの名無しさん
2010/01/06(水) 14:01:120568デフォルトの名無しさん
2010/01/06(水) 14:06:12mainがintなのにreturnが無いわ
0569デフォルトの名無しさん
2010/01/06(水) 14:06:160570デフォルトの名無しさん
2010/01/06(水) 14:06:26#include <stdio.h>
#include <math.h>
int input(float data[], int max){
int i;
for(i=0;i<max;i++){
printf("データを一つ入力してください:");
scanf("%f",&data[i]);
if(data[i]<=0){break;}
}
return i;
}
float average(float data[], int n){
int i,sum=0;
for(i=0;i<n;i++){sum+=data[i];}
return sum/n;
}
float variance(float data[], int n){
float v=0.0,s;
int i;
s=average(data, n);
for (i=0;i<n;i++){v+=(data[i]-s)*(data[i]-s);}
return v/=n-1;
}
0571デフォルトの名無しさん
2010/01/06(水) 14:11:42#include <stdio.h>
#include <math.h>
int input(float data[], int max){
int i;
for(i=0;i<max;i++){
printf("データを一つ入力してください:");
scanf("%f",&data[i]);
if(data[i]<=0){break;}
}
return i;
}
float max(float data[], int n){
int m=data[0],i;
for(i=1;i<n;i++){
if(m<data[i]){m=data[i];}
}
return m;
}
int main(void){
float d[100];
int n;
double s;
n = input(d, 100);
printf("最大値は%fである\n", max(d,n));
}
0572デフォルトの名無しさん
2010/01/06(水) 15:43:32[2] 問題文 下記参照
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C++
[4] 期限: [2010年1月20日16:40まで]
[5] 特になし
問題(5)
実行するとカラーダイヤログを表示し、選択したカラーをクリップボードに送る処理を記述せよ
0573デフォルトの名無しさん
2010/01/06(水) 20:13:31[1] 授業単元:Cプログラミング入門
[2] 問題文(含コード&リンク):
五目並べの作成
コンピューターによる着手の生成関数の作成
詳細
サンプル中の問題2の部分に
・自分の石を五つ連続で並べるように置く
・相手が石を三つ連続で並べたら、その両端のどちらかに石を置く
というプログラムを加える
サンプルプログラム:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10289.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2010年1月8日18:00まで
[5] 問題1は264さんのおかげで解決しましたので大丈夫です
すいませんが、よろしくお願いします
0574デフォルトの名無しさん
2010/01/07(木) 02:36:50> 選択したカラーをクリップボードに送る処理
kwsk
0575デフォルトの名無しさん
2010/01/07(木) 03:46:52[2]2つの複素数の和と積を計算して表示するプログラムを作成せよ。
構造体complexを定義し、和の複素数を返すadd関数、積の複素数を返すmul関数、複素数を表示するprint関数をそれぞれ作成し
mainでは2つの複素数をキーボードから読み込み、関数を呼ぶ。
虚数部にはiを付加せよ。
[3.1] Linux
[3.2] gcc 3.4
[3.3] C
[4] 2010/1/7/16:00
[5] まったくのゼロからおそらく一般的な順番通りに習ってきました。
構造体までに既に習ってるだろう範囲でなんとかお願いしますm(__)m
0576デフォルトの名無しさん
2010/01/07(木) 04:15:551000000 ぷっ
94883104
0577デフォルトの名無しさん
2010/01/07(木) 05:09:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10333.txt
0578デフォルトの名無しさん
2010/01/07(木) 12:03:12ペイント(mspaint)の色の選択で、色を選択したら(例えば赤を選択したら)、その選択した色(ここでは赤なのでFF0000)をクリップボードに送る(クリップボードにFF0000が入る)処理です
0579デフォルトの名無しさん
2010/01/07(木) 13:34:25なにかおかしい?
94883104 ってなに?
0580デフォルトの名無しさん
2010/01/07(木) 14:56:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10335.txt
0581デフォルトの名無しさん
2010/01/07(木) 15:06:59ありがとうございます
0582デフォルトの名無しさん
2010/01/07(木) 16:37:17[1] 授業単元:セミナー
[2] 問題文(含コード&リンク):∫(x=0,4)∫(y=0,3)∫(x=0,2) 4*x^3 + x*y^2 + 5*y + y*z + 6*z dz dy dx
を解くプログラムを書け
[3] 環境
[3.1] OS:WindowsXP
[3.2] Microsoft Visual Studio
[3.3] 言語:C/C++/どちらでも可
[4] 期限: 2010年01月09日 00:00 要は明日
[5] その他の制限:特になし
やり方のアドバイスだけでも教えていただけたら幸いです
答えは2040です。printf("2040");
だけでは無理です
0583デフォルトの名無しさん
2010/01/07(木) 17:08:020585デフォルトの名無しさん
2010/01/07(木) 18:01:40ちゃんと実行できましたよ。C99 ですけど。
0586デフォルトの名無しさん
2010/01/07(木) 18:41:26∫(x=0,4)∫(y=0,3)∫(z=0,2) 4*x^3 + x*y^2 + 5*y + y*z + 6*z dz dy dx
≒ Σi∈[0:Nx-1] (Σj∈[0:Ny-1] (Σk∈[0:Nz-1]
4*(iΔx)^3 + (iΔx)*(jΔy)^2 + 5*(jΔy) + (jΔy)*(kΔz) + 6*(kΔz) )))
(但、Δx=4/Nx、Δy=3/Ny、Δz=2/Nz)
0587デフォルトの名無しさん
2010/01/07(木) 18:47:55精度上げたいなら単に分割数増やすか
シンプソンの3/8公式でも使え
0588デフォルトの名無しさん
2010/01/07(木) 19:14:04[2] 問題文(含コード&リンク):
次の関数の積分を、台形公式を使って求めたい。
ただし、積分区間は(0,2)きざみ幅はh=0.01とする。
f(x)=(4-x2)1/2
※台形公式は積分区間を(a,b)とすると n=(b-a)/h
S=h*{1/2(f(a))+f(b))+f(a+h)+f(a+2h)+…+f(a+(n-1)h}となる。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: 出来ればC
[4] 期限: [1/9]
[5] その他の制限: 特になし
よろしくお願いします。
0589デフォルトの名無しさん
2010/01/07(木) 19:31:37#include <stdio.h>
double f(double x){ return (4 - x*x) / 2; }
double integral(double a, double b, double h){
int n = (int)((b - a) / h);
double sum = (f(a) + f(b)) / 2;
for(int i = 1; i < n; i++){ sum += f(a + i*h); }
return sum * h;
}
int main(){
printf("%f", integral(0, 2, 0.01));
}
VCで確認
0590デフォルトの名無しさん
2010/01/07(木) 20:39:09最後に微小量 �凅�凾刧凾嘯�かけ忘れてやいませんか?
0592デフォルトの名無しさん
2010/01/07(木) 23:12:46[1] 授業単元:構文
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10309.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 1月11日まで
[5] その他の制限:今習ってるプラグラム参考例↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10310.txt
恐れ入りますが、再度よろしくお願いします。
0593デフォルトの名無しさん
2010/01/07(木) 23:28:22struct sankaku{
int teihen;
int takasa;
double menseki;
};
int main(){
struct sankaku triangle1 = {2, 8, 0.0};
struct sankaku triangle2 = {3, 6, 0.0};
triangle1.menseki = triangle1.teihen * triangle1.takasa / 2.0;
triangle2.menseki = triangle2.teihen * triangle2.takasa / 2.0;
printf("triangle1 の面積: %f\n", triangle1.menseki);
printf("triangle2 の面積: %f\n", triangle2.menseki);
return 0;
}
0594デフォルトの名無しさん
2010/01/07(木) 23:37:34>>571
回答ありがとうございます。田舎行ってて返事が書けませんでした。
ただ問題一の平均値がどうしても上手く出ません。
あと、問題二で最大値が8.1になるように入力すると8.0と表示されます。
どうしてですか?
すみませんがお願いします。
0595デフォルトの名無しさん
2010/01/07(木) 23:47:52どう入力して何が出力されたのか書かないと分からんだろう
8.1と入力して8.0になるのは小数点以下が読まれてない可能性があるな
scanfの後にprintfで読んだ値を表示するようにして正しく読まれてるか確認して
0596デフォルトの名無しさん
2010/01/07(木) 23:48:38途中で int に代入してるからだよ
0597デフォルトの名無しさん
2010/01/07(木) 23:54:401.0
2.0
3.0
4.0
-1
と入力すると平均値が2.000000となる、正解は2.500000
問題二はどういうことですか?intに代入?…
0598デフォルトの名無しさん
2010/01/07(木) 23:55:35本当だw
>>570-571は自分の環境で確認しなかったのか
0599デフォルトの名無しさん
2010/01/08(金) 00:02:10問題1はaverage()のreturn分のsum/nが両方int型なので切り捨てられて2になる
問題2はmax()の中のmがint型なので切り捨てられる
0600デフォルトの名無しさん
2010/01/08(金) 00:05:06とりあえず問題の部分をintからfloatに変えたらどんどんエラーが…
0601デフォルトの名無しさん
2010/01/08(金) 00:05:430602デフォルトの名無しさん
2010/01/08(金) 00:07:320603デフォルトの名無しさん
2010/01/08(金) 00:09:28みなさんありがとうございます!!!
0604デフォルトの名無しさん
2010/01/08(金) 04:53:47[2] 問題文(含コード&リンク):
あるint型配列array[256]の中身をランダムシャッフルしたい。
0〜127の範囲の値を被らずに出す乱数関数randEx(Seed, i)を作成せよ。(iは0〜127)
※Seedを変えることにより、異なるパターンのランダム列が出るようにする。
※array[i]とarray[128+randEx(Seed, i)]をスワップすることで並列計算において一気にシャッフルするのが目的です。
※「スワップするかしないか」の部分は別なので考えなくて良いです。
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: VC++2005
[3.3] 言語: Cのみ
[4] 期限: 2010年1月18日まで
並列プログラミング関係なので、本来のランダムシャッフルよりややこしい事になってます…
全く分かりません…どなたか御教授下さい(´・ω・`)
0605デフォルトの名無しさん
2010/01/08(金) 06:32:45重複無しの数値を返すぐらいだから
ややこしいと思わなかったけど外してるかな?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10336.txt
0606デフォルトの名無しさん
2010/01/08(金) 10:22:55米ドル紙幣としては次のような紙幣とコインがある。
100ドル、50ドル、20ドル、10ドル、5ドル、2ドル、1ドル
50セント、25セント、10セント、5セント、1セント
問題は、キーボードから日本円を入力し、まずドルに変換した後ドルを最適な紙幣とコインに振り分けるプログラムを作成しなさい。但し1ドルを92.69円として換算しなさい。そして、日本円が0円の時にプログラムを終了する。
例
¥195,865
2,112,89$
100$…21枚
50$
20$
10$…1枚
5$
2$…1枚
1$
50¢…1枚
25¢…1枚
10¢…1枚
5¢
1¢…4枚
このような問題なんですがプログラムとして最適なものが分かる方は是非教えてください。
0607デフォルトの名無しさん
2010/01/08(金) 10:56:51[2] 問題文(含コード&リンク):
構造体と関数(複素数の加算)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10337.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2010年1月13日まで
[5] その他の制限: 特になし
わかる方いましたらよろしくお願いします
#include <stdio.h>
#include <math.h>
#define RATE (92.69)
int main() {
char buf[256];
unsigned long yen;
unsigned long cent;
unsigned int const coin[] = {10000, 5000, 2000, 1000, 500, 200, 100, 50, 25, 10, 5, 1, 0};
for(;;) {
printf("\n¥ ");
fflush(stdout);
fgets(buf, sizeof(buf), stdin);
sscanf(buf, " %lu", ¥);
if(yen == 0)
return 0;
cent = round(yen * 100 / RATE);
printf("%lu.%lu$\n", cent/100, cent%100);
for(int i=0; coin[i] > 0; i++) {
unsigned long ncoins = cent / coin[i];
cent %= coin[i];
if(coin[i] >= 100)
printf("%u$", coin[i]/100);
else
printf("%u¢", coin[i]);
if(ncoins > 0)
printf("…%lu枚\n", ncoins);
else
printf("\n");
}
}
}
0609デフォルトの名無しさん
2010/01/08(金) 11:22:10>>608
http://pc12.2ch.net/test/read.cgi/tech/1260888175/931
1: double re
2: double im
3: z->re = x.re + y.re
4: z->im = x.im + y.im
5: struct complex
6: & x.re, & x.im
7: & y.re, & y.im
8: z.re, z.im
0611デフォルトの名無しさん
2010/01/08(金) 12:02:02ありがとうございます
0612デフォルトの名無しさん
2010/01/08(金) 12:02:31検索したらトップにこれが来てワロタ
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235036252
0613デフォルトの名無しさん
2010/01/08(金) 14:10:310614604
2010/01/08(金) 14:24:41ありがとう。やろうとしてる事はなんとなく分かるんですが、ちょっと違うんです。
ソースとコメント書いたので、これで伝わるでしょうか…。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10340.txt
自分でもよく分かってないのですが、要は数値変換みたいなことをしたいのです。
例えば、1→67、2→36、3→4、4→98.....
seedを変えることで、1→8、2→77、3→56、4→2... のように異なったパターンも生み出すようにしたいです。
0615デフォルトの名無しさん
2010/01/08(金) 14:29:38規則的でいいなら
if(seed%2!=0) return (seed*(i+seed))%128;
else return ((seed*2+1)*(i+seed))%128;
0616デフォルトの名無しさん
2010/01/08(金) 14:31:57※array[i]とarray[128+randEx(Seed, i)]をスワップすることで並列計算において一気にシャッフルするのが目的です。
array[i] array[j] j-i < 128 のスワップが発生しない(≒array[0] と array[2] の交換はありえない)
シャッフルだけど良いのかな?
0617デフォルトの名無しさん
2010/01/08(金) 14:48:34[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10341.txt
[3] 環境
[3.1] OS:WindowsXP
[3.3] 言語:C++
[4] 期限: 2010年01月12日
[5] その他の制限:特になし
よろしくお願いします
0618デフォルトの名無しさん
2010/01/08(金) 14:50:51これだけでよさげ
return ((seed*2+1)*(i+seed))%128;
0619デフォルトの名無しさん
2010/01/08(金) 14:57:450620デフォルトの名無しさん
2010/01/08(金) 15:03:58[2] 問題文(含コード&リンク):掃き出し法。
0,1のみを成分にもつn次正方行列Aが2重リストとしてある。Aにmod2の行基本変形を施して、階段行列に変形するプログラム
[3] 環境
[3.1] OS:linux
[3.3] 言語: C
[4] 期限:2010年1月14日
[5] その他の制限: 特にありません。
0621デフォルトの名無しさん
2010/01/08(金) 18:23:50コンパイラは何?
- void func(int *x){
void* func(void* args){
int* x = (int*)args;
- return;
return NULL;
- pthread_create(&t[i],NULL,(void *)func,(void *)&i);
pthread_create(&t[i],NULL,func,(void *)&i);
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* #include <omp.h> */
#define randint(nmax) ((int)(rand()/(double)RAND_MAX * (nmax)))
#define NMAPS 9
unsigned int map[NMAPS][128];
void initmap(void) {
for(int y=0; y<NMAPS; y++) {
for(int x=0; x<128; x++) map[y][x] = x;
for(int x=0; x<128; x++) {
int tmp = map[y][x];
int i = x+randint(128-x);
map[y][x] = map[y][i];
map[y][i] = tmp;
}}}
int randEx(unsigned int sd, int i) {
for(int m=0; m<NMAPS; m++) {
i = map[m][(i+sd) % 128];
sd = (sd >> 7) ^ (((sd >> 1) & 0x3f) | ((~(sd & 1)) << 6));
}return i;}
/* チェック用main */
int main(int argc, char *argv[]) {
unsigned int seed = (argc >= 2) ? atoi(argv[1]) : time(0);
initmap();
/* #pragma omp parallel for */
for(int i=0; i<128; i++)
printf("%d\n", randEx(seed,i));
return 0;}
表の生成(initmap)が重いけど、生成は一回でいいので、多数回シャッフルする
なら気にしなくていいかと。何なら事前に計算して定数表として持ってしまってもいい。
0623デフォルトの名無しさん
2010/01/08(金) 18:48:07VC++2005です
0624デフォルトの名無しさん
2010/01/08(金) 19:06:13randExの中で頑張るより、配列を用意したほうが素直に思える。
お望みのものとは違うけれど、なにかの参考用として。
void init_indices(int *indices, int size, unsigned int sd) {
int i;
srand(sd);
for (i = 0; i < size; i++) indices[i] = i;
for (i = 0; i < size * 2; i++) swap(indices + rand() % 128, indices + rand() % 128);
}
mainの中は、int i, indices[128];こうして、先にinit_indices(indices, 128, seed);としておいて、
swap(&array[i], &array[max/2 + randEx(seed,i)]);ここんとこは単に、
swap(&array[i], &array[max/2 + indices[i]]);として使う。
重複無しは、用意しておいた数列を、swapで混ぜるほうがラク。
int randEx(unsigned int sd, int i)がスムーズに動くような実装は、
ちょっと俺には思いつかない。>>615 >>618さんの方法でうまくいくんだろうか。
0625デフォルトの名無しさん
2010/01/09(土) 03:07:54とりあえず要求としては全単射な写像になればいいので
極端な話、k個ずらして剰余をとるだけ (k + i)%128 でいい。
更に、奇数倍して剰余を取った ((2*k+1)*i)%128 も全単射になる(ヒント:最小公倍数)
あるいは高々128個なのでテーブルで用意してしまってもいい。
という感じで適当に全単射な写像を用意して合成すれば乱数っぽくなる。
あとは適当にseedに応じて違う写像になるようにすればOK。
>>618さんのは k=seed にして合成した形になってるね。
0626デフォルトの名無しさん
2010/01/09(土) 03:17:07並列プログラムの演習なのでそれをやると
init_indices()のあとに同期が必要になって効率が悪くなる、
という趣旨じゃないかな
0627デフォルトの名無しさん
2010/01/09(土) 03:26:06目的がよく分からないけどオーソドックスに
/* ここでsdとiを使って0〜127の重複なしIDを求める */
// ...
static int ar[max/2];
static bool b = false;
if(!b){
srand(sd);
int j;
for(j=0;j<max/2;j++)
ar[j]=j;
for(j=0;j<max/2;j++)
swap(&ar[j],&ar[rand()%(max/2)]);
b=true;
}
id=ar[i];
// ...
0628デフォルトの名無しさん
2010/01/09(土) 09:19:49>>625そういう数学的知識にあこがれるw
0629デフォルトの名無しさん
2010/01/09(土) 14:57:180630デフォルトの名無しさん
2010/01/09(土) 15:36:120631デフォルトの名無しさん
2010/01/09(土) 16:03:440632604
2010/01/09(土) 20:55:08>>615 >>618 これは!と思って、seedがある程度大きかったり素数だったりしたら上手くばらけそうだと思って試した所、
どうやらi=0の時の初期値が128通り、あとは127通りの傾きで線形的に増減していく感じでした。
しかし、これでも約1万6千のパターンが表せるんですね(あってるのかな…)
>>616 大丈夫です。>>622でも指摘あるように複数回シャッフルするので最低2回でarray[0]とarray[2]の交換ができるはずです。
>>622 ( ゚д゚)ポカーン これは不思議。1度作った表でも十分そうだけど、表を更新すればもっと…
>>624 >>625 …たしかに何かしらの専用テーブル作るのがいいかもしれません。
テーブル作ると、値の分布やテーブルの個数によって性質が固定されそうだと思ってたのですが、>>622のやり方はそれをうまく解決している気がします。
まだ〆切にも時間あるし、戴いたアイディアをまだ十分吟味しきれてないのでもう少し試行錯誤してみます。
ソースをまた貼るかもしれないのでその時はまたよろしくお願いしまつ|ω・`)
0633デフォルトの名無しさん
2010/01/09(土) 21:04:26[2]問題文:2つの最大50桁の実数を入力し、その和・差・積を求めるプログラム
[3]
[3.1]Windous Vista
[3.2]bcpad
[3.3]c++
[4]期限:2010年1月11日17:00
[5]基礎的なことしか習っていないため、できるだけ簡単なものをお願いします
0634デフォルトの名無しさん
2010/01/09(土) 21:27:19なんの捻りも無いけど。
#include <gmp.h>
#include <ctype.h>
int main()
{
char a[128],b[128];
scanf("%s",a);
scanf("%s",b);
gmp_printf("------\n");
mpz_t za,zb,ztmp;
mpz_init(za);
mpz_init(zb);
mpz_init(ztmp);
mpz_set_str(za,a,10);
mpz_set_str(zb,b,10);
mpz_add(ztmp,za,zb);
gmp_printf("%Zd\n",ztmp);
mpz_sub(ztmp,za,zb);
mpz_abs(ztmp,ztmp);
gmp_printf("%Zd\n",ztmp);
mpz_mul(ztmp,za,zb);
gmp_printf("%Zd\n",ztmp);
return 0;
}
0635デフォルトの名無しさん
2010/01/09(土) 22:59:11[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10342.txt[3] 環境
[3.1] OS:Windows XP
[3.3] 言語: C++
[4] 期限:2010年1月11日 12:00
[5] その他の制限: 特にありません。
よろしくおねがいします。
0636デフォルトの名無しさん
2010/01/09(土) 23:00:55>>635の訂正です。
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10342.txt
[3] 環境
[3.1] OS:Windows XP
[3.3] 言語: C++
[4] 期限:2010年1月11日 12:00
[5] その他の制限: 特にありません。
よろしくお願いします。
0637デフォルトの名無しさん
2010/01/09(土) 23:45:50[2] 問題文(含コード&リンク):
1次元配列を2次元配列に・2次元配列を1次元配列に変換する二つのモジュール
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10343.txt
[3] 環境
[3.1]Windows XP
[3.2]VC2005
[3.3]C
[4] 期限:2010年1月11日 23:00
[5] その他の制限:出来るだけ単純な物だと自分で理解できるので助かります
どうぞよろしくお願いします
0638622 ◆er4rYOIb5c
2010/01/10(日) 00:10:47> 1度作った表でも十分そうだけど、表を更新すればもっと…
表の生成自体はマルチスレッドにして高速化できない一方、
表の合成はマルチスレッドにして高速化できると言う性質があるので、
表の生成は一回限りにして、seed毎に組合せ方を変えて表を合成する事で、
複数のスレッドが並列でrandExを計算できるようにしてあります。
そのため、毎度表を更新すると並列計算による高速化が望めないので、
何の得もないです。念のため。
0639デフォルトの名無しさん
2010/01/10(日) 00:13:46[2] 自然数の数列を入力し
数列内にあるnよりも大きい数と小さい数が
nの前後にそれぞれ一つ以上ある場合、そのnを出力する。
フローチャートは以下です。
順数列の入力
↓ ↓
数列数が5以上 4以下→終了(4以下のときどれも除外できないので)
↓
数列の中で最大最小の値と
最初と最後に入力した値は除外できる。
↓
残りの数値に前後に大小の値が一つ以上あれば除外
↓
残った値を表示して終了
[3] 環境
[3.1] OS: Linux
[3.3] 言語: C
前スレでも質問させてもらったのですが、うまくいかなかったのでお手数ですが再びレスさせてもらいます。
0640デフォルトの名無しさん ◆TJ9qoWuqvA
2010/01/10(日) 00:26:19[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10344.txt
2つの名前を入力してステータス(ランダム)を決定し 途中経過を表示し
攻撃が当たった時は文字色を変える
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C
[4] 期限:2009年01月12日00:00まで
[5] その他の制限:アップした原文を元に できるだけ簡単にお願いします。
原文の方をコンパイルするとエラーが出てしまい 自分では解決する事が出来ませんでした。
どうかよろしくお願いします。<m(__)m>
1>c:\documents and settingsデスクトップ\battle\battle.cpp(28) : error C2059: 構文エラー : ';'
1>battle - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
0641デフォルトの名無しさん
2010/01/10(日) 00:28:52teban = rand()%;
0642デフォルトの名無しさん
2010/01/10(日) 00:29:54[2] 次の関数copyStringを同じ動作をするように書き換えよ。ただし変数の追加、削除(未使用を含む)
if文(三項演算子を含む)while,do while,for文 goto文を使用してはならない。
char *copyString(char *s){
char *p=s,*t=s,tmp;
if(s==NULL)return NULL;
while(*p++); p--;while(!*p)p--;
while(p>s){tmp=*p;*p--=*s;*s++=tmp;}
return t;
}
[3] OS:Windows Vista
環境:Visual Studio 2008
言語: C
[4] 2010/01/15
[5]冬休みの宿題が未だに出来ずちょっと焦ってます。
0643デフォルトの名無しさん
2010/01/10(日) 01:06:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10345.txt
0644デフォルトの名無しさん
2010/01/10(日) 01:09:23[2]問題文:次のような10×10の半角文字+を碁盤の目として、一対コンピュータで五目並べ
をするプログラムを作成せよ。碁石を表す文字は、半角の@,0を用いよ。
abcdefghij
a++++++++++
b++++++++++
c+++++@++++
d++++++0+++
e++++++++++
f++++++++++
g++++++++++
h++++++++++
i++++++++++
j++++++++++
@の場所は、cf , 0の場所は、dg とあらわす
・人とコンピュータのどちらかが先手になるか選択できる
・先手の33を禁止する
・勝敗の判定ができる。(置く場所がなくなったら引き分けとする)
・コンピュータは人が3と4を作った場合、それを止める場所におく
・すでに石がおいてある場所に人が石を置こうとした場合、再入力を促す。
[3]
[3.1]Windous Vista
[3.2]bcpad
[3.3]c++
[4]期限:2010年1月11日17:00
[5]/* で説明も書いてくださると助かります
0645デフォルトの名無しさん
2010/01/10(日) 02:04:52[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10346.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:Visual stdio 2008
[3.3] 言語:C
[4] 期限:1月11日 19:00まで
[5] その他の制限:プログラミングの授業を受け始めてまだ2,3ヶ月程度の超初心者です。
難しいプログラミングの方法などを使わないでいただければ嬉しいです。
前の授業ではプロトタイプ宣言、ライブラリ関数、関数の戻り値などをやりました。
0646デフォルトの名無しさん
2010/01/10(日) 02:28:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10347.txt
0647デフォルトの名無しさん
2010/01/10(日) 02:30:13>>646の38〜43行目、length <= 4 のときは何もせずに終了だった
0648デフォルトの名無しさん
2010/01/10(日) 02:34:49#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main(){
char s[6][21],i,count=0;
printf("20文学までの問題文を五⊃入れてください");
for(i=0;i<5;++i){
printf("%d⊃目の問題文:");
gets(s[i]);
}
for(i=0;i<10;++i){
const char*p=s[rand()%5];
printf("問題:%s\n錬習:",p);
if(strcmp(p,gets(s[5])))
puts("不正解");
else{
puts("正解!!");
count = 1 + count;
}
}
puts("********************");
printf("正解数:%d\n",count);
puts("続行するには伺かキ−を押してください . . .");
}
0649648
2010/01/10(日) 02:36:53#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main(){
char s[6][21],i,count=0;
puts("20文学までの問題文を五⊃入れてください");
for(i=1;i<=5;++i){
printf("%d⊃目の問題文:",i);
gets(s[i]);
}
for(i=0;i<10;++i){
const char*p=s[rand()%5+1];
printf("問題:%s\n錬習:",p);
if(strcmp(p,gets(s[0])))
puts("不正解");
else{
puts("正解!!");
count = 1 + count;
}
}
puts("*******************");
printf("正解数:%d\n",count);
puts("続行するには伺かキ−を押してください . ..");
}
0650デフォルトの名無しさん
2010/01/10(日) 02:45:12アルゴリズムの授業なので計算量について考えておく必要がある。
数列のn[i]について毎回「n[i]の前後にn[i]よりも大きい数と小さい数があるか」を調べる場合、
計算量は数列の長さをLとして O(L^2)かかる。
一方、>>646のように、n[i]までの最大値と最小値を先に計算してしまうと計算量はO(L)で済む。
この差は数列の長さが100万とかになると歴然とした速度差になる。
その代わり、追加の配列を4つ使っているのでメモリの使用量は5倍になっているが、
オーダーが変わっているわけではないので通常問題にはならない、はず。
0651デフォルトの名無しさん
2010/01/10(日) 03:01:04かわんない?
0652デフォルトの名無しさん
2010/01/10(日) 03:19:47http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10348.txt
>>651
コピーのコストが高いクラスだとifの方が速いのは確実だけど、
組み込み型だと変わらないかも?と思って組み込み型なら三項演算子で書いてる。
if文使うとスタック操作が入る気がするけど最適化で消えるだろうなあ
0653デフォルトの名無しさん
2010/01/10(日) 03:21:52>>649
ご回答有難うございます。
ただ見ても全く意味がわからない…
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
const char*p=s[rand()%5+1];
if(strcmp(p,gets(s[0])))
とかって一体何なんだ…?
これもう少し長くてもぜんぜんいいんで、ものすごく簡単にできませんか?
超初心者の私でもわかるぐらいに…
0654デフォルトの名無しさん
2010/01/10(日) 03:29:16そこじゃなくって、最後のifの forward_max[i-1] > nums[i]...を
forward_min[i] != nums[i]...ってしても条件は満たせるじゃない?
>と!=ってどっちがはやいのかなって思っただけ。
0655648
2010/01/10(日) 03:29:430656デフォルトの名無しさん
2010/01/10(日) 03:37:24ああ、そこかw
整数型の比較演算子はどれ使っても速度は変わらない。
(物凄く命令の少ないマイコンだと違うかも知れないが…)
そこを気にするならむしろ
for(i = 1; i < length-1; i++){...} でlength-1の計算が毎回発生する方を気にすべき
0657デフォルトの名無しさん
2010/01/10(日) 03:49:340658デフォルトの名無しさん
2010/01/10(日) 04:00:10言われると思ったw
そこまで言うならbackward_max, backward_minに関しても具体的な値は不要で、
単に最大・最小が変化したかのフラグの配列を1本記録するだけでいいわけです
どのみちオーダー的にはO(L)のアルゴリズムなのでこの辺で勘弁願いたいw
0659デフォルトの名無しさん
2010/01/10(日) 08:40:39[2] 問題文(含コード&リンク):
fork,exec*システムコールを用いて簡単なコマンドインタープリタ
(mysh)を作成せよ。但し、作成するコマンドインタープリタは以下の
機能をサポートすること。
・設定ファイル(.path)にコマンドサーチパスを指定することが出来る。
なお、ファイル内のパスの指定方法は、各自が考え定義すること。
(パスにないコマンドを入力した場合には、見つからない旨のエラー
メッセージを出力すること。)
・パイプを利用して複数(可変個)のコマンドの入出力を結合する
ことができる。
・リダイレクションを使用してコマンドへの入力をファイルから得たり、
ファイルへ出力したりすることができる
・コマンド実行中にCtrl-Cを入力すると、現在のコマンドの実行を
中断する
・exitを入力すると、myshを終了する。
[3] 環境
[3.1] OS: windowsXP,cygwin
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C言語
[4] 期限: ([2010年01月20日23:59まで]
[5] その他の制限: ファイル入出力、プロセス制御、パイプ生成に
関してはシステムコールを用いること。
execveを使ってやりたいんですがよくわかりません。
よろしくお願いします
0661デフォルトの名無しさん
2010/01/10(日) 10:54:42それはなにか多バイト長演算ライブラリを使用するのでは?
>>203
0663639
2010/01/10(日) 12:28:23ご回答ありがとうございます。
しかし、コンパイルしようとしたら見たことないエラーが出てきて困ってしまいました。
peeling.c:48: error: redefinition of 'i'
peeling.c:45: error: previous definition of 'i' was here
peeling.c:48: error: 'for' loop initial declaration used outside C99 mode
peeling.c:54: error: redefinition of 'i'
peeling.c:48: error: previous definition of 'i' was here
peeling.c:54: error: 'for' loop initial declaration used outside C99 mode
どう手直ししたら良いのかも教えてください。
0664デフォルトの名無しさん
2010/01/10(日) 12:33:160665デフォルトの名無しさん
2010/01/10(日) 12:34:256c6
< bool get_int(int* i){
---
> int get_int(int* i){
48c48
< for(int i = 1; i < length; i++){
---
> for(i = 1; i < length; i++){
54c54
< for(int i = length-2; i >= 0; i--){
---
> for(i = length-2; i >= 0; i--){
0667デフォルトの名無しさん
2010/01/10(日) 14:17:20>>639 人のだけど、入力のところだけ修正したもの。
#include <stdio.h>
int f(int *p, int n, int size)
{
int i, s, l;
if(n <=1 || size-2<=n) return 0;
for(i=s=l=0; i<n; i++) {
if(p[i] > p[n]) l++;
else if(p[i] < p[n]) s++;
}
if(s==0 || l==0) return 0;
for(i=n+1, s=l=0; i<size; i++) {
if(p[i] > p[n]) l++;
else if(p[i] < p[n]) s++;
}
return s && l;
}
int main(void)
{
int i, length = 0, a[256] = {4,8,2,1,7,9,3,5,6};
printf("start input. end = E<ENTER>\n");
while( length < 256 && scanf("%d%*c", &a[length])) length++;
printf("end input.\n");
for(i=0; i<length; i++)
if(f(a, i, length))
printf("%d ", a[i]);
return 0;
}
0668デフォルトの名無しさん
2010/01/10(日) 14:24:300669デフォルトの名無しさん
2010/01/10(日) 15:03:33こんな感じ?
#include <stdio.h>
int main(void)
{
int i, j, min, max, a[256], check[256];
for(i=0; scanf("%d", a+i)==1 && i < 256; i++);
if(i<=4) return 0;
if(a[i-1] > a[i-2]) max = a[i-1], min = a[i-2];
else max = a[i-2], min = a[i-1];
for(j=i-3; j>=2; j--) {
if(a[j] > max) max = a[j];
else if(a[j] < min) min = a[j];
else check[j] = 1;
}
if(a[0] > a[1]) max = a[0], min = a[1];
else max = a[1], min = a[0];
for(j=2; j<=i-3; j++) {
if(a[j] > max) max = a[j];
else if(a[j] < min) min = a[j];
else if(check[j]) printf("%d ", a[j]);
}
return 0;
}
0670デフォルトの名無しさん
2010/01/10(日) 15:10:510671デフォルトの名無しさん
2010/01/10(日) 16:01:14>>652ではそれも修正してあったんだけどね。
>>667のは計算量O(L^2)のアルゴリズムだから比較してみるといいんじゃないかな
>>658はこういうこと
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10349.txt
>>669
条件の書き換え間違ってない?
数列{1,1,1,...,1,1}を入力してみるとどうなるか?
あと最初にmax=min=a[0] (またはa[i-i])で初期化すればj=1とj=i-1を特別視する必要はない
先頭と末尾に代入が1回増えることになるが、数列の長さが大きければ無視できるレベル。
それよりもコードの可読性と保守性が悪くなることの方が問題
0672今年の未解決問題
2010/01/10(日) 17:51:35>>642[-]2010/01/15 次の関数copyStringを同じ動作をするように書き換えよ。
>>640(10344)[-]2010年1月12日00:00まで 2つの名前を入力してステータス(ランダム)を決定し 途中経過を表示し攻撃が当たった時は文字色を変える
>>637(10343)[-]2010年1月11日 23:00 1次元配列を2次元配列に・2次元配列を1次元配列に変換する二つのモジュール
>>620[-]2010年1月14日 掃き出し法。 0,1のみを成分にもつn次正方行列Aが2重リストとしてある。Aにmod2の行基本変形を施して、階段行列に変形するプログラム
0673デフォルトの名無しさん
2010/01/10(日) 19:24:48mod2の行基本変形ってこういうことかね
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10350.txt
0674デフォルトの名無しさん
2010/01/10(日) 19:42:55その問題文だけだとサイズが決まらないんだが、
こんなもんだろうか
int Conv_1Dto2D(unsigned char *src, unsigned char dest[][X_SIZE]){
int i;
unsigned char* p = &dest[0][0];
for(i=0; i < X_SIZE*Y_SIZE; i++) *(p++) = *(src++);
return i;
}
int Conv_2Dto1D(unsigned char src[][X_SIZE], unsigned char *dest){
int i;
unsigned char* p = &src[0][0];
for(i=0; i < X_SIZE*Y_SIZE; i++) *(dest++) = *(p++);
return i;
}
0675デフォルトの名無しさん
2010/01/10(日) 19:49:27>>641で解決してると思うけど一応
そんな分かりやすいコンパイルエラーで困られても困る
コンパイラに言われたとおり
28行目: teban = rand()%;
%は二項演算子なので%の後に数字が来ないのはおかしい。
周りから判断して
28行目: teban = rand()%2;
じゃないかね
0676デフォルトの名無しさん
2010/01/10(日) 19:52:56[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10351.zip
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年1月20日まで
[5] その他の制限: とくにありませんが、わかりやすく説明を付けてもらえると助かります。
0677デフォルトの名無しさん
2010/01/10(日) 19:53:22char *copyString(char *s){
char *p=s,*t=s,tmp;
if(s==NULL) return NULL;
while(*++p);
p--;
while(p>s){tmp=*p;*p--=*s;*s++=tmp;}
return t;
}
0678デフォルトの名無しさん
2010/01/10(日) 20:50:57[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10352.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [2010年1月14日まで]
[5] 特にありませんが、ポインタはまだ習ってないので使わないでいただきたいです
0679デフォルトの名無しさん
2010/01/10(日) 20:52:210680デフォルトの名無しさん ◆TJ9qoWuqvA
2010/01/10(日) 20:59:31>>675のお二方ありがとうございます。
teban = rand()%2;
としたところ最初だけ勝敗が表示された後、何も表示されなくなりました;
0681デフォルトの名無しさん
2010/01/10(日) 21:03:570682デフォルトの名無しさん ◆TJ9qoWuqvA
2010/01/10(日) 21:09:29解答ありがとうございます。
もう一度実行しなおしたり ビルドしなおしても何も表示されず デバッグのエラーが出るのです。
0683デフォルトの名無しさん
2010/01/10(日) 21:11:260684デフォルトの名無しさん
2010/01/10(日) 21:17:39[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10341.txt
[3] 環境
[3.1] OS:WindowsXP
[3.3] 言語:C++
[4] 期限: 2010年01月12日
[5] その他の制限:特になし
よろしくお願いします
0685デフォルトの名無しさん ◆TJ9qoWuqvA
2010/01/10(日) 21:26:23一部コメントのままビルドしていました。
お騒がせして申し訳ありませんでした。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):2つの名前を入力しステータス(ランダム)を決定し 勝敗表示する。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C
[4] 期限:2009年01月12日05:00まで
[5] その他の制限:C言語を習っているもののほとんど理解できていないので 簡単にお願いします。
ポインタや構造体は一応習いました。
2度目になりますがよろしくお願いします。
0686デフォルトの名無しさん
2010/01/10(日) 21:39:09rand() の剰余をとる乱数発生法はあまりよくないものとされている。
0687デフォルトの名無しさん
2010/01/10(日) 21:43:250688デフォルトの名無しさん
2010/01/10(日) 22:12:26よくないって言ったって、標準で付いてるんだから使わない手はない。
0690デフォルトの名無しさん
2010/01/10(日) 22:27:54http://codepad.org/z9iKimu1
CだとめんどくさいのでC++ with STL
0691デフォルトの名無しさん
2010/01/10(日) 22:49:57>>678
つhttp://www.kouno.jp/home/c_faq/c13.html#16
残念ながら整数かつ桁数固定の多バイト長演算。
0693デフォルトの名無しさん
2010/01/10(日) 23:20:25ありがとうございます
ですがCじゃないとだめなんです・・・
0695デフォルトの名無しさん
2010/01/10(日) 23:52:20質問のテンプレにもちゃんとCと書いてあるのにそれはどうかと
そもそも甘えるななんて言ったらこのスレいらなくね?
0697デフォルトの名無しさん
2010/01/10(日) 23:54:570699デフォルトの名無しさん
2010/01/11(月) 00:24:57気が向いたからCでも書いてみた。
http://codepad.org/12iI3EpM
0700699
2010/01/11(月) 00:31:26それはそうと57行目の
> strcpy(dst->name, buf);
これやばいな。bufが長いと落ちる。
この行の前に
if(strlen(buf) > 6){
return 2;
}
を入れといてくれや。
0701デフォルトの名無しさん
2010/01/11(月) 02:56:502度もわざわざありがとうございます
動作確認もちゃんとできました
C++で書いてくださったものは、自分が今後C++を勉強する際に参考にさせていただきます
0702デフォルトの名無しさん
2010/01/11(月) 05:52:34http://codepad.org/On58lEw2
command1.txtとかもつけて欲しかったな
授業のページまで探しに行ってしまったよ
0703デフォルトの名無しさん
2010/01/11(月) 15:02:28[2] 問題文(含コード&リンク):
100以下の素数をすべて出力するプログラムを作りたい。
自然数xに対して2以上で√x以下の素数で割り切れない数が素数である。ただし1は素数でも合成数でもない。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年1月13日まで
よろしくお願いします
0704デフォルトの名無しさん
2010/01/11(月) 15:05:43int main(){
int i , chk , f , ii;
for( i = 2 ; i <= 100 ; i++ ){
chk = 0;
f = i / 2;
ii = 2;
while( f >= ii ){
if( ( i % ii ) == 0 ){
chk = 1;
break;
}
ii++;
}
if( chk == 0 ){ printf("%i ", i ); }
}
}
0705デフォルトの名無しさん
2010/01/11(月) 15:08:250706デフォルトの名無しさん
2010/01/11(月) 15:09:060707デフォルトの名無しさん
2010/01/11(月) 16:54:38#include <stdio.h>
int main(void){
int primes_less_than_100[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,
47,53,59,61,67,71,73,79,83,89,97,0},*p=(int*)&primes_less_than_100[0];
while(*p) printf("%d ",*p++);
printf("¥n");
return 0;
}
0708デフォルトの名無しさん
2010/01/11(月) 17:27:560709デフォルトの名無しさん
2010/01/11(月) 18:24:16こんなに早く、ありがとうございます。
command1.txtはすみません。
以後気をつけます。
0710デフォルトの名無しさん
2010/01/11(月) 18:29:34[2] 問題文(含コード&リンク): 数値には初期値が与えられている。
この配列を昇順に並べ替えるプログラムを作成しなさい。
表示結果: 数値[00]=80
数値[01]=40
数値[02]=23
数値[03]=69
数値[04]=10
ソート後
数値[01]=10
数値[02]=23
数値[03]=40
数値[04]=69
数値[03]=80
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C言語
[4] 期限: 1月18日0:00まで
どなたかよろしくお願いします。
0711デフォルトの名無しさん
2010/01/11(月) 18:46:53#include <stdio.h>
int main(void)
{
int prime[100] = {2}, i, j, cnt = 1;
for(i=3; i<=100; i+=2) {
for(j=0; prime[j]*prime[j]<=i; j++) {
if(i % prime[j] == 0) goto L;
}
prime[cnt++] = i;
L:
}
for(i=0; i<cnt; i++) printf("%d ", prime[i]);
return 0;
}
0712デフォルトの名無しさん
2010/01/11(月) 19:08:43#include <stdio.h>
int main(void)
{
int arr[] = { 80, 40, 23, 69, 10}, i, j;
for(i=0; i<sizeof arr / sizeof *arr; i++) printf("数値[%02d]=%d\n", i, arr[i]);
for(i=1; i<sizeof arr / sizeof *arr; i++) {
int tmp = arr[i];
for(j=i; j > 0 && tmp < arr[j-1]; j--) arr[j] = arr[j-1];
arr[j] = tmp;
}
printf(" ソート後\n");
for(i=0; i<sizeof arr / sizeof *arr; i++) printf("数値[%02d]=%d\n", i, arr[i]);
return 0;
}
0713デフォルトの名無しさん
2010/01/11(月) 20:10:50ごめん、メモリリークしてた。
次の患者の呼び出しで患者の情報を表示した後に
release_patient(pat);
入れてメモリ解放するようにしといて
0714デフォルトの名無しさん
2010/01/11(月) 20:11:221] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10353.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 1月15日まで
よろしくお願いします。
0715デフォルトの名無しさん
2010/01/11(月) 20:32:26[2] 問題文(含コード&リンク):
文字列text[]と文字列pat[]が与えられたとき、文字列text中に文字列patが含まれるときは最初に現れるその文字列の先頭の位置(0〜)を返し、含まれないときは-1を返す関数searchを作成せよ。
また、その関数を用いて、2つの文字列text[]とpat[](空白は含まない)を入力すると関数searchの値を返すプログラムを作成せよ。ここでtextとpatには長さ1以上の文字列が入っているものとする。
(例:text[]="thisisatesttextdata"の中に、pat[]="this"は0の位置に、pat[]="test"は7の位置に現れる。)
[3] 環境
[3.1] OS: ubuntu
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年01月12日12:00まで
[5] その他の制限: #include<stdio.h>のみで。ポインタ、構造体などは習っていません。基本的な変数の型とよく使う関数,配列,if,for,while,文字列char,関数の定義と引数については習いました。
よろしくお願いします。
0716デフォルトの名無しさん
2010/01/11(月) 20:50:09{
int i, j;
for(i=0; text[i]; i++) {
for(j=0; pat[j] && text[i+j]==pat[j]; j++);
if(!pat[j]) return i;
}
return -1;
}
int main(void)
{
char text[256], pat[256];
scanf("%s%s", text, pat);
return search(text, pat);
}
0717デフォルトの名無しさん
2010/01/11(月) 21:10:47http://codepad.org/h5hSR8XA
>>673を書き換えて作ったので行列が二重配列
0718デフォルトの名無しさん
2010/01/11(月) 21:15:14[2] 問題文(含コード&リンク): 再帰を使って自然対数の底eを求めるプログラムを作成しなさい
下記のようにnを0から30まで増加させながら
n=0のときe=1/0! n=30のときe=1/0!+1/1!+1/2!+1/3!+……1/30! の計算を行い下記のように表示しなさい
n=0:e=1.000000000000000
n=1:e=2.000000000000000
・
・
n=30:e=2.718281828459046
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限:1月18日24時まで
よろしくお願いします
0719デフォルトの名無しさん
2010/01/11(月) 21:24:07http://codepad.org/dC0AKAbk
0720デフォルトの名無しさん
2010/01/11(月) 21:27:04#include <stdio.h>
int main(void)
{
int n = 0;
double e = 0.0, d = 1.0;
while(n <= 30) {
e += d;
printf("n=%2d:e=%.15f\n", n, e);
d /= ++n;
}
return 0;
}
0721デフォルトの名無しさん
2010/01/11(月) 21:47:59助かります。
本当にありがとうございました。
0722 ◆15kd2wtP2Y
2010/01/11(月) 22:56:09[2]問題文:以下の機能を備えた対コンピュータの五目並べを作成せよ
・置く場所を縦と横の数字で指定する
・人とコンピュータのどちらかが先手になるか選択できる
・先手の33を禁じる
・勝敗の判定ができる(置く場所がなくなったら引き分け)
・コンピュータは人が3と4を作った場合、それを止める場所に石を置く
・すでに石がおいてある場所に人が石を置こうとした場合、再入力を促す
[3]環境
[3.1]Windous
[3.2]bcpad
[3.3]c++
[4]期限1月15日
[5]かなり焦っています。簡単な説明も書いて下さったら助かります
0723デフォルトの名無しさん
2010/01/11(月) 23:12:19#definで指定してあったため記入し忘れてました
有難うございました
0724デフォルトの名無しさん
2010/01/12(火) 01:34:27遅くなってしまいましたが、ありがとうございました
とても助かりました。
0725708
2010/01/12(火) 08:34:11>>711 Borlandならいいけど、L: の後に;付けないとgccではコンパイルエラー。
#include <stdio.h>
int main(void) {
int prime[100] = {2}, i, j, cnt = 1;
for(i=3; i<=100; i+=2) {
for(j=0; prime[j]*prime[j]<=i; j++) {
if(i % prime[j] == 0) break;
}
if(i % prime[j] == 0) ; else
prime[cnt++] = i;
L: ;
}
for(i=0; i<cnt; i++) printf("%d ", prime[i]);
return 0;
}
0726デフォルトの名無しさん
2010/01/12(火) 10:42:51をする(0〜1に)
[3] 環境
[3.1] OS:windowsXP
[3.3] 言語:C++
[4] 期限: 本日中
[5] その他の制限:ライブラリは使用禁止
よろしくお願いします
0727デフォルトの名無しさん
2010/01/12(火) 11:24:5829個 ?
0728デフォルトの名無しさん
2010/01/12(火) 11:40:481つの変数に最大値と最小値が混在してるの?
0729デフォルトの名無しさん
2010/01/12(火) 11:54:230730デフォルトの名無しさん
2010/01/12(火) 12:26:420732デフォルトの名無しさん
2010/01/12(火) 12:41:32変数は配列で、double n[29]でいいのでしょうか?
変数にはどうやって値を与えるのでしょうか?
最小値と最大値は教えてもらえないのでしょうか?
0733726
2010/01/12(火) 12:48:40よくわかりませんがそれで良いと思います。
値の与え方は当方もいまだ模索中です。
変数の最大値、最小値はバラバラなので全て書くことは出来ませんが
一つ目の変数は、最大値14.000、最小値13.000です。
変数を正規化するプログラムがわからないのが最大の問題です
0734デフォルトの名無しさん
2010/01/12(火) 13:38:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10354.cpp
普段C言語ばかり使っているからどこかおかしいかも
正規化部分も適当に図を描いて式を求めたから合っているか分からない
0735デフォルトの名無しさん
2010/01/12(火) 13:45:320736708
2010/01/12(火) 15:41:38正規化1=(変数1−最小値)/(最大値−最小値)
正規化2=(変数29−最小値)/(最大値−最小値)
:
正規化29=(変数29−最小値)/(最大値−最小値)
変数の値が、最大値と最小値の間にあれば、線形に正規化した値は0〜1になる。
0737デフォルトの名無しさん
2010/01/12(火) 16:16:51あとはデータをずらずらと書いていくと。
#include <stdio.h>
typedef struct {
double value;
double min;
double max;
} Number;
int main() {
int i;
Number n[] = {
{14.0, 13.0, 14.0}, {14.0, 13.0, 15.0}, {14.0, 13.0, 16.0}, {14.0, 13.0, 17.0}
};
for(i=0; i < sizeof n / sizeof *n; i++)
printf("%f => %f\n", n[i].value, (n[i].value - n[i].min) / (n[i].max - n[i].min));
}
0738デフォルトの名無しさん
2010/01/12(火) 16:32:27そういうことだろうな
>>726
本当にそんな問題文だったのかい?
口頭で出されたなら同じ授業を受けたできそうな奴に聞いた方がいい
0739デフォルトの名無しさん
2010/01/12(火) 17:41:13[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10355.txt
分かりにくいかもしれないので、PDFファイルもつけますhttp://kissho1.xii.jp/7/src/7jyou29190.pdf
[3] 環境
[3.1] Linux
[3.2] k-term emacsで作成するやつ
[3.3] 言語: c
[4] 期限: 1月13日
分かる方よろしくお願いします。
0740デフォルトの名無しさん
2010/01/12(火) 17:43:150741デフォルトの名無しさん
2010/01/12(火) 21:16:08[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10356.txt
[3] 環境
[3.1] Windows XP
[3.2] Visual Studio 2003
[3.3] 言語: c
[4] 期限: 1月28日
よろしくお願いします
0742デフォルトの名無しさん
2010/01/12(火) 23:29:59http://codepad.org/VAVRCXgA
0743デフォルトの名無しさん
2010/01/12(火) 23:31:59出力に単位つけるの忘れてた
>>742の73,74行目にg足しといて
毎回貼ってから気づくorz
0744デフォルトの名無しさん
2010/01/13(水) 01:02:34[2] 0から10の中からランダムに整数の2組を決める。それを平面上の座標として、座標を10個つくる。
ユーザに座標を入力させ、その点から最も遠い点と近い点を求める。
最も近い点がユーザが入力した点と重なったら◎を出力する。
結果は下記のように出力。
△
△
△
× ○
●
×:ユーザが入力した点
○:最も近い点
●:最も遠い点
△:それ以外の点
[3] 環境
[3.1] Windows
[3.2] bcpad
[3.3] C++
[4] 1月末まで
0745デフォルトの名無しさん
2010/01/13(水) 03:16:16http://codepad.org/eDi0gUWm
C++は楽でいい
0746デフォルトの名無しさん
2010/01/13(水) 04:35:35あとfarestはねーよw
0747デフォルトの名無しさん
2010/01/13(水) 06:51:28ありがとうございます。助かりました。
0748デフォルトの名無しさん
2010/01/13(水) 11:29:37名前の衝突気にせずにがんがん定数を定義できるあたりがとても
そいやfarthestだったな、前にも言われたわw
0749デフォルトの名無しさん
2010/01/13(水) 11:50:490750デフォルトの名無しさん
2010/01/13(水) 11:56:12[2]問題文:http://www.f.csce.kyushu-u.ac.jp/~ogi/kougi/10.pdf
[3] 環境
[3.1] Windows 7
[3.2] Visual Studio 2008
[3.3] 言語: c
[4] 期限: 1月13日
ギリギリになってしまったんですがよろしくお願いします
0751デフォルトの名無しさん
2010/01/13(水) 13:44:510752デフォルトの名無しさん
2010/01/13(水) 14:56:43[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10358.txt
[3] 環境
[3.1] Linux
[3.2] k-term emacsで作成するやつ
[3.3] 言語: c
自力で解いて、この四問だけわかりませんでした。どうかよろしくお願いします。
0753デフォルトの名無しさん
2010/01/13(水) 15:17:18[2]問題文:
モンテカルロ法による円周率の近似値の計算を行うプログラムを書け。
生成する点の個数はキーボードから受け取るようにせよ。
乱数の生成にはMersenne twisterを用いよ。
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] 言語: c
0754デフォルトの名無しさん
2010/01/13(水) 15:17:440755デフォルトの名無しさん
2010/01/13(水) 15:49:09また私です。
お願いします。
自力でやったんですけど、あれだけわからなくて・・
あーどうしましょう
0756デフォルトの名無しさん
2010/01/13(水) 17:19:28ttp://codepad.org/BkGfe7wz
なんか、どう書いても最後までスカッとしなかった。
こういう場合はCで書いたほうがマシかもしれない。
0757デフォルトの名無しさん
2010/01/13(水) 18:08:23#include "stdio.h"
int sasho(double a, double b, double *sa, double *sho) {
*sa = a - b;
if (b == 0) return 0;
*sho = a / b;
return 1;
}
void printsasho(double sa, double sho, int validsho) {
if (validsho) {
printf("sa = %f, sho = %f\n", sa, sho);
} else {
printf("sa = %f\n", sa);
}
}
void testsasho(double a, double b) {
double sa, sho;
int validsho;
validsho = sasho(a, b, &sa, &sho);
printsasho(sa, sho, validsho);
}
int main() {
testsasho(0.5963, 0.193);
testsasho(0.78364, 0);
return 0;
}
0758デフォルトの名無しさん
2010/01/13(水) 20:23:590759デフォルトの名無しさん
2010/01/13(水) 21:00:23問題4: http://codepad.org/UDY8aGhr
0760デフォルトの名無しさん
2010/01/13(水) 21:02:46[2] 問題文(含コード&リンク):
非線形方程式の解を求めるアルゴリズムのひとつに、ニュートン法と呼ばれる方式がある。
この方法ではf(x)=0の解の近似値を次の漸化式から求める。
x_(i+1) =x_i - f(x_i)/f'(x_i)
x_i の初期値を x_0 としたとき i=1から i=5すなわちx_1からx_5までをC言語で順次計算して示せ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2010/01/15
[5] その他の制限:特に無し
計算結果も書いていただけると助かります。
お願いします。
0761759
2010/01/13(水) 21:03:57間違えました、ごめんなさい。問題4:http://codepad.org/5vWpGoRx
0762デフォルトの名無しさん
2010/01/13(水) 21:07:35ありがとうございます。
できれば他の問題もよろしくお願いいします!
0763デフォルトの名無しさん
2010/01/13(水) 21:16:10問題1
#include <stdio.h>
typedef struct Complex{
double r;
double i;
};
void add(struct Complex* R,struct Complex X,struct Complex Y){
R->r=X.r+Y.r;
R->i=X.i+Y.i;
}
void mul(struct Complex* R,struct Complex X,struct Complex Y){
R->r=X.r*Y.r - X.i*Y.i;
R->i=X.r*Y.i + X.i*Y.r;
}
int main(){
struct Complex X,Y,a,m;
X.r=2.0;X.i=1.0;
Y.r=1.0;Y.i=2.0;
add(&a,X,Y);
mul(&m,X,Y);
printf("X=%.1f+%.1fi\n",X.r,X.i);
printf("Y=%.1f+%.1fi\n",Y.r,Y.i);
printf("X+Y=%.1f + %.1fi\n",a.r,a.i);
printf("X*Y=%.1f + %.1fi\n",m.r,m.i);
return 0;
}
0764デフォルトの名無しさん
2010/01/13(水) 21:25:15ほんと、ありがとうございます。
できればでいいので、他のもよろしくお願いします。
0765デフォルトの名無しさん
2010/01/13(水) 21:30:23問題2
#include <stdio.h>
int main(){
FILE *fin,*fout;
int c;
if((fin=fopen("in.txt","r"))==NULL)
return -1;
if((fout=fopen("out.txt","w"))==NULL)
return -1;
printf("\n/*********************************\n");
printf("* src *\n");
printf("*********************************/\n");
while((c=fgetc(fin)) != EOF){
fputc(c,fout);
putc(c,stdout);
}
fclose(fin);
fclose(fout);
if((fin=fopen("out.txt","r"))==NULL)
return -1;
printf("\n/*********************************\n");
printf("* dest *\n");
printf("*********************************/\n");
while((c=fgetc(fin)) != EOF){
putc(c,stdout);
}
fclose(fin);
return 0;
}
0766デフォルトの名無しさん
2010/01/13(水) 21:39:26f(x)としてなにを与えますか?
0767デフォルトの名無しさん
2010/01/13(水) 21:52:43あと問題3だけなんですが、わかる方よろしくお願いします。
0768デフォルトの名無しさん
2010/01/13(水) 21:57:44double型変数bをifの条件分岐に用いているが、これって良いの?
0770デフォルトの名無しさん
2010/01/13(水) 22:13:58[1] 授業単元:C言語
[2]問題文:
下記の機能を備えた極めて単純なデータベースシステムであるカード型データベースシステムの構築を考える。
新しい科目を登録する機能
すでに登録されている科目を修正(更新)する機能
登録科目のソート(並び替え)を行う機能
登録科目の一部分のみを検索して取り出し、表示する機能
登録科目から、卒業までに必要な単位を計算し、表示する機能
卒業要件を簡略化しても良い.
[3] 環境
[3.1] windowsXP
[3.2] Visual Studio 2003
[3.3] 言語: c
[4] 期限: 1月22日
0771デフォルトの名無しさん
2010/01/13(水) 22:14:04[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
非線形方程式の解を求めるアルゴリズムのひとつに、ニュートン法と呼ばれる方式がある。
この方法ではf(x)=0の解の近似値を次の漸化式から求める。
ただしf'(x)はxによる微分を表す。
x_(i+1) =x_i - f(x_i)/f'(x_i)
f(x)=2^2-e^x-2=0
x_i の初期値を x_0 としたとき i=1から i=5すなわちx_1からx_5までをC言語で順次計算して示せ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2010/01/15
[5] その他の制限:特に無し
計算結果も書いていただけると助かります。
お願いします。
0772デフォルトの名無しさん
2010/01/13(水) 22:23:55[2]問題文:氏名,年齢,性別が5人分書かれた次のようなテキストファイルを読み
込んで、両面に表示するプログラムを作成せよ.このとき,構造体を利用
せよ.
(入力ファイル:test.txtの中身)
Tanaka 31 Man
Kawai 24 Man
Suzuki 22 Woman
ltoh 40 Woman
Sugita 37 Man
[3] 環境
[3.1] Linux
[3.2] k-term emacsで作成するやつ
[3.3] 言語: c
0773デフォルトの名無しさん
2010/01/14(木) 00:06:26画像処理
[2] 問題文(含コード&リンク):
http://ux.getuploader.com/pyonpyon2009/download/6/%E8%AA%B2%E9%A1%8C.zip
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
1/24
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
難しいかもしれませんがよろしくお願いしますm(_ _)m
0774デフォルトの名無しさん
2010/01/14(木) 02:50:37http://codepad.org/znHQqtuI
0775デフォルトの名無しさん
2010/01/14(木) 05:56:26[2]問題文:
二次関数 f(x) = x2 について、x=0から3までの定積分を求めたい。
区分求積法により、この積分の近似値を求めよ。
x軸方向の刻み幅Δxを0.1とする。
[3] 環境
[3.1] windowsXP
[3.2] Visual Studio 2003
[3.3] 言語: c
[4] 期限:10時くらいまで
0776デフォルトの名無しさん
2010/01/14(木) 11:14:56[2]問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10361.txt
[3]環境
[3.1]OS:Linux
[3.2]コンパイラ名とバージョン:gcc
[3.3]C
[4]2010年1月17日23時59分まで
よろしくお願い致します。http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm?
0777デフォルトの名無しさん
2010/01/14(木) 14:30:51ソース中の文字列を暗号化して埋め込もうとしたけど無理だね
0778620
2010/01/14(木) 14:34:13ありがとうございます。自分が作ったのだと、下半分んみならず上半分も掃き出してしまって意味がわからなくなっていました。
0779デフォルトの名無しさん
2010/01/14(木) 15:09:38お礼遅れてごめんなさい。助かりました。ありがとうございました。
0780620
2010/01/14(木) 20:23:39[2] 問題文(含コード&リンク): 0,1のみを成分にもつn次正方行列Aは各行を2進数とみなして整数のリストとして表現できる。
たとえば 3次正方行列は 1,0,0/0,1,0/0,0,1は{4,2,1}
これに掃き出し法を適用し、{5,6,3}と入力したとき{5,3,0}と出力されるプログラムを作れ。
ヒントとして、行の入れ替えは数字の入れ替えになる。
n桁2進数xの下位から、上位からの数字はそれぞれどう書けるか考える。
[3] 環境
[3.1] OS: XP
[3.3] 言語: C
[4] 期限: 2010年1月21日
>>673さんに作っていただいたプログラムを基に作るようになります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10350.txt
まず正方行列の次数をきめ、入力できる10進数の最大値を表示、その後その範囲で数値をn回キーボードから入力した後、掃き出し法を行い、その正方行列の行の値を10進数に変換するプログラムです。
前回は本当に助かりました。一応自力でできましたが、>>637さんので自分の組み方の汚さにへこみました。
今回もよろしくお願いします。
0781デフォルトの名無しさん
2010/01/14(木) 21:38:47割り算の割る数をチェックしているだけだから、fabs(b) < epsilon とする必要はあまりないかと。
0782デフォルトの名無しさん
2010/01/14(木) 22:20:200783デフォルトの名無しさん
2010/01/14(木) 22:40:44何故疑問を持ったのかその理由を詳しく
0784デフォルトの名無しさん
2010/01/14(木) 22:45:29>>768じゃないけど
科学技術計算とかだと丸め誤差とかで、実数に「==」は使うな
って教えられる場合があるからじゃね?
0785デフォルトの名無しさん
2010/01/14(木) 23:03:41それが理由なら
条件分岐に〜という前振りの必要なく
多倍長浮動小数でなくdouble型を使っていいの?という質問になると思う
0786デフォルトの名無しさん
2010/01/14(木) 23:10:18http://codepad.org/4hprL3ci
問題の意図的には↓かもしれない
http://codepad.org/gLksb9FS
0787デフォルトの名無しさん
2010/01/14(木) 23:26:120.0と厳密に一致するかをチェックするだけで十分。
(更に、必要ならば割り算のあとで結果がINFになってないか確認)
2つのdoubleで表現された値が同じかを判定するときは許容誤差eplisonを使って
if( fabs(a-b) < eplison ){...}
で判定する。
>>785
固定ビット長の表現を使う限り丸め誤差の問題は逃れられないよ
0788デフォルトの名無しさん
2010/01/14(木) 23:35:30[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10359.txt
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:windows visual stdio 2008
[3.3] 言語: C
[4] 期限: 2010/1/16
[5] その他の制限:プログラムはあまり詳しくないので、ややこしい手法は避けていただければありがたいです。
難しいかもしれませんが、宜しくお願いします。
0790デフォルトの名無しさん
2010/01/15(金) 00:31:18多倍長でも、ビット数は有限だkら丸め誤差はあるでしょう?
0791デフォルトの名無しさん
2010/01/15(金) 00:32:34すまん、表現を間違えた。
浮動小数表現を使う限り丸め誤差の問題は逃れられないよ
0.1を2進数表現する場合、無限桁が必要になるので
どんなに桁数を増やしたところで丸め誤差は必ず生じる
0792デフォルトの名無しさん
2010/01/15(金) 00:58:22#include <stdio.h>
double f(double x){
return x*x;
}
double integral(double a, double b, double h){
int n = (int)((b - a) / h);
double sum = (f(a) + f(b)) / 2;
for(int i = 1; i < n; i++){ sum += f(a + i*h); }
return sum * h;
}
int main(){
printf("%f", integral(0, 3, 0.1));
}
0793デフォルトの名無しさん
2010/01/15(金) 01:29:23http://codepad.org/VqsHCXGc
f(x)= 2^2 - e^x -2 = 0 って変な式だけど括弧忘れてない?
0794デフォルトの名無しさん
2010/01/15(金) 04:25:21それ区分求積法じゃなくて、台形公式じゃね?
0795デフォルトの名無しさん
2010/01/15(金) 04:46:48勘違いしてた
区分求積法の一部に台形公式とかシンプソン則があると思ってたぜ
#include <stdio.h>
double f(double x){
return x*x;
}
double quadrature_by_parts(double a, double b, double h){
int n = (int)((b - a) / h);
double sum = 0;
for(int i = 0; i < n; i++){ sum += f(a + i*h); }
return sum * h;
}
int main(){
printf("%f", quadrature_by_parts(0, 2, 0.01));
}
0796デフォルトの名無しさん
2010/01/15(金) 05:26:20[2] 標準入力から読み込んだテキストファイルを辞書順に整列して標準出力する。
辞書順:文字列比較の順番はASCIIコード文字順をベースとした辞書順であるが、文字順が一部
が変更される A<a<B<c<C<c.....
[3] OS: Turbo-Linux-Fuji コンパイラGCC4.0 言語:C
[4] 2/1迄
[5] 作業用ファイルwork.dat(内容は自由、サイズ無制限とする。プログラム終了時点で削除する必要は無い
ものとする。)
を使用出来る。stdio.hで定義されている標準ライブラリ関数、定数を利用出来る。
整列アルゴリズムは自由とする。
私にはとても難しいので助けて下さい。
0797デフォルトの名無しさん
2010/01/15(金) 05:29:13[2] 問題文(含コード&リンク):問題1 戻値を持たず、一つの double 型の引数を持ち、過去に関数が
呼ばれた時、全ての引数の値の総和を表示する関数、d_total
を定義し、動作の確認ができるプログラムとして作成せよ。例えば、
d_total(0.1);
d_total(0.2);
d_total(0.3);
と呼べば、d_total の内部の処理にて
0.1
0.3
0.6
と表示するということである。
ただし, プログラム中の変数として、外部変数は使ってはな
らない。「内部変数か」自動変数のみを使って実現せよ。
問題2 戻値を持たず、二つの float 型のポインタの引数を持ち、二つ
の引数の値を交換する関数、f_swap を定義し、動作の確認がで
きるプログラムとして作成せよ。
問題3 4行4列のint型の行列を、転置するプログラムを作成せよ。動作の確認のため、転置前と転置後
の行列の内容を表示するようにせよ
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 12月17日 20時まで
[5] その他の制限:特になし
0798デフォルトの名無しさん
2010/01/15(金) 05:52:34[2] 次の関数workをコンパイル出来るように,正しく動作するように修正し、
正しく実行出来るかどうかを確かめられるプログラムを作りなさい。
double *work(double[] a,int N){
double result[N];
result[0] = a[N-2] ,a[N-1],a[0],a[1] a[2]を1:3:4:3:1の重みで平均した値
result[1] = a[N-1],a[0],a[1],a[2] を1:3:4:3:1の重みで平均した値
result[2] = a[0],a[1],a[2],a[3]を1:3:4::3:1の重みで平均した値
result[3] = a[1],a[2],a[3],a[4] を1:3:4:3:1の重みで平均した値
....
result[N-2] = a[N-4],a[N-3],a[N-2],a[N-1],a[0] を1:3:4:3:1の重みで平均した値
result[N-1] = a[N-3],a[N-2],a[N-1],a[0],a[1] を1:3:4:3:1の重みで平均した値
return (double)&result[0];
}
[3] OS:Mac-OSX (Leopard) コンパイラ:gcc 3.0 (XCode) 使用言語:C
[4] 2/1迄
[5] レポート課題です。よろしくお願いします。
0799デフォルトの名無しさん
2010/01/15(金) 06:54:05void d_total(double d){
static double sum=0;
char buff[32];
int i;
sprintf(buff,"%f",sum+=d);
printf("%d\n",strlen(buff));
for(i=strlen(buff)-1;i>=0;i--){
if(buff[i]=='0')
buff[i]=0;
else break;
}
printf("%s\n",buff);
}
void f_swap(float* f1,float* f2){
float tmp;
tmp = *f1;
*f1 = *f2;
*f2 = tmp;
}
>>798
問題文そのまま張ってみ
0800デフォルトの名無しさん
2010/01/15(金) 07:21:43[2]
関数 op(int a,int b,int c)は次の結果を返す。
結果: a op1 b op2 c op3 a op4 b op5 c (op1,op2,op3,op4,op5は
+ - * %(剰余) xor and orの何れか一つ)
+:演算0 -:演算1 *:演算2 /:演算3 xor:演算4 and:演算5 or:演算6
op1=(3*a+5*b)の7による剰余がkの場合、演算kを選択
op2=(5*b+4*c)の7による剰余がkの場合、演算kを選択
op3=(a+3*c)の7による剰余がkの場合、演算kを選択
op4=(a+2*b)の7による剰余がkの場合、演算kを選択
op5=(3*c+2*b)の7による剰余がkの場合、演算kを選択
ここで演算子の優先順位は高い順に + > - > * > % >xor > and > orとする
例えば1 + 3 xor 5 * 7 - 5は(1+3) xor (5*(7-5))を意味する
関数opをコードせよ。どのような演算が行われたか具体的に出力するprintf文も同時に出力すること。
[3] Windows Vista/Visual-C++ 2008/C言語
[4] 1/26迄
0801800
2010/01/15(金) 07:35:17修正前 → +:演算0 -:演算1 *:演算2 /:演算3 xor:演算4 and:演算5 or:演算6
修正後 → +:演算0 -:演算1 *:演算2 %(剰余):演算3 xor:演算4 and:演算5 or:演算6
よろしくお願い致します。
0802デフォルトの名無しさん
2010/01/15(金) 07:49:22>double型変数bをifの条件分岐に用いているが、これって良いの?
アンカー付けろよ
0803800
2010/01/15(金) 07:51:53追加:[5] opから呼び出せる関数はprintfのみとする。
多分もう無いと思います。2度も修正して申し訳ございません。
0804デフォルトの名無しさん
2010/01/15(金) 07:54:42こういうことなんだろうか。
ttp://codepad.org/TAzi6z6B
0805デフォルトの名無しさん
2010/01/15(金) 08:32:47問題文はなるべく一度にミスなく転記して下さるようお願いします。回答が遅れます。
回答期限が短過ぎる場合、回答してもらえない場合があります。
どんな問題でも最低3日はかかると思って下さい。
問題の種類や書き方によっては、回答が無かったり、定まらない場合もありますので、その場合は
回答してもらえないかもしれません。
0806デフォルトの名無しさん
2010/01/15(金) 08:39:210807デフォルトの名無しさん
2010/01/15(金) 09:10:49高等専門学校)や講座名、レポート課題、自由課題、とかの情報を匿名性を十分に保った
状態で記述して欲しいです。(例:M大学理工学部 教養課程授業「プログラミング実習」)
授業形式をとっていても、企業研究所の研究作業に準ずるものや研究室のゼミ課題とか、専門性
業務性が高過ぎるものに関してはここで質問することは不適です。(回答することも良いことでは
ありません)
0810デフォルトの名無しさん
2010/01/15(金) 16:08:20[2] 問題文:softbankのiPhoneの使用料金を計算するプログラムを作りなさい
[3] 環境
[3.1] OS:Windows
[3.2] gcc
[3.3] 言語: C
[4] 期限: 01/15
[5] その他の制限: 基礎しか習っていませんif,for,while,switch,scanf,getsあたりまで終了済み
ぎりぎりで申し訳ありませんがよろしくお願いします。
0811デフォルトの名無しさん
2010/01/15(金) 16:12:29期限が1/15(本日)という件
釣りもいいけど..ほどほどに
0812デフォルトの名無しさん
2010/01/15(金) 17:01:42[2] 問題文(含コード&リンク): 100個の0〜10までの数字があるとするとき0じゃない数字の個数を数えて表示させたいんですが
どうすればいいのかよくわかりませんのでお願いします
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:g++
[3.3] 言語:C++
[4] 期限:とくになし
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0813デフォルトの名無しさん
2010/01/15(金) 17:18:19#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
int main(){
int a[N],i,count=0;
srand(time(NULL));
for(i=0;i<N;i++)a[i]=rand()%11;
for(i=0;i<N;i++)if(a[i]!=0)count++;
printf("%d\n",count);
return 0;
}
0814デフォルトの名無しさん
2010/01/15(金) 18:06:38ありがとうございます
http://codepad.org/vCLLPsVC
>>797
http://codepad.org/RKjOgsTY
>>807
> 質問者は、授業単元の箇所に、教育機関の種類(大学院/大学/専門学校/高等学校/工業
> 高等専門学校)や講座名、レポート課題、自由課題、とかの情報を匿名性を十分に保った
> 状態で記述して欲しいです。
別にいりません。
> 企業研究所の研究作業に準ずるものや研究室のゼミ課題とか、専門性
> 業務性が高過ぎるものに関してはここで質問することは不適です。
どうしてですか?
> (回答することも良いことではありません)
なぜですか?解けるんだったら解いたらいいじゃないですか。
生徒さんですか?最近、学校ではこんなのがはやっているんですか?
0816デフォルトの名無しさん
2010/01/15(金) 18:29:45> 文字順が一部が変更される A<a<B<c<C<c.....
の意味が分からない。A,a,B,b,C,c,D,d,...の順で並ぶってこと?
例えば、aA, aa, aaAの順で並ぶってこと?
0817デフォルトの名無しさん
2010/01/15(金) 18:52:23おそらくそう言う事だろうけど問題文が悪いよね
Z〜aの間にも文字は存在するので
aをA<a<Bとして扱うのか、それともAをa<A<bとして扱うのかで結果は変わるし。
0818デフォルトの名無しさん
2010/01/15(金) 18:55:23なんか特殊なありえない展開が待っているのかと身構えてしまった。
0819353
2010/01/15(金) 20:01:23[2] 問題文:以下はmain関数、サブ関数で作成します。
1.数値nを一つ入力し、各桁の和を求めよ。(123→6)
2.数値nを反転した値を表示せよ。(123→321)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:borland bcc32(?)
[3.3] 言語:C
[4] 期限:2010年1月16日6:00まで
[5] その他の制限:サブ関数まで学習済み
2問とも、1つのプログラム内に含めてください。
よろしくお願いします!
0820353
2010/01/15(金) 20:19:42[2] 問題文:二次方程式ax^2+bx+c=0の解を求めるプログラムを作成せよ。
a,b,cの値を入力する。計算結果は必ず5種類表示すること。
a=b=c=0の場合、処理を終了する。a=b=0、Cが0以外の場合は「不能」と表示する。
a=0、bが0以外の場合は「一次方程式」と解を表示する。
判別式がD<0の場合、「虚解」と表示する。
判別式がD<0の場合以外も、必要な表示、結果を表示します。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:borland bcc32(?)
[3.3] 言語:C
[4] 期限:2010年1月16日6:00まで
[5] その他の制限:サブ関数まで学習済み
よろしくお願いします!
0821デフォルトの名無しさん
2010/01/15(金) 21:24:40[2] 問題文(含コード&リンク):
PAdaで記述されたソースプログラムをC言語のソースプログラムに
変換するコンパイラを作成しなさい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10363.zip
[3] 環境
[3.1] OS: Ubuntu
[3.2] コンパイラ名とバージョン: gcc 4.4.2
[3.3] 言語: C
[4] 期限: 2010年1月31日13:00
[5] その他の制限:
yacc と lexを使わなければいけないのでC言語の宿題と言っていいのか分かりませんが、よろしくお願いします。
0822デフォルトの名無しさん
2010/01/15(金) 21:26:07質問は自由だろ
要は回答者がそれが不正な質問かどうかを見極めて
不正だと思ったらスルーすればいいわけで
0824デフォルトの名無しさん
2010/01/15(金) 22:33:12http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10364.c
0825353
2010/01/15(金) 22:47:38こんなにはやくありがとうございます。
しかし文字化けで、コンパイルはできましたが実行ではエラーが出てしまいました
よくわからなくて、すみません…
0826デフォルトの名無しさん
2010/01/15(金) 23:09:030827デフォルトの名無しさん
2010/01/15(金) 23:21:18[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10362.txt[3] 環境
[3.1] OS:Windows
[3.3] 言語:C
[4] 期限:2010年1月22日5:00まで
お手数かけます。よろしくお願いします。
0828デフォルトの名無しさん
2010/01/15(金) 23:39:51#include <stdio.h>
#include <string.h>
int total(int n){
int i,r=0;
char buff[256];
char *p=buff;
sprintf(buff,"%d",n);
for(i=0;buff[i];i++){
r+=buff[i]-'0';
}
return r;
}
int reverse(int n){
int i,r=0;
char buff[256];
sprintf(buff,"%d",n);
for(i=strlen(buff)-1;i>=0;i--){
r = r*10 + buff[i]-'0';
}
return r;
}
int main(){
int n,sum,ro;
scanf("%d",&n);
printf("org=%d\n",n);
printf("total=%d\n",total(n));
printf("reverse=%d\n",reverse(n));
return 0;
}
0829デフォルトの名無しさん
2010/01/15(金) 23:43:47自分の環境がEUC-JP(LF)なのを忘れてた。
SJIS(CRLF)にしたのをここに置きましたよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10365.c
0830デフォルトの名無しさん
2010/01/16(土) 00:16:19>別にいりません。
全員がいらないとは思っていない。あったほうがいいと俺も思う.
>>796の問題文は曖昧で仕様が曖昧と撥ね付けるべき。制約条件も
かなり厳しいんじゃね?
stdio.hしかインクルードしちゃいけないみたいだし。要するに
テンポラリファイルの上に取り込むと同時にソートしろという
意味じゃないかと...(問題文見る限り一行の長さも決まって無いみ
たいだし)特殊な組み込み用途とかライセンス関係が複雑なコンパイラ
でコーディングする場合、標準関数すら自由に使うことがままならない
し再帰呼び出しもNGとかあるしこういうこともあってもおかしくは無いんで
問題(この場合は作業指示?)の出所を知るのは後々のトラブル防止の為にも
必要だね。
>どうしてですか?
>なぜですか?解けるんだったら...
俺様仕様でも誰様仕様でもプログラムを書くことを解くとは言うのは変
0831デフォルトの名無しさん
2010/01/16(土) 00:21:06重みをつけて平均化する際は要素数5ではなく、重みの和12で割るのが普通じゃないかな。
先に重み係数を重みの和で割っておいても良いから、その場合の関数部分だけ書くとこんな感じ
(全角スペースは全て半角スペース2つに置き換えてコンパイルしてね)。
#define countof(array) (sizeof(array)/sizeof((array)[0]))
double *work(double a[],int N)
{
double wsum = 0, weight[] = { 1, 3, 4, 3, 1 };
double *p, *result = NULL;
int i, j, k, n = countof(weight);
for (i=0; i<n; i++) wsum += weight[i];
for (i=0; i<n; i++) weight[i] /= wsum;
if (N < n || NULL == (result = (double *)calloc(N,sizeof(double))))
return NULL;
for (i=0,p=result; i<N; i++,p++)
for (j=0,k=i+N-2; j<n; j++,k++)
*p += weight[j] * a[k%N];
return result;
}
0833353
2010/01/16(土) 01:40:38ありがとうございます!
ありがたく使わせていただきます!m(_ _)m
0834デフォルトの名無しさん
2010/01/16(土) 02:11:38[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): http://www.dotup.org/uploda/www.dotup.org563734.zip.html
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: c++ / c
[4] 期限: ([2010年01月22日23:59まで]
[5] その他の制限: どなたか、よろしくお願いします。
アップローダーのパスワードは0000です。
自力で出来る限りやってみたのですが限界を感じました
0835デフォルトの名無しさん
2010/01/16(土) 02:31:13>>796の問題は(>>830が指摘しているように)malloc禁止だから
メモリ上に確保してどうこうというのはまずい。
やってできないことはなさそうだけど難しいなあw
0836デフォルトの名無しさん
2010/01/16(土) 03:55:46>>803 見落としたっ!
関数呼びまくりバージョンを参考までにorz
ttp://codepad.org/JhbztdNT
0837デフォルトの名無しさん
2010/01/16(土) 05:09:26http://codepad.org/U0CZpxOb
>>836
俺も同じことやったわw
関数を全部マクロに置き換えたバージョンも作ったけど
関数ポインタの呼び出しがあることに気づいて結局書き直したよ
0838デフォルトの名無しさん
2010/01/16(土) 05:11:56不要なので削除してください。
0839デフォルトの名無しさん
2010/01/16(土) 06:15:010840デフォルトの名無しさん
2010/01/16(土) 07:31:45宿題レベルのプログラムであんまり突き詰める必要なくね?
0841デフォルトの名無しさん
2010/01/16(土) 07:52:27[2] 問題文(含コード&リンク):円盤状に分布させた質点に回転の初期条件をあたえたいのですが、
中心からの距離、位置により速度の大きさと向きが変わるのでどのようにおけばいいのかお願いします。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: c++
[4] 期限: 2010/1/17
[5] その他の制限:
円盤状に分布まではできてます。よろしくお願いします。
0842デフォルトの名無しさん
2010/01/16(土) 09:54:17なるべく元のやつを活かそうと思ったけど、気がついたら別モノにorz
せっかくなんでコメントいっぱいつけといた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10366.c
0843デフォルトの名無しさん
2010/01/16(土) 11:22:54[2] 問題文(含コード&リンク):
1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求めるプログラムを作ってみましょう。
途中経過も表示してください。
例:1^2 + 2^2 =
1^2 + 2^2 + 3^2 =
....
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: BCC Developer
[3.3] 言語: C++
[4] 期限: [2009年1月15日まで]
[5] その他の制限: While 文を使うこと:
While (条件式){
繰り返し実行すべきプログラム
}
っていうやつです。
0844843
2010/01/16(土) 11:25:230845デフォルトの名無しさん
2010/01/16(土) 13:07:02#include <vector>
using namespace std;
int main( int argc, void **argv )
{
int i=0;
vector<int> vi;
while(++i<=10){
vector<int>::iterator it;
int s=0;
vi.push_back(i);
it=vi.begin();
while(it!=vi.end()){
cout<<*it<<"^2 ";
s+=(*it)*(*it);
advance(it,1);
cout<<(it==vi.end()?"= ":"+ ");
}
cout<<s<<endl;
}
return 0;
}
0846デフォルトの名無しさん
2010/01/16(土) 13:30:30#include <string>
#include <iostream>
#include <sstream>
int main(void)
{
std::ostringstream head;
long sum = 0;
int i = 1;
while (i <= 10) {
sum += i * i;
if (i != 1)
head << "+ ";
head << i << "^2 ";
std::cout << head.str() << " = " << sum << std::endl;
++i;
}
return 0;
}
0847デフォルトの名無しさん
2010/01/16(土) 15:38:51[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10368.txt
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年01月18日12:00まで
よろしくお願いします。
0848デフォルトの名無しさん
2010/01/16(土) 16:56:54[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10371.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1月18日 23:00まで
[5] その他の制限: N-2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10370.txt
よろしくお願いします。
0849デフォルトの名無しさん
2010/01/16(土) 17:06:15scanf("%c", &moji);
if(moji == '1')
{
}
else
{
moji=0;
}
//bitmap[y][x] = sepia(bitmap[y][x]);
bitmap[y][x] = moji?sepia(bitmap[y][x]):bright(bitmap[y][x]);
0850デフォルトの名無しさん
2010/01/16(土) 19:02:22[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10369.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1月17日まで
[5] その他の制限:
よろしくお願いします。
0851デフォルトの名無しさん
2010/01/16(土) 19:50:35http://codepad.org/sNvtBNfh
0852デフォルトの名無しさん
2010/01/16(土) 20:13:32[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org567007.zip.html
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VisualC++2008
[3.3] 言語:C言語(ライブラリとしてARToolkit、OpenCVを使用しています)
[4] 期限:2010年01月17日23:59まで
[5] その他の制限:どうか、よろしくお願いします。
アップローダーのパスワードは8756です。
自力で出来る限りのところまでやってみたのですが限界を感じました。
0853デフォルトの名無しさん
2010/01/16(土) 20:18:53[2] 問題文(含コード&リンク):
算術式の値を計算して表示するプログラムを作ってください。
ただし,変数の値は全て1であるとして,式の値を求めること.
例えば,入力が (2*3) と (x+(y+z)) の場合,次のような出力をすればよい.
show: に続いて入力された算術式を,eval: に続いて算術式の値を表示している.
(2*3) ←入力
show: (2*3)
eval: 6
(x+(y+z)) ←入力
show: (x+(y+z))
eval: 3
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年01月18日12:00まで
よろしくお願いします。
0854デフォルトの名無しさん
2010/01/16(土) 20:20:59どっかにURL晒されてるのかな?
0855デフォルトの名無しさん
2010/01/16(土) 21:06:48v_i = ω×(x_i - x_{center})
Cじゃなくて物理の問題だ
0856デフォルトの名無しさん
2010/01/16(土) 22:27:40多分、期末だから。
レポート課題があるんでしょ。
0857デフォルトの名無しさん
2010/01/16(土) 23:14:29課題:黒いケーブルを動画像で除去せよ
使用するライブラリ:ARToolKit、OpenCV
ヒント:1.ケーブルを閾値処理で認識せよ
2.黒い物体から伸びる黒いケーブルを除去するため、処理領域の指定を行う必要がある
3.ケーブルの除去はif文を用いて工夫せよ
・1はできています
・2の処理領域の指定がよくわかりません。たぶん、ARToolkitのマーカを用いて領域を指定するのだと思います。今回、この部分の解決をぜひよろしくお願いいたします。
・3の除去処理ですが、ソースの真ん中部分に記述されています。この部分の解決もできればよろしく
お願いいたします。今の段階では、ずらしてもケーブルが映ったりして、色々と問題があります…
http://codepad.org/cQPfo9Sr
0858デフォルトの名無しさん
2010/01/16(土) 23:54:27自分で考えて工夫するところだからなんとも言えんが。
ケーブルみたいな細いものなら「N回収縮→N回膨張」で消えるから、
1: 作業用画像 <- 元画像 // 物体とケーブルが写っている
2: 作業用画像をN回収縮
3: 作業用画像をN回膨張 // 物体だけ残る
4: 元画像から作業用画像を引く // ケーブルだけ残る
とやればいいんじゃない?
最適なNはケーブルの太さで変わるから、そこはいろいろやって工夫してくれ
0859デフォルトの名無しさん
2010/01/17(日) 00:04:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10373.c
0860デフォルトの名無しさん
2010/01/17(日) 00:11:42error c2059
このエラーはどうやって回避すればいいんでしょうか?
わかる方お願いします><
0861デフォルトの名無しさん
2010/01/17(日) 00:17:560862デフォルトの名無しさん
2010/01/17(日) 00:39:05ここは質問スレでも、初心者スレでもなくて宿題を片付けるスレだ。
0863デフォルトの名無しさん
2010/01/17(日) 01:50:21ありがとうございます!!助かりました!!
0864デフォルトの名無しさん
2010/01/17(日) 01:59:02[2] 問題文(含コード&リンク):
算術式の値を変えずに括弧をくくり直す簡単な式変形を考える.例えば,式
(1+(2+3))
(a*(b*c))
((i*x)+((j*y)+(k*z)))
の括弧を左にくくり直すと,それぞれ,次の式になる.
((1+2)+3)
((a*b)*c)
(((i*x)+(j*y))+(k*z))
括弧を左にくくり直せる (A+(B+C)) や (A*(B*C)) の形の算術式を((A+B)+C) や ((A*B)*C) の形にする式変形は,式に対応する木を
「左に転回」する変形と捉えられる
この操作を実行する関数 rotate_left_exp()を完成させてください。
括弧をくくり直すと値の変わる (8+(8*8)) のような式や,括弧をくくり直せる部分が内側にある (a+(b*(c*d))) のような式は,
変形しないこと.
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年01月18日12:00まで
よろしくお願いします。
0865連動スレ
2010/01/17(日) 05:32:41http://pc12.2ch.net/test/read.cgi/tech/1188501699/
0866デフォルトの名無しさん
2010/01/17(日) 07:30:06【質問テンプレ】
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク): コマンド引数を使用して
以下のように指定した文字列中の指定番号の文字を表示するプログラムを作成せよ。
例:./prg1 abcde 1
char 1 is "a"
./peg1 abcdef123456 10
char 10 is "4"
エラー処理もしっかり行うこと。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2010/1/18/15:00
[5] その他の制限:とくにありません。
0867デフォルトの名無しさん
2010/01/17(日) 07:50:56#include<stdio.h>
int main( int argc, char* argv[] )
{
const int pos = atoi( argv[2] );
printf( "char %d is \"%c\"\n", pos, argv[1][pos-1] );
return 0;
}
# この課題の人は違うと思うけど
# 情報学科の人は自力で課題やった方が良いと思うけどなぁ
# と、宿題片付けますスレでつぶやいてみる
0868デフォルトの名無しさん
2010/01/17(日) 08:33:08#書いている人に言われると逆効果なんじゃね
#とつぶやいてみる てかgcc3.4でstdio.hでatoiが定義されて
#ないから、実行しても動かない。つまり脊髄反射で
#カキコしたことが見え見えw
0869868
2010/01/17(日) 08:59:08>>868
エラー処理については問題文読み飛ばしてしまったので貼直すとこだった。
(読み飛ばしてしまったから)問題のメインの所だけ書いた。
エラー処理は>>866が考えるかなぁ、と。
atoi( )はstdlib.h必要ないんだ、と思いながらコンパイルしてた。
偉そうなこと言っておいて、どちらのミスも俺がバカであることが招いた結果で
解答者として思慮が足りなかったということですね。
>エラー処理は>>866が考えるかなぁ、と。
も、このスレ相応しくない考え方だった。
直したコード。
ttp://codepad.org/PLtHMRto
0871デフォルトの名無しさん
2010/01/17(日) 09:09:33というのはさておき、やはりあせったことが
原因ぢゃね?
このスレ的な正常な流れ
↓
依頼者:宿題やってぇ
回答者A:できたよ、送るよ
回答者B :俺も出来たよ、送るよ
依頼者:Aさん送ってぇ
回答者:ほれ
依頼者:ありがと、Bさんもありがと
回答者C:おれっちも出来た
依頼者:おせーんだよ
教師:ごらぁ〜
0872デフォルトの名無しさん
2010/01/17(日) 09:27:15>>868 動くよ
0873デフォルトの名無しさん
2010/01/17(日) 09:41:160874デフォルトの名無しさん
2010/01/17(日) 09:59:00int main(void){
printf("Hello world¥n");
return 0;
}
でもwaringだけで実行できちゃうみたいだけど
Cの予約語にatoiやprintfは含まれてはないです。
0875デフォルトの名無しさん
2010/01/17(日) 10:40:20応答し送ってと言う迄コードを貼らない
これが最大のエラー対策かもな
0877デフォルトの名無しさん
2010/01/17(日) 10:59:500878デフォルトの名無しさん
2010/01/17(日) 11:07:160879859
2010/01/17(日) 12:24:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10374.c
メモリの開放ができていなかったのとEOFの対応追加しといた。
0880デフォルトの名無しさん
2010/01/17(日) 13:53:47http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10375.txt
よろしくお願いします。
0881デフォルトの名無しさん
2010/01/17(日) 13:54:32[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10376.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1月18日まで
[5] その他の制限:
よろしくお願いします。
0882デフォルトの名無しさん
2010/01/17(日) 14:31:42木の深さが違うから回転とは捉えられないだろう
どんな木構造を想定してるか書かないと問題に
合った回答は期待できないぞ
(1+(2+3))→
> +
> 1 +
> 23
0883デフォルトの名無しさん
2010/01/17(日) 15:08:40Circle::getCPがグダグダ実装だけどw
Circle::Circle(string nm, double x, double y, double d)
: name(nm), cx(x), cy(y), rd(d) {}
int Circle::getCP(const Circle &x) const {
double d = sqrt((cx - x.cx) * (cx - x.cx) + (cy - x.cy) * (cy - x.cy));
int cp;
double penetration = rd + x.rd - d;
double padding = fabs(rd - x.rd) - d;
if (0 < padding) {
cp = 0;
} else if (padding == 0 || penetration == 0) {
cp = 1;
} else if (0 < penetration) {
cp = 2;
} else {
cp = 0;
}
return cp;
}
string Circle::getName(void) const {return name;}
double Circle::getRD(void) const {return rd;}
double Circle::getCX(void) const {return cx;}
double Circle::getCY(void) const {return cy;}
あと、リンク先のは誤字がある。以下のようにしないとコンパイルできない。
cout<<"円"<<p[i].getName()<<"と";
cout<<"円"<<p[j].getName()<<"の共有点の数は";
check_CP(c,sz);
0884デフォルトの名無しさん
2010/01/17(日) 16:14:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10377.txt
>879にマージして使用すること
0885デフォルトの名無しさん
2010/01/17(日) 16:49:07[2] 問題文
ハングマンを作成せよ。
http://ipl.sfc.keio.ac.jp/text/comp-prog-2007-4/main_c9.html#doc1_id2542
http://ipl.sfc.keio.ac.jp/text/comp-prog-2007-4/main_c10.html#doc1_id2748
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: g++(?)
[3.3] 言語:C++
[4] 期限: 2010年01月17日23:59まで
[5] その他の制限
本当に分からなくて困っています。どなたか解答お願い致します。
0886デフォルトの名無しさん
2010/01/17(日) 17:31:54[2] 問題文(含コード&リンク):
ポインタ渡し、値渡し、グローバル変数渡しのswap関数をそれぞれ使ったプログラムを作って実行し、値渡しではうまく変数a,bが交換できないことを示せ。
(ポインタ渡しの場合)
交換前:a=3 b=4
交換後:a=4 b=3
実行例(値渡しの場合)
交換前:a=3 b=4
交換後:a=3 b=4
(グローバル変数渡しの場合)
交換前:a=3 b=4
交換後:a=4 b=3
[3] 環境
[3.1] OS:Windows VISTA
[3.2] コンパイラ名とバージョン:Visual C++2008
[3.3] 言語:C++
[4] 期限:2010/01/17 23:59まで
[5] その他の制限:その他制限
0887デフォルトの名無しさん
2010/01/17(日) 18:00:12ttp://codepad.org/HTnRKy7X
0888デフォルトの名無しさん
2010/01/17(日) 18:06:23(a*(b*c))
((i*x)+((j*y)+(k*z)))
これが動かないよ
0889デフォルトの名無しさん
2010/01/17(日) 18:48:04[2] 問題文
charやdouble型にも1個の関数で対応するswap関数を作れ
http://www.ics.kagoshima-u.ac.jp/edu/proen1c/page8.html
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++2008EE
[3.3] 言語:C
[4] 期限: 2010年01月18日17:00まで
[5] その他の制限
どうかお願いします。
0890デフォルトの名無しさん
2010/01/17(日) 19:01:12#include <iostream>
#include <string>
using namespace std;
char x[100], y[100];
char w[] = "abcdefghijklmnopqrstuvwxyz";
int tryAndSee() {
int s = 0;
char c;
cout << "文字は? "; cin >> c;
if(c == '?') {cout<<"ヒント:"<<"animal"<<endl; return s;}
if(c>='a' && c<='z') w[c-'a'] = '_';
for(int i=0; y[i] != '\0'; i++)
if(y[i] == c) return s;
for(int i=0; x[i] != '\0'; i++)
if(x[i] == c) {y[i] = c; s++;}
cout << y <<endl; cout << "残りは " << w <<endl;
return s;
}
main() {
int hit, total = 0, count = 0, len;
strcpy(x, "hippopotamus"); strcpy(y, "____________");
len = strlen(x);
while(true){
hit = tryAndSee();
if(hit == 0) count++;
if(count == 7) {cout << "残念でした"<<endl; break;}
total += hit;
if(total == len) {cout << "おめでとう"<<endl; break;}
}
return 0;
}
0891デフォルトの名無しさん
2010/01/17(日) 19:17:01char *p,*q;
int i;
char t;
p=(char*)a;
q=(char*)b;
/*
↓このやり方は問題がありますのでしないで下さい。
*/
for(i=0;i<length;i++,p++,q++){
t=*p;
*p=*q;
*q=t;
}
return;
}
0892デフォルトの名無しさん
2010/01/17(日) 19:18:28#include<cstdio>
int a=3, b=4;
void swap_by_pointer(int *pa, int *pb){int c; c=*pa; *pa=*pb; *pb=c;}
void swap_by_value(int a, int b){int c; c=a; a=b; b=c;}
void swap_by_global(void){int c; c=a; a=b; b=c;}
void swap_by_reference(int &a, int &b){int c; c=a; a=b; b=c;}
int main(void){
{
int a=3, b=4;
printf("a=%d b=%d\n", a, b);
swap_by_pointer(&a, &b);
printf("a=%d b=%d\n\n", a, b);
}
{
int a=3, b=4;
printf("a=%d b=%d\n", a, b);
swap_by_value(a, b);
printf("a=%d b=%d\n\n", a, b);
}
printf("a=%d b=%d\n", a, b);
swap_by_global();
printf("a=%d b=%d\n\n", a, b);
{
int a=3, b=4;
printf("a=%d b=%d\n", a, b);
swap_by_reference(a, b);
printf("a=%d b=%d\n\n", a, b);
}
return 0;
}
0893デフォルトの名無しさん
2010/01/17(日) 19:30:16本当に本当にありがとうございます!!出来ました!!
図々しいですが、10章もお願いできませんでしょうか
0894デフォルトの名無しさん
2010/01/17(日) 19:33:05[1] 授業単元: プログラミング演習�V
[2] 問題文(含コード&リンク):
Printfを作る。
%d, %c, %sのみサポートする。
既存の関数・マクロは呼んではいけない。
使えるものはputchar()のみ。
[3] 環境
[3.1] OS: WindouwsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年1月21日(木)まで
[5] その他の制限: 特にありません
0895859
2010/01/17(日) 19:45:18>>884のコードを少し変えてみた。できたよ。これでいいなら。
void rotate_left_exp_(struct node *n)
{
if(n == NULL)
return;
rotate_left_exp_(n->left);
rotate_left_exp_(n->right);
if(n->right == NULL)
return;
if(n->op != n->right->op)
return;
if(n->right->op == number || n->right->op == variable)
return;
swap_node(n->left, n->right);
swap_node(n->left->left, n->left->right);
swap_node(n->left->left, n->right);
rotate_left_exp_(n);
}
0896デフォルトの名無しさん
2010/01/17(日) 19:55:23ありがとうございます
0897デフォルトの名無しさん
2010/01/17(日) 20:10:26#include <stdio.h>
enum { N = 3 };
double *solve(double *a, double *b, int N)
{
int i, j, k;
double m;
for (i = 0; i < N - 1; i++) {
for (j = i + 1; j < N; j++) {
m = a[j * N + i] / a[i * N + i];
a[j * N + i] = 0.0;
for (k = i + 1; k < N; k++)a[j * N + k] -= a[i * N + k] * m;
b[j] -= b[i] * m;
}
}
for (i = N - 1; i >= 0; i--) {
for (j = i - 1; j >= 0; j--) {
b[j] -= b[i] * a[j * N + i] / a[i * N + i];
a[j * N + i] = 0.0;
}
b[i] /= a[i * N + i];
a[i * N + i] = 1.0;
}
return b;
}
0898897
2010/01/17(日) 20:11:30>>897の続き
int main(void)
{
double a[N * N] = { 1, 5, 1, 3, 4, 0, 9, 10, 4 };
double b[N] = { 2, 2, 8 };
int i;
solve(a, b, N);
for (i = 0; i < N; i++)printf("%f%c", b[i], (i == N - 1)? '\n' : ',');
return 0;
}
0899デフォルトの名無しさん
2010/01/17(日) 20:49:51int main(void){
/*
x1,x2,x3をそれぞれx,y,zとかく
x+5y+z=2
3x+4y=2
9x+10y+4z=8
z=2-5y-x
より
9x+10y+8-20y-4x=5x-10y+8=8
x=2y
3x+4y=2に代入して
10y=2
∴y=1/5,x=2/5
z=2-x-5y=2-2/5-1=3/5
x=2/5 y=1/5 z=3/5
*/
return 0;
}
0900デフォルトの名無しさん
2010/01/17(日) 20:56:12void swap(void *a, void *b, size_t size)
{
void* tmp;
tmp = (void *) malloc(size);
if (NULL == tmp) return;
memcpy(tmp, a, size);
memcpy(a, b, size);
memcpy(b, tmp, size);
}
0901デフォルトの名無しさん
2010/01/17(日) 21:18:05>>900
ありがとうございます。
0902デフォルトの名無しさん
2010/01/17(日) 21:35:51ありがとうございます。
本当に助かります。
0903815 ◆QZaw55cn4c
2010/01/17(日) 21:53:38バグがありましたので、俺様仕様ですが訂正いたします。
http://codepad.org/RNB6vMYe
>>830 >>835
確かに仕様にあいまいなところはありますが、宿題レベルでそこまで厳しくみるのはどうか。
stdio.h しかインクルードできないのはつらいところです。
stdlib.h (malloc()/realloc()/free())はデフォで可と考えたいところですが、やはりこの問題ではだめですかね。つらいですね。
string.h はご存知のように自前でつくれます。
一行の文字数に制限のないところは malloc() / realloc() が使えるのなら、なんとでもなります。
再帰呼び出しは、メモリ関係の厳しい環境ではアウトですが、これも宿題レベルで要求されることかどうか。
ただ今回の場合は非再帰でかきなおすことができます。
>>796 では「作業用テンポラリファイルを使用できる」とだけ書いており、別に必要なければ使わなくてもよいと判断しました。
ということで、おっしゃるように俺様仕様で書いてしまったわけです。
>俺様仕様でも誰様仕様でもプログラムを書くことを解くとは言うのは変
それは個人の語感の問題。私は書くでも解くでもどっちでも構いません。
0904859
2010/01/17(日) 22:01:19>>895をさらに改良。速くなった。
void rotate_left_exp_(struct node *n)
{
struct node *t1, *t2, *t3;
if(n == NULL)
return;
while (1) {
if(n->right == NULL)
break;
if(n->op != n->right->op)
break;
if(n->right->op == number || n->right->op == variable)
break;
t1 = n->left;
t2 = n->right->left;
t3 = n->right->right;
n->left = n->right;
n->left->left = t1;
n->left->right = t2;
n->right = t3;
}
rotate_left_exp_(n->left);
rotate_left_exp_(n->right);
}
0905デフォルトの名無しさん
2010/01/17(日) 22:04:08stdarg.h はつかえますでしょうか。
va_list, va_start, va_arg, va_end をつかわないと、可変長引数の printf() は実装できないと思うのですが。
0906デフォルトの名無しさん
2010/01/17(日) 22:13:48その辺はマクロだからどうにかなりそうじゃない?
0907デフォルトの名無しさん
2010/01/17(日) 22:23:12stdarg.h (va_listマクロ etc.) なしに可変長引数の処理は無理ではないでしょうか。
これはマクロといってもsetjump() logjump() 同様、処理系にべったり依存したマクロですし。
0908デフォルトの名無しさん
2010/01/17(日) 22:37:55OSもコンパイラも指定でできないわけない。
http://codepad.org/Ep9uoXLa
0909デフォルトの名無しさん
2010/01/17(日) 23:03:57imgをx方向に-30ずらした画像をimg2に入れると、画像全体がずれてしまいます。
imgは元画像、img2は処理画像です。
for(y=0; y < img->height; y++){
for(x=0; x < img->width; x++){
tmp[0] = imgNIN->imageData[img->widthStep * y + x*3]; // B
tmp[1] = imgNIN->imageData[img->widthStep * y + x*3 + 1]; // G
tmp[2] = imgNIN->imageData[img->widthStep * y + x*3 + 2]; // R
if(tmp[2]==255 && tmp[1]==255 && tmp[0]==255){
img2->imageData[img->widthStep * y + x*3] = img->imageData[img->widthStep * y + (x-30)*3];
img2->imageData[img->widthStep * y + x*3 + 1] = img->imageData[img->widthStep * y + (x-30)*3 + 1];
img2->imageData[img->widthStep * y + x*3 + 2] = img->imageData[img->widthStep * y + (x-30)*3 + 2];
}
}
}
閾値処理で認識した部分(imgNIN)だけをずらすには、どうすれば良いのでしょうか?
0910デフォルトの名無しさん
2010/01/17(日) 23:42:43引き算をする箇所は、転送先のX座標じゃないの?
img2->imageData[img->widthStep * y + (x-30)*3] = img->imageData[img->widthStep * y + x*3];
(x-30)がレンジ(0〜img->width)を外れた場合に行がずれてないか?
0911デフォルトの名無しさん
2010/01/17(日) 23:47:49[1] 授業単元:電子演算機演習
[2] 問題文(含コード&リンク):
2次元の文字配列が、main関数内において次の詞で初期化(空白行も含める)されている。
例によって、初期化に用いられた詞の文字数や行数などはわかっていないものとする。
(1)関数NumOfCharで総文字数(空白以外)を、(2)関数NumOfWordで単語数を、(3)関数
NumOfLineで行数(空白行は数えない。また、空白行が2行以上続くことはない)を、(4)main
関数内でキーボードから一文字入力し、関数NumOfCoinで入力した文字と一致する文字数を数えて、
main関数内でそれらの数を表示する。文字列に小細工をしないこと(単語:空白又は改行から空白
又は改行まで)
[3] 環境
[3.1] OS: WindouwsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年1月19日まで
[5] その他の制限:なし
0912デフォルトの名無しさん
2010/01/17(日) 23:48:33Imagine there's no heaven
It's easy if you try
No hell below us
Above us only sky
Imagine all the people
Living for today
Imagine there's no countries
It isn't hard to do
Nothing to kill or die for
And no religion too
Imagine all the people
Living life in peace
You may say I'm a dreamar
But I'm not the only one
I hope someday you'll join us
And the world will be as one
0913デフォルトの名無しさん
2010/01/17(日) 23:49:41Imagine there's no heaven
It's easy if you try
No hell below us
Above us only sky
Imagine all the people
Living for today
Imagine there's no countries
It isn't hard to do
Nothing to kill or die for
And no religion too
Imagine all the people
Living life in peace
You may say I'm a dreamar
But I'm not the only one
I hope someday you'll join us
And the world will be as one
0914デフォルトの名無しさん
2010/01/17(日) 23:52:20授業でどんなのやったんだ
それによって実装方法変わる
てか実装方法わかる
0915デフォルトの名無しさん
2010/01/17(日) 23:59:52http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10381.cpp
0916885
2010/01/18(月) 00:43:22ありがとうございます。すごく助かりました。本当にありがとうございました。
0917デフォルトの名無しさん
2010/01/18(月) 01:08:50[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10360.txt
このプログラムは5 個の整数の合計,平均,分散,最大値,最小値を求めるC 言語プログラムである.
空欄(ア)(イ)(ウ)(エ)(オ)を埋めてプログラムを完成させなさい.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年1月18日まで
よろしくお願い致します。
0918917
2010/01/18(月) 01:10:492010年1月28日までです。
よろしくお願いします。
0919デフォルトの名無しさん
2010/01/18(月) 01:33:53>>776の問題を解くことができませんか?
もしいましたらよろしくお願いします。
0920デフォルトの名無しさん
2010/01/18(月) 04:15:09可変長引数を使った場合呼出規約が_cdeclになるので
渡された引数がスタック上に順番に配置される。
引数の個数と長さはPrintf()に渡されるformatに書いてある通り(と信じるしかない)
手元のVCだと>>908さんので上手く動いてるんだけどcodepadだとダメだな
0921デフォルトの名無しさん
2010/01/18(月) 04:31:16http://codepad.org/d9vRzuxo
ただ分散の求め方がこれで良かったのか危ういんで間違ってたら言って。
一応
(要素 − 平均値)^2 / 5
でやってみたけどなにぶん習ったのがかなり前の話だから相当怪しい。
0922neko
2010/01/18(月) 06:05:08かなり急いでます。
チェックボックスを5個とボタン1個を使いアンケートみたいなプログラムを作りたいのですができません。
内容としてはチェックの数で表示される答えを違うようにしたいのです。
0〜1個つけたら良い
2〜3個つけたら普通
4〜5個つけたら悪い
みたいな感じで最後にボタンを押したら評価がでてくるというものです。
すべてのプログラムを教えてください!!
0923デフォルトの名無しさん
2010/01/18(月) 06:38:08宿題レベルだから、「リソースは許可無く使えない」だろ? これを解くと表現できる。
業務の場合は、「外部団体が管理すOS/言語環境の事実上の標準なリソースを使えるが、
それを使用した、させた場合の責任も著者に託される」だろ? これは書くと表現できる。
0924デフォルトの名無しさん
2010/01/18(月) 06:45:08どこに問題があるの?
0925デフォルトの名無しさん
2010/01/18(月) 07:38:49平均が ave = sum / 5; で切り捨てられてるよ
あと分散は (2乗の平均) - (平均の2乗) でも計算できるよ
0926デフォルトの名無しさん
2010/01/18(月) 08:33:53double sum = 0; /* 合計を格納する変数*/
0927デフォルトの名無しさん
2010/01/18(月) 08:42:23void swap(void *a,void *b,int length)
{
char *p,*q;
int i;
char t;
p=(char*)a;
q=(char*)b;
/*
無理やりワンライナーw
*/
while(length--) t = *p, *p++ = *q, *q++ = t;
return;
}
0928デフォルトの名無しさん
2010/01/18(月) 08:46:11どこに問題があるの?
0929デフォルトの名無しさん
2010/01/18(月) 08:50:52main(){
int para1, para2, para3, para4, para5 ;
srand(time(0));
para1 = rand()%2;
para2 = rand()%2;
para3 = rand()%2;
para4 = rand()%2;
para5 = rand()%2;
/**START***/
int count = 0;
if(para1 != 0) count++;
if(para2 != 0) count++;
if(para3 != 0) count++;
if(para4 != 0) count++;
if(para5 != 0) count++;
switch(count){
case 0:
case 1:
puts("良い");
break;
case 2:
case 3:
puts("普通");
break;
case 4:
case 5:
puts("悪い");
break;
}
return 0;
}
0930デフォルトの名無しさん
2010/01/18(月) 08:59:10なっちまったな
宿題の依頼を無償で業務的に片付けるスレ
だろ、ここ?
0931デフォルトの名無しさん
2010/01/18(月) 09:25:25業務的に→道楽的に
0932デフォルトの名無しさん
2010/01/18(月) 09:38:560933929
2010/01/18(月) 09:39:26http://www.dotup.org/uploda/www.dotup.org572311.lzh.html
0000
Form1.h ファイルの
private: System::Void button1_Click() {
} を書き換えるんだよ、この子は。
業務的に⇒親として
0934デフォルトの名無しさん
2010/01/18(月) 10:46:56[2]課題:
コマンドライン引数に与えられた英数字からなる文字列を、長さが長いものが先、同じ長さのものどう
しでは辞書に記載される場合に先頭のほうに書かれるものが先に出力されるように出力するCを作る。
引数が与えられてない場合は、何も出力しない。
[3]環境:Windows vistaにBorland C++ 5.5をインストールし,テキストエディターとコマンドプロンプトで
実習作業をする。(IDEはまだ使えない)
[4] 結果報告期限:2/1迄
[5] 制限:
★main関数から呼び出すことが出来る関数はstdio.hに定義のprintf関数だけに制限されています。
★main関数の再帰呼び出しは出来ないものとします。
UNIXシステムの初歩と、ループ文やポインタ、再帰呼び出しは習っています。
よろしくお願いします。(m___m)
0935デフォルトの名無しさん
2010/01/18(月) 11:16:41http://codepad.org/hDqFjTIF
0936デフォルトの名無しさん
2010/01/18(月) 11:27:16制限よく読んでなかった。
http://codepad.org/Ljq8XRdE
0937デフォルトの名無しさん
2010/01/18(月) 11:39:410938デフォルトの名無しさん
2010/01/18(月) 11:40:02[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10362.txt
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C
[4] 期限:2010年1月22日5:00まで
お手数かけます。よろしくお願いします。
0939デフォルトの名無しさん
2010/01/18(月) 12:03:03これでいい?
http://codepad.org/il0CteeV
0940デフォルトの名無しさん
2010/01/18(月) 12:37:55他作関数も自作関数もその使用は簡単なようで
実は意外にムズい。安直な使用はどツボに嵌る
原因と習ったことがあるね
0941デフォルトの名無しさん
2010/01/18(月) 12:41:46#include<stdio.h>
int main(int argc, char *argv[]){
int l1, l2, i, j, k, swap_flag;
char *p;
for(i=1;i<argc;i++){
for(j=1;j+1<argc;j++){
swap_flag=0;
for(l1=0;argv[j][l1];l1++);
for(l2=0;argv[j+1][l2];l2++);
if(l1<l2) swap_flag=1;
if(l1==l2){
for(k=0;k<l1 && argv[j][k]==argv[j+1][k];k++);
if(argv[j][k]>argv[j+1][k]) swap_flag=1;
}
if(swap_flag){
p=argv[j];
argv[j]=argv[j+1];
argv[j+1]=p;
}
}
}
for(i=1;i<argc;i++) printf("%s\n", argv[i]);
return 0;
}
0942デフォルトの名無しさん
2010/01/18(月) 13:14:05[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10378.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年1月19日 9:00まで
[5] その他の制限:
宜しくお願い致します。
0943デフォルトの名無しさん
2010/01/18(月) 13:15:02出来ることを前提にその方法を厳選するのが宿題だろ?C的には
0944デフォルトの名無しさん
2010/01/18(月) 13:15:37printfしか呼び出しちゃだめ、ってなんかオモロイなw
がんばってみたくなる。
0945デフォルトの名無しさん
2010/01/18(月) 13:21:240946934
2010/01/18(月) 13:29:25>>939
>>941
こんなにすぐにやって頂いてありがとうございます。
今授業中なので帰宅してから、DLしてみます。
というか全部OKだったらどれを選べば
いいのかわかりません。その辺りも教えて下されば
恐縮です。
0947デフォルトの名無しさん
2010/01/18(月) 13:50:54chomp()が危ないよ。出題者に教えて上げようね。
0948デフォルトの名無しさん
2010/01/18(月) 15:02:030949デフォルトの名無しさん
2010/01/18(月) 15:39:220950デフォルトの名無しさん
2010/01/18(月) 16:44:05[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10382.c
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[5] その他の制限: ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10383.txt (TSPfile これは48都市)
上のプログラムはランダム法でTSPの解を求めるプログラム。ファイル名をrandom.cとする。
./random TSPfile で実行して、ランダム法での距離を出力する。ってのをやってるんだけども
・ランダムに都市情報を格納していく時に同じ都市番号が格納されてしまう
・距離lenを表示する時に0.00になっちゃうのは、double distance()がおかしいから?もしくは102、103行目の部分
この2点をお願いします。関係無い関数とか引数が定義されてたりして汚いソースだけどお願いします
0951デフォルトの名無しさん
2010/01/18(月) 17:08:12コンパイラ名とバージョン: gcc
言語: C
実行する度に、「computer」「internet」「windows」のいずれかをランダムに表示させたいです。
条件は、二次元配列を使うことなので次のようにしてみました。
char moji[3][10]={"computer","internet","windows"};
乱数を発生させるために、rand又はsrandを用いれば良いと言うことは検索して分かったのですが、その先が・・・
よろしくお願いします。
0952デフォルトの名無しさん
2010/01/18(月) 17:23:54#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
char moji[3][10]={"computer","internet","windows"};
int num;
srand((unsigned int)time(NULL));
num=rand()%3;
printf("%s\n",moji[num]);
return 0;
}
0953デフォルトの名無しさん
2010/01/18(月) 17:47:23中括弧の省略はミスの元
for(i=0;i<num_city;i++) {
if(i!=num_city-1) {
printf(" ランダム法での距離lenは %f\n",len);
len += distance(i,i+1);
}
}
0954デフォルトの名無しさん
2010/01/18(月) 18:01:04int len;
printf(" ランダム法での距離lenは %f\n",len);
int型を%fで表示しようとしてるのが根本原因のようだ。
0955デフォルトの名無しさん
2010/01/18(月) 18:07:32短くしてみる
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main(void){
char moji[3][10]={"computer","internet","windows"};
srand((unsigned int)time(NULL));
printf("%s\n",moji[rand()%3;]);
}
0956955
2010/01/18(月) 18:08:30moji[rand()%3;]の;は無視してくれ
0957デフォルトの名無しさん
2010/01/18(月) 18:39:16つhttp://www.kouno.jp/home/c_faq/c13.html#16
0958デフォルトの名無しさん
2010/01/18(月) 18:54:560959デフォルトの名無しさん
2010/01/18(月) 19:38:09ありがとうございました!!
0960デフォルトの名無しさん
2010/01/18(月) 19:50:05>>904を見てみて
0961デフォルトの名無しさん
2010/01/18(月) 19:58:54[2] 問題文(含コード&リンク): 4行4列のint型の行列を、転置するプログラムを作成し、動作の確認のため、転置前と転置後
の行列の内容を表示するようにせよ。
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月19日 17時
[5] その他の制限: 特になし
0962デフォルトの名無しさん
2010/01/18(月) 20:06:49本当にありがとうございます!!!
0963デフォルトの名無しさん
2010/01/18(月) 20:09:21[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10384.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2010年1月22日 12:00まで
[5] その他の制限:
よろしくお願いします。
0964デフォルトの名無しさん
2010/01/18(月) 20:20:59あざっす。こっから色々いじってきます
0965デフォルトの名無しさん
2010/01/18(月) 20:24:42http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10385.c
0966デフォルトの名無しさん
2010/01/18(月) 20:42:09a,bが重なり合った同サイズの領域のことが考慮されてない
int a[10];
swap((double*)&a[1],(double*)&a[3],sizeof(double));
0967デフォルトの名無しさん
2010/01/18(月) 22:25:19[2] 問題文(含コード&リンク):
1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求めるプログラムを作ってみましょう。
途中経過も表示してください。
例:1^2 + 2^2 =
1^2 + 2^2 + 3^2 =
....
プログラムは↓をできるだけ編集しないでWhile文を使ってお願いします。
#include <stdio.h>
int main(void) {
int i,n,nn;
n=1;
for (i=1;i<=30;i=i+1) {
nn=2*n;
printf("%9d の 2倍は %10d です。\n",n,nn);
n=nn;
}
return 0;
}
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: BCC Developer
[3.3] 言語: C++
[4] 期限: [2009年1月15日まで]
[5] その他の制限: While 文を使うこと:
While (条件式){
繰り返し実行すべきプログラム
}
っていうやつです。
前回書いた問題と少し違うのでよろしくお願いします。
0969967
2010/01/18(月) 22:50:55[1] 授業単元:計算機基本
[2] 問題文(含コード&リンク):
1の2倍は2です
2の2倍は4です
4の2倍は16です...
を30回繰り返すプログラム
プログラムは↓をできるだけ編集しないでWhile文を使ってお願いします。
#include <stdio.h>
int main(void) {
int i,n,nn;
n=1;
for (i=1;i<=30;i=i+1) {
nn=2*n;
printf("%9d の 2倍は %10d です。\n",n,nn);
n=nn;
}
return 0;
}
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: BCC Developer
[3.3] 言語: C++
[4] 期限: [2009年1月19日8時まで]
[5] その他の制限: While 文を使うこと:
While (条件式){
繰り返し実行すべきプログラム
}
っていうやつです。
0970デフォルトの名無しさん
2010/01/18(月) 22:59:08#include <stdio.h>
int main(void) {
int i,n,nn;
n=1;
i=1;
while (i<=30) {
nn=2*n;
printf("%9d の 2倍は %10d です。\n",n,nn);
n=nn;
i=i+1;
}
return 0;
}
0971デフォルトの名無しさん
2010/01/18(月) 23:12:35[2] 問題文(含コード&リンク):
1^2+2^2+3^2+...+8^2+9^2+10^2
プログラムは↓から始めて、While文を使ってお願いします。
#include <stdio.h>
int main(void) {
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: BCC Developer
[3.3] 言語: C++
[4] 期限: [2009年1月19日8時まで]
[5] その他の制限: While 文を使うこと:
While (条件式){
繰り返し実行すべきプログラム
}
っていうやつです。
0972971
2010/01/18(月) 23:17:34問題文をまた間違えてしまいました・・・
↓が正しいです。
1^2+2^2+3^2+...+8^2+9^2+10^2
を求めるプログラムを作ってみましょう
1^2=
1^2+2^2=
1^2+2^2+3^2=
などと途中経過の表示もしなさい
プログラムは↓から始めて、While文を使う。
#include <stdio.h>
int main(void) {
です。何度も間違えてすみません
C/C++の宿題片付けます 134代目
http://pc12.2ch.net/test/read.cgi/tech/1263824755/
0974デフォルトの名無しさん
2010/01/18(月) 23:35:15#include <stdio.h>
#include <string.h>
int main(void) {
int i,sum;
char buff[128]={0},tmp[16];
i=1;
sum=0;
while(i<=10){
sum+=i*i;
if(i==1)sprintf(tmp,"%d^2",i);
else sprintf(tmp,"+%d^2",i);
strcat(buff,tmp);
printf("%s=%d\n",buff,sum);
i++;
}
return 0;
}
0976デフォルトの名無しさん
2010/01/19(火) 00:18:48>>921
ave = (double)sum / 5;
0977デフォルトの名無しさん
2010/01/19(火) 02:08:31[2] 問題文(含コード&リンク):異なる自然数p,qと、もう一つの自然数dを入力する。
d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に表示し、
最後にその個数を表示するプログラムを作成せよ。入力する数字はp、q、dの順とする
実行例
3 5 10
3 5 6 8 9 10
合計で6個あります。
[3] 環境
[3.1] OS:Windows vista
[3.2] コンパイラ名とバージョン:VS 2008
[3.3] 言語:C
[4] 期限:2010年01月19日10:00まで
[5] その他の制限:特になし
0978977
2010/01/19(火) 02:09:250979デフォルトの名無しさん
2010/01/19(火) 03:14:00どっちも自然数としか書いてないのに
0980デフォルトの名無しさん
2010/01/19(火) 03:17:51その実行例も含めて、出題された問題文?
0981デフォルトの名無しさん
2010/01/19(火) 07:20:58#include <stdio.h>
int f(int p, int q, int n)
{
while(n>=0) {
if(n % q == 0) return 1;
n -= p;
}
return 0;
}
int main(void)
{
int p, q, d, i, c = 0;
scanf("%d%d%d", &p, &q, &d);
for(i=1; i<=d; i++) if(f(p,q,i)) printf("%d ", i, c++);
printf("\n合計で%d個あります。", c);
return 0;
}
0982デフォルトの名無しさん
2010/01/19(火) 08:18:420983977
2010/01/19(火) 09:08:530984デフォルトの名無しさん
2010/01/19(火) 09:32:37言語はCです。いくら悩んでも分からないんで、どなたか指摘をお願いします。
#include <stdio.h> #include <stdlib.h> #include <string.h>
#define DATA_MAX 5 /* データの最大件数 */ #define NAME_LEN_MAX 16 /* 名前の長さ */
#define TEL_NUMBER_LEN_MAX 16 /* 電話番号の長さ */ #define YUUBINN_LEN_MAX 8 /* 郵便番号の長さ */
#define ADDRESS_DATA_MAX 64 /* 住所の長さ */
typedef struct Address_Note{
char name[NAME_LEN_MAX]; /* 名前 */
char tel_number[TEL_NUMBER_LEN_MAX]; /* 電話番号 */
char zip_code[YUUBINN_LEN_MAX]; /* 郵便番号 */
char address[ADDRESS_DATA_MAX]; /* 住所 */
}NOTE;
void input_data(NOTE *p); /* データの入力 */
void print_data(NOTE *p); /* データの出力 */
void data_serch(NOTE *p, NOTE data[]); /* データの検索 */
int g_address_data_count;
int main(void){
char judge;
NOTE data[DATA_MAX];
NOTE *p;
g_address_data_count = 0;
0985984(2)
2010/01/19(火) 09:33:20g_address_data_count++;
printf("続けて入力しますか?(Yes:Y、No:N)");
scanf("%s", &judge);
while(judge!='y' && judge!='Y' && judge!='n' && judge!='N'){
printf("YかNを入力してください:");
scanf("%s", &judge); }
if(judge=='n' || judge=='N') break;
else if(judge=='y' || judge=='Y') continue; }
if(g_address_data_count == DATA_MAX){ printf("これ以上登録できません。\n");
exit(EXIT_FAILURE); }
for(p=&data[0]; p!=&data[g_address_data_count]; p++){ print_data(p); printf("\n"); }
data_serch(p, &data[DATA_MAX]);
return EXIT_SUCCESS;}
void input_data(NOTE *p){
printf("名前を入力してください:");
scanf("%s", p->name);
printf("電話番号を入力してください:");
scanf("%s", p->tel_number);
printf("郵便番号を入力してください:");
scanf("%s", p->zip_code);
printf("住所を入力してください:");
scanf("%s", p->address);
printf("\n");
}
0986984(3)
2010/01/19(火) 09:34:20void print_data(NOTE *p){
printf("名前:%.8s\n電話番号:%.15s\n郵便番号:%.8s\n住所:%s\n", p->name, p->tel_number, p->zip_code, p->address);
}
void data_serch(NOTE *p, NOTE data[]){
int i;
char serch[NAME_LEN_MAX];
char *str;
printf("誰を検索しますか?:");
scanf("%s", serch);
for(p=&data[0]; p!=&data[g_address_data_count]; p++){
str = strstr(p->name, serch);
if(str != NULL)
print_data(p);
}
}
これで最後です。
かなり長く見づらくて申し訳ないですがよろしくお願いします。
0987デフォルトの名無しさん
2010/01/19(火) 09:38:17http://pc12.2ch.net/test/read.cgi/tech/1263014439/
0988デフォルトの名無しさん
2010/01/19(火) 09:44:36data_serch(p, data);
0990984
2010/01/19(火) 10:52:59.txtファイルを読み込みたいんですが、記述はおかしくないはずなのにポインタfpに
読み込めず、エラーーメッセージすら出ません。
原因はどんな事が考えられるでしょうか?
int main(void)
{ int i,val;
char judge;
NOTE data[DATA_MAX];
NOTE *p;
FILE *fp;
if((fp = fopen("address_note.txt", "r"))==NULL)
{
printf("ファイルが見つかりませんでした---address_note.txt\n");
exit(EXIT_FAILURE);;
}
i=0;
while(fscanf(fp,"%d",&val)!=EOF)
{
fscanf(fp,"名前:%.8s\n電話番号:%.15s\n郵便番号:%.8s\n住所:%s\n", p->name, p->tel_number, p->zip_code, p->address); /*データの読み込み*/
i++; /*次に移るために「i」を1つ増やす*/
}
0991デフォルトの名無しさん
2010/01/19(火) 10:55:35p が指す先の領域を指定していない
0992デフォルトの名無しさん
2010/01/19(火) 11:00:45よく分からないんですが、どんな記述をすればいいんでしょうか?
0993梅
2010/01/19(火) 11:02:56{
p=(NOTE*)data[...
0994デフォルトの名無しさん
2010/01/19(火) 11:03:52p=&data[i];
0995デフォルトの名無しさん
2010/01/19(火) 11:03:52よく分からないんじゃなくて、お前、何一つわかっちゃいないだろ?
fscanfの直前でp = data[i];してみれ。
0996955
2010/01/19(火) 11:05:540997梅
2010/01/19(火) 11:08:360998デフォルトの名無しさん
2010/01/19(火) 11:16:53C/C++の宿題片付けます 134代目
http://pc12.2ch.net/test/read.cgi/tech/1263824755/
0999デフォルトの名無しさん
2010/01/19(火) 11:21:42すみません。
>>995
いえいえ。
>>993-995
おっしゃるとおりにやったんですが、コンパイルしてもfpに代入された値は使用されていないと出ます。
もうさっぱり分からないです…。
1000デフォルトの名無しさん
2010/01/19(火) 11:27:32ソースコード全部貼れ馬鹿
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。