C/C++の宿題を片付けます 88代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/05/25(金) 14:15:16【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 87代目
http://pc11.2ch.net/test/read.cgi/tech/1179025919/
0002デフォルトの名無しさん
2007/05/25(金) 14:22:530003 ◆k6YSo.f4Pk
2007/05/25(金) 16:16:04[1] 授業単元:アルゴリズム
[2] 次の手順で,データ構造「ヒープ」を実現するプログラムheap.cを作成せよ.
1.まず,ヒープに保存する整数データの個数をキーボードから入力する.
2.次にデータを1つキーボードから入力する.
そして入力された1個のデータをヒープに挿入する関数(例えばinsert())を呼び出しヒープを完成させる.
データが1つ挿入されるたびにヒープの状態をディスプレイ上に表示する(表示方法は各自に任せる).
この動作を繰り返し,個数分のデータをすべてヒープに保存する.
3.個数分のデータが全て入力できたら,ヒープの完成状態(木構造)をディスプレイ上に表示する.
4.同様に,ヒープ中の最小データを1つずつ取り出す関数deletemin() を呼び出し,
保存されているデータがなくなるまで個数分だけ繰り返す.
データ挿入時と同様にヒープの各状態をディスプレイ上に表示する.
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:c言語
[4] 期限: 2007年5月28日
[5] その他の制限:データ構造「ヒープ」にデータを1つずつ入れ,
そして1つずつデータを取り出すときの動作を理解すること.
くれぐれも全てのデータを一旦入力してからヒープを作り直すのではなく,
一つ一つデータを読み込みながら処理が進む過程を理解すること.
データの入力はファイルから読み出すと良い.つまり,キーボードから入力する代わりにファイルから読み出す
この問題に見覚えのある人はきっと同じ学校ですね。この授業毎回面倒だよね。
0004デフォルトの名無しさん
2007/05/26(土) 00:41:460005デフォルトの名無しさん
2007/05/26(土) 01:02:420006デフォルトの名無しさん
2007/05/26(土) 01:59:24PGMのデータを作ったのですが、途中で止まってしまい、デバックで確認したら
プログラム中の g[i][j]= v; ところで落ちているみたいなのですが、
このような書き方は間違いなのですか?またいい方法があったら教えてもらえないですか?
プログラムは長いので分けます。
/*--------------------------------------------------------
指定の入力ストリームからPGM形式の画像データを読み込む
--------------------------------------------------------*/
int readPGM ( FILE *fp , unsigned char **g, int *ph , int *pw ){
int i, j, m, v;
if( fgetc(fp) != 'P' || fgetc(fp) != '2' ){
printf("このデータはPGM形式ではありません。\n");
return (1);
}
if ( fscanf( fp , "%d" , pw ) != 1 ){
printf("幅の読み込みに失敗しました。\n");
return (1);
}
if ( *pw > MAXWIDTH) {
printf("幅(%d)が%dを越えています!\n", *pw , MAXWIDTH);
return (1);
}
0007デフォルトの名無しさん
2007/05/26(土) 02:00:32printf("高さの読み込みに失敗しました。\n");
return (1);
}
if ( *ph > MAXHEIGHT ){
printf("高さ (%d)が%dを越えています!\n", *ph , MAXHEIGHT);
return (1);
}
if ( fscanf( fp , "%d", &m ) != 1){
printf("最大輝度値の読み込みに失敗しました。\n");
return (1);
}
if ( m != MAXVALUE ){
printf ("最大輝度値(%d)が%dではありません。\n", m ,MAXVALUE);
return (1);
}
0008デフォルトの名無しさん
2007/05/26(土) 02:23:330009デフォルトの名無しさん
2007/05/26(土) 02:24:290010デフォルトの名無しさん
2007/05/26(土) 02:59:13http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4062.txt
ここまでやって飽きた。
heap関連はほとんど出来てるつもりだから、後頑張れ。
もしくは他の人頑張ってくれ。
0011デフォルトの名無しさん
2007/05/26(土) 03:13:14[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4044.txt
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 5/28
[5] その他の制限: 特になしです
前スレにも書いたのですが、まだ回答いただけていないので
よろしくお願いします
0012デフォルトの名無しさん
2007/05/26(土) 03:30:48何なんだこの分かりづらいサンプルソースは・・・。
こんなヤツが講師やってんのか、それとも授業進行のせいでこうなってんのか・・・。
0013デフォルトの名無しさん
2007/05/26(土) 03:31:04[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4063.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C言語
[4] 期限: 2007年5月27日
[5] その他の制限: 特になしです
ちょっと長いですけとよろしくおねがいします。
0014デフォルトの名無しさん
2007/05/26(土) 03:34:25すいません
期限28日です
0015デフォルトの名無しさん
2007/05/26(土) 04:03:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4064.txt
>>13
問題2のテストデータによる出力plz
今日はもう寝る。
0016デフォルトの名無しさん
2007/05/26(土) 09:53:11for ( i=0 ; i < *ph ; i++){
for ( j=0 ; j < *pw ; j++){
if ( fscanf( fp ,"%d", &v) != 1 ){
printf("要素(%d %d)が読み込めませんでした。\n", i , j );
return (1);
}
if( v < 0 || v > MAXVALUE ){
printf("要素(%d %d)の輝度値%dが範囲を越えています。\n", i, j, v);
return (1);
}
g[i][j]= v;
}
}
return (0);
}
0018デフォルトの名無しさん
2007/05/26(土) 10:10:54http://www.objectclub.jp/ml-arch/magazine/44.html
0019デフォルトの名無しさん
2007/05/26(土) 11:33:03g[][]だと配列の横幅(宣言のとき右側の[]に書く要素数)、分からないだろ?
だから使えない。(詳しくは別の本当の理由があるけど省略)
実際のループの部分は呼び出し元の形分からないと書けないから、
とりあえず関数の引数を unsigned char **g じゃなくて
unsigned char *g にした方が色々分かり易いと思う。
で。
>[1]PGMファイルの画像処理
にテンプレ守ろうとした心意気が若干見れるから回答したけど
ここは宿題片付けるスレだからな。
単なる質問はC/C++のスレ行った方が良い。
↓とかか?
http://pc11.2ch.net/test/read.cgi/tech/1178432985/l50
0020デフォルトの名無しさん
2007/05/26(土) 12:39:41[2] 問題文(含コード&リンク):
以下の形式のテキストデータを与える
10001001
10100010
00111011
01111101
11111111
10101000
10101011
10101110
これは、8×8の正方形の形で
一つ一つのセルに1か0のデータが書き込まれている。
本問題では、このファイルを読み込み、
(実行時にファイル名を指定できるようにすること。方法は問わない)
最も大きい、1のみが書き込まれた正方形の固まりのセルを見つけ出すこと。
この時、最も左上の座標と、見つけ出した正方形の一辺の長さを出力せよ。
(例の場合は(3,3) 3と出力らしいです。)
なお、上記の例では、8×8の大きさであったが
実行時には、おおよそどのような大きさであっても
実行できるようにプログラムを工夫すること。
また、アルゴリズムのオーダーはO(n^2)を超えないことが望ましい。
[3] 環境
[3.1] OS: Unix
[3.2] コンパイラ名とバージョン: GCC
[3.3] 言語: C
[4] 期限: 5/29
[5] その他の制限: 特になし。
0021デフォルトの名無しさん
2007/05/26(土) 13:01:35最も左上って何?
0022デフォルトの名無しさん
2007/05/26(土) 13:17:49見つけ出した正方形の最も左上のセルの座標と言うことです。
0023デフォルトの名無しさん
2007/05/26(土) 13:20:33言い方が悪かった。(1, 0)と(0, 1)ではどっちが左上?(2, 0)と(0, 1)では?
0024デフォルトの名無しさん
2007/05/26(土) 13:29:33講義中に言及が無かったのですが、
講義全体では(X,Y)の形式で、右方向がX、下方向にYということです。
複数見つかる場合についても言及が無かったのですが
(教授、穴だらけだよ・・・。)
おそらく、講義の状況から複数出せということなので
0111
1111
1111
1110
の場合は、
(2,1) 3
(1,2) 3
という出力でいいと思います。
穴だらけすぎるので、また抗議したいと思います。
(問題は、例年通りらしいのですが・・・。)
0025デフォルトの名無しさん
2007/05/26(土) 13:29:400027デフォルトの名無しさん
2007/05/26(土) 13:39:35セル全体の一番左上の座標は(1,1)だ。
Cプログラマの盲点
0028デフォルトの名無しさん
2007/05/26(土) 13:42:13ありがとうございます。
0029デフォルトの名無しさん
2007/05/26(土) 13:43:52どうせ、出力時に1を足すだけなんだが。
0030 ◆k6YSo.f4Pk
2007/05/26(土) 14:35:00何とか>>3このプログラムを完成させたいのですがどなたか協力していただけないでしょうか?
0031デフォルトの名無しさん
2007/05/26(土) 14:44:31おまい、ちょっとは自分でがんばれよw
0032 ◆k6YSo.f4Pk
2007/05/26(土) 14:47:43ダメです・・・。どーしてもわかりません><
0033デフォルトの名無しさん
2007/05/26(土) 14:55:04土曜の午後には程よい問題だった(いろいろ手を抜いてるけど)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4065.c
>>30
ついでにやっといた
10とは別物
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4066.c
0034デフォルトの名無しさん
2007/05/26(土) 15:09:42課題だけではなく、いろいろと勉強になりました
ありがとうございました。
(2次元配列っぽくヒープにアクセスする方法は
すごく面白かったです。)
0035デフォルトの名無しさん
2007/05/26(土) 15:50:09ここに質問するレベルのやつが、あの書き方を読めるって言うのは意外。
>>33は意地悪だなと思っていたのだが、そうでもないのか?
どうも、ゆとりを舐めすぎてるな、吊って来る。
0036デフォルトの名無しさん
2007/05/26(土) 16:05:10これは賢いな。こんな単純な方法があったとは。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4067.c
せっかく書いたから晒すけど、あまり良いところはないかも。
0037デフォルトの名無しさん
2007/05/26(土) 16:13:32気になったんだが、問題文となるテキストは正方形だけ?
>>33
アルゴリズムに感心した
0038デフォルトの名無しさん
2007/05/26(土) 16:21:53そうでなくても、ここから改造できなきゃ、単位落とせって感じだが。
0039デフォルトの名無しさん
2007/05/26(土) 18:54:27(゚д゚)ウマー。それは気づかなかったわ。
0041デフォルトの名無しさん
2007/05/26(土) 21:08:35[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4078.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland
[3.3] 言語:C
[4] 期限:5/28の23:59まで。
[5] その他の制限: 特になし
情報不足かもしれませんがどなたか出来る方よろしくお願いいたします。
0042デフォルトの名無しさん
2007/05/26(土) 22:25:51個人的には分かりやすくて良いコードだと思うんだけど、どの辺が意地悪?
0043デフォルトの名無しさん
2007/05/26(土) 22:27:53依頼者見てるかな。
> なお、上記の例では、8×8の大きさであったが
> 実行時には、おおよそどのような大きさであっても
> 実行できるようにプログラムを工夫すること。
「どのような大きさでも」ってあるけど、
長方形とか非矩形の場合もあるのかな?それとも正方形限定でいいのかな?
あと、そのファイルには '0' か '1' (か改行) しか書いていないと限定していいのかな?
0044デフォルトの名無しさん
2007/05/26(土) 23:03:25[2] 問題文(含コード&リンク):タートルグラフィックライブラリを用いて
ドラゴン曲線を描くプログラムを作成せよ。
[3] 環境
[3.1] OS: Turbolinux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 5/28 17:00
[5] その他の制限:引数を持った関数の再帰を利用する。
ドラゴン曲線は・直線をそれを底辺とする直角二等辺三角形の2辺に置き換える。
・以降は、交互に上下に入れ替わった辺で置き換える。
・これを繰り返す。
ことで作れる曲線です。
どなたか分かる方教えてください。お願いします。
0045デフォルトの名無しさん
2007/05/26(土) 23:25:10[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4080.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々) WindowsXP
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) cygwin
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: 5/27 12:00まで
[5] その他の制限: 特になし
お手数ですが、よろしくお願いします
0046デフォルトの名無しさん
2007/05/26(土) 23:32:52タートルグラフィックスライブラリとやらの入手先
0047デフォルトの名無しさん
2007/05/27(日) 00:05:30肝心なこと忘れてました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4081.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4082.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4083.txt
0048デフォルトの名無しさん
2007/05/27(日) 00:08:14ごり押しでやれば出来るのは分かってるんだが、そこで思考停止してしまって・・・。
「システムログを解析する:」のアルゴリズムを拡張した形ってことは、
つまり各ユーザ及びジョブ(またはプログラム)の開始時間を保存・管理しないんだと思うけど、
誰か案やらヒントだけでも良いからそういう方法思いつかない?
ちなみに問題1.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4084.txt
0049デフォルトの名無しさん
2007/05/27(日) 00:32:09winlib.hとやらがない
0050デフォルトの名無しさん
2007/05/27(日) 00:38:54>>47
コレだと思われる。
ttp://edu.cs.inf.shizuoka.ac.jp/2006/A041/report/for-rp6b/turtle.html
0051デフォルトの名無しさん
2007/05/27(日) 00:41:10これです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4085.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4086.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4087.txt
0052デフォルトの名無しさん
2007/05/27(日) 01:48:50もし人間が勝手に、ふっと沸いて0^0と書いたとしても、結果の値は存在せず。
不定だから1でも0でも良いんだよとか言っちゃっている奴は注意。
不定だから何か適当な値でも良いのではなく、値そのものが存在しない。
0053デフォルトの名無しさん
2007/05/27(日) 02:29:050054デフォルトの名無しさん
2007/05/27(日) 02:32:45答えは定まっていない不定だよ。極限を使ったやり方を紹介しているところもあるが、それは
限りなく0に近づけた底に限りなく0に近づけた指数が限りなく1に近づく(収束)すると言うが
限りなく0に近い値は0にはならない。そして結果についても0や1という具体的な値にはならない。
極限で求めるやり方は極限を用いることそのものがすでに不適切。
0055デフォルトの名無しさん
2007/05/27(日) 02:35:01それについてはまったくのでたらめ。単にプログラム側が底をなんにしようと0乗を1と出すように
仕組まれているだけであって、本当ならその場合は条件分岐にて処理をして 不定 やら NAN とすべき。
0056デフォルトの名無しさん
2007/05/27(日) 02:39:130057デフォルトの名無しさん
2007/05/27(日) 02:41:04いや、申し訳ないが、>53には1だとは書いてないのだが。
0058デフォルトの名無しさん
2007/05/27(日) 02:42:36暴れたいんだけどネタがないからしょうがなく自分で過去の話題振ってるんじゃない?w
ほっときゃ朝には飽きるよきっと
0059デフォルトの名無しさん
2007/05/27(日) 03:10:170060デフォルトの名無しさん
2007/05/27(日) 03:25:12[2] 問題文(含コード&リンク):
マス目1辺の数xと、各行と各列の黒いマスの個数が条件として
ファイルで与えられたとき、この条件を満たすマス目のパターンの
個数を求め、全パターンを表示するプログラムを作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 最終期限は6月17日までです。
[5] その他の制限:
とりあえず、ファイルを読み込み配列に格納する関数と、画面にパターンを
出力する関数は出来ているので、メインとなるパターンの個数を求める関数の
大まかな手順というかアルゴリズムを考えられるだけ教えて頂けると助かりま
す。プログラム自体は自分で考えようと思ってます。
現段階では総当たりしか思いつかないので、総当たり以外で何かあれば、
教えて下さい。
0061デフォルトの名無しさん
2007/05/27(日) 03:34:37ちょっと考えてみたけど、総当たりぐらいしか思い付かんな
一つだけ見つけりゃいいってなら、ひょっとしたら何かやり方もありそうだが全部だしな
後は分枝限定法で無駄を省くぐらいしか無いんじゃね?
0062デフォルトの名無しさん
2007/05/27(日) 04:10:14[2] 問題文(含コード&リンク):
「与えられた2つのプログラムを1つにしなさい」
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
1つめのプログラム
main()
{
#include <stdio.h>
double max, min, data;
int i, n;
FILE *fp;
if ((fp = fopen ("foobar.txt", \
"r")) == NULL)
{
printf ("file not found");
exit (1);
}
fscanf (fp, "%d", &n);
if (fscanf (fp, "%lf", &data) \
! = EOF)
{
i = 1;
max = data;
min = data;
0063デフォルトの名無しさん
2007/05/27(日) 04:11:27{
i = i + 1;
if (data > max)
{max=data;}
else if (data >= min)
{}
else
{min = data;}
}
printf ("n = %d 最大値 =%f \
最小値 = %f", i, max, min);
if (i !=n)
{printf (" 数が合いません n= %d \
i=%d", n, i);}
}
else
{printf (" 数値がありません");}
fclose (fp);
}
006462
2007/05/27(日) 04:12:45main()
{
#include <stdio.h>
double max, min, data;
int i, n;
FILE *fp2;
if ((fp2 = fopen ("fooout.txt"), \
"w")) == NULL)
{
printf("file open error");
exit(1);
}
scanf ("%d", &n);
if (scanf ("%lf", &data) \
!= EOF
{
i = 1;
max = data;
min = data;
while (scanf ("%lf", &data) != EOF)
{
i = i + 1;
if (data > max)
{max = data;}
else if (data >= min)
{}
else
{min = data;}
}
006562
2007/05/27(日) 04:14:34最小値=%f",i,max,min);
if (i != n)
{fprintf (fp2," 数が合いません n= %d \
i=%d" , n, i);}
}
else
{fprintf (fp2," 数値がありません");}
fclose (fp2);
}
上記は入力と出力のプログラムで、それらを一つにしろということだと思うのですが、どこに手を入れたら良いのかわからず
連レスすみません。よろしくお願いします。
0066デフォルトの名無しさん
2007/05/27(日) 04:16:22{
#include <stdio.h>
ちょっwwwwwwwwwおまっwwwwwwwww これ無理wwwwwww
しかも所々、改行されているところに \ が入っているしwwwwww
これ、UNIXでmuleでも使って入力したんかい?
0067デフォルトの名無しさん
2007/05/27(日) 04:18:240068デフォルトの名無しさん
2007/05/27(日) 04:31:53includeディレクティブはソースを引用するだけだから、関数内でできないことが書かれていない限りエラーにはならない。
また、改行文字をエスケープ文字でエスケープしてもそれは単に無視される。
勿論、一般的には間違いだが。
0069デフォルトの名無しさん
2007/05/27(日) 04:41:03改行についてはprintfの""の中で使うやつじゃなくて、単に行の端にある
\ の部分について。例えば
if ((fp2 = fopen ("fooout.txt"), \
if (scanf ("%lf", &data) \
この一番右にあるみょうちくりんなやつ。
includeについては確かにそれ自身もソースの一部だから、適当な場所にありゃ良いというか
おそらくstdio.hの中に記述されているライブラリや定義を使う分の上にありゃ問題ないかもね。
0070デフォルトの名無しさん
2007/05/27(日) 04:44:24http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4088.c
とりあえずまとめてみたけど・・・これで良いんか?w
0071デフォルトの名無しさん
2007/05/27(日) 05:06:02>マス目1辺の数xと、各行と各列の黒いマスの個数
これって、
1 0
1□□
1□□ (条件)
↓
■□
□■ (解:1個)
ってこと?凄い面倒くさそうなんだけど・・・。
0072デフォルトの名無しさん
2007/05/27(日) 05:08:52ちと面倒だな。まぁ、それを解くプログラムとして使うのかもしれんが、っと推測してみる。
0073デフォルトの名無しさん
2007/05/27(日) 05:15:420074デフォルトの名無しさん
2007/05/27(日) 06:31:14スクリプトなら書いたことはあるが、その逆の各行の数値からパターンを書き出すのは
やったことないなぁ・・・俺はパス。戯言ですまそ。
0075デフォルトの名無しさん
2007/05/27(日) 06:50:17一辺の長さがnで、各行各列の黒マスの個数が全て1のときを考えると、解はn!個ある。
よって、最悪の場合に指数的な時間が掛かることは避けようがないので、なんらかの総当たりが必要。
0076デフォルトの名無しさん
2007/05/27(日) 11:15:24亀レスで申し訳ありません。
正方形限定です。このいっぺんの大きさをnとして
オーダーがn^2以下になるようにする必要があります。
また、テキストには01\n以外の文字は無いと仮定して大丈夫です。
0077デフォルトの名無しさん
2007/05/27(日) 11:19:20はぁ?一番時間がかかるだろ総当りは...
0078デフォルトの名無しさん
2007/05/27(日) 11:30:40だから解くのに時間がかかる問題だと言ってるんだが。
もちろん、愚直な総当たりしか方法がないと言ってる訳じゃない。
枝刈りしながら左上から埋めていくだけでも相当速くなるだろう。
それでも総当たりには変わりない。
0079デフォルトの名無しさん
2007/05/27(日) 11:32:230080デフォルトの名無しさん
2007/05/27(日) 11:36:38入力プログラムの入力ファイル"foobar.txt"から、出力プログラムの出力ファイル"fooout.txt"へ出力するプログラムにしろ、ってことかな?
0081デフォルトの名無しさん
2007/05/27(日) 11:38:59そうなの?ソースある?
0082緊急支援要請 ◆helpMe.UEE
2007/05/27(日) 11:47:14だが…
“突然の終了” “カウントのリセット” “新ルールの導入”
逆境に挫けず再び0から走り出した日本であったが、その前に立ちはだかった新たなる壁、ハンガリー。
彼らの投入した謎の新兵器により、日本はとうとう首位から転落してしまった。
ひとたび彼らが全力を出せば、現在の戦力のままでは太刀打ちできない。
首位の奪還・死守、そして総合優勝のためには、貴様らの参戦が必要不可欠である。
日本の力を世界に知らしめるため…
今一度集え、戦士たちよ!!
─── 一番クリックした国が優勝 ───
http://wwwww.2ch.net/test/read.cgi/news4vip/1180217014/
0083デフォルトの名無しさん
2007/05/27(日) 12:00:28[2] 問題文(含コード&リンク):
Nbit同士の2進数表記の値を入力して結果を筆算表記で印字せよ。
ただし1度10進数に変換してはならない。
また最低16bit同士の演算ができるようにすること。
例
000011
x 001101
---------
000011
000000
000011
000011
----------
000100111
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
008483
2007/05/27(日) 12:03:24#include <stdio.h>
void main()
{
unsigned int a,b,c;
c = 0;
scanf("%d %d",&a,&b);
while(b!=0){
if(b&1) c+=a;
a=a<<1;
b=b>>1;
}
printf("%d\n",c);
}
シフトを使った一般的な乗算のアルゴリズムを作ったのですが
桁上がりの判定ができていないし、筆算表記もさっぱりです。
どうか力をお貸し下さい。
[4] 期限: 5月27日24時
0085デフォルトの名無しさん
2007/05/27(日) 12:12:57日本語でおk?っつか日本語分からないなら消えろ
0086デフォルトの名無しさん
2007/05/27(日) 12:22:1979とは別人だし、ソース無いけど。
総当りって「全ての状況を評価して答えを出す」方法だと思うんだが。
枝刈りしちゃうと「評価されない状態」が出てくるわけで、
総当りとは言えないんじゃない?
と思ったんだけど「総当り法」という方法を現す言葉があって、
『「分枝限定法(これが枝刈り?)」は「総当り法」に含まれる』
という記述が幾つかネットで見つかったので、
用語的には俺が間違えているのかも知れぬー。
よく分からぬー。
0087デフォルトの名無しさん
2007/05/27(日) 12:29:14>ただし1度10進数に変換してはならない。
ここの意味が分からない。
int使って計算したらダメってことか?
意味分からん。
intは10進数じゃないと思うんだが。
でも「表示で10進数使ってヤレ」言われても使いようが無いし。
なんか前も16進で似たような問題あったな・・・。
0088デフォルトの名無しさん
2007/05/27(日) 12:35:010089デフォルトの名無しさん
2007/05/27(日) 12:37:29>>87の安価は>>83の間違い・・・。
009083
2007/05/27(日) 12:37:30説明不足すみません。
>ただし1度10進数に変換してはならない。
これは一旦入力した2つの2進数を10進数に変換して計算し、
最後に2進数へ変換してはならないという事です。
また2つの2進数は符号なしである事を付け忘れていました。
0091デフォルトの名無しさん
2007/05/27(日) 12:37:34人間がとる特徴的な行動、言動だなw
0092デフォルトの名無しさん
2007/05/27(日) 13:12:02aとbの入力のとこは自分でなんとかして。
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[] = "11", b[] = "11", c[32] = {0};
int i, j;
int n = strlen(a);
for(i=0; i<n; i++) putchar(' ');
puts(b);
for(i=0; i<n-1; i++) putchar(' ');
putchar('*');
puts(a);
for(i=2*n; i>0; i--) putchar('-');
putchar('\n');
for(i=0; i<n; i++) {
for(j=0; j<n-i; j++) putchar(' ');
for(j=0; j<n; j++) {
putchar(((a[n-1-i]-'0')&(b[j]-'0'))+'0');
c[i+j] += (a[n-1-i]-'0')&(b[n-1-j] - '0');
if(c[i+j]/2) {
c[i+j+1] += c[i+j]/2;
c[i+j] %= 2;
}
}
putchar('\n');
}
for(i=2*n; i>0; i--) putchar('-');
putchar('\n');
for(i=2*n-1; i>=0; i--) printf("%d", c[i]);
}
0093デフォルトの名無しさん
2007/05/27(日) 13:44:40きみの説明不足というより、
おそらく出題者が進数の意味を分かってないな。
単位が欲しけりゃ、こういうアフォな出題者の意図を汲む力が必要。
今回の場合、
「10進数に変換するな」 = 「intに変換するな」
というのが出題者の意図で、
それを見抜けずにintを使っちゃったら×にされてしまうよ。
0094デフォルトの名無しさん
2007/05/27(日) 13:49:19>>45 もよろしくお願いします
0095デフォルトの名無しさん
2007/05/27(日) 14:08:26int型の意味を理解していないことを露呈しなくて良いから、口を塞いで・・・じゃなくて
キーボードから指を離せ。
0096デフォルトの名無しさん
2007/05/27(日) 14:16:100097デフォルトの名無しさん
2007/05/27(日) 14:21:47>>83にある、0と1(2進数)のまま各桁を筆算しろってことだろ。
int型変数に1と0を入れて計算するなってことじゃないだろ。
http://ja.wikipedia.org/wiki/%E5%8D%81%E9%80%B2%E8%A8%98%E6%95%B0%E6%B3%95
http://ja.wikipedia.org/wiki/%E7%AD%86%E7%AE%97
ちゃんと事実関係を調べてからものを言えって。恥かくぞ、ゆとり世代。
0098デフォルトの名無しさん
2007/05/27(日) 14:22:020099デフォルトの名無しさん
2007/05/27(日) 14:22:18C++言語のところC言語で解答されてて、ある程度C++に文法は変えたんですけど
この下記のプログラムだけが(3行目)分からなくて、これをc++に変えた場合
printf("\n質問\nC言語好き?\n");
scanf("%d",&ch);
printf("%s\n", ch==1? "好きなら上達も速いわ頑張って!" : "そう、別に意味は無いのよただ聞いてみただけ");
どうプログラムなるか教えてください。
0100デフォルトの名無しさん
2007/05/27(日) 14:23:00> 「10進数に変換するな」 = 「intに変換するな」
意味が通じないんですけどぉ〜〜?
010198
2007/05/27(日) 14:26:29自演じゃないよ。
> 「10進数に変換するな」 = 「intに変換するな」
>意味が通じないんですけどぉ〜〜?
>>93は、「出題者は、「10進数に変換するな」という言葉を「intに変換するな」という意味で使っている」という指摘をしたんだろ。
0102デフォルトの名無しさん
2007/05/27(日) 14:27:32それをお前もそう思うなら相当なあほだ。口を閉じてろ。
0103デフォルトの名無しさん
2007/05/27(日) 14:30:043
x13
でやる形にするなってことだろ。
0104デフォルトの名無しさん
2007/05/27(日) 14:31:41[2] 問題文(含コード&リンク):
指定したテキストファイルを読み込み、重複した数字を削除したものを
指定したテキストファイルに出力するプログラムを作りなさい。
読み込むファイルは
154646
467687
468767
154646
のように1行に1数字で1万行ほど書いてあります。
[3] 環境
[3.1] winXP
[3.2] コンパイラ名とバージョン: Visual Studio
[3.3] 言語: C++
0105デフォルトの名無しさん
2007/05/27(日) 14:33:03そうも読めないことはないけど、>>93の解釈の方が自然だろ。
その形にしたって扱いやすいことは何もないんだから。
0106デフォルトの名無しさん
2007/05/27(日) 14:40:410107デフォルトの名無しさん
2007/05/27(日) 14:44:580108デフォルトの名無しさん
2007/05/27(日) 15:02:50>1行に1数字
kwsk
先の行に現れたものとダブっている後に現れた行は出力しない、ってこと?
0109デフォルトの名無しさん
2007/05/27(日) 15:03:52文字列の長さはどうでもいいのですが、文字列の個数を任意の数にしたいのですが。
0110デフォルトの名無しさん
2007/05/27(日) 15:05:37[2] 問題文(含コード&リンク):
キーボードから入力した3桁の数字がぞろ目であるか判定するプログラムの作成。
ぞろ目かどうかを判断する関数 int is_zorome(int n) を定義する。関数int is_zorome(int n) は,n がぞろ目のとき1を戻し,n がぞろ目でないとき0を戻す関数。
入力する数字は、100以上999以下に限定。
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限:
[5] その他の制限: とくにありません。
どなたかお願いします。
0111気まぐれアナスイ
2007/05/27(日) 15:09:340112104
2007/05/27(日) 15:10:13簡単な例で示すとテキストファイルに
1
2
2
5
4
4
3
5
の用に記述されていて、それを読み込んで
1
2
5
4
3
のようなテキストを出力するようなプログラム
(実際はもっと大きな数で、1万行くらいある)
>先の行に現れたものとダブっている後に現れた行は出力しない、ってこと?
そんな感じ
0113デフォルトの名無しさん
2007/05/27(日) 15:11:47http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4090.c
0114デフォルトの名無しさん
2007/05/27(日) 15:20:48{
int a[] = { n % 10, n / 10 % 10, n / 100}, i;
if (n < 100 || n > 999)
return 0;
for (i = 1; i < 3 && a[0] == a[i]; i++);
return i == 3 ? 1 : 0;
}
0115デフォルトの名無しさん
2007/05/27(日) 15:21:22#include<iostream>
#include <fstream>
#include<vector>
#include<algorithm>
using namespace std;
fstream outputFile("output.txt",ios::out);
void print(const int i){
outputFile << i << std::endl;
}
int main(void){
if(outputFile.fail()) return 1;
fstream inputFile("input.txt",ios::in);
if(inputFile.fail()) return 1;
vector<int> v;
while(!inputFile.eof()){
int i;
inputFile >> i;
vector<int>::iterator it=find(v.begin(),v.end(),i);
if(it==v.end()) v.push_back(i);
}
for_each(v.begin(),v.end(),print);
return 0;
}
011662
2007/05/27(日) 15:23:11答え以外にも勉強になる考え方を教えていただき大変参考になりました。
>>80
亀レスですが、そういうことです。
0118デフォルトの名無しさん
2007/05/27(日) 15:40:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4091.cpp
0119気まぐれアナスイ
2007/05/27(日) 15:44:34定義は制限無く論議できる物です。
考える事は素晴らしいです。
全てに対して有効なdata.を創るのは、理解が必要と改めて思いました。
0120デフォルトの名無しさん
2007/05/27(日) 15:45:35#include <stdio.h>
int is_zorome(int n){
char buf[ 3+1], c;
int i;
if(n < 100 || n > 999) return 2;
sprintf(buf, "%d", n);
for(i=1; i<3; i++){
if(buf[0] != buf[i]) return 1;
}
return 0;
}
int main(void){
int n;
scanf("%d", &n);
switch(is_zorome(n)){
case 0: puts("ぞろ目"); break;
case 1: puts("ぞろ目違う"); break;
case 2: puts("3桁がいいなぁ"); break;
}
return 0;
}
0122104
2007/05/27(日) 15:48:51動かしてみたのですが、処理が遅すぎて終わりませんでした。
>>118
結果が表示されませんでした。
>>112では簡単な例で数字を出しましたが、実際に読んでいる数は
201032610121
221933098595
201032538484
222434513975
221933386002
221933386002
232236892105
232236376166
222434623109
232236376166
232234455416
202134063179
202134063179
のような数字です。
0123118
2007/05/27(日) 16:11:48intの範囲に収まるものと仮定していたので修正。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4092.cpp11
0124デフォルトの名無しさん
2007/05/27(日) 16:16:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4092.cpp
012560
2007/05/27(日) 16:26:11やはり、なかなか難しいんですね。
ちなみにマス目1辺の数xは、最大でも7で動作すれば良いらしいです。
最低限4では動作しないとダメだということでした。
0127デフォルトの名無しさん
2007/05/27(日) 16:36:07田舎者は一般的にだらしがない。
視野が狭い。想像力が無い。排他的。
独創的な発想をすぐ潰しにかかる。
いまだに車必須って何だよwww効率悪いだけじゃんwww
夕張再建あきらめろ。全員死ね田舎者。見ててむかつく
0128デフォルトの名無しさん
2007/05/27(日) 16:37:47再帰関数作った。mainはやる気無し。とりあえず3回折。
ライブラリの使い方あってるかどうかは知らん。
#include "turtle.h"
#include "winlib.h"
void dragon(int n, double xi, double yi, double xf, double yf){
double xm,ym,dx,dy;
if(n==0){g_line(xi,yi,xf,yf);return;}
dx=xf-xi;dy=yf-yi;
xm=xi+(dx-dy)/2;ym=yi+(dx+dy)/2;
dragon(n-1,xi,yi,xm,ym);dragon(n-1,xf,yf,xm,ym);
}
void main(){initwin();dragon(3,100,200,100);}
0129127
2007/05/27(日) 16:46:230130デフォルトの名無しさん
2007/05/27(日) 17:02:58やってみた。C++といえるかどうかは微妙…
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4093.c
0131デフォルトの名無しさん
2007/05/27(日) 17:43:50[1] 授業単元:IT入門B1 C言語
[2] 問題文
二次関数(y = a x^2+ bx +c)でxがx1 <= x <= x2のときの最大値と最小値(そのときのxの値も含めて)を求めるプログラムを作成せよ。
ここでa,b,cは整数、x1,x2は浮動小数とする。
[3] 環境
[3.1] OS: Linux
[3.2] gcc versionは不明ですが最新版のはずです
[3.3] 言語:C
[4] 期限: 2007年5月28日0:00まで
[5] その他の制限: 特にありません。
0132デフォルトの名無しさん
2007/05/27(日) 17:45:54こんなもんでいいんじゃねぇの。
#include <iostream>
#include <set>
using namespace std;
int main()
{
string line;
set<string> seen;
while (getline(cin, line)) {
if (seen.find(line) == seen.end()) {
cout << line << '\n';
seen.insert(line);
}
}
return 0;
}
0133デフォルトの名無しさん
2007/05/27(日) 17:47:51前すれ993に回答が出ていたが。
0135デフォルトの名無しさん
2007/05/27(日) 19:26:06[2] 問題文(含コード&リンク):迷路を横型探索と縦型探索で解くプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:2007年5月31日17:00まで
[5] その他の制限:特になし。
よろしくお願いします。
0137気まぐれアナスイ
2007/05/27(日) 20:04:31「fi ibi i」
0138デフォルトの名無しさん
2007/05/27(日) 20:04:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4097.txt
0139デフォルトの名無しさん
2007/05/27(日) 20:07:36ファイルを少し修正しました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4098.txt
お願いします。
0140気まぐれアナスイ
2007/05/27(日) 20:09:080141デフォルトの名無しさん
2007/05/27(日) 20:19:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4099.txt
外部変数まで使った手抜きコードで悪いが、
その辺気にいらなきゃ引数でも使うように変更してくれ。
一応ソレっぽい値は出てるように見えるけど、
出力が正しいかどうかは手計算なりして確かめてみてちょうだい。
ログのFとUでジョブとプログラムのオンな時間を計算してるから、
ソレを全部出力したら参考になるかもね。
0142デフォルトの名無しさん
2007/05/27(日) 20:51:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4100.cpp
もしかしたら遅すぎるかも。
0143デフォルトの名無しさん
2007/05/27(日) 21:18:50#include <iostream>
#include <fstream>
#include <string>
#include <map>
using namespace std;
int main(int argc, char **argv)
{
if (argc != 4)
return cerr << "usage: " << argv[0] << " FILE1 FILE2 FILE3\n", 1;
ifstream file1(argv[1]), file2(argv[2]);
ofstream file3(argv[3]);
if (!file1 || !file2 || !file3)
return cerr << "can't open file" << endl, 2;
map<string, string> selection;
map<string, string>::iterator mi;
string s1, s2;
while (file2 >> s1 >> s2)
if ((mi = selection.find(s1)) != selection.end())
mi->second += ",", mi->second += s2;
else selection[s1] = s2;
while (getline(file1, s1)) {
if ((mi = selection.find(s1)) != selection.end())
file3 << mi->second;
file3 << '\n';
}
return 0;
}
0144デフォルトの名無しさん
2007/05/27(日) 21:26:44プログラムはクイックソートなんですが、
mainと関数部分を同じファイルに書いた場合は正常にコンパイル、動作したので、
main部分を main.c
関数部分を quick.c
で保存、
Makefileを作成し
% make
で実行したところ
gcc -o q-sort -O main.o quick.o -lm
quick.o: In function `main':
quick.c:(.text+0x15): multiple definition of `main'
make.o:make.c:(.text+0x0): first defined here
collect2: ld returned 1 exit status
make: *** [q-sort] エラー 1
となり、コンパイルできませんでした。
main関数はmain.c以外の場所にはないのですが・・・
解決方法を教えていただけないでしょうか?
よろしくおねがいします。
0145デフォルトの名無しさん
2007/05/27(日) 21:29:32メッセージからするとmake.cをコンパイルして出来たmake.oとやらと
リンクしようとしてエラーになっとるようだが?
0146144
2007/05/27(日) 21:34:34CC = gcc
CFLAGS = -O
LDFLAGS = -lm
OBJECTS = make.o quick.o
q-sort: $(OBJECTS)
$(CC) -o q-sort $(CFLAGS) $(OBJECTS) $(LDFLAGS)
clean:
rm -f *.o *~
0147デフォルトの名無しさん
2007/05/27(日) 21:37:08cleanしてからmakeしてみ。
0148デフォルトの名無しさん
2007/05/27(日) 21:37:29なかったのかな?ただのtypo?
0149デフォルトの名無しさん
2007/05/27(日) 21:38:52エラーをそのまま解釈すると、
quick.cの中にもmain関数があるんじゃないかね。
0150デフォルトの名無しさん
2007/05/27(日) 21:42:21#include "main.c"
とかしてないか?
調べ方だが
nm quick.o
してみて
T mainとでたらquick.oの中にmain関数が含まれてる
U mainとでたら含まれてない
0151デフォルトの名無しさん
2007/05/27(日) 21:43:23> #include "main.c"
すげぇエスパーだなw
0153144
2007/05/27(日) 21:58:34% make clean
rm -f *.o *~
% make
gcc -O -c -o main.o main.c
gcc -O -c -o quick.o quick.c
gcc -o q-sort -O main.o quick.o -lm
quick.o: In function `main':
quick.c:(.text+0x15): multiple definition of `main'
main.o:main.c:(.text+0x0): first defined here
collect2: ld returned 1 exit status
make: *** [q-sort] エラー 1
>>150
T main でした
0154144
2007/05/27(日) 22:00:13一度quick.cでつくって、バラしたはずだったのですが、
複数起動していたみたいで、うまく消した後が削除できていませんでした。
無事解決しました。
ありがとうございました
0155144
2007/05/27(日) 22:05:53最初自分でクイックソートを書いたのですが、うまくソートされませんでした。
ソースを見て紙に一つずつ書きながらやってみると、確かにうまく出来なさそうな気がするのですが
いまいちぱっとしません。
もしよろしければ、修正ポイントなど教えていただけないでしょうか。
--------
#include<stdlib.h> #include<stdio.h> #define SIZE 10
int S[SIZE];
void quick(int S[],int from,int to) {
int i,j,k,l,pivot;
if(from<to) { pivot=from; i=from+1; j=to;
if(i!=j) { while(i<j) {
if(S[i]>S[pivot]) {
while(S[j]>S[pivot]) { j--; }
if(S[j]<S[pivot]) {
swap (&S[i],&S[j]);
j--; i++; }
else { i--; } }
else{ i++; } }
swap (&S[i],&S[pivot]); }
else { if(S[pivot]>S[i]) {
swap (&S[i],&S[pivot]); } }
quick(S,from,i-1); quick(S,j+1,to); } }
---------
mainとswapは省略してます
最終的には書籍に載っていたサンプルソースで実装しました・・・
0156155
2007/05/27(日) 22:11:060157デフォルトの名無しさん
2007/05/27(日) 23:23:110158デフォルトの名無しさん
2007/05/27(日) 23:28:31[2] 問題文(含コード&リンク):
ある西暦年が「うるう年」かどうかは、次のように判別する。
4の倍数なら「うるう年」である
ただし、4の倍数であっても、100の倍数なら「うるう年」ではない
さらに、100の倍数でも、400の倍数なら「うるう年」である
西暦2000年はうるう年?2100年は?
ある西暦年がうるう年かどうかを判別する条件判断文を書け。
[3] 環境
[3.1] OS: xp
[3.2] visual studio 2005
[3.3] 言語: C
[4] 期限: 明日の朝までにお願いします
[5] その他の制限: 特になし
0159デフォルトの名無しさん
2007/05/27(日) 23:32:48#include <iostream>
using namespace std;
int main()
{
int ch;
cout << "\n質問\nC言語好き?\n";
cin >> ch;
ch==1? cout << "好きなら上達も速いわ頑張って!" : cout <<"そう、別に意味は無いのよただ聞いてみただけ";
return 0;
}
0160デフォルトの名無しさん
2007/05/27(日) 23:35:41前スレ993さんありがとう!
0161デフォルトの名無しさん
2007/05/27(日) 23:37:50#include <stdio.h>
#include <stdlib.h>
int main(void) {
int y;
char buf[32];
printf("Input year > ");
fgets(buf,sizeof(buf)/sizeof(buf[0]),stdin);
y=atoi(buf);
if(y<=1582) return 1;
if( (y%4==0 && y%100!=0) || y%400==0 )
fprintf(stdout,"%dはうるう年\n",y);
else fprintf(stdout,"%dは平年\n",y);
return 0;
}
0162かも
2007/05/27(日) 23:39:580163デフォルトの名無しさん
2007/05/27(日) 23:44:310164デフォルトの名無しさん
2007/05/27(日) 23:46:55これか。
0165デフォルトの名無しさん
2007/05/28(月) 00:30:41持ってるし、実際に使ったこともあるよ。
良い本だと思うけど、数年前はNETLIBにおされて、いろいろと物議をかもしだしてるね。
http://nakano.webmasters.gr.jp/nr.html
を見るとよいかも。
0166デフォルトの名無しさん
2007/05/28(月) 02:41:24なんとかやりたいことは分かったと思う。
まずピポットの位置をfromに固定して、
ピポットより右〜toまでをピポットより小さい数を左に、大きい数を右にする。
で、並び終わったら、ピポットの数値をその間に入れたい、と。
コレの再帰による繰り返しでソートしたいように見える。
さてまず。
while(S[j]>S[pivot]){ j--; }
このループでiとjの大小を考えてないから、ループ回ってる間にiより小さくなって、
既に小さい順に並んでる数値を変なところと入れ替えてしまってる。
次に、ピポットをそれより小さい値の一番右とスワップするところだけど、
if(S[i]>S[pivot]){
これで、常にiがピポットより大きい値を指しているので、
そのままスワップすると、スワップ後にピポットより大きい値が左に来てしまう。
最後に、これはしっかり確かめたわけではないけど、
同じ大きさの数値が2つ以上存在する時のことが考えられて無いように見えた。
0167デフォルトの名無しさん
2007/05/28(月) 02:45:11眠気のせいにしといて。お願いします。
016860
2007/05/28(月) 03:39:14お騒がせしました。
0169デフォルトの名無しさん
2007/05/28(月) 03:43:01何とかというか、(枝狩りとかの違いはあるにしても)総当たりしか無いと思うぞ
全部列挙じゃなくて1つだけってのとは違うからな
0170デフォルトの名無しさん
2007/05/28(月) 03:43:56マスの個数しか与えられないのか・・・
ピクロスの方が実装簡単そうだな
やっぱ総当りなのかな
http://www2.fctv.ne.jp/~susuki/kou-pic.htm
0171デフォルトの名無しさん
2007/05/28(月) 06:03:58[2] 問題文:
stringを使い、
"A" が "AB" に変わり、"B" が"A" に変わる文字列で、
出力結果が、
n=0 A
n=1 AB
n=2 ABA
n=3 ABAAB
…
となるようなプログラム
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Visual C++ 2005
[3.3] 言語:C++
[4] 期限:年05月30日
[5] その他の制限:なし
お願いします
0172デフォルトの名無しさん
2007/05/28(月) 08:07:21入力は整数型のポインタ
入力されたポインタに対して、順に格納されている正の整数を 10 個ずつで改行しながら表示する。
入力の参照先に -1 が入っていたら終了する
使用言語:CまたはC++
0173デフォルトの名無しさん
2007/05/28(月) 08:14:27{
int i;
for(i=0; p[i]!=-1; i++) {
printf("%d ", p[i]);
if(i%10==9) putchar('\n');
}
}
0174デフォルトの名無しさん
2007/05/28(月) 08:14:59次からは>>1読んでちゃんとテンプレ埋めろよ
void dispArray(int *array){
int *i = array;
while(*i != -1){
printf("%d",*i++);
if((i-array)%10==0) printf("\n");
}
}
とりあえずC言語で。
0175デフォルトの名無しさん
2007/05/28(月) 08:19:19>>172
次からは>>1読んでちゃんとテンプレ埋めろよ
0176デフォルトの名無しさん
2007/05/28(月) 08:28:56出力結果はできた。問題の意味がよくわからんので合ってるか知らん
#include <iostream>
#include <sstream>
using std::cout;
using std::endl;
using std::string;
using std::ostringstream;
static const int LOOP = 4;
static char* abc[] = {"A", "B", "A", "AB"};
int main()
{
ostringstream sout;
for (int i = 0; i < LOOP; i++) {
char* str = abc[i % 4];
sout << str;
cout << "n=" << i << " " << sout.str() << endl;
}
return 0;
}
0177デフォルトの名無しさん
2007/05/28(月) 08:56:150178デフォルトの名無しさん
2007/05/28(月) 09:07:020179デフォルトの名無しさん
2007/05/28(月) 09:38:11C++が分からんのでCだけどなんかの参考にでもなれば
#include <stdio.h>
void f(int n)
{
if(n==0) printf("A");
else if(n==1) printf("AB");
else {
f(n-1);
f(n-2);
}
}
int main(void)
{
int i, n;
scanf("%d", &n);
for(i=0; i<n; i++) {
printf("n = %d ", i);
f(i);
putchar('\n');
}
return 0;
}
0180デフォルトの名無しさん
2007/05/28(月) 10:18:55学生が朝8時x分に起きて出発しすると8時y分に大学に着くとしよう.講義に間に合うならば自転車で大学に行きたいが,
自転車では間に合わない場合はタクシーを利用せざるを得ない.起きた時刻を入力すると,起きた時刻,利用すべき交通手段と
到着予定時刻が表示されるプログラムを作成せよ.
出力結果
10←入力
wake up time = 8:10
arrival time = 8:40 by bicycle
________
52
wake up time = 8:52
arrival time = 8:59 by taxi
________
58
wake up time = 8:58
ryunen
___________
68
error
[3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C
[5] その他の制限:プログラム名は「arrival」とすること.
プログラム中の入力,出力の値は整数型の変数を宣言して扱うこと(小数点以下は切捨てる).
入力された値が,0未満,60以上の場合は,errorと表示させる.
時刻の分の表示は2桁の整数とする.例えば8時2分のように一桁の時刻の場合は8:02のように2の前に10の位の0を加えること.
大学までの道のりは5kmとする. タクシーの平均速度は40km/hとする. 自転車の平均速度は10km/hとする.
起きると同時にタクシーや自転車で出発可能であるとする.
自転車やタクシーが9時前に到着すれば講義に間に合うとする(9時に到着では間に合わない).
タクシーでも間に合わない時刻に起きてしまった場合は"ryunen"と表示させる.
よろしくお願いします。
0181デフォルトの名無しさん
2007/05/28(月) 10:43:58int main(void)
{
int n;
int taxi, bicycle;
taxi = 60 * 5 / 40;
bicycle = 60 * 5 / 10;
scanf("%d", &n);
while(n>=0 && n<60) {
printf("wake up time = 8:%02d\n", n);
if(n+taxi >=60) printf("ryunen\n");
else if(n+bicycle>=60) printf("arrival time = 8:%02d by taxi\n", n + taxi);
else printf("arrival time = 8:%02d by bicycle\n", n + bicycle);
printf("________\n");
scanf("%d", &n);
}
printf("error\n");
return 0;
}
0182デフォルトの名無しさん
2007/05/28(月) 10:48:19めっちゃはやくといてくれてありがとうございます!
0183デフォルトの名無しさん
2007/05/28(月) 12:01:29ありがとうございました。
0184デフォルトの名無しさん
2007/05/28(月) 16:26:33[2] 問題文(含コード&リンク):
an=(1+1/n)~n数列の第n項目までの値を表示するプログラム
./progression
n=? 5
n=1 2.00
n=2 2.25
n=3 2.37
n=4 2.44
n=5 2.49
[3] 環境
[3.1] OS:linux
[3.2] gcc
[3.3] 言語: C
[4] 期限:
[5] その他の制限: 小数点以下2桁までの表示です。
どなたかよろしくおねがいします。
0185デフォルトの名無しさん
2007/05/28(月) 16:35:57#include <stdio.h>
#include <math.h>
int main(void){
int n, n_max;
printf("n=? ");
scanf("%d", &n_max);
for(n=1;n<=n_max;n++){
printf("n=%d %.2f\n", n, pow(1.0+1.0/n, n));
}
return 0;
}
0186デフォルトの名無しさん
2007/05/28(月) 16:51:06#include <stdio.h>
#include <math.h>
int main(void){
double n,i;
printf("n=? ");
scanf("%lf",&n);
for(i=1.0; i<=n; i+=1.0) {
printf("n=%.0lf %.2lf \n",i, pow( 1.0+(1.0/i) , i) );
}
return 0;
}
0187デフォルトの名無しさん
2007/05/28(月) 16:54:020188デフォルトの名無しさん
2007/05/28(月) 16:55:100189デフォルトの名無しさん
2007/05/28(月) 16:55:56int型の変数をdouble型で扱うライブラリにぶち込んで返ってきた値をfloat型の書式を用いている方が
よっぽどわけがわかんねぇ。へぼプログラマ黙ってろかす
0190デフォルトの名無しさん
2007/05/28(月) 16:56:54double pow(double x, double y);
0191188
2007/05/28(月) 16:57:040192デフォルトの名無しさん
2007/05/28(月) 16:57:59日本語でおk
0193デフォルトの名無しさん
2007/05/28(月) 16:58:020194デフォルトの名無しさん
2007/05/28(月) 16:58:55されるので、printf()に %lf はいらん。%fで十分。
C99では %lf も正式に認められているが。
0195デフォルトの名無しさん
2007/05/28(月) 16:59:02187 名前:デフォルトの名無しさん 投稿日:2007/05/28(月) 16:54:02
nとiをdoubleにする意味が全くわからん。
nとiをdoubleにする意味が全くわからん。
nとiをdoubleにする意味が全くわからん。
nとiをdoubleにする意味が全くわからん。
nとiをdoubleにする意味が全くわからん。
nとiをdoubleにする意味が全くわからん。
nとiをdoubleにする意味が全くわからん。
nとiをdoubleにする意味が全くわからん。
足りない頭ってやーね、こういうやつって自分が原因で他人に迷惑をかけているのに
気づかずに他人のせいにしてファビョるタイプだろ。消えろ
0196デフォルトの名無しさん
2007/05/28(月) 16:59:32荒れるのが嫌なら誰の発言のどの部分をどういう根拠で批判しているのか明確にしてくれ。
0197デフォルトの名無しさん
2007/05/28(月) 17:00:16> C99では
関係ない。ちなみに、お前が言っているのは暗黙のだろ?そういうプログラマいらねーんだよ
クソなソースを書いているクズだから
0198デフォルトの名無しさん
2007/05/28(月) 17:02:39>int型の変数をdouble型で扱うライブラリにぶち込んで返ってきた値をfloat型の書式を用いている方
これの意味が分からんから解説してくれと言ってるだけだが。
それから、俺は192だが187じゃない。
0199デフォルトの名無しさん
2007/05/28(月) 17:02:41いや、お前が最初にいったんだろ。意味がわからないのはお前の頭が足りないからwwwww
黙ってろよ、クソプログラマw おめーのソースの方がわけわかんねぇ〜ぜ
なにれこ?w >>185
int n, n_max; pow(1.0+1.0/n, n));
> どの部分をどういう根拠で批判しているのか明確
>>187
> 意味が全くわからん。
どっちがw 適切さを知らない奴は、いつどこで不具合が起こっているか気づいてないんだろうね。
まるで、タイヤの空気圧が十分でないことがまさかの事故の原因になるとかw
0200デフォルトの名無しさん
2007/05/28(月) 17:06:10お前は何を言っているんだ
0201デフォルトの名無しさん
2007/05/28(月) 17:08:551. math.h に pow のプロトタイプ宣言があるなら全く問題無い
2. C99以前では浮動小数点の書式指定は %f が正式
%lf は、C99で %f の代わりに書いても良いことが正式に決められた
0202188, 191, 192, 196, 198, not 185 or 187
2007/05/28(月) 17:10:19俺と>>185が同一人物だという妄想を抱いてるみたいだが、そんな前提で煽られても困る。
0204デフォルトの名無しさん
2007/05/28(月) 17:14:16だからお前みたいな頭のおかしい奴はトリップ付けて発言しろ
あぼーんしやすいから
0205デフォルトの名無しさん
2007/05/28(月) 17:14:240206デフォルトの名無しさん
2007/05/28(月) 17:16:40いつものお人だろ
0207デフォルトの名無しさん
2007/05/28(月) 17:17:13int n, n_max; pow(1.0+1.0/n, n)); , n)); , n)); , n)); , n)); , n)); < ぷぷぷ、ぷぎゃー!
ttp://www.bohyoh.com/CandCPP/C/Library/pow.html
double pow(double x, double y);
これについて理解していなかったから、double型の宣言の意味がわからなかったそうでつ
どっちが意味わかんねぇんだか
0208デフォルトの名無しさん
2007/05/28(月) 17:17:310.1とか0.01とかだと誤差が累積してループの終了条件が狂う事がある。
そういう時はintで回してdoubleは中でintから生成。
0209デフォルトの名無しさん
2007/05/28(月) 17:18:15パフォーマンス重視ならそれなりに措置をとるだろ。そういうくだらねぇことで
不適切なものを良しとするプログラマーはどうかしてんな。
0210デフォルトの名無しさん
2007/05/28(月) 17:18:39プロトタイプ宣言の意味も分からないカスは黙ってろ
0211デフォルトの名無しさん
2007/05/28(月) 17:19:12>float型の書式
これよりマシw
0212デフォルトの名無しさん
2007/05/28(月) 17:19:20お前の方が頭がおかしいことに気づけよ、意味わんねぇ=自分が理解していない=日本語が理解できないw
最近、日本語でおkとか言う奴に限って、理解力がないだけだったりするから困るね。
こりゃNHKのことばおじさんも大変だ。ネタがあって良いだろうけどw
0213202
2007/05/28(月) 17:20:23つまり暗黙の変換を使うなって意見?
それはそれで良いんだが、前提にしていい常識じゃないだろ。
そういう意見なら最初からそういうべきだ。
0214202
2007/05/28(月) 17:22:350215デフォルトの名無しさん
2007/05/28(月) 17:22:39> printf()に %lf はいらん。%fで十分
ていうよりは、C89なら%lfはイリーガルでは。受け入れるコンパイラが
多いけれども。
#include <math>してプロトタイプを取り込んでいる以上、
pow()にintの引数を渡すことには何の問題も無く、完全に合法だわな。
規格に従って適切にdoubleに形変換がなされることが保障されてるわけだ。
0216205
2007/05/28(月) 17:23:160217デフォルトの名無しさん
2007/05/28(月) 17:23:30> 前提にしていい常識じゃないだろ
いいえ。むしろ基本中の基本でしょう。
0218デフォルトの名無しさん
2007/05/28(月) 17:25:23自前で可変引数関数書く時に、va_arg() で嵌りそうな罠だな
# まずそういうシーンは無いけど
0220デフォルトの名無しさん
2007/05/28(月) 17:27:18intとポインタのサイズが異なる処理系では
execl()のような関数にNULLを渡す時に
0ではだめで、(char*)0のように書いたりしていたね。
0221デフォルトの名無しさん
2007/05/28(月) 17:27:22自己紹介乙。
自分の書いた文を後から読み返して顔が赤くなるほど恥ずかしくなっても知らんぞ。
0222デフォルトの名無しさん
2007/05/28(月) 17:27:24じゃあ、常識を共有していない人間と話すときは注意深くならなきゃならんという教訓だな。
(´・ω・`)ツマラナス
0223デフォルトの名無しさん
2007/05/28(月) 17:28:13いいえ。暗黙の型変換は当然のように多用される
Cのごく基本的仕様である、という意味。
0224デフォルトの名無しさん
2007/05/28(月) 17:28:30どこのどいつだぁ〜い? >>187 = >>185 だよ!
ちゃんとpow()について参照されているのに、まだ理解していないんだね。
0225デフォルトの名無しさん
2007/05/28(月) 17:28:41もしくは math.h の関数プロトタイプが
double pow();
だけになってるような古い環境で開発してた人で
現在の開発環境について知らない年配の人が
レスをつけてるのか…
でも浮動小数点数の書式指定自体は昔から %f が正式なはずなんだがなぁ
0226デフォルトの名無しさん
2007/05/28(月) 17:29:190227デフォルトの名無しさん
2007/05/28(月) 17:30:14間違いないようだな。
0228デフォルトの名無しさん
2007/05/28(月) 17:30:32というか、%lfはC99以前では違法のはず。
scanf()ではdoubleを受けるのに%lfを使う必要があるから、
そのように間違える人が非常に多く、%lfを受け入れる処理系も多いけれども。
0229デフォルトの名無しさん
2007/05/28(月) 17:32:30不正そのものも閣僚なら問題ない行為として認識していそうだから困る。
まぁ、閣僚が自殺しても、同情は得られず不正は正当性がなく、支持率に影響するだろうけどさ。
0230デフォルトの名無しさん
2007/05/28(月) 17:32:44A,T,G,Cのいずれかの文字を入力し、それぞれAはUに,TはAに,GはCに,CはGに置き換えられる
プログラムです。
例えば
ATTGといれると、UAACと表示されるプログラムです。
[3] 環境
[3.1] OS: xp
[3.2] visual studio 2005
[3.3] 言語: C
[4] 期限: いつでもいいです。
[5] その他の制限: コメントをつけていただけるとありがたいです。
よろしくお願いいたします。
0231デフォルトの名無しさん
2007/05/28(月) 17:33:17頭大丈夫?精神病院行った方が良くない?
あ、すまん、もう精神病院に通院してるんだね。
0232デフォルトの名無しさん
2007/05/28(月) 17:34:24あなたが馬鹿だから、暗黙の型変換が厳密に規定された明瞭な仕様で
不正でもなんでもないことが理解できないだけでしょう。
自分が理解できないものは悪いものだと思ってしまうのですね。
C++ではそれが確かに問題視されたことがあり、explicitが導入された
訳だけれども、Cの型変換はそれとは全然次元の異なる問題です。
0233218
2007/05/28(月) 17:36:17execl って使ったことないので見てみたが… NULL ターミネイトな可変引数なのねw
sizeof(int) != sizeof(void *) な環境での NULL 自身の定義はどうなってたんだろ?
0234205
2007/05/28(月) 17:40:05それならOK。お騒がせ。
>>218
自分で実装しなくても、printf()を使うときには心の片隅程度には意識しておいた方がいいよ。
#charもintに格上げされるからこそ、printf("%c", 48 + 3)が正しく動くわけで。
>>233
NULLが0なんじゃない、0がNULLなんだ。だから、ポインタのサイズが幾つであろうとも
整数型の0に対してはNULLに等しいものとして処理できないといけない。
#昔はそうでない処理系もあったけどね。
0235デフォルトの名無しさん
2007/05/28(月) 17:41:09#include <stdio.h>
int main(void)
{
unsigned char tab[0x100];
int i, c;
for (i = 0; i < 0x100; ++i)
tab[i] = i;
tab['A'] = 'U'; tab['T'] = 'A'; tab['G'] = 'C'; tab['C'] = 'G';
while ((c = getchar()) != EOF)
putchar(tab[c]);
return 0;
}
0236デフォルトの名無しさん
2007/05/28(月) 17:44:36#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[512];
int i;
fgets(buf, 512, stdin);
for (i = 0; i < strlen(buf); i++)
switch (buf[i]) {
case 'A':
buf[i] = 'U';
break;
case 'T':
buf[i] = 'A';
break;
case 'G':
buf[i] = 'C';
break;
case 'C':
buf[i] = 'G';
break;
}
printf("%s", buf);
return 0;
}
0237デフォルトの名無しさん
2007/05/28(月) 17:44:57#include <stdio.h>
int main(void){
int moji;
while((moji=getchar())!=EOF){ // EOFが入力されるまで続ける (Ctrl-D または Ctrl-Z かな?)
switch(moji){
case 'A':putchar('U');break;
case 'T':putchar('A');break;
case 'G':putchar('C');break;
case 'C':putchar('G');break;
default:putchar(moji);break; // ATGC 以外はそのまま出力する(入力されないはずだが)
}
}
return 0;
}
0238デフォルトの名無しさん
2007/05/28(月) 17:45:23#include <stdio.h>
#include <unistd.h>
int main(){return system("/bin/sed -e 'y/ATGC/UACG/'");}
0239デフォルトの名無しさん
2007/05/28(月) 17:46:55> #charもintに格上げされるからこそ、printf("%c", 48 + 3)が正しく動くわけで。
どっちかというと
printf("%02x", c);
とかいうケースで驚くことが多そうですね。
charがsignedな処理系で非ASCIIの(負の)文字を与えると符号拡張されて
ffffffa0
みたいに表示されたりすることになる。
0240デフォルトの名無しさん
2007/05/28(月) 17:47:47> [3.1] OS: xp
> [3.2] visual studio 2005
0242218,233
2007/05/28(月) 17:52:17>>234 で、かつ sizeof(int) != sizeof(void *) な系で、
int* p = 0; /* コンパイラが左辺の型からよしなに取り扱う */
execl("hoge", "foo", 0); /* 可変引数ゆえポインタ類推効かず */
execl("hoge", "foo", NULL); /* NULL は 0 と等価だから↑と同じ */
execl("hoge", "foo", (char*)0); /* やっとポインタでの 0 を積めた */
っつーことになると
0243デフォルトの名無しさん
2007/05/28(月) 17:53:29# include <iostream>
# include <string>
int main()
{
std::string p("B"), c("A");
for(int n = 0; ; n++)
{
std::cout << "n=" << n << " " << c << "\n";
std::string next = c + p;
p.swap(c);
c.swap(next);
}
}
0244デフォルトの名無しさん
2007/05/28(月) 17:54:240245デフォルトの名無しさん
2007/05/28(月) 17:59:08> execl("hoge", "foo", 0); /* 可変引数ゆえポインタ類推効かず */
これはその通りですね
> execl("hoge", "foo", NULL); /* NULL は 0 と等価だから↑と同じ */
これはちょっと正確ではありませんね。
NULLは(Cでは)
(void*)0として定義されている処理系も多いでしょう。そうであれば
問題はない筈です。が、それが保障されているわけでもなく、実際
C++の処理系では単に0と定義されていることが多い。
それゆえ(char*)0のほうが確実であり、そういう書き方が多用されたのだと
思います。
0246デフォルトの名無しさん
2007/05/28(月) 17:59:420247デフォルトの名無しさん
2007/05/28(月) 18:03:19自作板にしろ、ちょこっとできることがあればそれだけで自分の能力や知識を過信して
間違った解釈や知識を用いて他人を批判しちゃうから墓穴を掘るのさ クーックックゥ〜
0248デフォルトの名無しさん
2007/05/28(月) 18:06:41お前一人を除いてだれも間違った解釈や知識で誰かを批判などしてないと思うが。
0249デフォルトの名無しさん
2007/05/28(月) 18:13:1064bit環境(sizeof(int)!=sizeof(void*))用gcc辺りだと、安全にスタックに積めるようにNULLが(void *) 0になっているみたいだ。
0250デフォルトの名無しさん
2007/05/28(月) 18:27:04> nとiをdoubleにする意味が全くわからん。
^^^^^^^^^^^^^^^^^^^^^^^^^
0251デフォルトの名無しさん
2007/05/28(月) 18:31:53しつこいな。粘着質か。
そいつは素直に「わからん」と言ってるだろう。知ったかぶりなど
してないだろう。
0252デフォルトの名無しさん
2007/05/28(月) 18:41:56[2] 問題文(含コード&リンク):catコマンドと同じ機能のプログラムを作成せよ。
簡単な実験結果もお願いします。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [2007年05月28日23:30まで]
[5] その他の制限:fgetc(), fputc() 関数を使用すること。
標準出力とすること。
ファイル名を複数指定できること。
ただし、ファイル名を指定しない場合は標準入力とすること。
なお、オプションは指定できなくてもよい。
どうかよろしくお願いします。
0253デフォルトの名無しさん
2007/05/28(月) 18:53:35#include <stdio.h>
static void cat(FILE * fp)
{
int ch;
while ((ch = fgetc(fp)) != EOF) {
fputc(ch, stdout);
}
}
int main(int argc, char ** argv)
{
if (argc == 1) {
cat(stdin);
} else {
for (int ic = 1; ic < argc; ++ic) {
FILE * fp = fopen(argv[ic], "r");
if (fp != NULL) {
cat(fp);
fclose(fp);
}
}
}
return 0;
}
0254デフォルトの名無しさん
2007/05/28(月) 19:17:23for (int ic = 1; ic < argc; ++ic) {
^^^^^^^
ここだけ C++?
0255デフォルトの名無しさん
2007/05/28(月) 19:21:510257デフォルトの名無しさん
2007/05/28(月) 21:25:06本当にありがとうございました。
できればテキストファイルの結合のしかたも教えていただけませんか
0258デフォルトの名無しさん
2007/05/28(月) 22:06:48コレのこと?
cat file1 file2 > output
0259デフォルトの名無しさん
2007/05/28(月) 22:22:22[2] 問題文(含コード&リンク):
プログラムに0以上59以下の値をとる二つの整数を与える.これらの2数を順にm, nとする.これらをm分n秒と解釈する.与えられた時間の(秒単位で)半分となる時間をコロン(:)で区切られた二組の二桁の整数で表示するプログラムを作成しなさい.
表示する分数、秒数が9以下のときは10の桁にはスペースを置く.
秒数が2で割り切れないときは切り捨てを行う.
m,nのどちらかが0以上59以下でなければ,errorのみを表示すること.
[3] 環境
[3.1] OS: linux
[3.2] gcc
[3.3] 言語: C
[4] 期限:
[5] その他の制限: どなたかおねがいします。
0260デフォルトの名無しさん
2007/05/28(月) 22:28:1222:22:22
mixiで見たけど同じ人?
0261デフォルトの名無しさん
2007/05/28(月) 22:32:17#include <stdio.h>
int main(void){int n=0, m=0, t;scanf("%d", &m);scanf("%d", &n);
if(0 <= m && m <= 59 && 0 <= n && n <= 59){t = (60 * m + n) / 2;m = t/60;
n = t - m * 60;printf("%2d:%2d", m, n);}else printf("error");return 0;}
0262デフォルトの名無しさん
2007/05/28(月) 23:05:59すいませんおなじ人間です。
>>260
ようやくわかりました。時間の計算の部分がアホなんでわかりませんでした・・・
0263デフォルトの名無しさん
2007/05/28(月) 23:42:08はい それのプログラム版のを
0264デフォルトの名無しさん
2007/05/29(火) 00:15:300265デフォルトの名無しさん
2007/05/29(火) 00:39:37-- 最低限機能版
#include <stdio.h>
int main(int argc, char ** argv)
{
if (argc < 4) return 1;
FILE * in1 = fopen(argv[1], "r");
if (in1 == NULL) return 1;
FILE * in2 = fopen(argv[2], "r");
if (in2 == NULL) return 1;
FILE * out = fopen(argv[3], "w");
if (out == NULL) return 1;
int ch;
while ((ch = fgetc(in1)) != EOF) {
fputc(ch, out);
}
fclose(in1);
while ((ch = fgetc(in2)) != EOF) {
fputc(ch, out);
}
fclose(in2);
fclose(out);
return 0;
}
0266 ◆HFYa0.2pYo
2007/05/29(火) 00:44:06[2]問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4101.txt
[3]環境
[3.1]OS:Linux
[3.2]コンパイラ名:gcc
[3.3]言語:C
[4]期限:2007年6月4日まで
[5]その他:自宅ではWindows、学校ではLinux使用
この選択ソートのプログラムを改良して、
「最大で」10個までの整数をソートできるようにしたい(入力した数字の個数が10個以下でも動作するようにしたい)のですが、
うまくいきません。ご教授願います。
0267 ◆etVdfbufd2
2007/05/29(火) 00:53:39[2] 問題文(含コード&リンク): 「WEB上の画像を右クリックで保存」←この動作をプログラムで書け.
[3] 環境
[3.1] OS:Windowsのcygwin上でコンパイルします.
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C/C++どちらでも可.
[4] 期限:可能な限り早くお願いします.
[5] その他の制限: 特になし.
WEB上のtextデータをとってくるプログラムなら書けたのですが,
画像をとってくるものはうまくいきません.
よろしくお願いします.
0268デフォルトの名無しさん
2007/05/29(火) 01:23:10趣味じゃねーの?
0269デフォルトの名無しさん
2007/05/29(火) 01:39:09画像取って来るのもテキスト取って来るのも変わらんわけだが。
0270デフォルトの名無しさん
2007/05/29(火) 01:46:57おめーらほんっとgdgdうるせーな、言うくらいならお前がやってみろよ。どうせ出来ないんだろ?w
だって、pow()の引数にint型をそのまま(ry
0271デフォルトの名無しさん
2007/05/29(火) 01:54:050272 ◆etVdfbufd2
2007/05/29(火) 01:54:37授業の宿題ではないけど大学で科された課題です.
>>269
bmp形式のデータを取りたいんですけど,バッファに一度入れてから
取ってきてるんで,bmp形式に直せないんですよね.
>>270
pow()は初見です.ちょっくらググってみます.
0273デフォルトの名無しさん
2007/05/29(火) 01:55:53http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4102.txt
0274 ◆HFYa0.2pYo
2007/05/29(火) 02:13:25ご丁寧にありがとうございました。
0275デフォルトの名無しさん
2007/05/29(火) 02:52:02WinSock2で悪いな。
基本は一緒だし、txt取れてるならなんかの参考にゃなると思うが。
とりあえず色々メンドイのでgoogleのトップに表示されてるロゴを取ってくるプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4103.lzh
確かhtml取って来るときに一緒に画像も落ちて来たと思うが、
なんかその辺の詳しい応答のフォーマットは忘れた。
0276デフォルトの名無しさん
2007/05/29(火) 05:04:22お願いしますm(_ _)m
0277デフォルトの名無しさん
2007/05/29(火) 05:15:350278デフォルトの名無しさん
2007/05/29(火) 07:23:17ありがとうございます。
0279155
2007/05/29(火) 09:19:14たしかにそんなかんじです・・・・
ありがとうございました
0280デフォルトの名無しさん
2007/05/29(火) 10:19:15どうゆう処理をしているのか教えてください
http://www.nicovideo.jp/watch/sm358647
0281デフォルトの名無しさん
2007/05/29(火) 10:23:24ドット絵から読み込んだデータから色の指定をHTMLのFONTタグで指定して
■をそれで囲ってHTMLに書き出しているってことか?
0282デフォルトの名無しさん
2007/05/29(火) 10:30:12概要はそうだが、bmpの各ドットの色のコードを読み取ってんだろうね。まぁ、これくらいなら
そう難しくないんじゃないかね。ただ、HTMLのタグの知識も必要かな。
0283デフォルトの名無しさん
2007/05/29(火) 10:30:12えっとできればソースレベルで教えていただけるとうれしいです
始めたばかりの初心者なんんですが好奇心でちょっと見てみたんですが
さっぱり意味がわからなくて
0284デフォルトの名無しさん
2007/05/29(火) 10:40:18ttp://coconut.sys.eng.shizuoka.ac.jp/bmp/
のように、BMPの仕組みを理解して、読み込んだデータからHTMLタグのFONTの属性の
COLORを指定したのを■で囲んで書き出せるプログラムにすりゃええがな。
0285デフォルトの名無しさん
2007/05/29(火) 11:55:07[2] 問題文(含コード&リンク):
指数関数exの近似値を返す関数expon(x, n)をつくります。
第1引数は浮動小数点数xで,
第2引数はexをTaylor展開で展開する際の最大次数nになります。
n次項までのTaylor展開の式は下に示す通りです。
さらに,浮動小数点数yと正の整数mを引数とし,
yの小数点m桁より下を切り捨てて出力する関数trunc(y, m)をつくりなさい。
次に,これらの2つの関数を用いて,
exの近似値を小数点以下の桁数を指定して出力するプログラムをつくりなさい。
ex » 1 + x + x2/2! + x3/3! + … + xn/n!
指数関数exp(x)の近似値を計算します!
xを入力してください:2.5↵
Taylor展開の最大次数nは:100↵
小数点以下の桁数mは:3↵
exp(x)の近似値 = 12.182
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:borland
[3.3] 言語:C
[4] 期限:今週日曜日
よろしくお願いします。
0286デフォルトの名無しさん
2007/05/29(火) 12:01:09[2] 問題文(含コード&リンク):
神経衰弱ゲーム」のシミュレーションを作成してみる。
マス目は4×4。8種類の動物名が2匹ずつ隠されています。
並び順は乱数で発生しましょう。
2枚ずつ順番に表にして当たっていれば,表向きのままになります。
はずれれば一定時間おいて裏に戻しす。
最大試行回数を設定して,ゲームを進行する。
全部当たれば「やったね!」と祝福し,駄目だった場合は全部表向きにしてから「またね!」とメッセージを表示してみましょう。
画面の表示などインタフェースにも工夫してみよう。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: borland
[3.3] 言語: C
[4] 期限:6月7日
0287デフォルトの名無しさん
2007/05/29(火) 14:12:38http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4104.c
0288デフォルトの名無しさん
2007/05/29(火) 14:13:56>>287の最初に動物が表示される部分は消しておいてちょっ
あと
// char *anims[]={"rat","cow","tiger","rabbit","horse","sheep","monkey","bird"};
の部分も
0289デフォルトの名無しさん
2007/05/29(火) 16:37:54すいません3×3程度の迷路です。
s-1-2-3
**|*|** 左のような迷路です。
**4-5-6 ーと|が道で*は行き止まりです。
****|** わかりにくくてすいません。よろしくお願いします。
**7-8-G
0290デフォルトの名無しさん
2007/05/29(火) 16:52:38C言語でWin32アプリをつくっているのですが、
アクティブなウィンドウの、指定した位置の表示している色を
取得するにはどうしたらいいですか?
やっぱり一旦表示された後だと厳しいんですかね…?
ご教授お願いします。
0291デフォルトの名無しさん
2007/05/29(火) 16:54:25スレ違い。Win32APIスレへ。
0293デフォルトの名無しさん
2007/05/29(火) 18:20:56そんなことはないよ?
というか表示される前の方が面倒だとおもうんだけどw
0294セス
2007/05/29(火) 18:38:51[2] 問題文(含コード&リンク):
整数型の変数a・b と、文字型の変数e を用意し、
キーボードから2つの数値と1つの演算子を入力し
、その計算結果cを出力するプログラムを作成しなさい。
実行される計算は和・差・積・商・剰余の5種類とし、
演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で
表現されるものとする。
演算子にそれ以外の記号が入力された場合は
エラーメッセージを表示する。
また0による除算の回避も含めること。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限:5/29の24時まで
[5] その他の制限: 特になし
お願いします
0295セス
2007/05/29(火) 18:40:56[2] 問題文(含コード&リンク):
次の説明は冬季オリンピックの開催年についての説明である。
キーボードから変数year に入力された年号について、
開催された年に第何回大会が開催されたか
画面に表示するプログラムを作成しなさい。
また開催年でない場合は、画面にその旨メッセージを出力すること。
【説明】
1924 年の第1 回大会以来、4 年に1 度開催されている。
1992 年の第16 回大会までは夏季大会と同じ年に開催されたが、
1994 年の第17 回大会からは、夏季大会の2 年後に開催されるようになった。
1940 年、1944 年は第二次世界大戦の影響で中止。
次回は2010 年、第21 回大会、カナダのバンクーバーで開催予定。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限:5/29の24時まで
[5] その他の制限: 特になし
二つですが、お願いします○┓ペコ
#include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[256];int year,i;
int games[]={1924,1928,1932,1936,1948,1952,1956,1960,1964,1968,1972,1976,
1980,1984,1988,1992,1994,1998,2002,2006,2010,};fgets(tmp,256,stdin);year=atoi(tmp);
for(i=0;i<sizeof(games)/sizeof(int);i++){
if(year==games[i]){printf("%i年 第%i回\n",year,i+1);return 0;}}
printf("%i年 非開催\n",year);return 0;}
02981/3ぐらい
2007/05/29(火) 19:26:21[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] VC++ 6.0)
[3.3] 言語: (/C++)
[4] 期限: ([明日)
[5] その他の制限: (特になし)
-----------------------------------------------------
//構造体の定義
struct Employee
{
int number; //従業員番号
char name[80];//氏名
long wage; //給与
};
//プログラムのメイン関数
void main(void)
{
//構造体をデータ型とした変数を宣言
struct Employee person[10];
//構造体のメンバーへ値を代入
person[0].number = 1234;
strcpy(person[0].name,"田中 一郎");
person[0].wage = 200000;
person[1].number= 1235;
strcpy(person[1].name,"佐藤 次郎");
person[1].wage = 250000;
02992/3通り越して3/3
2007/05/29(火) 19:28:20strcpy(person[2].name,"鈴木 三郎");
person[2].wage = 300000;
//構造体のメンバを表示
for(int i = 0;i<3;i++){
cout << person[i].number<<"\n";
cout << person[i].name <<"\n";
cout << person[i].wage <<"\n";
}
}
----------------------------------------------------------------------------
k:\kadai\kadai5\kadai5.cpp(17) : error C2065: 'strcpy' : 定義されていない識別子です。
k:\kadai\kadai5\kadai5.cpp(30) : error C2065: 'cout' : 定義されていない識別子です。
k:\kadai\kadai5\kadai5.cpp(30) : error C2297: '<<' : 不正な右オペランドです。
k:\kadai\kadai5\kadai5.cpp(31) : error C2297: '<<' : 不正な右オペランドです。
k:\kadai\kadai5\kadai5.cpp(32) : error C2297: '<<' : 不正な右オペランドです。
cl.exe の実行エラー
なぜそのようなエラーが出るのかさっぱりわかりません・・・
どなたか助けてください。
0300セス
2007/05/29(火) 19:35:39そちらのページ参照しましたが、%のプログラミング載ってないんですがどうすればいいんでしょうか
後、#include<stdio.h>しかまだやっていません。。
0301デフォルトの名無しさん
2007/05/29(火) 19:44:45#includeは?あとネームスペースは?
0302298-299
2007/05/29(火) 19:51:33見逃してました・・・
お恥ずかしい限りで・・・
#include<iostream>
#include<string.h>
using namespace std;
を加えたら成功しました・・・
0303デフォルトの名無しさん
2007/05/29(火) 20:07:17整数a←キーボード入力
整数b←キーボード入力
文字e←キーボード入力
文字eの場合分けここから
文字eが'+'の場合:
整数aと整数bを足し算して結果を表示する
文字eが'-'の場合:
整数aから整数bを引き算して結果を表示する
…
文字eが'-'の場合:
整数bが0ならば、エラーメッセージを表示する
それ以外ならば、整数aを整数bで割り算して結果を表示する
…
文字eが’+’、’-’、’*’、’/’、’%’以外の場合:
エラーメッセージを表示する
文字eの場合分けここまで
なお'%'は余剰である。
0304デフォルトの名無しさん
2007/05/29(火) 20:08:35【間違い】
…
文字eが'-'の場合:
整数bが0ならば…
【正しくは】
…
文字eが'/'の場合:
整数bが0ならば…
0305セス
2007/05/29(火) 20:21:47何か習ってないものばかり何ですが
#define STACK_DEPTH 100
↑こういうの習ってないんですけど
#include<stdio.h>
int main(void)
これだけでは出来ないのでしょうか?
295も同じくです
0306デフォルトの名無しさん
2007/05/29(火) 20:48:20#define c言語で検索かけて、#defineを意味を調べてみな
すぐに、#defineを使わない方法が分るはずだから
置換は有用、痴漢は犯罪
0307デフォルトの名無しさん
2007/05/29(火) 21:03:280308デフォルトの名無しさん
2007/05/29(火) 21:03:363] 環境
[3.1] OS: MacOSX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:5月31日までにお願いします
0309デフォルトの名無しさん
2007/05/29(火) 21:03:57int main()
{
int a,b,c = 0,e;
char buff[256];
puts("整数を,区切りで入力→Enter");
fgets(buff,sizeof(buff),stdin);
sscanf(buff,"%d,%d",&a,&b);
puts("演算子入力");
e = getchar();
switch(e){case '+': c = a + b;
break;
case '-': c = a - b;
break;
case '*': c = a * b;
break;
case '/': if(b == 0){ fprintf(stderr,"0で除算しようとしました");
break; }
c = a / b;
break;
case '%': if(b == 0){ fprintf(stderr,"0で除算しようとしました");
break; }
c = a % b;
break;
default: fprintf(stderr,"適切な入力ではありません");
break;
}
printf("%d \n",c);
return 0;
}
0310デフォルトの名無しさん
2007/05/29(火) 21:04:17ただし、単語の定義は空白、タブ、改行、 ピリオド(.)、コンマ(,)を含まない文字列の固まりとする。
また、ピリオドとコンマは長さ0の単語としてカウントせよ。
また、20文字以上はまとめてカウントせよ。
0311名無し ◆ivKilCni/k
2007/05/29(火) 21:22:18[2] 問題文(含コード&リンク):
文字列の置換処理
・入力データの文字数:(半角アルファベット大文字。スペースも一文字に含める。)
・入力データの単語最大文字数:(10文字まで)
・入力データはキーボード入力で設定する。:例)get()とかscanfとか。
・入力データと出力データを表示する。
・文字列(単語)"XYZ"は"HA"に、"ABC"は"DEFG"に変換する。
・文字を変換後に30文字を超えてもいい。ただし、30文字を超える場合は改行して表示する。
・キーボード入力の際、文字列が30文字を超えた場合や単語が10文字を超えた場合は
警告メッセージを表示して、再入力させる。 例)詳細は実行例を参照してください。
・キーボード入力が空の場合は、プログラムを終了する。
・キーボード入力が空以外なら、ループする。
(実行例)
----5----0----5----0----5----0
変換前:ABC ABD XYZBC TABCL XYZX YZZWD
変換後:DEFG ABD HDEFG TDEFGJ HAX
改行分:YZZWD
----5----0----5----0----5----0
変換前:ABC ABD XYZBC TABCL XYZX YZZWDXXX
## 30文字を超えています ##
----5----0----5----0----5----0
変換前:ABC ABD XYZBC AAAAAAAAAAAAAAAA
## 単語は10文字以内です ##
----5----0----5----0----5----0
[3] 環境
[3.1] OS: Windows
[3.2] VC 6.0
[3.3] 言語: C
[4] 期限: 2007年6月1日
[5] その他の制限: どなたかおねがいします。
0312名無し ◆ivKilCni/k
2007/05/29(火) 21:28:06#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void str_replace(char *a, const char *target_a, const char *new_a);
int main(void)
{
char a[80], b[30], c[30], d[80], e[80];
int i, a_len;
printf("例題02:文字列の置換処理\n\n");
for(; ;) {
printf(" ----5----0----5----0----5----0\n変換前:");
memset(a, '\0', 80);
memset(d, '\0', 80);
gets(a);
a_len = strlen(a);
if(a_len>31){
printf("## 30文字を超えています ##\n");
continue;
}
else if(a_len==0) exit(0);
str_replace(a, "XYZ", "HA");
str_replace(a, "ABC", "DEFG");
a_len = strlen(a);
strcpy(d, a);
d_len = strlen(d);
m = d_len;
for(l=d_len; l>=30; l--) {
m = l;
m--;
0313名無し ◆ivKilCni/k
2007/05/29(火) 21:30:01memset(e, '\n',d_len-l);
printf("変換後:%s\n", d);
}
return 0;
}
void str_replace(char *a, const char *target_a, const char *new_a)
{
int target_len = strlen(target_a); //置換対象文字列の長さ
int new_len = strlen(new_a); //置換後文字列の長さ
int str_len = strlen(a); //文字列の長さ
char *replace_pos; //検索を開始する位置
//置換文字列の場所を検索
while(0!= (replace_pos = strstr(a, target_a))) {
//文字列を挿入する場所を作成する
memmove(replace_pos + new_len, replace_pos + target_len, strlen(replace_pos) - target_len);
//置換文字列を挿入する
memmove(replace_pos, new_a, new_len);
//文字数が少なくなる場合、NULLコードの位置も変更
if(target_len > new_len)
{
*(a + str_len - target_len + new_len) = '\0';
str_len = strlen(a);
}
}
}
0314デフォルトの名無しさん
2007/05/29(火) 21:56:06#include <stdio.h>
#include <ctype.h>
int main(void)
{
int c, n = 0, in_word = 0, count[21] = { 0 };
#define MIN(a,b) ((a) > (b) ? (b) : (a))
#define COUNTUP do { if (in_word) ++count[MIN(n,20)]; } while (0)
#define OUTOFWORD do { in_word = n = 0; } while (0)
while ((c = getchar()) != EOF) {
if (isspace(c)) {
COUNTUP; OUTOFWORD;
} else if (c == '.' || c == ',') {
COUNTUP; OUTOFWORD; ++count[0];
} else {
in_word = 1; ++n;
}
}
COUNTUP;
for (n = 0; n <= 20; ++n)
printf("%2d: %d\n", n, count[n]);
return 0;
}
0315デフォルトの名無しさん
2007/05/29(火) 23:19:47[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4107.txt
↑のソースで表示される三角形をいじって線対称に反対表示にしてください
[3] Visual C++
[3.1] WinXP
[4] 2日後
[5] for文とif文までくらいしか習っていません
0316デフォルトの名無しさん
2007/05/29(火) 23:59:290317デフォルトの名無しさん
2007/05/30(水) 00:00:59一番最後の、内側のループで使ってるiをh-iにするといいよ。
for(j=0; j<=h-i; j++)
{
if(x[h-i][j]%2==1)
printf("@",x[h-i][j]);
else
printf(" ",x[h-i][j]);
}
こんなのにする。
0318デフォルトの名無しさん
2007/05/30(水) 00:26:14入力された秒数を実数にして、時間・分・秒数に変換するプログラムを教えてください。お願いします
0319デフォルトの名無しさん
2007/05/30(水) 00:27:440320318
2007/05/30(水) 00:29:200321デフォルトの名無しさん
2007/05/30(水) 00:42:19ダマされたと思って、これで提出してご覧なさい。
#include <stdio.h>
int main(int argc, char** argv) {
int i = atoi(argv[1]);
printf( "h:%d m:%d s:%dn", i/(60*60), (i/60)%60, i%60 );
}
0322デフォルトの名無しさん
2007/05/30(水) 00:44:240323デフォルトの名無しさん
2007/05/30(水) 00:47:33呼べる。
プロトタイプがないときは引数のチェック無しで、
intを返すものとして扱われる。
どうせ宿題だし。
まあ、でも
#include <stdlib.h>
が抜けてたのは俺のミス。
0324デフォルトの名無しさん
2007/05/30(水) 01:06:05アルファベット以外の文字が入力されたら、"BAD"と表示するにはどうすればいいんでしょうか?
0325デフォルトの名無しさん
2007/05/30(水) 01:08:310326webmaster@気まぐれアナスイ
2007/05/30(水) 01:10:050327デフォルトの名無しさん
2007/05/30(水) 01:11:440328webmaster@気まぐれアナスイ
2007/05/30(水) 01:13:250329デフォルトの名無しさん
2007/05/30(水) 01:13:53>アルファベット以外の文字が入力されたら、"BAD"と表示するにはどうすればいいんでしょうか?
puts("BAD");
0330デフォルトの名無しさん
2007/05/30(水) 01:13:54if(!isalpha(moji))printf("BAD");
ここはぼるじょあスレとは別スレだよ
0331デフォルトの名無しさん
2007/05/30(水) 01:16:480332デフォルトの名無しさん
2007/05/30(水) 01:17:14[2] 問題文(含コード&リンク):
自分の姓名を表示せよ。ただし、配列a[]を用いてこれを自分の姓名の文字列で初期化し、1文字ずつ出力せよ
[3] 環境
[3] 環境
[3.1] OS: Windows
[3.2] VC 6.0
[3.3] 言語: C
[4] 期限:6月2日
配列がさっぱりわからない・・・・
よろしくお願いします。
0333デフォルトの名無しさん
2007/05/30(水) 01:21:25♯include <stdio.h>
intmain(void)
{
int ji,fun,byou;
printf("秒数=")
scanf("%d",&byou);
ji=byou/3600;
byou=byou%3600;
fun=byou/60;
byou=byou%60;
printf("%d時間%d分%d秒\n",ji,fun,byou);
return0;
}
あと>>320は私ではありません。
0335デフォルトの名無しさん
2007/05/30(水) 02:21:04すいませんお願いしますm(__)m
0336デフォルトの名無しさん
2007/05/30(水) 02:38:04>入力された秒数を実数にして
入力は実数以外って事?
0337デフォルトの名無しさん
2007/05/30(水) 04:20:580338デフォルトの名無しさん
2007/05/30(水) 07:17:312:コンパイラ名とバージョン:Borland
3:言語:C
テーマ:繰り返し処理(while文)
課題1:キーボードより整数を入力し、1〜nまでの合計を求めなさい
実行画面
整数nの入力==>5
合計:15
課題2:複数件の整数を入力し、合計、件数、平均を求め表示しなさい
0が入力されたらデータのsy
0339デフォルトの名無しさん
2007/05/30(水) 07:18:29の方お願いします
0340デフォルトの名無しさん
2007/05/30(水) 07:27:17どうせやっても「まだ習ってないので」とか言い始めるから嫌。
せめてどこまで習ってるのか教えてくれないと。
0341デフォルトの名無しさん
2007/05/30(水) 07:30:092:コンパイラ名とバージョン:Borland
3:言語:C
テーマ:繰り返し処理(while文)
課題1:キーボードより整数を入力し、1〜nまでの合計を求めなさい
実行画面
整数nの入力==>5
合計:15
課題2:複数件の整数を入力し、合計、件数、平均を求め表示しなさい
0が入力されたらデータの終了とし、合計、件数には反映しない
実行画面
整数入力(0で終了) ==>5
整数入力(0で終了)==>4
整数入力(0で終了) ==>10
整数入力(0で終了) ==>8
整数入力(0で終了)==>0
合計:27 件数:4 平均:6.8
0342341の続き
2007/05/30(水) 07:31:11課題3:キーボードより複数件のデータを入力し、奇数と偶数の合計を計算しなさい
-1が入力されたらデータの終了とし、合計には加えない
実行画面
整数入力==>3
整数入力==>8
整数入力==>10
整数入力==>7
整数入力==>0
整数入力==>26
整数入力==>19
整数入力==>1
整数入力==>-1
奇数合計:30
偶数合計:44
以上の3問よろしくお願いします
0343デフォルトの名無しさん
2007/05/30(水) 07:34:310344デフォルトの名無しさん
2007/05/30(水) 07:39:21入力するのを実数でも対応できるようなプログラムを作りたいんです
0345デフォルトの名無しさん
2007/05/30(水) 08:14:31#include <stdio.h>
int InputInteger(char* str, int* iptr) { printf(str); scanf("%d", iptr); return *iptr;}
int main(void){
{ /* 課題1 */
int n, r=0;
InputInteger("整数nの入力==>", &n);
while(n!=0){ r+=n--; }
printf("合計:%d\n", r);}
{ /* 課題2 */
int sum=0, num=0, n; double ave;
while(InputInteger("整数入力(0で終了) ==>", &n)){ sum+=n; num++;}
if(num==0) ave=0; else ave=sum/num;
printf("合計:%d 件数:%d 平均:%f\n", sum, num, ave);}
{ /* 課題3 */
int n, odd=0, even=0;
while(InputInteger("整数入力==>", &n) != -1){
if(n%2 == 0) even+=n; else odd+=n;}
printf("奇数合計:%d\n偶数合計%d\n", odd, even);}
return 0;}
0346デフォルトの名無しさん
2007/05/30(水) 08:53:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4108.txt
!=習ってませんとか、&&習ってませんとか言われそうでイヤだな
これ以上やさしいバージョンとか作れねぇYO
0347デフォルトの名無しさん
2007/05/30(水) 08:55:280348デフォルトの名無しさん
2007/05/30(水) 08:58:24>>1に入れればいい。つーか
>・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
これがそうなんだけどな、意味がわかってない奴多すぎ
0349デフォルトの名無しさん
2007/05/30(水) 09:09:42何か答えになってないよ
実数の意味分かる?
0350デフォルトの名無しさん
2007/05/30(水) 09:10:24丸出ししたものを衣類で隠すことを勧められたとしても、丸出しした意味は十分あるぞい♪
0351デフォルトの名無しさん
2007/05/30(水) 09:14:30#include<stdio.h>
int main(void){
char c;
scanf("%c", &c);
if(64 < c)if(c < 91)return 0;
if(96 < c)if(c < 123)return 0;
printf("BAD");
return 0;
}
不等号習っていませんとか言われたらもうお手上げだな
0352デフォルトの名無しさん
2007/05/30(水) 09:16:45色々ダメすぎ。
まぁ、元質がダメすぎだからどうでもいいか。
0353デフォルトの名無しさん
2007/05/30(水) 09:19:52どうみてもネタ解答なのにダメだしされても困るけどな・・・
0354デフォルトの名無しさん
2007/05/30(水) 09:20:160355デフォルトの名無しさん
2007/05/30(水) 09:26:21[2] 問題文(含コード&リンク): コンパイルせよ
[3] 環境
[3.1] OS: Windows
[3.2] VC 6.0
[3.3] 言語: C
[5] その他の制限:完璧ど素人です
コンパイルしようとすると
外部シンボル"_popup"
外部シンボル"_clsc"
外部シンボル"_defwin"
外部シンボル"_plots"
外部シンボル"_doplot"
外部シンボル"_dpoly"
外部シンボル"_fpoly"
外部シンボル"_newpen"
外部参照8が未解決です
とどうしてもなってしまいコンパイルできません。誰か教えてください
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4111.txt
0356デフォルトの名無しさん
2007/05/30(水) 09:35:15コンパイルはできている。以上。
0358デフォルトの名無しさん
2007/05/30(水) 10:20:03popupとかエラーが出ている関数の定義はどこでしてるの?
>>355のリンク先にあるソースでは定義していないから、当然リンクでエラーがでる。
0359デフォルトの名無しさん
2007/05/30(水) 10:44:08入力を実数でも整数でも対応できるプログラムを作りたいのです
0360デフォルトの名無しさん
2007/05/30(水) 10:45:19>・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
0361デフォルトの名無しさん
2007/05/30(水) 10:48:57整数も実数の部分集合なんだが・・・
問題はきちんと書きなよ
0362デフォルトの名無しさん
2007/05/30(水) 10:51:130363デフォルトの名無しさん
2007/05/30(水) 12:00:35よろしくお願いします。
[1] 授業単元: C
[2] 問題文(含コード&リンク):
実数xを引数として受け取り、y=x*x*x-3*x*x-6*x+8を計算し、yの値が正の場合は1を、
負の場合は-1を、0の場合は0を返す(戻り値は整数型)を作成し、その関数が正常に
動作するかを、実際に実行して確認せよ。但し、main関数では、xの値をキーボードから
入力し、関数を呼び出した後は、戻り値の値を出力せよ。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C
[4] 期限: 2007,5,31
[5] その他の制限: なし
0364デフォルトの名無しさん
2007/05/30(水) 12:18:55#include <stdio.h>
int f(double x)
{
double y = x * x * x - 3 * x * x - 6 * x + 8;
if(y<0) return -1;
if(y>0) return 1;
return 0;
}
int main(void)
{
double x;
scanf("%lf", &x);
printf("%d", f(x));
return 0;
}
0365デフォルトの名無しさん
2007/05/30(水) 12:25:19コンパイラ名とバージョン:ボーランド
言語: C
[4] 期限:今日の1時30分まで
[5]
問題1
番号と得点を入力し、平均点、最高得点取得の番号・得点・最低点取得者の番号・得点を表示しなさい
番号に0が入力されたらデータの終了とする
実行画面
番号,得点==>1,72
番号,得点==>2,60
番号,得点==>3,88
番号,得点==>4,48
番号,得点==>6,91
番号,得点==>7,75
番号,得点==>8,96
番号,得点==>10,52
番号,得点==>0,0
平均点:72.8
最高点 番号:8 得点:96
最低点 番号:4 得点:48
この問題どうしてもわからないのでよろしくお願いします
0366356のスレ主です
2007/05/30(水) 12:26:250367デフォルトの名無しさん
2007/05/30(水) 12:31:180368デフォルトの名無しさん
2007/05/30(水) 12:36:10#include <stdio.h>
int main(void)
{
char a[]="自分野姓名";
printf("%s",a);
return 0;
}
0369デフォルトの名無しさん
2007/05/30(水) 12:36:59与えられた文字列に含まれる数字の個数を数えて、返す関数 int countnum(char s[]) を作成しなさい.
この問題では,以下のプログラムの雛形を用い,countnum 関数内だけ変更しなさい(それ以外は一切変更しないこと).
文字列は英字,数字,記号で構成されるものとする
isdigit関数を利用しないこと
関数の定義
int countnum(char s[])
第一引数は文字列
戻り値は数字の個数
#include <stdio.h>
int countnum(char []);
int main(void){
char str[16];
fgets(str,16,stdin);
printf("The number of numerals is %d.\n", countnum(str));
fgets(str,16,stdin);
printf("The number of numerals is %d.\n", countnum(str));
return 0;
}
int countnum(char s[])
{
/* ここを作成する */
/* ここ(中括弧内)以外は変更してはいけない */
}
期限はとくにないです。よろしくおねがいします。
0370デフォルトの名無しさん
2007/05/30(水) 12:42:07int countnum(char s[])
{
int cnt=0;
while( *s!=NULL ) {
if( *s>='0' && *s<='9' ) cnt++;
s++;
}
return cnt;
}
0371デフォルトの名無しさん
2007/05/30(水) 12:42:55入力する文字列の長さは最大で32文字までとしてよい.
文字列の長さを求めるのに、strlen関数を使ってもよい.
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
void reverse(char[]);
int main(void)
{
char buf[33];
fgets(buf, 33, stdin);
buf[(strlen(buf)-1)] = '\0';
reverse(buf);
printf("%s\n", buf);
return 0;
}
void reverse(char s[])
{
/* ここを作成する */
/* ここ(中括弧内)以外は変更してはいけない */
}
2問もきいてしまってすいません。どなたかおねがいします。
0372デフォルトの名無しさん
2007/05/30(水) 12:43:400373デフォルトの名無しさん
2007/05/30(水) 12:47:55{
int i, len = strlen(s);
for(i=0; i<len / 2; i++) {
char temp = s[i];
s[i] = s[len-i-1];
s[len-1-i] = temp;
}
}
0374デフォルトの名無しさん
2007/05/30(水) 12:50:24void reverse(char s[])
{
int i,sz=strlen(s)-1;
char tmp;
for(i=0; i<=sz/2; i++) {
tmp=s[i];
s[i]=s[sz-i];
s[sz-i]=tmp;
}
}
0375デフォルトの名無しさん
2007/05/30(水) 12:52:16ありがとうございました。
0376デフォルトの名無しさん
2007/05/30(水) 12:56:29ありがとうございます。
大体の流れはわかったのですが、if文におけるreturnは使ったことないのですけど
ほかの方法はありますか?
お願いいたします。
0377デフォルトの名無しさん
2007/05/30(水) 13:01:53int f(double x)
{
double y = x * x * x - 3 * x * x - 6 * x + 8;
int n=0;
if(y<0) n=-1;
if(y>0) n=1;
return n;
}
0378デフォルトの名無しさん
2007/05/30(水) 13:05:19if(y<0) n=-1;
else if(y>0) n=1;
elseを入れておくと良いかと。
使ったこと無いと何か問題があるのかね。
0381デフォルトの名無しさん
2007/05/30(水) 14:00:53http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4112.txt
あまり動作確認をしていないので、>>311が充分に動作確認をしてくれ。
0382デフォルトの名無しさん
2007/05/30(水) 14:43:34int f(double x)
{
int ret = 0;
double y = x * x * x - 3 * x * x - 6 * x + 8;
if(y<0) ret = ret - 1;
if(y>0) ret = ret + 1;;
return ret;
}
こうしろって事なんだろうか。
頭悪すぎる変更だが。
0383デフォルトの名無しさん
2007/05/30(水) 15:02:28>>356
>>352
>>347
↑こいつらうるせー。つまらねーことを疑問に思うのは自由だがいちいちうるせーよ。黙ってろ
理解力のないボケが
0384デフォルトの名無しさん
2007/05/30(水) 15:19:12お?鮮人が逆ギレしてら(笑)
0385315
2007/05/30(水) 15:30:550386デフォルトの名無しさん
2007/05/30(水) 15:52:05{
for(j=0; j<=h; j++)
{
if(x[i][h-j]%2==1)
printf("@");
else
printf(" ");
}
printf("\n");
}
0387デフォルトの名無しさん
2007/05/30(水) 16:23:53課題�@
配列x[4][4]に整数が格納されている。以下のプログラムを作れ。
�@x[i][j]の i+j=0ならy[i][j]=x[i][j]/16
�Ai+j=1なら y[i][j]=x[i][j]/12
�B 2<=(小なりイコールです)i+j<=5(小なりイコールです)なら y[i][j]=x[i][j]/32
�C i+j>5なら y[i][j]=x[i][j]/100
�D入力された配列x[i][j]と変換された配列y[i][j]を出力しなさい。
x[4][4]={260,45,-16,5,-79,36,-2,-7,0,-16,3,-2,-8,-4,5,-4}
ただし,小数点第2位まで示せ。
課題�A
y[i][j]=x[i][j]*z[i][j]を計算して出力せよ。
z[i][j]={16,12,32,100,12,32,100,100,32,100,100,100,100,100,100,100}
do,if,for,while習いました。
お願いしますm(_ _)m
0388デフォルトの名無しさん
2007/05/30(水) 16:34:150389webmaster@気まぐれアナスイ
2007/05/30(水) 16:36:270390デフォルトの名無しさん
2007/05/30(水) 16:38:13課題1
#include <stdio.h>
int main(void)
{
double x[4][4]={260,45,-16,5,-79,36,-2,-7,0,-16,3,-2,-8,-4,5,-4}, y[4][4];
int i, j;
for(i=0; i<4; i++) {
for(j=0; j<4; j++) {
switch(i+j) {
case 0:y[i][j] = x[i][j] / 16;
break;
case 1:y[i][j] = x[i][j] / 12;
break;
case 2:case 3:case 4:case 5:
y[i][j] = x[i][j] / 32;
break;
case 6:y[i][j] = x[i][j] / 100;
break;
}
}
}
for(i=0; i<4; i++) {
for(j=0; j<4; j++) printf("%.2f ", y[i][j]);
putchar('\n');
}
return 0;
}
0391デフォルトの名無しさん
2007/05/30(水) 16:48:12課題2
#include <stdio.h>
int main(void)
{
int x[4][4]={260,45,-16,5,-79,36,-2,-7,0,-16,3,-2,-8,-4,5,-4};
int z[4][4]={16,12,32,100,12,32,100,100,32,100,100,100,100,100,100,100};
int i, j, y[4][4];
for(i=0; i<4; i++) for(j=0; j<4; j++) y[i][j] = x[i][j] * z[i][j];
for(i=0; i<4; i++) {
for(j=0; j<4; j++) printf("%5d ", y[i][j]);
putchar('\n');
}
return 0;
}
0392デフォルトの名無しさん
2007/05/30(水) 17:05:21関数の定義をすればコンパイルできのでしょうか?
0393デフォルトの名無しさん
2007/05/30(水) 17:08:01実行ファイルを作る為の中間ファイルを作るのが コンパイル
0394webmaster@気まぐれアナスイ
2007/05/30(水) 17:08:04int main();
voild
{
double
x[][]=y[][]{260,45,-16,5,-79,36,-2,-7,0,-16,3,-2,-8,-4,5,-4}
int for (i=[4 != ++],j=[4 != ++],switch[i+j]);
case y[i][j] = x[i][j] / 16
break
{
case (1:y[i][j] = x[i][j]/12 [2:3:4:5]
y[i][j] = x[i][j]/32
6:y[i][j] = x[i][j]/100
for i=4,++
for j=4,++
????? %,2f
putchar (\n));
}
return;
}
0395デフォルトの名無しさん
2007/05/30(水) 17:25:27すみません。よくわかってないです。
とにかく
#include <>
で関数を定義すればいいんですかね?
0396デフォルトの名無しさん
2007/05/30(水) 17:41:03>>355 の結果は「コンパイル出来たが、リンク出来なかった」
リンクできるようにするためには、
・ コンパイラの設定をする(ライブラリとして popup等の本体が居るファイルがある)
・ popup等のソースがあるなら、それもコンパイルしてリンクする
のいずれか。
つまり、 #include とかで解決できるような代物ではない。
popup等が標準の関数ではないので、俺らはそれ以上答えようがないっつーことだ
0397デフォルトの名無しさん
2007/05/30(水) 17:51:21ありがとうございます。
とりあずコンパイラの設定をやってみます
0398 ◆GmgU93SCyE
2007/05/30(水) 18:27:25[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:borland
[3.3] 言語: C
[4] 期限: 2007年5月30日24:00まで
[5] その他の制限:なし
問題:80〜120の間の整数となる100個の乱数を発生させ、その乱数を用いて何かを行え。ゲームでも、シミュレーション、占い等、何でもよい。
全然分かりません。お願いします。
0399デフォルトの名無しさん
2007/05/30(水) 18:39:09問題
入力ファイル(テキストファイル)の中の単語の長さを調べてその頻度 を表示するプログラムを作れ。
ただし、単語の定義は空白、タブ、改行、 ピリオド(.)、コンマ(,)を含まない文字列の固まりとする。
また、ピリオドとコンマは長さ0の単語としてカウントせよ。
また、20文字以上はまとめてカウントせよ。
3] 環境
[3.1] OS: MacOSX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:5月31日までにお願いします
この前やってもらったのですが、配列をつかわないとダメだといわれました。
申し訳ないですけど、またお願いします。
0400デフォルトの名無しさん
2007/05/30(水) 18:52:43#include <stdio.h>
int main(void) {
char data[] = "Hello world!";
char *p = data;
int i = 0;
while(*p != '\0') {
printf("%c %d\n", *p, i);
i++;
p++;
}
printf("%d\n", i);
return(0);
}
0401デフォルトの名無しさん
2007/05/30(水) 18:53:540402デフォルトの名無しさん
2007/05/30(水) 18:55:57っていうか実行してみりゃ分かるじゃん
0403デフォルトの名無しさん
2007/05/30(水) 19:04:23e 1
l 2
l 3
o 4
5
w 6
o 7
r 8
l 9
d 10
! 11
12
0404デフォルトの名無しさん
2007/05/30(水) 19:07:20i使うんなら*pじゃなくてdata[i]でいいだろうに。
0405デフォルトの名無しさん
2007/05/30(水) 19:24:02した
e^x=1+x/1!+x^2/2!+…+x^n/n!+…
において、x=1とおいた式を計算するとよいでしょう。
環境
OS:Linux
コンパイラ名とバージョン:gcc
言語: C
期限: 2007/6/4まで
ネット上にプログラムの例などがあるのですが、難しくてわかりません・・・。
わかりやすく説明をつけて教えてもらえればありがたいです<(_ _)>
0406デフォルトの名無しさん
2007/05/30(水) 19:52:13[2] 問題文(含コード&リンク):
実行結果を予想を記述
int main(void) {
int data[] = {0, 1, 2, 3, 4, 5, 10, 20, 30, 40};
int *p;
p = &data[2];
printf("%d\n", *(p+1));
printf("%d\n", &data[8]-&data[4]);
return(0);
}
#include <stdio.h>
#define N 10
int main(void) {
int data[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i, size = N;
for (i = 0; i < N; i++) {
printf("%d\n", *(data+i));
}
return(0);
}
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:できるだけ早くお願いします
0407デフォルトの名無しさん
2007/05/30(水) 20:02:29【1番目のプログラム結果予想】
3
(data[8]のアドレス値からdata[4]のアドレス値を引いた値)
【2番目のプログラム結果予想】
1
2
3
4
5
6
7
8
9
10
「予想」なので実行はしていない。間違っていたらゴメンw
0408デフォルトの名無しさん
2007/05/30(水) 20:31:30>>314なら配列は使ってるが?
0409デフォルトの名無しさん
2007/05/30(水) 20:41:50神経衰弱見たいなゲーム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4113.c
>>405
それ宿題?e^1を1000桁求めろって普通のC言語の講義じゃやらないような希ガス
多倍長演算ライブラリや巧妙なアルゴリズムが無いとムリポ
/*
階乗部分は猛烈な勢いで大きくなってオーバーフロー
項が進むに連れ項の値が猛烈な勢いで小さくなって
計算機イプシロンを下回る。これ以上やっても、もう意味ないよ。
全く、テーラー展開は地獄だぜ!
*/
0410デフォルトの名無しさん
2007/05/30(水) 21:05:44コマンドラインで指定する正の整数nについて,1^2 + 2^2 + 3^2 + · · · + n^2 の値を求めるプログラム
% ./kadai6-4
引数(正の整数) を指定してください.
% ./kadai6-4 1 2
引数(正の整数) を1 つだけ指定してください.
% ./kadai6-4 17
1 から17 までの2 乗和は1785 です.
%
0411デフォルトの名無しさん
2007/05/30(水) 21:24:16その難しくてわからないプログラムの例ぷりーず
0412デフォルトの名無しさん
2007/05/30(水) 21:25:18このプログラムをベースに入力する秒数を実数にして時間・分・秒数に変換するプログラムをC言語で作成する
教えてください
♯include <stdio.h>
intmain(void)
{
int ji,fun,byou;
printf("秒数=")
scanf("%d",&byou);
ji=byou/3600;
byou=byou%3600;
fun=byou/60;
byou=byou%60;
printf("%d時間%d分%d秒\n",ji,fun,byou);
return0;
}
0413デフォルトの名無しさん
2007/05/30(水) 21:28:580414デフォルトの名無しさん
2007/05/30(水) 21:32:330415410
2007/05/30(水) 21:56:200416デフォルトの名無しさん
2007/05/30(水) 22:10:350417デフォルトの名無しさん
2007/05/30(水) 22:15:57だからスレ違いだっての
もし宿題だというなら>>1のテンプレ埋めれ
0418デフォルトの名無しさん
2007/05/30(水) 22:23:41上のほうにもあるけど問題の意味が分からないから
誰も答えないと思うよ
0419デフォルトの名無しさん
2007/05/30(水) 22:34:111000桁じゃなくて1000項の間違いとかじゃない?
あと階乗の計算はあっという間にオーバーフローするから
例えばx^5/5!とかだったら (x / 5) * (x / 4) * (x / 3) * (x / 2) * (x / 1) って細かく計算すれば出来ると思う
0420デフォルトの名無しさん
2007/05/30(水) 22:50:13問題の意味じゃなくて
お前の理解力が足りないだけなんだろうが(藁
0421デフォルトの名無しさん
2007/05/30(水) 22:54:18その手があったか。計算量は増えるけど、今のPCなら無問題だな。
ただ、納得できないのは、doubleの範囲なら1000項もやる必要無いような。
まるで、ピースの欠けたパズルをやっている気分だ。
ピースの欠けたパズルは、どうせ完成しないんだから諦めた方が良いな。
>>412も全てのピースを渡さずにパズルを完成させてくれと言っているようなものだな。
0422デフォルトの名無しさん
2007/05/30(水) 23:00:58(´,_ゝ`)プッ
0423デフォルトの名無しさん
2007/05/30(水) 23:03:25参考に
double TaylorExp(double x)
{
double a = x;
double buf , k;
double kou , ret = 0.0;
int i , flag = 0;
enum {POW_K = 1000};
const double INCREMENT = 1e-16;
if(x<0.0) { a = -x; flag = 1; }
if(a > 20.0)
{
buf = a;
for(k = 1.0+INCREMENT ; buf > 20.0 ;k+=INCREMENT) buf = a / ( pow(POW_K,k) );
a = buf;
ret = (flag==0) ? pow( TaylorExp(a) , pow(POW_K,k) ) : 1/pow( TaylorExp(a) , pow(POW_K,k) );
return ret;
}
kou = 1;
for(i=1 ; kou>(1e-20) && i<=128 ; i++)
{
ret += kou;
kou *= a / i;
}
return (flag==0) ? ret : 1/(ret);
0424デフォルトの名無しさん
2007/05/30(水) 23:05:05(・∀・)ニヤニヤ
0425デフォルトの名無しさん
2007/05/30(水) 23:13:47遅延評価っぽい方法で強引に計算(見事にスパゲティ).
結果が正しいかは確かめてない.
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4114.c
0426デフォルトの名無しさん
2007/05/30(水) 23:22:18[2] 問題文(含コード&リンク):
キーボードから入力された任意個の整数について偶数の個数を求めるプログラムを作成しなさい.このプログラムでは,最初に判定する整数の個数を入力し,次のその個数分の整数を繰り返し入力するものとする.
./counte
5
4
3
2
1
0
3
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:borland
[3.3] 言語: C
[4] 期限:
個数を指定するときに0以下の数が入力された場合,何も表示せず直ちに終了すること
0427デフォルトの名無しさん
2007/05/30(水) 23:31:08#include <stdio.h>
int main(void)
{
int num = 0, i, d = 0, even = 0;
scanf("%d", &num);
if(num <= 0) return -1;
for(i=0; i<num; i++)
{
scanf("%d", &d);
if(d % 2 == 0) even++;
}
printf("偶数の個数:%d", even);
return 0;
}
0428デフォルトの名無しさん
2007/05/30(水) 23:34:49ありがとうございます。
0429デフォルトの名無しさん
2007/05/31(木) 01:01:01無能乙wwwwwwwwwwwwwwwwwww
0430デフォルトの名無しさん
2007/05/31(木) 01:08:44[1] 授業単元:C言語
[2] 問題文(含コード&リンク): int i; で宣言された変数 i のアドレスをprintf() を用いて表示しなさい。
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
0431デフォルトの名無しさん
2007/05/31(木) 01:11:31#include <stdio.h>
int main(void) {
int i;
printf("&i = %p", &i);
return 0;
}
0432デフォルトの名無しさん
2007/05/31(木) 01:13:04wの数じゃなくてコードでどれくらい無能なのか示してやれよ
0433デフォルトの名無しさん
2007/05/31(木) 01:16:19ありがとうございました。
0434デフォルトの名無しさん
2007/05/31(木) 04:08:51それを利用して1〜100までの素数をすべて列挙せよ」
こいつがどうしても分かりません。そもそも素数をどうやって求めるか
わからん。誰か助けてー
0435デフォルトの名無しさん
2007/05/31(木) 04:24:190436デフォルトの名無しさん
2007/05/31(木) 06:35:190438デフォルトの名無しさん
2007/05/31(木) 07:26:46[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:Windows
コンパイラ名とバージョン:borland
言語:C
問題テーマ:繰り返し処理(for文)
問題1
数値を入力し、以下のように表示しなさい
実行画面
整数入力==>8
********
*******
******
*****
****
***
**
*
問題2
10進数を入力し8ビットの2進数に変換し表示しなさい
実行画面
10進数入力==>118
2進数:01110110
宜しくお願いします
0439254
2007/05/31(木) 07:36:50問題1
#include<stdio.h>
int main(void){
int i, n;
printf("整数入力==>");
scanf("%d", &n);
for(;n>0;n--){
for(i=0;i<n;i++) printf("*");
printf("\n");
}
return 0;
}
問題2
#include<stdio.h>
int main(void){
int i, n;
printf("10進数入力==>");
scanf("%d", &n);
for(i=8-1;i>=0;i--) printf("%d", (n>>i)&1);
printf("\n");
return 0;
}
0440デフォルトの名無しさん
2007/05/31(木) 09:39:06まずは素数についてググってみては?
0441デフォルトの名無しさん
2007/05/31(木) 09:44:51まぁ、0を除いて正の整数とすることもあれば、0を入れる、あるいは負の整数を入れることもあるそうな。
>>434の1〜100という範囲からして、正の整数かどうか判別をしてからそれが素数か調べろってことか?
0442デフォルトの名無しさん
2007/05/31(木) 09:56:55よろしくお願いします。
0443デフォルトの名無しさん
2007/05/31(木) 10:36:341〜100程度なら、1除いてxが2〜n-1まででn%x==0であるxが存在しないnが素数なんじゃね?
0444デフォルトの名無しさん
2007/05/31(木) 11:04:300445デフォルトの名無しさん
2007/05/31(木) 11:12:42素数を求める方法を知りたいような
レスの書き方だったからかな
0446デフォルトの名無しさん
2007/05/31(木) 11:40:50#include <stdio.h>
int isprime(int n)
{
int i;
if(n<2) return 0;
for(i=2; i*i<=n; i++) if(n%i==0) return 0;
return 1;
}
int main(void)
{
int i;
for(i=1; i<=100; i++) if(isprime(i)) printf("%3d", i);
return 0;
}
0447デフォルトの名無しさん
2007/05/31(木) 11:47:12問題文(含コード&リンク):
環境
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:繰り返し処理(while文)
問題1:キーボードより整数nを入力し、1〜nまでの合計を求めなさい
実行画面
整数nの入力==>5
合計:15
宜しくお願いします
0448デフォルトの名無しさん
2007/05/31(木) 11:47:410449デフォルトの名無しさん
2007/05/31(木) 11:49:16>345
0450デフォルトの名無しさん
2007/05/31(木) 12:20:47コンパイラ名とバージョン:ボーランド
言語: C
[4] 期限:今日の1時30分まで
テーマ:繰り返し(while文)
問題1
番号と得点を入力し、平均点、最高得点取得の番号・得点・最低点取得者の番号・得点を表示しなさい
番号に0が入力されたらデータの終了とする
実行画面
番号,得点==>1,72
番号,得点==>2,60
番号,得点==>3,88
番号,得点==>4,48
番号,得点==>6,91
番号,得点==>7,75
番号,得点==>8,96
番号,得点==>10,52
番号,得点==>0,0
平均点:72.8
最高点 番号:8 得点:96
最低点 番号:4 得点:48
この問題どうしてもわからないのでよろしくお願いします
0451デフォルトの名無しさん
2007/05/31(木) 12:28:180452デフォルトの名無しさん
2007/05/31(木) 12:33:47OS:WindowsXP
コンパイラ名:ボーランド
言語:C言語
期限:来週の火曜日までにお願いします
問題はソースコードの改良なのですが、ソースコードは長いので後から送信します
横8マス縦8マスのチェス盤を考え、今左下にナイトが置かれているとする。
このプログラムはこのナイトを右上に移動させるための順序を表示するプログラムである。
このプログラムを改良し、ナイトが同じマスを通らない順序だけを表示するようにせよ。
教師の説明によると再帰レベルの限界は12で
配列gboard[ ][ ]を使って一度訪れた場所に印をつければ解けるとのことでした。
よろしくお願いします
0453452
2007/05/31(木) 12:36:04#include<stdio.h>
#define DLIMIT 12
#define XSIZE 8
#define YSIZE 8
int gboard[XSIZE][YSIZE];
int gxpos[DLIMIT];
int gypos[DLIMIT];
int i;
0454452
2007/05/31(木) 12:37:08if(depth>=DLIMIT)goto jump;
if(x<0)goto jump;
if(x>=XSIZE)goto jump;
if(y<0)goto jump;
if(y>=YSIZE)goto jump;
gxpos[depth]=x;
gypos[depth]=y;
if(x==7 && y==7){
for(i=0;i<=depth;i++){
printf("(%d,%d)",gxpos[i],gypos[i]);
}
printf("GOAL\n");
goto jump;
}
knight_move(x+1,y+2,depth+1);
knight_move(x+2,y+1,depth+1);
knight_move(x+2,y-1,depth+1);
knight_move(x+1,y-2,depth+1);
knight_move(x-1,y-2,depth+1);
knight_move(x-2,y-1,depth+1);
knight_move(x-2,y+1,depth+1);
knight_move(x-1,y+2,depth+1);
jump:
;
}
int main(){
knight_move(0,0,0);
}
0455デフォルトの名無しさん
2007/05/31(木) 12:41:33コンパイラ名とバージョン:ボーランド
言語: C
[4] 期限:今日の1時30分
テーマ:判断処理(if文)
問題1キーボードより2つの値を入力し、比較結果を表示しなさい
実行画面
変数aの入力==>3
変数bの入力==>8
結果:3<8
変数aの入力==>8
変数bの入力==>3
結果:8>3
変数aの入力==>5
変数bの入力==>5
結果:5=5
0456デフォルトの名無しさん
2007/05/31(木) 12:46:25#include <stdio.h>
int main(void)
{
int a, b;
printf("変数aの入力==>");scanf("%d", &a);
printf("変数bの入力==>");scanf("%d", &b);
printf("結果:%d%c%d", a, (a == b ? '=' : (a > b ? '>' : '<')), b);
return 0;
}
0457425
2007/05/31(木) 12:53:54さすがに昨日のコードはアホ過ぎるので,もう少しまともなやつを書いた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4117.c
#include<stdio.h>
#include<stdlib.h>
int main(){char tmp[256];int s,n=0;while(n>0){printf("整数の入力:");fgets(tmp,256,stdin);
n=atoi(tmp); s=n*(n+1)/2;printf("合計:%i\n", s);} return 0;}
0459 ◆GmgU93SCyE
2007/05/31(木) 12:59:49無事間に合うことができました。ありがとうございました!
0460デフォルトの名無しさん
2007/05/31(木) 13:02:46#include <stdio.h>
int main(void)
{
int num = 1, mark = 0, sum = 0, pop = 0;
int MaxNum = -1, MaxMark = -1;
int MinNum = -1, MinMark = 10000;
for(;;)
{
printf("番号,得点==>");
scanf("%d,%d", &num, &mark);
if(num == 0) break;
sum += mark;
pop++;
if(mark > MaxMark){MaxNum = num; MaxMark = mark;}
if(mark < MinMark){MinNum = num; MinMark = mark;}
}
printf("平均点:%g\n", (double)sum / (double)pop);
printf("最高点 番号:%d 得点:%d\n", MaxNum, MaxMark);
printf("最低点 番号:%d 得点:%d\n", MinNum, MinMark);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main(void){int a,b;char tmp[256];printf("変数aの入力==>");fgets(tmp,256,stdin);
a=atoi(tmp);printf("変数bの入力==>");fgets(tmp,256,stdin);b=atoi(tmp);
printf("結果:%i%c%i\n",a,(a>b)?'>':((a<b)?'<':'='),b);return 0;}
0462デフォルトの名無しさん
2007/05/31(木) 13:40:43#include<stdio.h>
#include<memory.h>
#define DLIMIT 12
#define XSIZE 8
#define YSIZE 8
int gboard[XSIZE*YSIZE];int gxpos[DLIMIT];int gypos[DLIMIT];int i;
void knight_move(int x,int y,int depth){
if(depth > DLIMIT ){memset( gboard , 0 , sizeof( gboard ) );return;}
if(gboard[x*YSIZE+y] ){memset( gboard , 0 , sizeof( gboard ) );return;}
if(x < 0 ){ return; }if(x >= XSIZE ){ return; }if(y < 0 ){ return; }if(y >= YSIZE ){ return; }
gxpos[depth]=x;gypos[depth]=y;gboard[x*YSIZE+y] = true;
if(x==7 && y==7){for(i=0;i<=depth;i++){printf("(%d,%d)",gxpos[i],gypos[i]);}printf("GOAL\n");memset( gboard , 0 , sizeof( gboard ) );return;}
knight_move(x+1,y+2,depth+1);knight_move(x+2,y+1,depth+1);knight_move(x+2,y-1,depth+1);knight_move(x+1,y-2,depth+1);
knight_move(x-1,y-2,depth+1);knight_move(x-2,y-1,depth+1);knight_move(x-2,y+1,depth+1);knight_move(x-1,y+2,depth+1);}
int main(){memset( gboard , 0 , sizeof( gboard ) );knight_move(0,0,0);}
BCCで動くかシラネ
あってるかもシラネw
0463デフォルトの名無しさん
2007/05/31(木) 14:22:07キーボードより2以上の任意の整数を入力すると,入力された数の全ての素因数を表示するプログラムを作成せよ.
<ヒント>
・素因数…素数(1及びその数自身でしか割り切れない)の約数のこと.
・配列は使わなくても実現できる.使っても良い.
・実現方法がかわらない場合は,下記の処理の流れを参考にすると良い.
(�@) キーボードから入力された数を「もとの数」とする.
(�A) もとの数に対して「割る数」を2から順に「もとの数」に達するまで1ずつ増やしてゆく.
(�B) 「もとの数」が「割る数」で割り切れれば,この「割る数」を因数として出力しつつ,左記の商を計算し,新たな「もとの数」とする.
(�C) 割り切れる限り(�B)を繰り返す.割り切れなくなった時点で(�A)へ進む.
<実行例>
num = ? 30 ← キーボードから30と入力しているところ
30 = 2 × 3 × 5
0464デフォルトの名無しさん
2007/05/31(木) 14:30:160466デフォルトの名無しさん
2007/05/31(木) 14:35:58#include <stdio.h>
#define LOG2_10 3.322
void e(int *data, int keta)
{
int i, j;
unsigned k, k2, n, s;
int len;
int *dap;
long x;
len = (keta-1) / 4 + 2;
for (dap = data, j = len; j--; ) *dap++ = 0;
n = keta * LOG2_10 + 1;
k = 1; k2 = 2;
s = 0; j = -1;
for (i = 1; s <= n; i++) {
if (i >= k) {
k = k2;
k2 <<= 1;
j++;
}
s += j;
}
0467デフォルトの名無しさん
2007/05/31(木) 14:38:15*data = 1;
while (--i) {
x = 0;
for (j = len, dap = data; j--; ) {
x = x * 10000 + *dap;
*dap++ = x / i;
x %= i;
}
(*data)++;
}
}
0468デフォルトの名無しさん
2007/05/31(木) 14:40:04int main(void)
{
int i, keta;
static int data[3000];
printf("--- 自然対数の底 e の値を算出します ---\n");
printf("小数点以下何桁まで計算しますか ?\n");
scanf("%d", &keta);
e(data, keta);
printf("自然対数の底 e = \n");
printf("%1d.", data[0]);
for (i = 1; i <= (keta-1)/4+1; i++) {
printf("%04d ", data[i]);
if (i % 10 == 0) printf("\n ");
}
if (i % 10 != 1) printf("\n");
return 0;
}
わからない例の一つです。お願いします。
このバカ教官の名前を晒せ。
0471デフォルトの名無しさん
2007/05/31(木) 15:51:09[2] 問題文:a*bと入力したらaアスタリスクb と表示されるプログラム
[3.1] OS:WindowsXP
[3.2] Borland C++
[3.3] 言語:C++
0472デフォルトの名無しさん
2007/05/31(木) 15:51:170473デフォルトの名無しさん
2007/05/31(木) 15:58:49#include <stdio.h>
int main(void)
{
char buf[256]={"\0"};
size_t buf_sz=sizeof(buf)/sizeof(buf[0]),i;
printf("Input (%d文字以内) > ",buf_sz-1);
fgets(buf,sizeof(buf)/sizeof(buf[0]),stdin);
for(i=0; ; i++) {
if(i>buf_sz || buf[i]=='\0') break;
if(buf[i]=='*') printf("アスタリスク");
else putchar(buf[i]);
}
return 0;
}
#include<stdio.h>
#include<string.h>
int main(void){char tmp[256];fgets(tmp,256,stdin);if(strcmp(tmp,"a*b")==0){
puts("aアスタリスクb");}return 0;}
0475デフォルトの名無しさん
2007/05/31(木) 16:23:24お前のクソースは脱糞もんだぜ、クソの臭いがぷんぷんすんぜ!
0476デフォルトの名無しさん
2007/05/31(木) 16:23:47問題文(含コード&リンク):
環境
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:繰り返し処理(while文)
問題1:キーボードより整数nを入力し、1〜nまでの合計を求めなさい
実行画面
整数nの入力==>5
合計:15
何方か簡単なプログラム作っていただけませんか?
何か問題があるなら具体的にどうぞ。
0479デフォルトの名無しさん
2007/05/31(木) 16:32:32問題があるとは言った覚えはないが?w
だから何?
0482デフォルトの名無しさん
2007/05/31(木) 16:36:57#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n,a=1,d=1,sum;
char buf[256]={"\0"};
size_t buf_sz=sizeof(buf)/sizeof(buf[0]),i;
printf("整数nの入力==>");
fgets(buf,buf_sz,stdin);
n=atoi(buf);
sum= (n*(2*a+(n-1)*d)) / 2;
printf("童貞:%d",sum);
return 0;
}
0483デフォルトの名無しさん
2007/05/31(木) 16:38:51お前の言い分や言い返しのパターンは去年のやり取りで調査済みだよw
だからお前に投げかける言葉と、お前の必死こいたレスへの切り返しは出来るから
墓穴を掘る前にやめとけw
0484デフォルトの名無しさん
2007/05/31(木) 16:40:07> テーマ:繰り返し処理(while文)
っとあるから、whileを用いるのが条件なんだろうか?
はっきりしとけ。
0485デフォルトの名無しさん
2007/05/31(木) 16:41:11>>475は「問題が無い」とも言ってないと思うぞ。
つーかこのネタ回答何度目だよ。いいかげん飽きた。
もっと面白いネタ持ってきてくれよ。
0487デフォルトの名無しさん
2007/05/31(木) 16:46:34その他大勢「お前の存在そのものが大問題」
トーマス「何か問題でも?」
その他大勢「(スルー、無視、しかと)」
トーマス「俺のクソミソースを提出しやがれ、屁たれ質問者(ウホッ)」
その他大勢「まともなソースを書いてやっか」
>>485
問題があるとは書いてないようだが?お前も曲解して墓穴を掘るタイプだな。
どこをどう読んだら「問題あり」と読めるのか、説明を求む。まぁ、無理だよ。
書いてないものは書いてないからw 言ってない相手に言っただろは通用しない。
裁判じゃなおさら通用しない誘導尋問だなw
ジャパン語で。
俺は清潔な人間なので、クソの臭いがするのは問題だと思うんだな。
0490デフォルトの名無しさん
2007/05/31(木) 16:49:360491デフォルトの名無しさん
2007/05/31(木) 16:51:35#include <stdio.h>
#include <stdlib.h>
int main(void) {
int n,i=1,sum=0;
char buf[256]={"\0"};
size_t buf_sz=sizeof(buf)/sizeof(buf[0]);
printf("整数nの入力==>");
fgets(buf,buf_sz,stdin);
n=atoi(buf);
while(i<=n) sum+=i++;
printf("包茎:%d",sum);
return 0;
}
0492デフォルトの名無しさん
2007/05/31(木) 16:55:00自民党がどこまで得票を維持できるか楽しめる参議院選挙があるねぇ。
トーマスさんよぉ、あんたの企業は自民党から甘い汁を吸わせてもらっているんかい?
まぁ、せいぜい自民党に媚を売ってクソミソースを世の標準にしてもらうんだなw
ジャパン語で。
0495デフォルトの名無しさん
2007/05/31(木) 17:00:33わざわざ言う奴が>>475しか居なかっただけじゃね?
もし掲示板上の書き込みからクソの臭いがするなら、神経科の受診が必要。
0497デフォルトの名無しさん
2007/05/31(木) 17:09:30まさか、誘導尋問をしたつもりが自分らが問題ありと思っていたことを露呈したとはw
おばかなソースで宿題スレにバカ集合ちゃらちゃ♪
わかったか?お前らが問題だと思っていたことが判明しただけ、こっちは問題があるとは言ってなし。
クソースと投げかけただけw
0498デフォルトの名無しさん
2007/05/31(木) 17:14:58問題あり の文字が浮かび出てこないのは一目瞭然だなw
そもそもクソースって何語なんだ。
え?
0501デフォルトの名無しさん
2007/05/31(木) 17:17:26お前の性格はモロにバレてるからw 逆手にとって切り返して、お前がファビョるのも計算済みだよw
つまりお前は去年論破されて勝利宣言した粘着私怨君なわけですかw
わざわざそんな恥ずかしい自己紹介しなくてもw
0503デフォルトの名無しさん
2007/05/31(木) 17:23:570505デフォルトの名無しさん
2007/05/31(木) 17:32:21トーマスさんよぉ、↑これ作ってくれへんか?
0506デフォルトの名無しさん
2007/05/31(木) 17:39:42ちょっと待ってろ
0507デフォルトの名無しさん
2007/05/31(木) 17:51:320508デフォルトの名無しさん
2007/05/31(木) 17:55:560510デフォルトの名無しさん
2007/05/31(木) 18:20:43プログラム おしえて
0511デフォルトの名無しさん
2007/05/31(木) 18:48:49[2] 問題文(含コード&リンク):
迷路探索
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4118.c
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 6月1日24:00
[5] その他の制限: 無し
どうか宜しくお願いします。
0512デフォルトの名無しさん
2007/05/31(木) 18:54:05ほしいかおめーら?やらねーよ(ペ
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char* argv[]){double n;if(argc>1){n=atof(argv[1]);
printf("%.0f\n",(n*(n+1)*(2*n+1))/6);}return 0;}
0514デフォルトの名無しさん
2007/05/31(木) 19:07:300516デフォルトの名無しさん
2007/05/31(木) 19:27:34[2] 問題文(含コード&リンク):
下記の実行結果を得るように,メイン関数の他に関数my_abs(double x);
my_pow(double x, double y); fact(double x); sum(double x); を記述しなさい.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4119.txt
実行結果1
x の値(整数)を入力してください.10 ..
y の値(整数)を入力してください.5 ..
x の入力値=> 10
y の入力値=> 5
10 の絶対値=> 10
5 の絶対値=> 5
10 の5 乗=> 100000
10 のFactorial => 3628800
5 のFactorial => 120
10 のSummation => 55
5 のSummation => 15
0517デフォルトの名無しさん
2007/05/31(木) 19:28:22x の値(整数)を入力してください.8 ..
y の値(整数)を入力してください.-7 ..
x の入力値=> 8
y の入力値=> -7
8 の絶対値=> 8
-7 の絶対値=> 7
8 の-7 乗=> 0.000000476837158
8 のFactorial => 40320
-7 のFactorial は計算できません.
8 のSummation => 36
-7 のSummation は計算できません.
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限
再来週の火曜辺りまで
[5] その他の制限
なし
どなたかおねがいします
0518デフォルトの名無しさん
2007/05/31(木) 19:29:53トーマスが論破できなかったんだよw
>>475 のどこに「問題あり」と書かれているか、説明していただこうw
今論破されているのはトーマスだねw
それから、お前に粘着した覚えはないなぁ。気持ち悪いからこっちからごめんだよw
お前が「何か問題でも?」ってレスしてくるのはすでに予測済みだったから
そことなく罠をはっておいてやったんだよ。そしたらお前は見事にハマって釣られたわけだw
残念だが論破とか勝ち負けを競っているようじゃ、まだまだこのおっさんもがきだなw
0519デフォルトの名無しさん
2007/05/31(木) 19:31:28お前の会社が今、傾いて倒産しそうだから必死なのは分かるが、そんな強がりをしても
自民党はお前の会社は救っちゃくれないね。だから自民党以外の政党に投票しろや、な?w
0520デフォルトの名無しさん
2007/05/31(木) 19:32:14スレ違いだ他でやれ
0521デフォルトの名無しさん
2007/05/31(木) 19:36:15>>475に問題ありと書かれていることが読み取れるそうだ。
こいつのエスパーはただの妄想だな。
とりあえず日本語が出来ないトーマスは在日決定だろ。通りでくせぇわけだ
0522デフォルトの名無しさん
2007/05/31(木) 19:40:10道理で ○
在日乙
0523510
2007/05/31(木) 19:41:460524デフォルトの名無しさん
2007/05/31(木) 19:44:500525デフォルトの名無しさん
2007/05/31(木) 19:46:470526デフォルトの名無しさん
2007/05/31(木) 19:47:39テンプレ読んでやり直し
0527デフォルトの名無しさん
2007/05/31(木) 20:30:00もうその程度の変換ミスしかつつけなくなったかw
もっとやれ、そういうのをたたき出すのが目的だからw
0528デフォルトの名無しさん
2007/05/31(木) 20:31:35ところでさぁ、変換ミスのあら探しついでに、
>>475に問題ありと書かれているかどうかチェックしてくれへんか?w
お前の脳内妄想でじゃなくて、文字列の中からな。
後、下手にトーマスをかまうのもどうかとw
こいつがこのスレの荒らしの原因でもあるし。
0529デフォルトの名無しさん
2007/05/31(木) 20:45:300530デフォルトの名無しさん
2007/05/31(木) 20:50:00物事には
外面的側面から捉える手法と
内面的側面から捉える手法の2種類がある
どう頑張ったところで内面的側面を破棄することは出来ない
これ以上やりたいなら違うとこでやれ
0531デフォルトの名無しさん
2007/05/31(木) 20:50:450532デフォルトの名無しさん
2007/05/31(木) 20:54:290533デフォルトの名無しさん
2007/05/31(木) 20:58:54[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
以下の条件をみたすプログラムを作成せよ。
整数、または少数を平均を求めるプログラム。
データーの整数、少数はmain関数の引数として入力すること。
平均の計算は自作関数heikinで行うこと。
結果の表示はmain関数内で行うこと。
[3] 環境
[3.1] OS:Windows Xp
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
[3.3] 言語:C言語
[4] 期限:2007年6月5日まで。
[5] その他の制限:この課題が出されたとき、fgets fpusあたりを習いました。
制限は特にありません。
自分では解けませんでした。
よろしくお願いします。
0534デフォルトの名無しさん
2007/05/31(木) 21:06:040535デフォルトの名無しさん
2007/05/31(木) 21:42:46書いてないんだよな、これがw
むしろそれでも良いって納得しているんだが?w
トーマスの書くクソースなんて、去年からとっくにどんなものか知っていたんだし。
まぁ、こちらが出した餌に食いついて、まさかこれ釣り針じゃないよね?って
食いついて喉から外れないで必死こいている釣られた奴が、トーマスの肩を持って
自分を慰めているから笑える。もちろんそれは釣り針であって餌は偽者のルアーでつよw
0536デフォルトの名無しさん
2007/05/31(木) 21:48:050537デフォルトの名無しさん
2007/05/31(木) 21:50:030538デフォルトの名無しさん
2007/05/31(木) 21:51:350539デフォルトの名無しさん
2007/05/31(木) 22:03:02#include <stdio.h>
#include <stdlib.h>
double heikin(int intCount,char *argv[]);
int main(int argc,char *argv[])
{
printf( "%0.3f\n",heikin(argc,argv) );
getchar();
return 0;
}
double heikin(int intCount,char *argv[])
{
double dblTotal=0;
int i;
for(i=1;i<intCount;i++)
{
dblTotal+=atof(argv[i]);
}
return dblTotal/(double)(intCount-1);
}
0540452
2007/05/31(木) 22:21:58有難うございました。
0541533です。
2007/05/31(木) 22:25:38ありがとうございます!
0542デフォルトの名無しさん
2007/05/31(木) 22:30:17[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4120.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Boland C++ 、BCC
[3.3] 言語: C言語
[4] 期限: ([2007年06月7日:10時まで])
[5] その他の制限: 特にないと思います。
教科書のソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4120.txt
main関数を作って教科書のソースを自分で動かせるようにしないといけないのですが、
勝手がわからず断念。科目名とか学生名を入れる時点でで既に混乱しております。
よろしくお願いいたします。
0543デフォルトの名無しさん
2007/05/31(木) 22:40:480544デフォルトの名無しさん
2007/05/31(木) 22:44:46かなりやっつけ
double my_abs(double x)
{
return (x>=0?x:-x);
}
double my_pow(double x, double y)
{
if(y>0) return x*my_pow(x,y-1);
if(y<0) return (1/x)*my_pow(x,y+1);
else return 1;
}
double fact(double x)
{
if(x<1) return 0;
if(x==1) return 1;
return x*fact(x-1);
}
double sum(double x)
{
double i,y;
y=x;
for(i=y-1;i>0;i--) {
x+=i;
}
return x;
}
0545デフォルトの名無しさん
2007/05/31(木) 22:47:29[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
標準入力(普通はキーボード) から入力した総文字数(改行を含む) を出力するプログラムを作成せよ.
さらに,リダイレクションを用いて,作成したプログラム自体(test1-1.c) が何文字であるかを確認 せよ.
% ./test1-1 ← キーボードからの入力
input test ← 文字列を入力した後 Enter キーを押す.
12345678 ← 文字列を入力した後 Enter キーを押す.
総文字数は 20 です. ← [Control]+[d] を押したら文字数が表示される.
% ./test1-1 < test1-1.c ←リダイレクションによる入力
総文字数は 256 です.
[3] 環境
[3.1] OS: Linux3.2
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: C
[4] 期限: (2007年6月4日)
[5] その他の制限: 繰り返しのfor文 while文あたり
おねがいします
0546542
2007/05/31(木) 22:47:39適当に動くように作れといわれただけで細かいところは自分で決めろ、とのことです。
そういうわけで学生の名前や課目もgakusei:1とかkamoku:1でいいらしいとのことです。
自分の考えといたしましては、
1.scanf関数を用いて、学生名と課目番号と成績を入れる。
2.全学生の課目と成績を表示。
を繰り返すプログラムにしようかと考え中です。
0547デフォルトの名無しさん
2007/05/31(木) 23:03:22ありがとうございました!
親切に注釈もつけていただいて感謝します。
参考になりました。
0548デフォルトの名無しさん
2007/05/31(木) 23:14:46#include <stdio.h>
int main(void)
{
int count = 0;
while (getchar() != EOF)
++count;
printf("総文字数は %d です.\n", count);
return 0;
}
0549デフォルトの名無しさん
2007/06/01(金) 00:53:29[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4121.txt
上記プログラムを実行し、i<=count の=が無くても
(つまり i<=count-1番目が異なる)正しい答えを出す入力例に変更しなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VC++2005
[3.3] 言語: C++
[4] 期限: 6月1日10時30分まで
[5] その他の制限: なし
どうかお願い致します。
0550デフォルトの名無しさん
2007/06/01(金) 01:34:24入力例に変更って意味が分からん。
長い方をcountにすればナル文字位置で「異なる」判定になるはず
#include <stdio.h>
void main(void) {
char s1[] = "abcd";
char s2[] = "abcde";
int i = 0;
int j = 0;
int count;
int same;
while (s1[i]) { i++; }
while (s2[j]) { j++; }
count = (i > j) ? i : j;
same = 1;
for(i = 0; i < count; i++) {
if(s1[i] != s2[i]){
printf("%d番目で異なる\n",i);
same = 0;
break;
}
}
if (same) {
printf("同じである\n");
}
}
0551デフォルトの名無しさん
2007/06/01(金) 01:39:02こういうことじゃね?
char s1[]="abcd";
char s2[]="bbcde";
0552デフォルトの名無しさん
2007/06/01(金) 03:15:04なんか使う関数って学生名と科目名、保存出来なくねぇ?
どっちも番号だけになってるような。
それとも、add関数を変更するか、
名前と番号を対応付けるところは自分で作るの?
0553デフォルトの名無しさん
2007/06/01(金) 03:43:25関数の使い方はこんなもんかな。
int main()
{
char line[256];
int gNum, kNum, sValue;
initialize();
while(fgets(line,256,stdin) != NULL){
printf("input ")
if(sscanf(line,"%d %d %d",&gNum,&kNum,&sValue) != 3){
printf("err %s \n",line);
continue;
}
add(gNum, kNum, sValue);
}
for(gNum=0;gNum<MAX_GAKUSEI;gNum++){
for(kNum=0;kNum<MAX_KAMOKU;kNum++){
sValue=get_seiseki(gNum,kNum);
if(sValue!=-1){
printf("%d %d %d\n",gNum,kNum,sValue);
}
}
}
return 0;
}
0554デフォルトの名無しさん
2007/06/01(金) 09:26:15[2] 問題文(含コード&リンク):
100〜150の間の奇数の合計を出力せよ
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VC++2005
[3.3] 言語: C
[4] 期限: 6月4日10時00分まで
[5] その他の制限: whileとfor文両方でお願いします
始めたばかりでチンプンカンプンですのでよろしくお願いします^^;
0555デフォルトの名無しさん
2007/06/01(金) 09:44:30for文
#include <stdio.h>
int main(void)
{
int i, sum = 0;
for(i=100; i<=150; i++) if(i%2) sum += i;
printf("%d", sum);
return 0;
}
while文
#include <stdio.h>
int main(void)
{
int i = 100, sum = 0;
while(i<=150) {
if(i%2) sum += i;
i++;
}
printf("%d", sum);
return 0;
}
0556デフォルトの名無しさん
2007/06/01(金) 09:49:37あ〜すいませんただ書き忘れてたんですがoddを
使った場合はどうなるでしょうか?
よければそちらもお願いします。
0557デフォルトの名無しさん
2007/06/01(金) 09:53:25C標準関数/文法にそんなのないよー
0558デフォルトの名無しさん
2007/06/01(金) 09:55:29・for文
#include<stdio.h>
int main(){ int a=101; int d=2; int n=25; int s= n*(2*a+(n-1)*d)/2; for(;;)printf("%i\n", s); return 0; }
・while文
#include<stdio.h>
int main(){ int a=101; int d=2; int n=25; int s= n*(2*a+(n-1)*d)/2; while(1)printf("%i\n", s); return 0; }
0560デフォルトの名無しさん
2007/06/01(金) 11:09:470561デフォルトの名無しさん
2007/06/01(金) 11:45:49int main()
{
int a = 100, sum = 0;
for(;;){
if(a >= 150)
break;
if(a%2)
sum += a;
a++;
}
printf("%d \n", sum);
a = 100, sum = 0;
while(1){
if(a >= 150)
break;
if(a%2)
sum += a;
a++;
}
printf("%d \n", sum);
return 0;
}
0563デフォルトの名無しさん
2007/06/01(金) 11:59:28題意としては、ループさせたいんだろうけど、元素材が悪いw
0564デフォルトの名無しさん
2007/06/01(金) 12:24:22そういう勝手なことを言っておきながら、お前が昨日書いたクソースは
初項1、等差1に対応していた奴だったじゃんwwwwww
〜じゃなきゃだめだって言うのは、おまえ自身の勝手な主観だから、黙っとけ、年金未納おっさんw
0565デフォルトの名無しさん
2007/06/01(金) 12:24:240566デフォルトの名無しさん
2007/06/01(金) 12:28:22>>447
#include<stdio.h>
#include<stdlib.h>
int main(){char tmp[256];int s,n=0;while(n>0){printf("整数の入力:");fgets(tmp,256,stdin);
n=atoi(tmp); s=n*(n+1)/2;printf("合計:%i\n", s);} return 0;}
0567デフォルトの名無しさん
2007/06/01(金) 12:33:050568デフォルトの名無しさん
2007/06/01(金) 13:33:270569デフォルトの名無しさん
2007/06/01(金) 13:47:05[2] 問題文(含コード&リンク):預金額、利率を入力して、10年間分の各利率に対する預金額を表示する。
[3] 環境
[3.1] OS: WindowsVista
[3.2] コンパイラ名とバージョン: VC++2005
[3.3] 言語: C++
[4] 期限: 6月8日まで
[5] その他の制限: 特になし
よろしくお願いいたします。
ジャパン語で。
複利なのか単利なのかくらい書け。
0572デフォルトの名無しさん
2007/06/01(金) 13:59:480573デフォルトの名無しさん
2007/06/01(金) 14:05:40#include<stdio.h>
int main(void){
long yokin, tanri, fukuri;
double riritu;
int i;
printf("預金額 : ");
scanf("%ld", &yokin);
printf("年利率 : ");
scanf("%lf", &riritu);
tanri=fukuri=yokin;
for(i=0;i<10;i++)
{
tanri+=yokin*riritu/100.0;
fukuri=fukuri*(1+riritu/100.0);
printf("%2d 年目 単利 %ld 円 複利 %ld円\n", i+1, tanri, fukuri);
}
return 0;
}
0574デフォルトの名無しさん
2007/06/01(金) 14:08:02日本語も読めない在日がこんなところでのうのうと日本語を書くなよw
0575デフォルトの名無しさん
2007/06/01(金) 14:09:59そういうことを言っているお前が、日本語が理解できない、物事も的確に判断、理解できない
バカなんじゃないか?って思われていることに気づいた方が良いよw
とりあえず、トーマスは確実に基地外でバカ。自分より劣る人間を探して罵倒することで
自分を誇示したがる井の中の蛙なんだよねw
0576デフォルトの名無しさん
2007/06/01(金) 14:10:03利率更新のタイミングは? (日/月/年)
-----
これを改変した詐欺あったよなー
0577デフォルトの名無しさん
2007/06/01(金) 14:13:51#include<stdio.h>
#include<stdlib.h>
int main(void){double rate;int i,principal;char tmp[256];printf("元金:");
fgets(tmp,256,stdin);principal=atoi(tmp);printf("利率(%%):");fgets(tmp,256,stdin);
rate=atof(tmp)/100.0;for(i=1;i<11;i++){printf("%i年後:%i円\n",i,principal+
(int)(rate*i*principal));}return 0;}
初項1、等差1の等差数列の和を求めるのに「初項1、等差1の等差数列の和の公式」を
使うのは当然。
何でもかんでも一般化しないときが済まないのかねw
無駄なので事前に計算して式を単純化するなんてのはチューニングの基礎なん
だけどね。
なぜそこに噛みつくのかが全く分からない。宇宙から司令電波でも受信してるのかねw
0581デフォルトの名無しさん
2007/06/01(金) 14:23:28できないです…
課題1はif文でお願いします。言い忘れててすいませんでした(>_<)
課題2は配列のかけ算ではなく4行4列の行列のかけ算です(>_<)
0582デフォルトの名無しさん
2007/06/01(金) 14:24:170583デフォルトの名無しさん
2007/06/01(金) 14:34:530584デフォルトの名無しさん
2007/06/01(金) 14:44:01#include<stdio.h>
int main(void){
int x[4][4]={{260,45,-16,5},{-79,36,-2,-7},{0,-16,3,-2},{-8,-4,5,-4}};
int z[4][4]={{16,12,32,100},{12,32,100,100},{32,100,100,100},{100,100,100,100}};
int y[4][4];
int i, row, column;
for(column=0;column<4;column++){
for(row=0;row<4;row++){
y[column][row]=0;
for(i=0;i<4;i++) y[column][row]+=x[column][i]*z[i][row];
}
}
for(column=0;column<4;column++){
for(row=0;row<4;row++) printf(" %5d", y[column][row]);
printf("\n");
}
return 0;
}
0585デフォルトの名無しさん
2007/06/01(金) 15:10:03[2] 問題文(含コード&リンク):浮いた5000万件の所在がわかるようにするプログラム
[3] 環境
[3.1] OS: 厚生省
[3.2] コンパイラ名とバージョン: 社会保険庁 Ver.2.007
[3.3] 言語: ジャパン語
[4] 期限: 参議院選挙の投票日の一週間前
[5] その他の制限: 支払いをした領収書がなくてもわかるようにお願いします。
0586デフォルトの名無しさん
2007/06/01(金) 15:12:13#include<stdio.h>
int main(void){
int i;
for(i=0;i<50000000;i++) printf("俺\n");
return 0;
}
0587デフォルトの名無しさん
2007/06/01(金) 15:29:12error:多すぎて不可能です。
warnning:このままでは日本が崩壊する可能性があります。解決するには、全ての議員を辞めさせて選挙をする必要があります。
0589デフォルトの名無しさん
2007/06/01(金) 15:40:23> [3.3] 言語: ジャパン語
ジャパン語で
0590デフォルトの名無しさん
2007/06/01(金) 15:41:540592デフォルトの名無しさん
2007/06/01(金) 15:53:220593デフォルトの名無しさん
2007/06/01(金) 16:08:08[2] 問題文(含コード&リンク):下にあります。
[3] 環境
[3.1] OS:Linux
[4] 期限:できるだけ早いと嬉しいです
一行からなる二つの文字列を入力し,それぞれを一旦char型の配列に記録する.二つの文字列が等しければ"yes"をさもなければ"no"を表示するプログラムを作成しなさい.
このとき,二つの文字列に対応する2つの文字列(文字配列)の先頭番地を与えたとき,二つの文字列が一致していれば1を,一致していなければ0を返す関数int mycmp(char *, char *);を定義し,これを有効に使うこと.
プログラミングにあたっては,配列宣言を除き,すべてポインタを用いて処理すること.文字列は256文字以下が入力されるものとし,文字列の長さに関するエラー処理をする必要はない.
0594デフォルトの名無しさん
2007/06/01(金) 16:13:22#include <string.h>
int mycmp(char * s1, char * s2)
{
return strcmp(s1, s2) == 0);
}
int main()
{
char str1[257];
fgets(str1, sizeof(str1), stdin);
char str2[sizeof(str1)];
fgets(str2, sizeof(str2), stdin);
printf("%s\n", mycmp(str1, str2) ? "yes" : "no");
return 0;
}
0595594
2007/06/01(金) 16:14:340596594
2007/06/01(金) 16:15:49今更使うなと言われても知らないw
0597デフォルトの名無しさん
2007/06/01(金) 16:17:560598デフォルトの名無しさん
2007/06/01(金) 16:20:31{
do {if(*a!=*b++) return 0;}while(*a++);
return 1;
}
0599デフォルトの名無しさん
2007/06/01(金) 16:20:48#include<stdio.h>
#include<string.h>
int mycmp(char* s1,char* s2){return strncmp(s1,s2,256)==0;}
int main(void){char s1[256],s2[256];fgets(s1,256,stdin);fgets(s2,256,stdin);
puts(mycmp(s1,s2)?"yes.":"no.");return 0;}
0601デフォルトの名無しさん
2007/06/01(金) 16:32:41亀乙。
0602デフォルトの名無しさん
2007/06/01(金) 16:37:06おせーーんだよ、弱小企業めがw
0603デフォルトの名無しさん
2007/06/01(金) 16:39:23外へ出て深呼吸したほうがいいぞ
0604デフォルトの名無しさん
2007/06/01(金) 16:40:030607デフォルトの名無しさん
2007/06/01(金) 16:42:270608デフォルトの名無しさん
2007/06/01(金) 16:43:53等差数列の和をループで計算する奴って中学校出てないんだろうか?
0609デフォルトの名無しさん
2007/06/01(金) 16:46:13よっぽど暇で儲けがないから、自分より劣る奴を罵倒しに来ている暇人なんだよ
トーマスって奴はw
0610デフォルトの名無しさん
2007/06/01(金) 16:46:320611デフォルトの名無しさん
2007/06/01(金) 16:47:580612デフォルトの名無しさん
2007/06/01(金) 16:49:27トーマス哀れwwwwwww こんなところじゃお前がこき使おうと思って
雇おうと思える社員すらみつからんぞw
0613デフォルトの名無しさん
2007/06/01(金) 16:49:270614デフォルトの名無しさん
2007/06/01(金) 16:50:17お前さぁ、自分を擁護する奴がいるように見せかけようと自作自演しなくて良いからw
バレてんだよ、お前を擁護する奴なんていないんだからw
0615デフォルトの名無しさん
2007/06/01(金) 16:53:05トーマスみたいな基地外が運営している会社になんて入りたくねーよw
0616デフォルトの名無しさん
2007/06/01(金) 17:00:270618デフォルトの名無しさん
2007/06/01(金) 17:06:160619デフォルトの名無しさん
2007/06/01(金) 17:08:11相手にバカとか罵倒すりゃムキになると思っているんだろうけど、無駄w
お前がバカだというのが分かっているから。このスレで過去にお前が出した
クソースをみりゃ一目瞭然w
0620デフォルトの名無しさん
2007/06/01(金) 17:10:410621デフォルトの名無しさん
2007/06/01(金) 17:11:45>>617
おまえもそうじゃね?>>605とか。
なんか勝手に略語とか造語とか作って悦に入ってる中学生みたいな奴いるけど、
意味も定義しないで変な言葉作る奴って例外なく無能なんよねぇ。
んで、バカにバカというのは罵倒でも何でもなくて、単に事実を指摘してるだけ。
もちろん事実と認めるに足る具体的な根拠付きでね。
0623デフォルトの名無しさん
2007/06/01(金) 17:13:230624デフォルトの名無しさん
2007/06/01(金) 17:14:45オレは断じてトーマスなんかではないぞ
0626デフォルトの名無しさん
2007/06/01(金) 17:15:50女性専用車両で痴漢するトーマスを想像しちゃったり
0627デフォルトの名無しさん
2007/06/01(金) 17:16:38ほぉ、その慌てっぷり、自作自演もここまで白々しく他人を装ってやると
面白くなってくるねw
「痴漢者トーマス」というエロゲーがある。パート2まで出たらしい。
池袋には「痴漢車トーマス」というイメクラがあった。今はない。
0629デフォルトの名無しさん
2007/06/01(金) 18:37:140630デフォルトの名無しさん
2007/06/01(金) 18:58:41int move(int i, int j)
{
map[i][j] = 2;
/* reached the goal */
if (i == 0 && j == 1)
{
map[i][j] = 3;
return TRUE;
}
/* north */
if (i > 0 && !map[i-1][j] && move(i-1, j) == TRUE)
{
map[i][j] = 3;
return TRUE;
}
/* south */
if (i < 8 && !map[i+1][j-1] && move(i+1, j) == TRUE)
{
map[i][j] = 3;
return TRUE;
}
0631デフォルトの名無しさん
2007/06/01(金) 18:59:37/* east */
if (j < 21 && !map[i][j+1] && move(i, j+1) == TRUE)
{
map[i][j] = 3;
return TRUE;
}
/* west */
if (j > 0 && !map[i][j-1] && move(i, j-1) == TRUE)
{
map[i][j] = 3;
return TRUE;
}
/* cannot reach the goal */
return FALSE;
}
説明に書かれてるとおりの実装。スタックがどうとかってのはおそらく再帰展開しろって事だろうが面倒だからパス
0632デフォルトの名無しさん
2007/06/01(金) 19:03:30return FALSE;
の前に
map[i][j] = 0;
が必要じゃね?
0633デフォルトの名無しさん
2007/06/01(金) 19:06:40言われてみればそうだな
まぁ勝手に追加してくれ
0634デフォルトの名無しさん ◆BBXgAYJ6W6
2007/06/01(金) 21:33:47頭が痛くて倒れそう・・・。助けてください、お願いします。
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4122.txt
[3] 環境
[3.1] OS:Windows
[3.2] VC 6.0
[3.3] 言語:C言語
[4] 期限: 2007年6月4日(月)午前
(なので、前日の6月3日(日)までにしていただければありがたいです)
[5] レベルとか: C言語1ヶ月目位。教科書は「独習C」一通り読んだだけ。
もし、作っていただけるのなら、あまり高度な技術で作っていただいても、
出来が良すぎると怪しまれるので・・・、
少しプログラムの水準を低く(?)していただけるとありがたいです。
変なお願いしてすいません。お願いします。
0636デフォルトの名無しさん
2007/06/01(金) 22:29:05[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク) じゃんけんゲームを作成せよ.ただし,main() は下記のものを用いよ
具体的には,get hand player(), print hand(),judge() を追加すればよい
じゃんけんぽん(1-3): 1
コンピュータ:グー
あなた:グー
あいこ
int main(){
int computer, player;
srandom((unsigned long)time(NULL));
while(1) { computer = random() %3+1; /*コンピュータの手(1〜3,乱数)*/
player = get_hand_player(); /* 人間の手(1〜3) */
printf("コンピューター:");
print_hand(computer); /* 手(グー,チョキ,パー) の表示 */
printf("あなた:");
print_hand(player); /* 手(グー,チョキ,パー) の表示 */
switch(judge(computer, player)) { /* 勝負判定(-1〜1) */
case -1: printf("私の勝ち!\n"); break;
case 0: printf("あいこ\n"); break;
case 1: printf("あなたの勝ち!\n");} }
}
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: C 言語
[4] 期限: (2007年6月5日)
[5] その他の制限:ポインタはまだ習ってません お願いします
0637デフォルトの名無しさん
2007/06/01(金) 22:33:260638デフォルトの名無しさん
2007/06/01(金) 22:41:50前スレで回答してもらった下のプラグラムを実行すると、x1、x2をこちらから指定することができなくなってしまいます。どこを手直しすれば良いのか教えてください。おねがいします。
#include<stdio.h>
double f_internal(int a, int b, int c, double x, int is_init){
static int sa, sb, sc; // a, b, c を外部変数にするべきかな?
if(is_init){sa=a;sb=b;sc=c;}
return sa*x*x+sb*x+sc;
}
void f_init(int a, int b, int c){f_internal(a, b, c, 0, 1);}
double f(double x){return f_internal(0, 0, 0, x, 0);}
int main(void){
int a, b, c;
double x1, x2, xx, xmin, xmax, ymin, ymax;
printf("\nInput value of a, b, c : ");
scanf("%d %d %d", &a, &b, &c);
printf("\nInput value of x1, x2 : ");
scanf("%lf %lf", &x1, &x2);
if(x1>x2){xx=x1;x1=x2;x2=xx;}
f_init(a, b, c);
xx=(a!=0)?(double)-b/(2*a):x1; // y'=2*a*x+b -> x=-b/(2*a) の時,極値をとる
if(xx<x1) xx=x1;
if(xx>x2) xx=x2;
xmax=xmin=x1;
ymax=ymin=f(x1);
if(ymax<f(xx)){ymax=f(xx);xmax=xx;}
if(ymin>f(xx)){ymin=f(xx);xmin=xx;}
if(ymax<f(x2)){ymax=f(x2);xmax=x2;}
if(ymin>f(x2)){ymin=f(x2);xmin=x2;}
printf("maximum : x=%g y=%g\n", xmax, ymax);
printf("minimum : x=%g y=%g\n", xmin, ymin);
return 0;
}
0639デフォルトの名無しさん
2007/06/01(金) 23:52:32http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4123.cpp
「少しプログラムの水準を低く」との事だったので、ふざけるなゴルァと言われるソースを書いてみたw
でも、現実はお金もらってるのにこのようなソースを書くやつが多かったりするww
正常に動作するかは>>634自身でやってくれ。
0640639
2007/06/01(金) 23:55:52main関数を変更するだけでできるはず。
0641542
2007/06/02(土) 00:01:24ありがとうございます!
返信が遅くなってしまいましたが、
こちらでもコンパイルが無事完了いたしました!
まだ良く理解出来てない部分なので
ソースを見ながら一行ずつ解読していこうと思います。
本当にありがとうございます。
0642デフォルトの名無しさん
2007/06/02(土) 00:09:12[2] 問題文(含コード&リンク): 下に書いてあります。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:どちらでも可
[4] 期限:早いと有り難いです。
入力した関数を微分・積分して結果を表示するプログラムを作成せよ。
0643デフォルトの名無しさん ◆BBXgAYJ6W6
2007/06/02(土) 00:17:01助かりました。
ふざけるなゴルァのソースすら考えられない自分に鬱orz
ファイル編は教科書見ながらします。
本当にありがとうございました。
0644デフォルトの名無しさん
2007/06/02(土) 00:25:000645デフォルトの名無しさん
2007/06/02(土) 00:30:570646デフォルトの名無しさん
2007/06/02(土) 00:40:42何?数値微分とか数値積分の話じゃないよね?
こんな感じのプログラムかな?
関数を入力して下さい:x^3
d(x^3)/dx=3*x^2 ,∫x^3dx=x^4/4+C
0647デフォルトの名無しさん
2007/06/02(土) 00:51:55エスパー回答
Input value of a, b, c : 1,2,3
のようにカンマ区切りで数値を入力してるんじゃないかと推測
Input value of a, b, c : 1 2 3
Input value of x1, x2 : -2.5 3.0
のようにスペース区切りで数値を入力すればおk
0648デフォルトの名無しさん
2007/06/02(土) 01:16:20int get_hand_player(void){
int player;
do{
printf("じゃんけんぽん(1-3): ");
scanf("%d", &player);
}while(player<1 || 3<player);
return player;
}
void print_hand(int hand){
char *hand_str[]={"dummy", "グー", "チョキ", "パー"};
puts(hand_str[hand]);
}
int judge(int computer, int player){
switch((computer-player+3)%3){
case 0: return 0; break;
case 1: return 1; break;
}
return -1;
}
0649デフォルトの名無しさん
2007/06/02(土) 01:22:12void print_hand(int hand){
if(hand==1) puts("グー");
if(hand==2) puts("チョキ");
if(hand==3) puts("パー");
}
0651デフォルトの名無しさん
2007/06/02(土) 03:03:26情報関係の学科ですか?まあ何所でも良いんだけど
情報足り無すぎて作れない。対応する関数、入出力の形式、仕様は自由
とか、他に何か言われて無い?言われた事を全部言って貰わないと困る。
仕様が自由なら、a*x^n見たいな簡単な関数だけに対応して
入出力も0.5*x^-0.5とか適当に済ませちゃうんだけどな。
0652642
2007/06/02(土) 03:17:51情報関係ではないです。
実際指示はそれだけでした。
プログラミング自体が専門外の学科なんで、あまり難しいことは求められてないと思います。
なので関数も簡単なやつのみに対応するもので構わないので、お願いします。
0654デフォルトの名無しさん
2007/06/02(土) 11:30:23[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4126.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: 6.0
[3.3] 言語: C言語
[4] 期限: 6月4日
[5] その他の制限: 教科書は明解C言語を使ってます
まだc言語を習い始めて2ヶ月です
誰か解いてください おねがいします
0655デフォルトの名無しさん
2007/06/02(土) 12:18:151)
#include <stdio.h>
int main(void)
{
int i, n;
printf("整数値を入力してください:");
scanf("%d", &n);
for(i=1; i<=n; i++) printf("%d", i%10);
return 0;
}
0656デフォルトの名無しさん
2007/06/02(土) 12:19:52#include <stdio.h>
char *a[] = {"0","1","2","3","4","5","6","7","8","9"};
void show(int n)
{
if(n<10) printf(" %s", a[n]);
else printf(" %s%s", a[n/10], a[n%10]);
}
int main(void)
{
int i, j;
printf(" |");
for(i=1; i<=9; i++) show(i);
printf("\n------------------------------------------------\n");
for(i=1; i<=9; i++) {
printf("%s|", a[i]);
for(j=1; j<=9; j++) show(i*j);
putchar('\n');
}
return 0;
}
0657デフォルトの名無しさん
2007/06/02(土) 12:49:37>>656
ありがとうございました!
0658デフォルトの名無しさん
2007/06/02(土) 13:13:51[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4127.txt
[3] 環境
[3.1] OS:Windows
[3.3] 言語: C言語
[4] 期限: 6月3日
よろしくおねがいします
0659デフォルトの名無しさん
2007/06/02(土) 13:16:37横長になるような入力を行う。
冗談は置いといて、入力された後にwidthとheight見て
大きいほうを横にしてしまえばいいんでねぇの?
0660デフォルトの名無しさん
2007/06/02(土) 13:28:27#include <stdio.h>
int main(void)
{
int i, j;
int LongLength, ShortLength;
int temp;
puts("長方形を作りましょう。");
printf("一辺(その1):"); scanf("%d", &LongLength);
printf("一辺(その2):"); scanf("%d", &ShortLength);
if(ShortLength > LongLength)
{
temp = ShortLength;
ShortLength = LongLength;
LongLength = temp;
}
for(i = 0; i < ShortLength; i++)
{
for(j = 0; j < LongLength; j++) putchar('*');
putchar('\n');
}
return 0;
}
0661デフォルトの名無しさん
2007/06/02(土) 14:13:46学校の先生がウザイから実行例どうりにならなきゃ
ダメなんですよ
>>660
ありがとうございます
0662デフォルトの名無しさん
2007/06/02(土) 14:20:35マの世界ってのは軍隊式だと覚えておいた方が良い。
0663デフォルトの名無しさん
2007/06/02(土) 14:41:53でけぇ面するくらいだしな、クーーックックックー
0664デフォルトの名無しさん
2007/06/02(土) 15:21:030665デフォルトの名無しさん
2007/06/02(土) 15:50:130666デフォルトの名無しさん
2007/06/02(土) 16:50:01[2] 問題文(含コード&リンク):
自分の姓名を以下の2通りの方法で表示するプログラムを書け。まず配列aを姓名を使って初期化する。
・aの各要素a[i]を1文字ずつ出力する
・ポインタPを使って、同様に1文字ずつ出力する
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 6月4日
[5] その他の制限: 配列、文字列、ポインタ、構造体など習いました。
これらを使って出来ませんでしょうか?お願いします
0667デフォルトの名無しさん
2007/06/02(土) 16:55:15#include <stdio.h>
int main(void)
{
char a[] = "Input Your Name";
char *p = a;
int i = 0;
/* Method 1 */
while(a[i]) putchar(a[i++]);
/* Method 2 */
while(*p) putchar(*(p++));
return 0;
}
0668デフォルトの名無しさん
2007/06/02(土) 18:07:32ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4128.c
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4129.c
0669デフォルトの名無しさん
2007/06/02(土) 19:36:000670デフォルトの名無しさん
2007/06/02(土) 21:27:050671デフォルトの名無しさん
2007/06/02(土) 22:37:45取り合えずそれらしい物は出来た。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4132.c
0672デフォルトの名無しさん
2007/06/02(土) 22:46:30童貞お断りのメーカーもあるらしいw
0674デフォルトの名無しさん
2007/06/03(日) 00:19:05[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4133.c
$./[プログラム] [-s or -c]でサーバ・クライアントとして動作
-s,-cの順にプログラムを重複起動させて通信を行う.
-s(サーバ)では・・・
echoサーバのように,受信した文字列をクライアントにそのまま返信する.
(サーバ側では受信した文字を表示してもしなくてもよい)
入力した文字列をクライアントに送信する.
同時に複数のクライアントから接続があった場合,後からの方に文字列busyを送り,コネクションを切断する.○
-s動作中に$telnet 127.0.0.1 10007で接続可能 ○
-c(クライアント)では・・・
入力された文字列をサーバに送信する.
サーバから送られてきた文字列を表示する.
キーボードからの入力が終了したとき(改行のみのとき)に,コネクションを切断し終了する.○
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 6月5日 9:00
[5] その他の制限: リンク先の書きかけのソースを参考にお願いします.○はなんとかそれらしく動作している項目です.改善した方がいい所があれば書き換えてもらえれば結構です.
0675デフォルトの名無しさん
2007/06/03(日) 00:44:37goto多いね
ラベルは関数が違うなら違う名前のほうがいいかと。
他人に見てもらうならコメントもう少しあったほうがいいかと。
0676デフォルトの名無しさん
2007/06/03(日) 01:08:33ループ内のコードが長くなる場合は、goto loop: もありかもな、
whileやforをつかうよりわかり易いかも知れないとおもった。
0677デフォルトの名無しさん
2007/06/03(日) 02:05:14[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4135.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々) Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 6月4日 9:00
[5] その他の制限: 特になし
やってもやっても上手くいきません…
よろしくお願いします
0678デフォルトの名無しさん
2007/06/03(日) 03:21:37いまいち仕様が分かりませぬ
0679デフォルトの名無しさん
2007/06/03(日) 03:25:41配列+Linkedリストの極普通なハッシュリストを作れって事なんだろうが
設計の際に図を書けって書いときながら穴埋め形式なのか?
今一出題意図が分からんな・・・
0680デフォルトの名無しさん
2007/06/03(日) 03:44:29int cancel(char *id1){
int x, item, info1;
struct item *previous, *key;
x = hash(id1);
key = table[x];
previous = table[x];
item = search(id1);
if(item > 1){
printf("Input info\n");
scanf("%d", &info1);
if(key->info == info1){
table[x] = key->next;
}else{
key = key->next;
for(key = key->next; key != 0; key = key->next, previous = previous->next)
if(key->info = info1){
previous->next = key->next;
break;
}
}
free(key);
}else if(item == 1){
table[x] = 0;
free(key);
}
return item;
}
さて、エロゲメーカーに就職するために、エロゲでもやるか。
0682680
2007/06/03(日) 03:51:32int cancel(char *id1){
int x, item, info1;
struct item *previous, *key;
x = hash(id1);
key = table[x];
previous = table[x];
item = search(id1);
if(item > 1){
printf("Input info\n");
scanf("%d", &info1);
if(key->info == info1){
table[x] = key->next;
free(key);
}else{
for(key = key->next; key != 0; key = key->next, previous = previous->next)
if(key->info == info1){
previous->next = key->next;
free(key);
break;
}
}
}else if(item == 1){
table[x] = 0;
free(key);
}
return item;
}
0683680
2007/06/03(日) 03:57:000684デフォルトの名無しさん
2007/06/03(日) 10:12:28struct item *table[M];
void initialize()
{
int i;
for (i = 0; i < M; i++)
table[i] = 0;
}
*table[M]ってstruct item 型のポインタのM個の配列ですよね
このイニシャライズ構文だと
table[0] = 0 → table[0] = NULL;
table[1] = 1 → table[1] = 0x1番地
ってな感じになると思うんですけどこれって何の意味があるんですか?
解こうと思ったんすけど、typedefしてないから長ったらしいし
*table[M]もグローバルにする必要性もわかんないしやめました
上記の質問誰か答えて頂けないでしょうか。
0685デフォルトの名無しさん
2007/06/03(日) 10:16:39>table[0] = 0 → table[0] = NULL;
>table[1] = 1 → table[1] = 0x1番地
どう見ても全てのテーブルを0初期化なんだが?
>for (i = 0; i < M; i++)
> table[i] = 0;
別に、↓でもいいんでね?
memset(table, 0, sizeof(struct item *)*M)
0686デフォルトの名無しさん
2007/06/03(日) 10:22:14すいやせん
馬鹿な思いこみしてやした
>for (i = 0; i < M; i++)
>table[i] = 0;
を脳が勝手に
for (i = 0; i < M; i++)
table[i] = i;
と捉えてしまいましたでごんす。
0687あい
2007/06/03(日) 10:28:16(1)全員の平均点を求める
(2)合格者の人数を求める
(3)合格者の平均点を求める
(4)追試者の人数を求める
(5)追試者の平均点を求める
Z:\pro1>ex06_3.exe
全員の平均点は、68.6点です。
合格者は64名、平均点は79.8点です。←実行結果
追試者は 9名、平均点は31.9点です。
これがataiです。
atai[100] = { 37, 65, 74, 61, 51, 90, 89,78, 68, 69, 74,
74, 69, 44, 70, 78, 75, 70, 50, 25, 30, 72, 79, 67, 98, 98, 75,
79, 68, 45, 70, 66, 59, 61, 68, 34, 19, 71, 74, 76, 43, 72, 53, 48, 50, 87, 57, 85, 91, 74, 85, 61, 69, 61, 61, 32, 85, 86, 45, 71, 64, 83, 87, 59, 73, 75, 92, 59, 77, 54, 79, 98, 50, 61, 39, 53, 62, 62, 90, 33, 88, 73, 88, 86, 78, 38, 98, 97,
97, 79, 77, 97, 83, 44, 91, 72, 81, 85, 77, 45 };
[3.1] OS: (Windows/Linux/等々) Windows XP
[3.2] コンパイラ名とバージョン: vc
[3.3] 言語: C
[4] 期限: 今日まで
一次元配列を今習っています。おねがいします。
0688デフォルトの名無しさん
2007/06/03(日) 10:40:38int cancel(char *id1){
int x, item, info1;
struct item *previous, *key;
x = hash(id1);
key = table[x];
previous = table[x];
item = search(id1);
if(item > 1){
printf("Input info\n");
scanf("%d", &info1);
if(key->info == info1){
table[x] = key->next; free(key);
}else{
for(key = key->next; key != 0; key = key->next, previous = previous->next)
if(key->info == info1 && !strcmp(id1, key->id)){
previous->next = key->next; free(key); break;
}
}
}else if(item == 1){
if(!strcmp(id1, key->id)){
table[x] = key->next; free(key);
}else{
for(key = key->next; key != 0; key = key->next, previous = previous->next)
if(!strcmp(id1, key->id)){
previous->next = key->next; free(key); break;
}
}
}
return item;
}
0689デフォルトの名無しさん
2007/06/03(日) 10:48:53ほいよ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4138.c
0690デフォルトの名無しさん
2007/06/03(日) 10:50:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4139.c
0691デフォルトの名無しさん
2007/06/03(日) 10:53:23[2] キーボードからファイル名を読み込み行数と数字文字の個数を表示するプログラム
[3] ?
[3.1] Windows
[3.2] Visual Studio 2005
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 無期限
[5] 特になし
分かる方お願いします。
0692デフォルトの名無しさん
2007/06/03(日) 10:54:19読み込むファイルの中身の具体的な例を出してもらわんと
0693デフォルトの名無しさん
2007/06/03(日) 10:55:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4140.txt
出来るだけ元のソースコードは弄らないようにした。
追加した部分は、下の#ifで囲ってあるのでそのまま提出しないように。
#if 0
/* add by 2ch */
〜〜
#endif
selectはソケットディスクリプタ(sd)だけじゃなくて
ファイルディスクリプタ(fd)も待てるのがミソかな。(語弊あるが)
標準入力と標準出力のfdはそれぞれ0と1。
0694デフォルトの名無しさん
2007/06/03(日) 10:58:26読み込むのは作成したソースプログラムでお願いします。
ちなみにC言語です。
0695あい
2007/06/03(日) 11:06:300696デフォルトの名無しさん
2007/06/03(日) 11:06:56#include <stdio.h>
int main(void)
{
FILE *fp;
int ch,ret=1,num=0;
char fname[256];
printf("Input filename > ");
scanf("%s",fname);
if( (fp=fopen(fname,"r")) == NULL) {
printf("%sが開けません\n");
return 1;
}
while( (ch=fgetc(fp)) != EOF ) {
if( ch>='0' && ch<='9') num++;
else if( ch=='\n' ) ret++;
}
printf("行数 : %d / 数字 : %d \n",ret,num);
fclose(fp);
return 0;
}
0697デフォルトの名無しさん
2007/06/03(日) 11:09:27ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4141.c
ごめん、最後の行の出力がかっこ悪くなった。
後で気づいたから、直す気力が出ない。
ファイルの指定周りは自分でやってくれ。
0698デフォルトの名無しさん
2007/06/03(日) 11:12:011.全ての点数を順番に見る(for文)
2.全体の平均を出すため、総合計を出す。
3.合格者の点数を出すため、65点以上の人数とその合計を出す。
4.追試者の点数を出すため、40点未満の人数とその合計を出す。
5.全体の合計を人数で割れば全体の平均点
6.合格者の合計を人数で割れば合格者の平均点
7.追試者も6に同じ容量
OK?
0699あい
2007/06/03(日) 11:14:000700デフォルトの名無しさん
2007/06/03(日) 11:14:37わざわざ有り難うございます。
参考にさせて頂きます。
0701デフォルトの名無しさん
2007/06/03(日) 11:15:44細かいところでは色々あるが、それはまあいいや。
機能面で出来てないところについてだが。
クライアントは端末入力とサーバからの受信の両方を待たなければならないので、
サーバ同様にI/Oの多重化が必要。
やり方は色々あるが、サーバのほうでselect()を使ってるようだから、
クライアントでもselect()を使うようにしたら。
クライアントは標準入力(fd=0)とソケットの2つを待つようにして、
標準入力からread()→ソケットにwrite()
ソケットからread()→標準出力にwrite()
のようにする。単にコピーするだけのパイプラインが二つあるわけだ。
端末がcookedモード(デフォルトの状態)なら、
特に何も考えなくとも、改行を入力した時点でselect()から戻り、
その時点でread()すれば、(fgets()など使わずとも)ちょうど
1行分だけ読み込める、つまり自然に行入力になっているはずだ。
クライアント側の終了処理は、以下のようにする。
・入力が終わった時にやること
1) shutdown(第二引数は1を指定)を呼び、送信完了をサーバに伝える。
(サーバ側ではこれを受けるとread()が0で返る)
2) 入力が完了したことを覚えておき、標準入力の分をfdsetから抜く。
サーバからの受信が完了するまではselect()ループからは抜けないように。
・サーバからの受信が終わった時(read()の戻り値<=0)にやること
ソケットをclose()して、select()ループから抜ける。後始末。
0703デフォルトの名無しさん
2007/06/03(日) 11:18:01ん、>696と>697は仕様が違うな。
あんな、要求じゃこれくらいの差は出てしまうか。
実行して出力すりゃわかると思うけど、自分のやりたいほうを確認してから提出しろよ。
0704デフォルトの名無しさん
2007/06/03(日) 11:19:09int main()
{
FILE *fr;
char buff[1024] = {'\0'};
char *temp = NULL;
unsigend int line = 0, sumword = 0;
fgets(buff,sizeof(buff),stdin);
if(temp = strchr(buff,'\n'))
*temp = '\0';
if((fr = fopen(buff,"r"))==NULL) fprintf(stderr,"読み込み不可能");
while(fgets(buff,sizeof(buff),fr){
if(temp = strchr(buff,'\n')){
line++;
*temp = '\0';}
sumword += strlen(buff);
}
printf("文字数%u行数%u\n",sumword,line);
fclose(fr);
}
0705あい
2007/06/03(日) 11:35:10// 合格者 if ( atai[ i ] >= 65 ) {
OKStudent++;
OKSum += atai[ i ];
ここのソースプログラムを詳しくk教えてください。OKStudent++;ところとか
0706デフォルトの名無しさん
2007/06/03(日) 11:36:31OKSum += atai[ i ];はOKSum = OKSum + atai[ i ];と同じ
0707デフォルトの名無しさん
2007/06/03(日) 11:36:580708デフォルトの名無しさん
2007/06/03(日) 11:37:22他に表現するとしたら、n=n+1; やら n+=1; といったものがある。
0709あい
2007/06/03(日) 11:38:580710デフォルトの名無しさん
2007/06/03(日) 11:39:580711デフォルトの名無しさん
2007/06/03(日) 11:40:2265点以上だったら+1人ずつしていって、100人分を見てる。
ゆっくり落ち着いて考えるんだ。そんなに難しいことは書いたつもりはない。
0712デフォルトの名無しさん
2007/06/03(日) 11:40:361足す(引く)って処理は(ループとかいろいろな処理で)頻繁に使うから
言語側で専用の構文(n++ とか n--)用意してくれてんの。
0713デフォルトの名無しさん
2007/06/03(日) 11:41:12++がなんで+1になるの?って質問だったのか?
0714あい
2007/06/03(日) 11:42:310715デフォルトの名無しさん
2007/06/03(日) 11:46:33次式のアルゴリズムに忠実に作成せよ。
m n
S=Σ Σ(i×j)
i=1 j=1
ただし、上の2重の総和記号の説明のため、m=3,n=2を例として書き下すと以下の
ようになる。
3 2
S=Σ Σ(i×j)={(1×1);(1×2)}+{(2×1)+(2×2)}+{(3×1)}+(3×2)}
i=1 j=1
[実行例]
mとnの値を入力せよ:3 2
m=3,n=2のとき,s=18
よろしくお願いします。
0716デフォルトの名無しさん
2007/06/03(日) 11:47:43しかし初心者を原因にするな
0717デフォルトの名無しさん
2007/06/03(日) 11:49:56for( i = 1; i <= m; i++ ) {
fot( j = 1; j <= n; j++ ) {
sum += i * j;
}
}
動作確認もコンパイルもしていない。
入力、出力くらいは自分でヨロ
0718デフォルトの名無しさん
2007/06/03(日) 11:51:41#include <stdio.h>
int main(void)
{
int m = 0, n = 0, i, j, S = 0;
printf("mとnの値を入力せよ:");
scanf("%d %d", &m, &n);
for(i=1; i<=m; i++)
{
for(j=1; j<=n; j++)
{
S += i * j;
}
}
printf("m=%d,n=%dのとき,S=%d", m, n, S);
return 0;
}
0719デフォルトの名無しさん
2007/06/03(日) 13:01:510721デフォルトの名無しさん
2007/06/03(日) 14:18:18[2] 問題文:
5. 挿入法による昇順整列を行なう次のような関数 inssort を定義し,動かし
なさい.
void inssort(int a[], int n)
挿入法の手順
配列の2番目の要素から順に最後尾まで( i= 1, 2, ..., n-1 ) をa[i] として
a[i] の左隣から前方へ,各要素 a[j] について ( j= i-1, ..., 1, 0 )
a[j] とその右隣 a[j+1] が昇順なら break(次の a[i] へ)
そうでなければ a[j] と右隣とを入れ換える.
[3] 環境
[3.1] OS:Linux
[3.2] gcc 3.4 VC 6.0
[3.3] 言語: C
[4] 期限: ([2007年06月04日12:00まで]
[5] その他の制限:特にありません
よろしくお願いします
0722デフォルトの名無しさん
2007/06/03(日) 14:38:12できた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4143.c
0723デフォルトの名無しさん
2007/06/03(日) 15:12:53追求すると、同じ値の要素が続いた場合、並び替える必要がないものまで並び替えることになるし。
あと、教える場所によって違うみたいだけど、スワップする回数を減らすために
常に隣り合う要素を比較して入れ替えではなく、比較する要素とそれより前の整列された要素の
後ろから順に押し出す形で代入していった方が、計算量が少なくて済む。例をあげるとしたらこんな感じ
ttp://lecture.ecc.u-tokyo.ac.jp/~cichiji/cp-05/cp-05-06-4.html
ttp://www1.cts.ne.jp/~clab/hsample/Sort/Sort2.html
ttp://ja.wikipedia.org/wiki/%E6%8C%BF%E5%85%A5%E3%82%BD%E3%83%BC%E3%83%88
↑これはええんやろか・・・
戯言すまそ。
0724デフォルトの名無しさん
2007/06/03(日) 15:53:46{
int i, j, temp;
for (i = 1; i < n; i++) { /* i 番目の要素をソート済みの配列に挿入 */
temp = num[i]; /* i 番目の要素を temp に保存 */
for (j = i; j > 0 && num[j-1] > temp; j--) /* このループで */
num[j] = num[j -1]; /* temp を挿入する位置を決める */
num[j] = temp; /* temp を挿入 */
/* 途中経過を表示 */
}
}
0725デフォルトの名無しさん
2007/06/03(日) 16:07:370726デフォルトの名無しさん
2007/06/03(日) 16:26:19【エラー】挿入先が見つかりません。相手が居ないようです。
0727デフォルトの名無しさん
2007/06/03(日) 16:27:51まぁ、都合よくエラー修正してくれるコンパイラなら、ちゃんとホールを見つけてきてくれるさ。
ほら、あるでしょ?空気嫁とかw
0728デフォルトの名無しさん
2007/06/03(日) 16:31:53【致命的なエラー】スペックが足りません。問題を解決するには手術が必要です。
0729デフォルトの名無しさん
2007/06/03(日) 16:56:390730デフォルトの名無しさん
2007/06/03(日) 16:59:21wallet += atm(30000);
goto fuzoku;
/* timpの挿入先を動的に確保する */
/* 挿入先の環境はatmの引数により変化 */
0731デフォルトの名無しさん
2007/06/03(日) 17:04:110732デフォルトの名無しさん
2007/06/03(日) 17:16:120733デフォルトの名無しさん
2007/06/03(日) 17:43:180734デフォルトの名無しさん
2007/06/03(日) 17:52:190735デフォルトの名無しさん
2007/06/03(日) 17:54:200736デフォルトの名無しさん
2007/06/03(日) 17:55:300737デフォルトの名無しさん
2007/06/03(日) 17:56:27真面目に勉強するつもりがあるんなら、若干古さを感じる面もあるが、
故Richard Stevensの
UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
ttp://www.amazon.co.jp/exec/obidos/ASIN/4894712059/
がお勧め。echo server/clientの例も一番最初の方に載ってる。
0738デフォルトの名無しさん
2007/06/03(日) 19:21:56[2]ブラックジャックをコンピューターと対戦するゲームプログラム、実際はトランプを使用して
行われるが、ここでは1〜10の目をもつサイコロをカードの数字として扱う簡易版のブラックジャック
を考える。コンピューターがディーラーユーザーがプレーヤー。21に近いほうが勝ち
手順は以下の通り 1 カードを配る プレーヤーディーラーとも2枚ずつカードを配る。
プレーヤーのカードは2枚とも表向き、ディーラーのカードの1枚は見えないように伏せておく
2 プレーヤーの番 プレーヤーはヒット(カードをもう1枚引く)かスタンド(カードを引かずその時点の
ポイントで勝負)を選択する、21を超えない限り何回でもヒットできる。21を超えると負け
3 ディーラーの番 プレーヤーがスタンドすれば、ディーラーは17以上に
なるまでカードを引かなければならない。また17以上になったらその後カードを引くことはできない。
[3] 環境
[3.1] OS:Linux
[3.2] gcc 3.4 VC 6.0
[3.3] 言語: C
[4] 期限: ([2007年06月04日12:00まで]
[5]rand()関数を使う、各ステップの処理を関数化1ゲームの流れを簡潔に表現する。
授業が始まって2ヶ月経つんですがまったくわかりません、助けてください・・。
0739デフォルトの名無しさん
2007/06/03(日) 19:59:15[2] 問題文(含コード&リンク): 下に記載
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限:できるだけ早いといいです。
1個以上、10個以内の整数を大きさ10の整数配列に入力するプログラムを作成する.
入力する整数の個数は最初に宣言するものとする.たとえば3と4からなる2個の整数を入力する場合には"2 3 4"と入力する.
つぎに,void swapsmall(int *data, int num);という関数を作成し, dataから始まるアドレスに,順におかれたnum個の整数のうち最小のものを先頭のものと入れ替える機能を与えなさい.
ただし,同一の値をもつ最小の整数が複数ある場合には,一番後方にあるデータと入れ替えるようにすること.プログラミングにあたっては,配列宣言を除き,すべてポインタを用いて処理すること.
順序をswapsmall()を一回適用したあと,配列の内容をスペース(空文字)一つで区切って出力しなさい.最後の数字の後ろに空白を置かないこと.
0740デフォルトの名無しさん
2007/06/03(日) 20:12:23#include <stdio.h>
void swapsmall(int *data, int num)
{
int i, min = 0;
for(i=1; i<num; i++) if(data[min]>=data[i]) min = i;
if(min) {
int temp = data[0];
data[0] = data[min];
data[min] = temp;
}
}
int main(void)
{
int i, num, data[10];
scanf("%d", &num);
for(i=0; i<num; i++) scanf("%d", data+i);
swapsmall(data, num);
for(i=0; i<num-1; i++) printf("%d ",data[i]);
printf("%d", data[i]);
return 0;
}
0741デフォルトの名無しさん
2007/06/03(日) 20:23:58CUIで良いの?
0742デフォルトの名無しさん
2007/06/03(日) 20:33:55> [3.1] OS:Linux
> [3.2] gcc 3.4 VC 6.0
コレが気になる。
0743デフォルトの名無しさん
2007/06/03(日) 20:50:02簡単らしいのですがどうも・・・?
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
1まずファイルから(ランダムの数値が1000個はいっている”rand1000.dat”という名前のファイル)保存されているデータ数nを読み込み,その数だけデータを読み込み配列に格納する.
2次に,格納された配列をディスプレイ上に表示する.
3そして,データが保存された配列についてバブルソートを実行する関数 bubblesort()を呼び出し,配列データを整列する.
4最後に,整列された配列をディスプレイ上に表示しプログラムを終了する.
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限:6月5日
[5] その他の制限:結果がソートされていることを毎回確認すること.
全く分からないのでどなたかお願い致します。
0744デフォルトの名無しさん
2007/06/03(日) 20:59:10そのファイルのフォーマットがわからないことにはどうしようもない。
0745738
2007/06/03(日) 21:22:38>>742どういうことですか?すいません
誰か教えてくださいすいません
0746デフォルトの名無しさん
2007/06/03(日) 21:23:350747デフォルトの名無しさん
2007/06/03(日) 21:38:44[2]キーボードから半角英数字を一字入力して、その文字と文字コード(大文字16進数2桁)を
表示するプログラムを作成しなさい。
条件�@:使用する変数はchar型とする
条件�A:文字の入力に関してはscanf関数を使用すること
実行結果 (「」の部分はキーボードからの入力)
半角英数字を入力してください:「A」
文字「A」の文字コードは[41」です。
[3] 環境
[3.1] windows vista business
[3.2] visual stadio 2005
[3.3] C
[4] 6月8日
[5] まだC言語を習ったばかりなので、簡単なプログラムでお願いします。
0748738
2007/06/03(日) 21:38:550749デフォルトの名無しさん
2007/06/03(日) 21:44:59[2]キーボードから半角英数字を一字入力して、その文字と次の文字を表示する
プログラムを作成しなさい。(文字コードが連続して設定されていることを確認せよ。
例えば、文字Aが入力されたとすると次の文字としてBが表示される)
条件�@:使用する変数はchar型とする
条件�A:文字の入力関数に関してはscanf関数を使用すること。
条件�B:入力される文字は、0〜8、a〜y、A〜Yとする。これ以外の文字は
入力されないものとする。
実行結果 (「」の部分はキーボードからの入力)
半角英数字を入力してください:「A」
文字「A」の次の文字は[B」です。
[3] 環境
[3.1] windows vista business
[3.2] visual stadio 2005
[3.3] C
[4] 6月8日
[5] まだC言語を習ったばかりなので、簡単なプログラムでお願いします。
0750デフォルトの名無しさん
2007/06/03(日) 21:45:32#include <stdio.h>
int main(void)
{
char c;
printf("半角英数字を入力してください: ");
if (scanf("%c", &c) == 1)
printf("文字「%c」の文字コードは「%02X」です。\n", c, (unsigned char)c);
return 0;
}
0751デフォルトの名無しさん
2007/06/03(日) 21:47:45#include <stdio.h>
int main(void)
{
char c;
printf("半角英数字を入力してください: ");
if (scanf("%c", &c) == 1)
printf("文字「%c」の次の文字は「%c」です。\n",
c, (unsigned char)c+1);
return 0;
}
0752デフォルトの名無しさん
2007/06/03(日) 21:53:37無知それ自体は悪いことではない
>ど素人なんで
そんなものはまったく関係ない
gccはWindows版とLinux版があるが
VisualStudioC++6.0はWindowsでしか動かせない
0753738
2007/06/03(日) 21:59:56たぶんgccだけって事ですか?なにもかもわかんないんですが・・・すいません
0754デフォルトの名無しさん
2007/06/03(日) 22:16:41すいません何回いうんだよ
なんでも謝ればいいってもんじゃないしさ
そんなんじゃ社会に出てから注意されるし、損するよ
まず自分でなんとかしようと考えないの?
人に聞くのはその後でしょ
いっておくと、WindowsのソフトをLinuxに持っていっても動かないし、逆もまた然り
0755デフォルトの名無しさん
2007/06/03(日) 22:18:44[2] 問題文(含コード&リンク): 下に記載
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限:特にありません
長さ256文字以下の英数字,空白の並びからなる文字列を二つ入力し,それぞれをT1, T2とする. T1の中にT2が出現する場合に,その一番左に現れる文字列の先頭アドレスを値として返す関数 char *findstr(char *t1, char *t2);を作成しなさい.
ただし,T1の中にT2が出現しないときはNULLを値として返すものとする.
findstr()の中で,比較対象となるT1のなかの先頭文字を先頭から一文字ずつずらして 7-2で用いたchkmatch()を呼び出すことにより要求を満たす関数を作成することができる.
この関数を用いて, 1)最初にT1を表示し,2)その次にT1の中でT2の文字列が出現するまでの文字をスペース(' ')として端末に出力し,そのあとT2の文字列文だけ(’^’)を出力し、
再度T2の文字列が出現するまでスペース(’ ’)を出力し..というプロセスを文末まで続けるプログラムを作成しなさい。
3a)このプロセスは、findstrを実行して文字列の先頭を検索し、そこまでスペースを出力する。
3b)文字列の先頭が検出されたら、T2の文字列分だけ(’^’)を出力する。
3c)T2の文字列分だけポインタを進め、そこからfindstrを再実行する(3aにもどる)というプロセスを繰り返すことで完成する。
4)T2がT1に出現しない場合はT1の文字数だけのスペースが表示されるようにすること.
プログラミングにあたっては,配列宣言を除き,すべてポインタを用いて処理すること.文字列は60文字以下が入力されるものとし,文字列の長さに関するエラー処理をする必要はない
0756デフォルトの名無しさん
2007/06/03(日) 22:19:39お前どっか他所へいけよ?お前なんて誰も求めてねーよ
あっ、日ごろ相手にされていないからこういう場所で偉そうにしてんだwwww
0757デフォルトの名無しさん
2007/06/03(日) 22:25:14ttp://sund1.sakura.ne.jp/uploader/source/up6138.htm
0758デフォルトの名無しさん
2007/06/03(日) 22:26:20http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4144.c
0759738
2007/06/03(日) 22:26:58それをだせないと留年になってしまうかもしれないのであせってしまって・・・。
Linuxのソフトは学校のパソコンにもとから入ってると思います。
738の文のどこがおかしいのでしょうか?
0760デフォルトの名無しさん
2007/06/03(日) 22:36:230761デフォルトの名無しさん
2007/06/03(日) 22:37:380762738
2007/06/03(日) 22:39:01授業でemacsかなんか使ってやってるんですが教科書見てもわからないんですよ・・・。
マジで助けてください
0763デフォルトの名無しさん
2007/06/03(日) 22:40:32俺はその気はないってだけなので、気にするな
0764デフォルトの名無しさん
2007/06/03(日) 22:41:05なんで努力しようと思わなかったんだろうか・・・
楽なことしかしてないじゃん
0765738
2007/06/03(日) 22:41:46僕もいつかここで教えられるようになりたいです。。
0766デフォルトの名無しさん
2007/06/03(日) 22:42:100767デフォルトの名無しさん
2007/06/03(日) 22:43:25chkmatch()とやらが何者だか分からないと仕方が無いぞ
0768デフォルトの名無しさん
2007/06/03(日) 22:45:10初期表示ちょっと間違ってない?伏せるの1枚では?
...今さら感もあるがせっかく作ったのでうp
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4145.txt
0769738
2007/06/03(日) 22:46:340770デフォルトの名無しさん
2007/06/03(日) 22:51:38完全に出遅れたけどせっかくだから。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4146.txt
0771738
2007/06/03(日) 22:55:37どれを参考にしたらいいんですかね・・・。なんかどれもちょっとやり方
違うみたいですけどいいんですかね?
0772デフォルトの名無しさん
2007/06/03(日) 23:01:55直感だ
0773747
2007/06/03(日) 23:02:09作ってもらって、本当に申し訳ないのですが
if (scanf("%c", &c) == 1)
(unsigned char)
をまだ習って無いので、それらを省いて作成していただけないでしょうか??
0774749
2007/06/03(日) 23:04:08作ってもらって、本当に申し訳ないのですが
if (scanf("%c", &c) == 1)
(unsigned char)
をまだ習って無いので、それらを省いて作成していただけないでしょうか??
0775デフォルトの名無しさん
2007/06/03(日) 23:04:49scanf使えって書いてなかった?
何を習ってないの君
if文?
0776デフォルトの名無しさん
2007/06/03(日) 23:06:28入力処理がしっかりしてるかどうかで選ぶといい。
0777デフォルトの名無しさん
2007/06/03(日) 23:07:15#include <stdio.h>
#include <ctype.h>
int main(void)
{
char c;
printf("半角英数字を入力してください: ");
scanf("%c", &c);
if( isprint(c) )
printf("文字「%c」の文字コードは「%02X」です。\n", c, c);
return 0;
}
0778758
2007/06/03(日) 23:08:16>>768の言う通りshowsCardの動作が間違ってる。よく読まずにやってもうた。
もう一箇所1〜10の乱数を作る部分が間違ってて11の乱数が出来る事がある。
自分で言うのもなんだが、全体的に設計が十分でなくて、取り合えず作りました的な悪臭がする。
>>769
>うわ、みんなめっちゃ優しい。。ほんとにありがとうございます。
やさしいと言うより、プログラムが好きだからみんなやるんだと思う。
>なんかどれもちょっとやり方 違うみたいですけどいいんですかね?
取り合えず、仕様通りならOK。色々比較してそれぞれの良い所を参考にしな。
0779真・747
2007/06/03(日) 23:09:06作ってもらって申し訳ないのですが
> if( isprint(c) )
をまだ習ってないので、これを省いて作成していただけないでしょうか??
0780デフォルトの名無しさん
2007/06/03(日) 23:09:57流れの理解しやすさで。
自分で説明をしなければならないのだろ?
0781デフォルトの名無しさん
2007/06/03(日) 23:10:57if( isprint(c) ) > if( c>=32 && c<=126 )
0782デフォルトの名無しさん
2007/06/03(日) 23:11:02みんなが優しいと思うのは勝手だが、
ホントにお前のためを思うのなら誰も解答など書かないだろう。
正直、留年をお勧めするね。
0783デフォルトの名無しさん
2007/06/03(日) 23:12:150784749
2007/06/03(日) 23:12:18if文です
0785デフォルトの名無しさん
2007/06/03(日) 23:13:22ttp://sund1.sakura.ne.jp/uploader/source/up6082.htm
ttp://sund1.sakura.ne.jp/uploader/source/up6107.htm
0786デフォルトの名無しさん
2007/06/03(日) 23:17:49長門は俺の嫁
0787デフォルトの名無しさん
2007/06/03(日) 23:19:05ttp://www.falcom.co.jp/sora_3rd/character/renne.html
おみゃ〜さんにはこっちの相手がお似合いさ。
0788デフォルトの名無しさん
2007/06/03(日) 23:19:43それくらい自分で学べよw
0789デフォルトの名無しさん
2007/06/03(日) 23:20:05なんだこれ
>>761の成果物か?
0790デフォルトの名無しさん
2007/06/03(日) 23:20:44なんかアニメっぽい変なキャラクターが表示されたけど、これって何だ?
アニメとか全然興味ないからわからん。
0791デフォルトの名無しさん
2007/06/03(日) 23:22:1660 これって恋の方程式ね・・・
70 ボクもうがまんできないよ
80 んもう。70クンのエッチ! 210ニイケ!
0792749
2007/06/03(日) 23:23:17すいません・・バカなのでわからないッス
0793デフォルトの名無しさん
2007/06/03(日) 23:29:08英文:if i were a bird, i could fly to you.
和訳:やらないか
0794デフォルトの名無しさん
2007/06/03(日) 23:30:580795デフォルトの名無しさん
2007/06/03(日) 23:32:050796デフォルトの名無しさん
2007/06/03(日) 23:32:07もう、全部省いてこれでいいんじゃね?
#include<stdio.h>
int main(void)
{
char c;
printf("半角英数字を入力してください:");
scanf("%c", &c);
printf("文字「%c」の文字コードは「%02X」です。\n", c, c);
return 0;
}
0797デフォルトの名無しさん
2007/06/03(日) 23:33:08ttp://www.fukkan.com/image/item/14587886-1.gif
0798デフォルトの名無しさん
2007/06/03(日) 23:42:010799デフォルトの名無しさん
2007/06/03(日) 23:50:32長さ256以下の英数字,空白の並びからなる文字列を二つ入力し,それぞれをT1, T2とする. T1が"ABC",T2が"AB"の場合のように,T2の先頭部分がT1の先頭部分に含まれるときは1を,そうでないときは0を値として返す関数 int chkmatch(char *t1, char *t2)
0800デフォルトの名無しさん
2007/06/04(月) 00:07:46�@3行5列の二次元配列に15個の数字をランダムで選ぶ(ただし、必ず12を入れる)
�A配列に入れられた数字を
�B大きい順に配列に入れ直して示す。(バブルソートで)
�C小さい順(バブルソートで)
�Dprintfで12の行、列を出力
if,do,wihle習いました。お願いしますm(_ _)m
0801デフォルトの名無しさん
2007/06/04(月) 00:10:20�@3行5列の二次元配列に15個の数字をランダムで選ぶ(ただし、必ず12を入れる)
�A配列に入れられた数字を
�B大きい順に配列に入れ直して示す。(バブルソートで)
�C小さい順(バブルソートで)
�Dprintfで12の行、列を出力
if,do,wihle習いました。お願いしますm(_ _)m
0802 ◆HFYa0.2pYo
2007/06/04(月) 00:20:40[2] 問題文:
�@数字が任意の数だけ書かれたファイル(data.txt)から、それらを配列として読み取る
�A読み取った配列を、それ以降のプログラムで使う。
�B読み取った数字の個数を表示する。
以上の全ての条件を満たすためには、
どのようなプログラムを書けばよいでしょうか?
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:本日12時
[5] その他の制限:なし
0803802
2007/06/04(月) 00:29:46�Aの「それ以降のプログラム」は数値計算です。
0804デフォルトの名無しさん
2007/06/04(月) 00:32:021
2
3
なのか
1 2 3 ...なのか1,2,3,...なのか色々あるだろ
0805デフォルトの名無しさん
2007/06/04(月) 00:32:23#include <stdio.h>
#include <string.h>
int chkmatch(char *t1, char *t2) {
while (*t1 && *t2 && *t1++ == *t2++) {}
return !*t2;
}
char *findstr(char *t1, char *t2) {
for (;*t1 && !chkmatch(t1, t2); ++t1) {}
return *t1 ? t1 : 0;
}
int main(void)
{
char *T1, *T2, *p, *q;
int i, n;
T1 = malloc(258); T2 = malloc(258);
while (fgets(T1, 256, stdin) && fgets(T2, 256, stdin)) {
if (p = strchr(T1, '\n')) *p = 0;
if (p = strchr(T2, '\n')) *p = 0;
puts(T1);
for (p = T1, n = strlen(T2); q = findstr(p, T2); p = q + n) {
for (i = 0; i < q - p; ++i) putchar(' ');
for (i = 0; i < n; ++i) putchar('^');
}
n = T1 + strlen(T1) - p;
for (i = 0; i < n; ++i) putchar(' ');
putchar('\n');
}
free(T1); free(T2);
return 0;
}
0806802
2007/06/04(月) 00:36:461 2 3 ... です。数字の並び順はばらばらです
0807デフォルトの名無しさん
2007/06/04(月) 00:45:36#include <stdio.h>
#include <stdlib.h>
typedef struct NV { int *v, sz, cp; } NV;
int main(void)
{
int i, n;
NV nv = { malloc(sizeof(int)), 0, 1 };
/* ヨム */
while (scanf("%d", &n) == 1) {
if (nv.sz == nv.cp)
nv.v = realloc(nv.v, nv.cp *= 2);
nv.v[nv.sz++] = n;
}
/* テキトウニツカウ */
for (i = 0, n = 0; i < nv.sz; ++i)
n += nv.v[i];
/* コスウヲヒョウジ */
printf("%d個\n", nv.sz);
free(nv.v);
return 0;
}
0808802
2007/06/04(月) 00:54:06ありがとうございました。
早速やってみます。
0809デフォルトの名無しさん
2007/06/04(月) 00:56:540810デフォルトの名無しさん
2007/06/04(月) 01:10:45凄い人がもう答えてしまったが、せっかくなんであげとく。
初心者はこっちの方が見やすいんじゃね(俺も初心者だから)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4147.c
0811デフォルトの名無しさん
2007/06/04(月) 01:41:42実行結果となるように、読み込んだ整数の段数をもつピラミッドを表示するプログラムを作成せよソースファイル名はprog02.c,データファイル名はprog02.datとしなさい。
<実行結果例>
何段ですか?5
*
***
*****
*******
*********
0812810
2007/06/04(月) 01:42:51すまんchkmatch()がバグ入りだった。
abcde
ee
とやったときにeに^がついちゃってたから修正した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4149.c
0813デフォルトの名無しさん
2007/06/04(月) 01:44:52縦 m 個,横 n 個の値を持つ表データを考える。
(m,nはそれぞれscanfを使ってユーザーが指定できるようにする。)
この表データの各行および各列の合計値と平均値を計算して表示しなさい。
(行数 m ,列数 n の最大個数はそれぞれ10とする。)
ソースファイル名はprog07.c,データファイル名はprog07.datとしなさい。
<実行結果例>
行数:3
列数:4
1行目のデータを入力してください。
7.7
4.4
8.8
7.5
2行目のデータを入力してください4.0 3.8
3.4
4.2
3行目のデータを入力してください。
4.8
5.8
8.0
7.5
------------------------------------------
7.70 4.40 8.80 7.50 | 28.40 | 7.10
4.00 3.80 3.40 4.20 | 15.40 | 3.85
4.80 5.80 8.00 7.50 | 26.10 | 6.53
------------------------------------------
16.50 14.00 20.20 19.20
------------------------------------------
5.50 4.67 6.73 6.40
0814デフォルトの名無しさん
2007/06/04(月) 01:47:35年利 n% の銀行にある金額を預けたとき、その預金が元金の2倍に達するまでの年数を計算するプログラムを作成せよ。ソースファイル名はprog08.c,データファイル名はprog08.datとしなさい。
<実行結果例>
年利を入力してください。[%]
1.0
金額を入力してください。[¥]
1000000
2倍に達するまで、70年です。
いずれともC言語です。
よろしくおねがいします
0815デフォルトの名無しさん
2007/06/04(月) 01:49:05#include <stdio.h>
int main()
{
int x, y, dansuu;
scanf("%d", &dansuu);
for (y=0 ; y<dansuu ; y++)
{
printf("*");
for (x=0 ; x<y ; x++)
{
printf("**");
}
printf("\n");
}
return 0;
}
0816デフォルトの名無しさん
2007/06/04(月) 01:56:13#include <stdio.h>
int main(void)
{
int i, j, n;
printf("何段ですか?");
if (scanf("%d", &n) == 1 && n > 0) {
for (i = 1; i <= n; ++i) {
for (j = 0; j < n - i; ++j)
putchar(' ');
for (j = 0; j < 2 * i - 1; ++j)
putchar('*');
putchar('\n');
}
}
return 0;
}
0817807
2007/06/04(月) 02:11:35- nv.v = realloc(nv.v, nv.cp *= 2);
+ nv.v = realloc(nv.v, sizeof(int)*(nv.cp *= 2));
0818デフォルトの名無しさん
2007/06/04(月) 03:06:46[2] 問題文(含コード&リンク): 下に記載
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: 6月5日(できるだけはやくお願いします)
[5] その他の制限: 初心者です。for文を使います
【問題】整数xを読み込み、1からxまでで、3で割り切れて、かつ、4で割り切れない数値を出力するとともに、その数値の個数を出力するプログラム
【実行例1】INPUT INTEGER -->20
3 6 9 15 18 の 5 こ
【実行例2】INPUT INTEGER -->35
3 6 9 15 18 21 27 30 33 の 9 こ
よろしくお願いします
0819デフォルトの名無しさん
2007/06/04(月) 04:11:03#include <stdio.h>
int main(void)
{
int i, x, n = 0;
printf("INPUT INTEGER -->");
scanf("%d", &x);
for (i = 0; i <= x; i++) {
if (i % 3 == 0 && i % 4 != 0) {
printf("%d ", i);
n++;
}
}
printf("の %d こ\n", n);
return 0;
}
0820デフォルトの名無しさん
2007/06/04(月) 06:02:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4150.txt
0821デフォルトの名無しさん
2007/06/04(月) 06:22:40#include <stdio.h>
#include <stdlib.h>
#define GOAL 2
int main(void)
{
char buf[256];
double rate;
double first_money;
double money;
int year;
printf("年利を入力してください。[%%]\n");
scanf("%s", buf);
rate = atof(buf);
printf("金額を入力してください。[\\]\n");
scanf("%s", buf);
first_money = atof(buf);
year = 0;
money = first_money;
while (money < first_money * GOAL) {
year++;
money += money * rate / 100;
}
printf("%d倍に達するまで、%d年です。\n", GOAL, year);
return 0;
}
0822デフォルトの名無しさん
2007/06/04(月) 09:52:580823デフォルトの名無しさん
2007/06/04(月) 10:24:59?
0824デフォルトの名無しさん
2007/06/04(月) 11:17:340825デフォルトの名無しさん
2007/06/04(月) 12:04:51よく分らないけど、簡単な問題出して欲しいの?
俺がちょっと面白いと感じた簡単な問題(入出力と演算だけで解ける)をやって見る?
問題:1桁以上の整数を読み込んで、その整数の下一桁を表示せよ。
例
整数を入力汁:9563
下一桁は:3
0826デフォルトの名無しさん
2007/06/04(月) 12:24:29#include <stdio.h>
#include <string.h>
int main(void)
{
int i;
char buf[256];
puts("整数を入力してください。");
scanf("%d",&i);
sprintf(buf,"%d",i);
printf("%dの下一桁は%cです。",i,buf[strlen(buf)-1]);
return 0;
}
0828デフォルトの名無しさん
2007/06/04(月) 12:27:140829826
2007/06/04(月) 12:28:520830825
2007/06/04(月) 12:33:27関数を使わなくても、>>828が言うように演算だけで
出るところがちょっと面白いと感じた。熟練者には分らない
万年初心者の新鮮な驚きかな?
0831デフォルトの名無しさん
2007/06/04(月) 12:42:30abcabcの形式の4-6桁の整数(例えば12012は5桁だが012の繰り返しになっている)は常に7で割り切れる。
Ex.987987 / 7 → 141141、141141 / 7 → 20163
・これをプログラムで確認せよ。また、何故7で割り切れるのか考察せよ。
0832デフォルトの名無しさん
2007/06/04(月) 12:54:18#include <stdio.h>
int main(void)
{
int i;
for (i = 1; i < 1000; ++i)
printf("%d % 7 = %d\n", i * 1001, i * 1001 % 7);
return 0;
}
考察:1001が7で割り切れるから。そんだけ。
0833デフォルトの名無しさん
2007/06/04(月) 12:56:430834832
2007/06/04(月) 12:57:14- printf("%d % 7 = %d\n", i * 1001, i * 1001 % 7);
+ printf("%d %% 7 = %d\n", i * 1001, i * 1001 % 7);
0835デフォルトの名無しさん
2007/06/04(月) 13:15:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4151.txt
0836デフォルトの名無しさん
2007/06/04(月) 13:30:17#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void bubblesort(int *data, int n)
{
int i, j;
for(i=0; i<n-1; i++) for(j=n-1; j>i; j--) if(data[j]>data[j-1]) swap(data+j, data+j-1);
}
int main(void)
{
int i, n, data[1000];
FILE *fp;
if((fp=fopen("rand1000.data", "r"))==NULL) return 0;
fscanf(fp, "%d", &n);
for(i=0; i<n; i++) fscanf(fp, "%d", data + i);
for(i=0; i<n; i++) printf("%d ", data[i]);
bubblesort(data, n);
for(i=0; i<n; i++) printf("%d ", data[i]);
fclose(fp);
return 0;
}
0837デフォルトの名無しさん
2007/06/04(月) 13:51:45ありがとうございます。ありがとうございます。
0838デフォルトの名無しさん
2007/06/04(月) 13:53:49されていたので、c++に文法を変えてもらえませんか。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4026.c
0839デフォルトの名無しさん
2007/06/04(月) 13:57:04C++ の文法にのっとってるから、そのまま拡張子を .cpp にでもすれば?
# C++ ならではの書き方してくれ ってのなら、また別か
0840デフォルトの名無しさん
2007/06/04(月) 14:02:59#include <stdio.h>
を
#include <cstdio>
using namespace std;
に。
それでC++プログラムになる。
0841デフォルトの名無しさん
2007/06/04(月) 14:07:20http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4152.txt
0842デフォルトの名無しさん
2007/06/04(月) 14:10:44管理すりゃスッキリするのに。
0843デフォルトの名無しさん
2007/06/04(月) 14:13:59[2] 問題文(含コード&リンク):
if文、 if~else~文、 if~else if~else文、 switch文、 三項演算子、をすべて用いてクイズを作成しなさい
反復文は使えないものとし、同じ問題はでないものとする
[3] 環境
[3.1] OS: WindowsXP
[3.2] visual studio2005
[3.3] 言語: C++
[4] 期限: 5/25まで
[5] その他の制限: 特になし
この課題か。反復文は使えないって、どんな条件や・・・学校名晒さんかいゴルァ!w
0844デフォルトの名無しさん
2007/06/04(月) 14:23:000845デフォルトの名無しさん
2007/06/04(月) 14:40:340846デフォルトの名無しさん
2007/06/04(月) 15:13:06自分で見てもキモイコードだなと思う。言い訳させてもらうと
最初は真面目に書いていたのよ。でも、やってる内に
真面目にやるのがバカらしくなって、ふざけた問題にしてみたりして
遊んでたら止まらなくなって、終には、伝統あるこのスレで
最もキモイコードが出来上がってしまった。
0847デフォルトの名無しさん
2007/06/04(月) 15:26:45まぁ、コードはともかく、文章がツンデレなのは・・・ヲタかい?w
0848デフォルトの名無しさん
2007/06/04(月) 15:44:39[2] 問題文(含コード&リンク):
10人分の成績を入力して、60点以上の人の人数を表示し、60点以上の人の合計点
ならびに平均点(小数点以下1桁まで)を表示するプログラムを作れ。
[3] 環境
[3.1] OS:Windows2000
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:06/06まで
[5] その他の制限:特になし
お手数ですが、どなたかよろしくお願いします。
0849デフォルトの名無しさん
2007/06/04(月) 19:45:29あいよ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4153.txt
0850デフォルトの名無しさん
2007/06/04(月) 20:09:50オタですが何か?ミリオタにツンデレは関係ないはずですが。
何故俺がオタだとわかったんだ?
ちなみに、あの問題はナイスバディーで色気ムンムンの
講師をイメージして作ってみた。
0851デフォルトの名無しさん
2007/06/04(月) 20:39:16[2] 問題文(含コード&リンク):
char *month_name(int n)という関数を作りその中でstatic char *month_name[] = { "January",...
と初期化と宣言をする。そしてmain文中でscanfを使って値を読み込み、関数を呼び出して月の名前を英語で出力させる
プログラムを作れ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:06/06まで
[5] その他の制限:特になし
よろしくお願いします
0852デフォルトの名無しさん
2007/06/04(月) 20:49:58#include <stdio.h>
char *month_name(int n) {
static char *month_name[] =
{ "January","Feb","Mar","Apl","May","Jun",
"Jul","Aug","Sep","Oct","Nov","Dec"};
return month_name[n-1];
}
int main(void) {
int month;
char *m_n;
printf("Input > ");
scanf("%d",&month);
if(month<1 || month>12) return 1;
m_n=month_name(month);
printf("%s",m_n);
return 0;
}
0853デフォルトの名無しさん
2007/06/04(月) 20:52:350854デフォルトの名無しさん
2007/06/04(月) 20:59:54動きました。
ありがとうございます。
0855 ◆HFYa0.2pYo
2007/06/04(月) 22:57:59[2] 問題文:
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4154.txt
マージソートを行うプログラムなのですが、コンパイルはできても、実行時に
エラーがでてしまいます。
間違っている部分を指摘していただけないでしょうか。
マージソートの説明はこのページにあります。
ttp://www.codereading.com/algo_and_ds/algo/merge_sort.html
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007年6月5日
[5] その他の制限:アップしたソースコードをできるだけ変えないでいただけると
ありがたいです。
0856デフォルトの名無しさん
2007/06/04(月) 23:06:31全角スペース入れてんじゃねーぞゴルァ!ってことだ。
ちゃんとコンパイラが出すエラーをチェックしやがれってやんでぇい
0857デフォルトの名無しさん
2007/06/04(月) 23:08:34全角スペース除いたら実行できるしエラーは出ないな。結果間違ってるけど。
wikiにマージソート載ってるからそれコピペしたら?
0858デフォルトの名無しさん
2007/06/04(月) 23:23:220859デフォルトの名無しさん
2007/06/04(月) 23:33:46Wikipediaにはソース載ってないんだね
0860デフォルトの名無しさん
2007/06/04(月) 23:36:160861855
2007/06/04(月) 23:36:26ありがとうございます。
結果も間違ってますね
このプログラムを元にいろいろと手を加えていくので、できればこのソースの形を生かしたいのです。
よろしければ、修正点を教えていただけませんか。
0862デフォルトの名無しさん
2007/06/04(月) 23:50:30詳しく読んでないけど、++とか--の使い方を間違っている気がする
0863デフォルトの名無しさん
2007/06/04(月) 23:51:30そっ、そりはマージですかぁ?
0864デフォルトの名無しさん
2007/06/04(月) 23:51:40>>819さんありがとう。
書き忘れていたのですが、最近C++から習い始めた初心者で、C言語がわかりません。どなたかC++に直してもらえませんか?
あと>>819では、if と forを使っていますが、このプログラムをforだけ使ってでもできませんかねえ?
申し訳ないですがよろしくお願いします。
0865デフォルトの名無しさん
2007/06/04(月) 23:53:00Oh!マージでしたぁ。
0866デフォルトの名無しさん
2007/06/04(月) 23:56:17よく読みなおしたら間違ってるのは--だけだね
0867not 819
2007/06/05(火) 00:02:19俺ならこんなプログラムは窓から投げ捨てる。
#include <iostream>
using namespace std;
int main()
{
int x, nc = 0;
cout << "INPUT INTEGER -->" << flush;
for (;cin >> x && x > 0;) {
for (int i = 3; i < x; ++i) {
for (;i % 3 == 0 && i % 4 != 0;) {
cout << i << ' ';
++nc;
break;
}
}
cout << "の " << nc << " こ" << endl;
break;
}
return 0;
}
0868861
2007/06/05(火) 00:21:27ありがとうございました。
いろいろ書き直してみます。
0869デフォルトの名無しさん
2007/06/05(火) 00:37:350870デフォルトの名無しさん
2007/06/05(火) 00:39:49ぜひ参考にさせていただきます。
0871デフォルトの名無しさん
2007/06/05(火) 00:40:44^^^^^
このへんが気になる。
0872デフォルトの名無しさん
2007/06/05(火) 00:48:03そういうことを気にしていると、すぐに禿げるよw
0873デフォルトの名無しさん
2007/06/05(火) 00:49:47ワイフルって、親身になってお金の相談受けてくれるけど
叱咤激励だけで絶対貸してくれないっていう漫画ネタ
0874デフォルトの名無しさん
2007/06/05(火) 00:50:58#define ARRAY_LENGTH 15
#define DEBUG_PRINTF(x) printf("%d\n",x);
int target_array[ARRAY_LENGTH];
int tmp[ARRAY_LENGTH];
void merge_sort(int array[], int length);
void merge(int first[], int second[], int len1, int len2);
int comp(int a, int b);
void show_result(int array[], int length);
void rand_array(int array[], int length);
int main(){
int length = ARRAY_LENGTH;
rand_array(target_array, length);
printf("--BEFORE--\n");
show_result(target_array, length);
merge_sort(target_array, length);
printf("--AFTER--\n");
show_result(target_array, length);
return 0;
}
void merge_sort(int array[], int length){
int mid = length / 2;
if(length > 2){
merge_sort(&(array[0]) , mid );
merge_sort(&(array[mid]), length - mid );
}
merge(&(array[0]), &(array[mid]) ,mid ,length - mid);
}
0875デフォルトの名無しさん
2007/06/05(火) 00:51:16禿ってかっこよくね?ナメック星人みたいで
0876デフォルトの名無しさん
2007/06/05(火) 00:52:45int i = 0;
int cnt1=0;
int cnt2=0;
int flag = 0;
for(i=0 ; i<(len1+len2) ; i++){
if(len1 == cnt1){
flag = 2;
}else if(len2 == cnt2){
flag = 1;
}else{
flag = comp(first[cnt1],second[cnt2]);
}
switch(flag){
case 0: tmp[i] = first[cnt1++]; break;
case 1: tmp[i] = first[cnt1++]; break;
case 2: tmp[i] = second[cnt2++]; break;
}
}
for(i = 0 ; i<len1+len2 ; i++){
first[i] = tmp[i];
}
}
0877デフォルトの名無しさん
2007/06/05(火) 00:53:01参考になりました。たしかにわけわかんなくて捨てたくなる…
if使用でやることにします。ありがとうございました。
0878デフォルトの名無しさん
2007/06/05(火) 01:31:34それはつまり
禿げたら地球人じゃないってことか?w
0879デフォルトの名無しさん
2007/06/05(火) 10:08:05#include<iostream>
using namespace std;
int main(void){
int x, nc=0;
cout << "INPUT INTEGER --> " << flush;
cin >> x;
for(int i=3;i<x;i+=3*4){
for(int j=0;j<3 && i+j*3<x;j++){
cout << i+j*3 << ' ';
nc++;
}
}
cout << "の " << nc << " こ" << endl;
return 0;
}
0880デフォルトの名無しさん
2007/06/05(火) 10:21:54i<x
↓
i<=x
i+j*3<x
↓
i+j*3<=x
0881デフォルトの名無しさん
2007/06/05(火) 10:53:42[2] 問題文(含コード&リンク):
共用体を用いて,2バイト整数の上下バイトを入れ換えて暗号化する関数 short encode(short)を作り,キーボードから入力した整数を暗号化/復号化するプログラムを作りなさい。
但し,main関数の部分は次のコードを用いなさい。
main(){
short n, m, k;
while (1) {
printf("整数を入力して下さい(終了は0) = "); scanf("%d", &n);
if (n == 0) break;
m = encode(n); /* 暗号化 */
printf("\n\t%d を暗号化すると %d になります。\n", n, m);
k = encode(m); /* 復号化 */
printf("\n\t%d を復号化すると %d になります。\n\n", m, k);}}
▼出力例
整数を入力して下さい(終了は0)= 123↵
123を暗号化すると31488になります。
31488を復号化すると123になります。
整数を入力して下さい(終了は0)= -123↵
-123を暗号化すると-31233になります。
-31233を復号化すると-123になります。
整数を入力して下さい(終了は0)= 0↵
[3] 環境
[3.1] OS: Windows [3.2] コンパイラ名とバージョン: borland [3.3] 言語: C
[4] 期限: 6月7日
0882デフォルトの名無しさん
2007/06/05(火) 10:59:16[3] 環境
[3.1] OS: (Windows/Linux/等々) Windowsxp
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語:C
#include<stdio.h>
int main(void)
{
int a,b;
puts("2つの整数を入力してください");
printf("整数a:");
scanf("%d",&a);
printf("整数b:");
scanf("%d",&b);
if(a==b)
puts("aとbは等しいです");
else if("a>b")
puts("aはbより大きいです");
else puts("aはbより小さいです");
return(0);
}
整数a、bの大小関係を表示したいんですけど、a<bのときも
aはbより大きいです と表示されます。どこが間違ってるのか教えてください
0883デフォルトの名無しさん
2007/06/05(火) 11:14:17↓
else if(a>b)
0884デフォルトの名無しさん
2007/06/05(火) 11:19:15short encode(short value){
return ((value&0xff)<<8)|((value>>8)&0xff);
}
0885デフォルトの名無しさん
2007/06/05(火) 11:19:37銀行の複利と単利の宿題を出させてもらったのですが、計算が間違っていました。
このソースの1の銀行が�Aの銀行の預金額を超えるのは24年と二ヵ月後になるはずなんです。ですが3年後に計算されてました
あと次の先に1億200万たまる銀行は1か2の問題は一年11ヵ月後になるはずです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4010.cpp
よろしくお願いします。
0886882
2007/06/05(火) 11:30:27ありがとうございます!
0887デフォルトの名無しさん
2007/06/05(火) 11:53:42short encode(short value){
union{
short value;
struct{unsigned char b1,b2;};
}a;
unsigned char temp;
a.value=value;
temp=a.b1;
a.b1=a.b2;
a.b2=temp;
return a.value;
}
0888デフォルトの名無しさん
2007/06/05(火) 12:03:15「なるはず」の根拠はどこから?
預金額の数値が分かるなら、どこが違うか分かるかも
0889デフォルトの名無しさん
2007/06/05(火) 12:07:28�@3行5列の二次元配列に15個の数字をランダムで選ぶ(ただし、必ず12を入れる)
�A配列に入れられた数字を
�B大きい順に配列に入れ直して示す。(バブルソートで)
�C小さい順(バブルソートで)
�Dprintfで12の行、列を出力
if,do,wihle習いました。誰かお願いしますm(_ _)m
6月7日までです。
0890デフォルトの名無しさん
2007/06/05(火) 12:11:58ソースが読み取れなくて、どういう風にプログラム内で計算されてるかわからず
計算部分が修正できないんです
/*説明文 */を、入れてもらえるだけで助かります
0891デフォルトの名無しさん
2007/06/05(火) 12:23:31色々とダメなコードだな。
・無名の構造体は規格違反
・unionに代入した型と違う型で参照するのは(厳密には)未定義。
・これで充分。
short encode(short value) {
return ((value >> 8) & 0xff) | value << 8;
}
0892デフォルトの名無しさん
2007/06/05(火) 12:29:56ttp://pc11.2ch.net/test/read.cgi/tech/1179025919/495
コピペっとく
|下記�@�Aの銀行に「一億円」を預けた場合、何年と何ヵ月後に�Aの銀行の預金額を�@の銀行の預金額が超えるか
|�@利率0.08% (複利)の銀行
|�A利率0.09% (単利)の銀行
|反復文を用いて�@�A双方の毎月の預金額を表示し、�Aの銀行の預金
|額を�@の銀行の預金額を超えた時点で反復文を終了後、「�@の銀行は
|●年●ヵ月後に�Aの銀行の預金額を超える」と表示しなさい。
|また、上記�@の銀行に「1億円」、�Aの銀行に「9999万円」を預けた場合、
|どちらが先に「1億200万円」になるか、前問と同じ処理を行い、最後に
|「●の銀行が●年●ヵ月後に先に1億200万円貯まる」と表示しなさい。
|[3] 環境
| [3.1] OS: WindowsXP
| [3.2] visual studio2005
| [3.3] 言語: C++
0893デフォルトの名無しさん
2007/06/05(火) 12:35:58問題文でunion使えって書いてあるから使ったんじゃねえの?
0894デフォルトの名無しさん
2007/06/05(火) 12:36:02>>881 に共用体を使えとあったのに気づいて >>887 を書いた
無名の構造体がダメならこれでいいかな?
short encode(short value){
union{
short value;
char b[2];
}a;
char temp;
a.value=value;
temp=a.b[0];
a.b[0]=a.b[1];
a.b[1]=temp;
return a.value;
}
0895デフォルトの名無しさん
2007/06/05(火) 12:43:20利率が100倍になってる 0.08% ならコンストラクタに 0.0008 を渡す
それと>>885のソースコードでは利率を年利率として計算している
手計算の方法では利率を月利率として計算している rate = r /12 を rate = r に変更
くらいかな?
0897デフォルトの名無しさん
2007/06/05(火) 12:52:01[2] 問題文(含コード&リンク):
0以下1以上の一様実数乱数をUiとする。
それを次式に代入することによって、標準正規乱数Xとなる。
X=U1+U2+…U12−6
�@:前述の式のXを100個発生させよ。
�A:�@で求めたXを次式のように変換したYについて同様に100個発生させよ。
Y=30X+100
�@と�Aの出力結果がそれぞれ分かるように作ってくれると助かります。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: borland
[3.3] 言語: C
[4] 期限: 2007年06月06日23:00まで
[5] その他の制限: なし
よろしくおねがいしますm(__)m
0898デフォルトの名無しさん
2007/06/05(火) 12:53:35> 0以下1以上の一様実数乱数をUiとする。
無理
0899デフォルトの名無しさん
2007/06/05(火) 12:58:28利息計算って、よくわからんのだが、
普通は利率って年利率表示なんでは。
ただ、複利を月単位で計算する場合って、
単利と同様に計算して、一年たったら元本に利息分を足すみたいな
やりかたになるんでないの。
まー>>885がどう計算したのか説明すんのが一番早いけどな。
0900デフォルトの名無しさん
2007/06/05(火) 13:20:31すいません。0以上1以下の一様実数乱数をUiとする。です。
0901デフォルトの名無しさん
2007/06/05(火) 13:38:50#include <stdio.h>
#include <stdlib.h>
double rand_u(void){
return (double)rand()/(RAND_MAX-1);
}
double rand_x(void){
double x=-6.0;
int i;
for(i=0;i<12;i++)
x+=rand_u();
return x;
}
int main(void){
int i;
double x, y;
for(i=0;i<100;i++){
x=rand_x();
y=30*x+100;
printf("x=%f y=%f\n", x, y);
}
return 0;
}
0902デフォルトの名無しさん
2007/06/05(火) 14:12:340903デフォルトの名無しさん
2007/06/05(火) 14:14:580904デフォルトの名無しさん
2007/06/05(火) 14:20:39#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define E_MAX 100
double GetRandom(double min, double max) {
return min + (double)(rand()*(max-min)/RAND_MAX);
}
int main(void) {
double x[E_MAX],y[E_MAX];
int i,j;
srand((unsigned)time(NULL));
for(i=0; i<E_MAX; i++) {
x[i]=0.0;
y[i]=0.0;
for(j=1; j<=12; j++) {
x[i] += GetRandom(0.0 , 1.0);
}
x[i] -= 6.0;
y[i] = 30.0*x[i]+100.0;
printf("x[%d] : %lf / y[%d] : %lf \n",i+1,x[i],i+1,y[i]);
}
return 0;
}
0905デフォルトの名無しさん
2007/06/05(火) 14:21:41ありがとうございます!助かりました
0906デフォルトの名無しさん
2007/06/05(火) 14:26:48ありがとうございます!助かりました
0907デフォルトの名無しさん
2007/06/05(火) 14:27:140908デフォルトの名無しさん
2007/06/05(火) 16:16:09[2] 問題文(含コード&リンク):
100×100の画像A,Bを読み込み、それぞれを10×100の縦長の画像10枚に分割して左から交互に並べた画像Cを作るプログラムを作成せよ。
http://vista.jeez.jp/img/vi8102756700.png
↑の画像のような感じでお願いします
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今週中
[5] その他の制限:特になし
説明下手で申し訳ありません、よろしくお願いいたします。
0909デフォルトの名無しさん
2007/06/05(火) 16:17:300910908
2007/06/05(火) 17:23:26一応bmpでお願いします。
0911デフォルトの名無しさん
2007/06/05(火) 17:26:28Winでgccってことだけど、bmpを読むライブラリは何を使うの?
まさかそこから全部書けとでも?
0912デフォルトの名無しさん
2007/06/05(火) 17:57:25手に負えないなら引っ込んでろ。
0913デフォルトの名無しさん
2007/06/05(火) 17:58:04そこのところは何も言われたないので、大丈夫です
0914デフォルトの名無しさん
2007/06/05(火) 18:03:38そんな毛の無いことはしたくないだけさ。
0915デフォルトの名無しさん
2007/06/05(火) 18:04:210916デフォルトの名無しさん
2007/06/05(火) 18:07:58これ全部サポートしようとすると、かなりまんどくさくね?
0917デフォルトの名無しさん
2007/06/05(火) 18:21:51マンドクセーんならWindows API使えばいいべよ
0918デフォルトの名無しさん
2007/06/05(火) 18:27:32BITMAPINFOHEADER以外のヘッダも無視でいいだろ
残るは色数をどこまで対応するかということだけ
0919デフォルトの名無しさん
2007/06/05(火) 18:45:010920デフォルトの名無しさん
2007/06/05(火) 19:02:14別に普通に使えるでしょ
0921デフォルトの名無しさん
2007/06/05(火) 19:22:15[2] 問題文(含コード&リンク):
「惑星を地軸の傾き一定で公転させるプログラム 」
学校の課題で、C言語でOpenGLを用いて、
惑星を太陽を中心に公転させるプログラムを作成せよ、と出たのですが…
教科書付属のサンプルプログラムなどを改良して、
ただ太陽の周りを回転させるだけなら出来そうなのですが、
そのとき、どうしても惑星の地軸まで反転してしまいます。
地軸の傾き方向を一定に太陽の周りを公転させるには、
一体どういった考え方をすればよいのでしょうか…
判りづらい質問ですみません!
まだ具体的にプログラムを作成していないので、ソースの記載は出来ませんが、
とりあえず考え方が全く思いつかないので、
何かありましたら、アドバイスをお願いします…!!
[3] 環境
[3.1] OS: Windows XP/Linux
[3.2] コンパイラ名とバージョン: gcc、 Visual C++ 6.0
[3.3] 言語:どちらでも可
[4] 期限: 2007/6/10
[5] その他の制限: 特になし
0922デフォルトの名無しさん
2007/06/05(火) 19:55:21同じ質問を見たな
0923デフォルトの名無しさん
2007/06/05(火) 20:06:210924デフォルトの名無しさん
2007/06/05(火) 20:11:15まじですか!
同じ授業取ってる人かも…;気まずい…
どこで見たか覚えてらっしゃったら教えてください!
回答あったらいいな…
>923
軸を中心に自転させるのは出来るのですが、
太陽中心に回転させると、
元いた位置から反対の位置に来たときに、軸も反転したりするのです!
0925デフォルトの名無しさん
2007/06/05(火) 20:16:27地球重心と地球極表面点の両方を matrix 演算で回転→公転させたつもり
じゃだめ
公転結果としての位置は、地球重心のみを回転 地軸は後から向き付けする
0926デフォルトの名無しさん
2007/06/05(火) 20:22:17平行移動だけで地球を動かせばおけじゃん
0927921
2007/06/05(火) 21:04:50>926
回答ありがとうございます!
地球を自転させながら公転させたいのですが、
自転している地球を公転させたら、地軸が反転するので自転もおかしくなります。
地球と地軸を切り離して考えたら、
自転させられなくなってしまうのではないでしょうか?
あと自転している地球を平行移動させる、というのは…
いったいどのようにすれば…;;
確かに地球を見ると、平行移動すればいいように思えますが…
この場合の地球の動きは、回転しているのと違うのでしょうか…
なんかいろいろ判ってないみたいですみません…;д;
0928デフォルトの名無しさん
2007/06/05(火) 21:15:273Dグラフィックスはまだ勉強中だからよく知らんが、
地球を平行移動させて公転させた後、その場で地軸中心で回転させることで自転させりゃいいんじゃないのか?
0929921
2007/06/05(火) 21:20:43なんか出来ました!!
>926さんの言うとおりに、平行移動でloopさせることによって出来ました!
ありがとうございました^▽^!!
0930デフォルトの名無しさん
2007/06/05(火) 21:24:06[2] 問題文(含コード&リンク):data[] = {27,93,20,11,45,23,42,56,42,94}を挿入整列および、クイックソートで整列する際、
どのようにデータの入れ替えが行われるか、配列の内容の変化を示す事によって、
データの入れ替え過程を示しなさい。アルゴリズムの特徴がわかるようにそれぞれの
アルゴリズムの説明とともにデータの入れ替え過程を示す事。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年06月06日23:00まで
お願いします。
[5] その他の制限: なし
0931デフォルトの名無しさん
2007/06/05(火) 21:28:42半径と角度から自前で計算して(円軌道のモデルなら) glTranslate で動かせ
↑
O O太陽 ↑地球と地軸
glRotate で回す .... O→ のように投影される
glTranslate で動かす ... O↑ のように投影される
0932デフォルトの名無しさん
2007/06/05(火) 22:00:49[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4159.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々) Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 6月6日 15:00
[5] その他の制限: 特になし
よろしくお願いします
0933デフォルトの名無しさん
2007/06/05(火) 22:03:47方向線上リストってなに?
0934デフォルトの名無しさん
2007/06/05(火) 22:25:59まったく同じ文でよく言うよ
http://okwave.jp/qa3059281.html
0935デフォルトの名無しさん
2007/06/05(火) 22:29:40ttp://www.google.co.jp/search?hl=ja&q=%E5%8D%98%E6%96%B9%E5%90%91%E3%83%AA%E3%82%B9%E3%83%88+%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=の一番上のpdfははずれ?
0936932
2007/06/05(火) 22:41:33下のプログラムを少し変える・追加だけ だと聞いたのですが
それが分からなくて質問させてもらいました・・
0937デフォルトの名無しさん
2007/06/05(火) 22:45:41方向線上リストとか。
激しくエスパーだが「単方向線形リスト」のことじゃないか?
授業で構造体とポインタを勉強した直後なら濃厚な気がするけど。
0938デフォルトの名無しさん
2007/06/05(火) 22:53:08リストなのにスタックで???
回答は>>935でOKっぽいね。
リストならキューのほうが自然な気がするけどな。
0939デフォルトの名無しさん
2007/06/05(火) 22:57:43まぁ最大数の制限を外すって目的なら、特に自然とも不自然ともないと思う
0940デフォルトの名無しさん
2007/06/05(火) 23:06:49こんなの?
ちゃんと動くかわからんけど
0941デフォルトの名無しさん
2007/06/05(火) 23:10:01せっかく書いたもんの隅つつくようで悪いんだけど、
lastもったないほうがいいんじゃね?単方向ってんなら。
last持つなら次と前もって双方向にしたほうが・・・ってなりそう。
あと、stdio.hとstdlib,hが""なのはいやがらせ?w
0942デフォルトの名無しさん
2007/06/05(火) 23:17:07あー単方向じゃなきゃだめなのか
>あと、stdio.hとstdlib,hが""なのはいやがらせ?w
C久々だから忘れてた・・・
""はカレントを探す方か
0943デフォルトの名無しさん
2007/06/05(火) 23:27:37概要だけ書くと
tmp = malloc();
tmp->next = top
top = tmp;
みたいな。
外す時は
tmp=top;
top=top->next;
free(tmp);
か?
0944デフォルトの名無しさん
2007/06/05(火) 23:35:57多分課題の趣旨はそれかもな
最後に積んじゃうとかなり無駄な処理になっちゃう
0945デフォルトの名無しさん
2007/06/05(火) 23:40:44[2] 問題文(含コード&リンク):二つ以上の空白を一つの空白に置き換えながら、入力を出力に複写するプログラムを書け
[3] 環境
[3.1] OS: (Windows/Linux/等々) ウィンドウズXP
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)Borland C++ Compiler 5.5
[3.3] 言語: (C/C++/どちらでも可 のいずれか)c言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)無期限
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)変数、for文、while文、switch文、if文まで習った
頑張って考えてこうなりました。問題点やここはこうした方がいい、ここはダメってなのがあったら教えてください。
#include <stdio.h>
main(void)
{
int c,count=0;
while ((c = getchar()) != EOF){
if (c == ' '){
count++;
if(count == 2){
putchar(c);
}
}else{
putchar(c);
count = 0;
}
}
return 0;
}
0946デフォルトの名無しさん
2007/06/05(火) 23:45:29#include <stdio.h>
int main(void)
{
int c,count=0;
while ((c = getchar()) != EOF){
if (c == ' '){
count++;
}else{
if(count>0) putchar(' ');
count=0;
putchar(c);
}
}
return 0;
}
最後がスペースだと出力しない気もするけど、キニシナイ
0947デフォルトの名無しさん
2007/06/05(火) 23:45:38それだと、空白が単独で一個だけあるとき消されてしまう。
count == 2のところはcount == 1とするべきだと思う。
0949デフォルトの名無しさん
2007/06/05(火) 23:55:21#include <stdio.h>
int main(void)
{
int c = 0;
int sp = 0;
while ( (c = getchar( ) ) != EOF ) {
if ( c == ' ' ) {
if ( sp != 1 ) {
putchar( c );
}
sp = 1;
}
else {
sp = 0;
putchar( c );
}
}
return 0;
}
最後のスペースで問題ないようにしてみた。
ついでに、カウンタのオーバーフローにt(ry
0950デフォルトの名無しさん
2007/06/05(火) 23:57:54[2] 問題文(含コード&リンク):
問題文 http://www.vipper.org/vip524340.txt
データ http://www.vipper.org/vip524342.txt
途中 http://www.vipper.org/vip524344.c
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: (2007年6月12日16:00まで)
[5] その他の制限: 特にないですが問題文の指定通りに
何度か試してみましたがうまくいきません。
どこを直すべきでしょうか。
問題文が長いのですがすみませんがよろしくお願いします。
0951デフォルトの名無しさん
2007/06/06(水) 00:08:02maleをcharにする。
ageの範囲のif分の羅列をif-else-ifの形にする。
以上で、OK
0952デフォルトの名無しさん
2007/06/06(水) 00:08:53すまん。
>maleをintにする
は忘れてくれ。
0953デフォルトの名無しさん
2007/06/06(水) 00:09:270954デフォルトの名無しさん
2007/06/06(水) 00:15:57if (条件1) {
...
} else if (条件2) {
...
} else {
...
}
この形にする
0955デフォルトの名無しさん
2007/06/06(水) 00:22:18ありがとうございます。やってみます。
0956デフォルトの名無しさん
2007/06/06(水) 00:29:47[2] 問題文:
xy平面上でx軸、y軸、x=10、y=10に囲まれた領域(境界含む)について考える。
標準入力から領域内に実数値の点(x1, y1)、(x2, y2)をとり、その2点を通る直線と
領域を構成している直線との交点2つを出力するプログラムを作れ。
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:6月8日 15:00まで
[5] その他の制限:特になし
よろしくお願いします。
0957デフォルトの名無しさん
2007/06/06(水) 00:31:44いいご身分
0958デフォルトの名無しさん
2007/06/06(水) 01:06:34y= a * x + dとする
y2 = a * x2 + d
-y1 = a * x1 + d
---------------
y2-y1 = a * ( x2 - x1)
∴a = ( y2 - y1)/(x2-x1)
∴d = y2 - (y2-y1) * x2/(x2-x1)
0959デフォルトの名無しさん
2007/06/06(水) 01:13:07こういう問題は、式とかをあらかじめ算出しておいてくれると楽なのにな。
「こういう式になると思うんですが、プログラムので表現方法がわかりません」みたいな。
0960デフォルトの名無しさん
2007/06/06(水) 01:14:02(いいたいことはわかっているつもり
どっちかっつ〜と回答者にいいことがあると思う
0961デフォルトの名無しさん
2007/06/06(水) 01:18:07だよな。もちろん、プログラミングと絡んでくるような問題なら丸投げも仕方ないだろうが
プログラム抜きで出来る部分ぐらいはやっといてくれた方が楽なんだよな
0962デフォルトの名無しさん
2007/06/06(水) 01:25:55>>956の問題くらいならどうにかなっても、高次曲線とか曲面とかに
なってくると、もう何年も前のことでさっぱりなんだよな。
フーリエ変換とかウェーブレット変換なんて懐かしいがさっぱりだw
数学系、プログラム得意な人が解いてくれるだろうけどたぶん
みんながそうじゃないだろうし。少なくとも俺はw
0963デフォルトの名無しさん
2007/06/06(水) 01:29:51OS:WindowsXP
コンパイラ名とバージョン:borland
言語:c言語
問題:
実行画面
1 2 3 4 5 6 7 8 9
-------------------------------
1| 1 2 3 4 5 6 7 8 9
2| 2 4 6 8 10 12 14 16 18
3| 3 6 9 12 15 18 21 24 27
4| 4 8 12 16 20 24 28 32 36
5| 5 10 15 20 25 30 35 40 45
6| 6 12 18 24 30 36 42 48 54
7| 7 14 21 28 35 42 49 56 63
8| 8 16 24 32 40 48 56 64 72
9| 9 18 27 36 45 54 63 72 81
0964デフォルトの名無しさん
2007/06/06(水) 01:36:39実際問題として、それが必要なら普通はライブラリ使うしなw
0965デフォルトの名無しさん
2007/06/06(水) 01:41:08餌がマズ過ぎゃしないか?
0966デフォルトの名無しさん
2007/06/06(水) 01:42:34#include <stdio.h>
int main(void)
{
int i, j;
for (i = 1; i <= 9; i++) {
if (i == 1) {
printf(" ");
}
printf("%3d", i);
}
printf("\n-------------------------------\n");
for (i = 1; i <= 9; i++) {
printf("%d|", i);
for (j = 1; j <= 9; j++) {
printf("%3d", i * j);
}
printf("\n");
}
return 0;
}
0967デフォルトの名無しさん
2007/06/06(水) 01:43:37こないだも同じ問題見たよorz
#include <stdio.h>
int main( void )
{
int i;
int j;
// ヘッダ部
printf( " " );
for ( i = 1; i <= 9; i++ ) {
printf( "%d " ,i );
}
printf( "\n-------------------------------\n" );
for ( i = 1; i <= 9; i++ ) {
printf( "%d|", i );
for ( j = 1; j <= 9; j++ ) {
printf( "%d ", i * j );
}
printf( "\n" );
}
return 0;
}
0968965
2007/06/06(水) 01:53:370969デフォルトの名無しさん
2007/06/06(水) 04:31:54#include <stdio.h>
#define X1 0.0
#define Y1 0.0
#define X2 10.0
#define Y2 10.0
int main(void)
{
double x1, y1, x2, y2, a, b;
scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);
if(x1 < X1 || x1 >X2 || x2 < X1 || x2 > X2 || y1 < Y1 || y1 > Y2 || y2 < Y1 || y2 > Y2)
return -1;
a = (y2 - y1)/(x2 - x1);
b = y1 - a*x1;
if((Y1 - b)/a >= X1 && (Y1 - b)/a <= X2) printf("%f %f\n", (Y1 - b)/a, Y1);
if((Y2 - b)/a >= X1 && (Y2 - b)/a <= X2) printf("%f %f\n", (Y2 - b)/a, Y2);
if(a*X1 + b > Y1 && a*X1 + b < Y2) printf("%f %f\n", X1, a*X1 + b);
if(a*X2 + b > Y1 && a*X2 + b < Y2) printf("%f %f\n", X2, a*X2 + b);
return 0;
}
0970デフォルトの名無しさん
2007/06/06(水) 04:46:23#include <stdio.h>
#define X1 0.0
#define Y1 0.0
#define X2 10.0
#define Y2 10.0
int main(void)
{
double x1, y1, x2, y2, a, b, x, y;
scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);
if(x1 < X1 || x1 >X2 || x2 < X1 || x2 > X2 || y1 < Y1 || y1 > Y2 || y2 < Y1 || y2 > Y2)
return -1;
if(x1 == x2 && y1 == y2)
return -2;
if(x1 == x2){
printf("%f %f\n", x1, Y1);
printf("%f %f\n", x1, Y2);
}else{
a = (y2 - y1)/(x2 - x1);
b = y1 - a*x1;
if((Y1 - b)/a >= X1 && (Y1 - b)/a <= X2) printf("%f %f\n", (Y1 - b)/a, Y1);
if((Y2 - b)/a >= X1 && (Y2 - b)/a <= X2) printf("%f %f\n", (Y2 - b)/a, Y2);
if(a*X1 + b > Y1 && a*X1 + b < Y2) printf("%f %f\n", X1, a*X1 + b);
if(a*X2 + b > Y1 && a*X2 + b < Y2) printf("%f %f\n", X2, a*X2 + b);
}
return 0;
}
0971970
2007/06/06(水) 04:49:38double x1, y1, x2, y2, a, b;に……。
0972958
2007/06/06(水) 05:08:08俺としては「数式に直したら、ほら簡単な問題でしょ?」
ってな意味をこめて数式だけ書いた。
0973デフォルトの名無しさん
2007/06/06(水) 05:21:200974921
2007/06/06(水) 05:50:53遅くなりましてすみません><;
ありがとうございます!
図解までしていただいてとても明確に理解できました^^
0975921
2007/06/06(水) 05:52:49あ!それ私です!;
って言うまでもないか^^;
すみません!他の板で見かけられたのかと思ってましたッ!;
C/C++の宿題を片付けます 89代目
http://pc11.2ch.net/test/read.cgi/tech/1181087371/
0977デフォルトの名無しさん
2007/06/06(水) 12:25:22[1] 授業単元:c言語
[2] 問題文(含コード&リンク): 各タブを\t、各バックスペースを\b、各バックスラッシュを\\に置き換えながら
入力を出力に複写するプログラムを書け
[3] 環境
[3.1] OS: ウィンドウズXP
[3.2] コンパイラ名とバージョン:)Borland C++ Compiler 5.5
[3.3] 言語: c言語
[4] 期限: 無期限
[5] その他の制限:for文、while文、switch文、if文まで習った
#include <stdio.h>
int main(void)
{
int c;
while((c = getchar()) != EOF){
if(c == '\t'){
printf("\\t");
}else if(c == '\b'){
printf("\\b");
}else if(c == '\\'){
printf("\\\\");
}else{
putchar(c);
}
}
return 0;
}
0978デフォルトの名無しさん
2007/06/06(水) 12:31:10環境
OS: (Windows/Linux/等々)
コンパイラ名とバージョン: ボーランド
言語: C
[5] その他の制限:現在for文 if文 入力・出力・演算子
テーマ:繰り返し処理(while文)
問題:キーボードより整数nを入力し、1〜nまでの合計を求めなさい
実行画面
整数nの入力==>5
合計:15
0979デフォルトの名無しさん
2007/06/06(水) 12:43:16#include<stdio.h>
main()
{
int n,m,sum;
printf("整数nの入力==>");
scanf("%d",&n);
m=0;sum=0;
while(m<n){
sum+=++m;
}
printf("合計:%d",sum);
}
0980デフォルトの名無しさん
2007/06/06(水) 12:49:47#include <stdio.h>
int main(void)
{
int a,count,total;
count=total=0;
printf("キーボードより整数nを入力=");
scanf("%d",&a);
while(count <= a){
total += count;
count++;
}
printf("合計=%d",total);
return 0;
}
0981979
2007/06/06(水) 12:55:33>>979よりエレガントな方法を思いついたので再提出しまつ。
#include<stdio.h>
main()
{
int n,sum;
printf("整数nの入力==>");
scanf("%d",&n);
sum=0;
while(n>0)sum+=n--;
printf("合計:%d",sum);
}
0982デフォルトの名無しさん
2007/06/06(水) 13:03:150983デフォルトの名無しさん
2007/06/06(水) 13:06:21タブや改行といった制御文字なら表示されんでもどこにあるかわかるけど
バックスペースはわからんなぁ・・・
0984デフォルトの名無しさん
2007/06/06(水) 13:13:21そうですか・・・
バックスペースを表示させろといわれても教材みても何も書いてないしどうしていいのかわからんw
0985デフォルトの名無しさん
2007/06/06(水) 13:20:57問題文の意味がよくわからんけど、getch() は使って良かったのかな?
#include <stdio.h>
#include <conio.h>
#define CTRL_D 0x04
#define CTRL_Z 0x1A
#define RETURN 0x0D
int main(void){
int c;
while(1){
c = getch();
if(c == CTRL_D || c == CTRL_Z) break;
switch(c){
case '\t': printf("\\t"); break;
case '\b': printf("\\b"); break;
case '\\': printf("\\\\"); break;
case RETURN: printf("\n"); break;
default: printf("%c", c);break;
}
}
return 0;
}
0986977
2007/06/06(水) 13:27:25使っていいのはgetchar、scanfです
あと#include <stdio.h>のみ
getch()は習ってないです
なんか後だしですみません
問題の意味はタブを入力したら\tで画面に出力、バックスペース、バックスラッシュも同じように\bと\\と画面に出力
ようするに目に見える形で出力しないさいって意味だと思います
0987デフォルトの名無しさん
2007/06/06(水) 13:35:41課題の本質的な問題に答えられていれば、なんら問題ないんじゃね?
0988デフォルトの名無しさん
2007/06/06(水) 13:41:58os:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:繰り返し処理(while文)
問題:キーボードより複数件のデータを入力し奇数と偶数の合計を計算しなさい
-1が入力されたらデータの終了とし、合計には加えない
実行画面
整数入力==>3
整数入力==>8
整数入力==>10
整数入力==>7
整数入力==>0
整数入力==>26
整数入力==>19
整数入力==>1
整数入力==>-1
奇数合計:30
偶数合計:44
0989デフォルトの名無しさん
2007/06/06(水) 14:00:18#include<stdio.h>
int main(void)
{
int input,sum_g,sum_k;
sum_g=sum_k=0;
while(1){
printf("整数入力==>");
scanf("%d",&input);
if(input==-1){
break;
}else if(input%2==0){
sum_g=sum_g+input;
}else{
sum_k=sum_k+input;
}
}
printf("奇数合計:%d\n偶数合計:%d\n",sum_k,sum_g);
return 0;
}
0990デフォルトの名無しさん
2007/06/06(水) 14:25:28プログラムに誤りは無い。
もしかしてキーボードの入力を読んでるのか?
普通の端末のモードでは、BSはそもそもプログラム側に送られないよ。
簡単に実験したければBSを含むファイルを食わせてみるんだね。
vimのようなエディタならそのようなテキストファイルを簡単に作れるが、
そのようなテキストエディタを持っていないのなら、
バイナリエディタでも使うんだね。
キーボードから入力されたBSを直接プログラム側で処理したいのならば、
端末をRAWモードにするか、Win32ConsoleAPIないしそのラッパーを
使う必要がある。どっちにしろCの標準ライブラリの範疇ではないよ。
0992 ◆lIN/ESgxWw
2007/06/06(水) 18:13:16[2]1本の道に,食べ物が多数落ちている.
ランダムに動く動物が,それらを全て食べ尽くすと終了するようなプログラムを作成せよ.
<仕様>
「道」は要素数20程度の1次元配列で表現する.
「食べ物」は,上記配列の各要素に値1があればその場所に存在し,値0であればその場所には存在しないものとする.
「動物」は,1回の移動で配列中の1つ左または1つ右に移動できる.
「動物」の訪れた場所のエサは食べられたものとする.
「道のうち食べ物のない箇所」,「道のうち食べ物のある箇所」,「動物」は,それぞれ -, *, O で表現する.それらを横一列の文字で表示する.
繰り返し処理中は,毎回数十〜数百ミリ秒程度の時間,実行を一時停止させることで,状態の推移を見やすくする.
[3]OS:Linux
コンパイラ名:スイマセン、分かりません
言語:C
[4]できれば今日中にお願いします
[5]制限:配列まで習ってます。標準ライブラリは習ってません
よろしくお願いします。
0993デフォルトの名無しさん
2007/06/06(水) 19:06:32#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define N 20
void print_road(int road[N], int animal){
int i;
for(i = 0; i < N; i++){
if(i == animal) putchar('O');
else if(road[i] == 0) putchar('-');
else if(road[i] == 1) putchar('*');
}
putchar('\n');
}
int main(void){
int road[N] = {1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0}, animal, i;
srand((unsigned int)time(NULL));
animal = (double)rand()/(RAND_MAX + 1)*N;
for(i = 0; i < 1000; i++){
animal += (int)((double)rand()/(RAND_MAX+1)*3) - 1;
if(animal < 0) animal += N;
else if(animal >= N) animal -= N;
road[animal] = 0;
print_road(road, animal);
Sleep(100);
}
return 0;
}
0994デフォルトの名無しさん
2007/06/06(水) 19:10:480995デフォルトの名無しさん
2007/06/06(水) 20:37:10[2] 問題文(含コード&リンク):
?新しい型(設計図)として,下記の要素を含む「電車」型を設計しなさい(新しい型(設計図)は,main関数の外で記述すること)。
?次に,main関数で上記の型(設計図)の変数を1つ宣言(生成)し,その変数の要素に適当な初期値を格納しなさい。
?最後に,main関数で上記で生成した変数の要素をすべてコマンドプロンプトに出力しなさい。
?新しい型名:TRAIN
?要素1:車輪数・・・型,型名は考えること
?要素2:窓数・・・型,型名は考えること
?要素3:座席数・・・型,型名は考えること
?要素4:車内温度・・・型,型名は考えること
[3] 環境
[3.1] OS: WindowsXP
[3.2] visual studio2005
[3.3] 言語: C++
[4] 期限: 5/25まで
[5] その他の制限: 特になし
よろしくお願いします。
0996デフォルトの名無しさん
2007/06/06(水) 20:37:570997デフォルトの名無しさん
2007/06/06(水) 20:39:47[2] 問題文(含コード&リンク):
新しい型(設計図)として,「人間」型と「動物」型を設計(新しい型(設計図)は,main関数の外で記述すること,要素は適時考えること)し,
main関数で上記の型(設計図)の変数を配列で2つづつ宣言(生成)した後,その変数の要素に適当な初期値を格納しなさい。
最後に,main関数で上記で生成した変数の要素をすべてコマンドプロンプトに出力しなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] visual studio2005
[3.3] 言語: C++
[4] 期限: 6/15まで
[5] その他の制限: 特になし
よろしくお願いします。
0998デフォルトの名無しさん
2007/06/06(水) 20:52:06人間の定義ぷりーず
プログラムじゃなくていいから
0999デフォルトの名無しさん
2007/06/06(水) 20:54:071000デフォルトの名無しさん
2007/06/06(水) 21:00:5810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。