C/C++の宿題片付けます 143代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/11/16(火) 22:14:58【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題片付けます 142代目
http://hibari.2ch.net/test/read.cgi/tech/1288531658/
0002デフォルトの名無しさん
2010/11/16(火) 22:16:561 : ◆QZaw55cn4c :2010/11/14(日) 15:15:49
あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。
0003デフォルトの名無しさん
2010/11/16(火) 22:17:53infoseekのロダは死んでいるので次のロダを使うと便利です
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
0004デフォルトの名無しさん
2010/11/16(火) 22:28:06[2] 問題文(含コード&リンク)
問題1 キーボードから入力した複数個の整数の、加算と積算の計算結果を表示するプログラムを作成しなさい。 ただし、このプログラムは、連続して実行される前半と後半の2部構成で作成してください。
0が入力された時点で、入力処理を終了し結果の表示を行ってください。
すなわち、前半の処理では、キーボードから入力した数値の加算合計の表示を、0が入力されるまで繰返し、後半の処理ではキーボードから入力した数値の積算値の表示を、0が入力されるまで繰返すプログラムを作成してください。
【条件】 前半の「和を求める」繰返しは while 文、後半の「積を求める」繰返しは do-while 文を使用して作成すること。
【実行例】 =加算処理=
値:6
値:8
値:12
値:0
合計は26です。
=積算処理=
値:2
値:6
値:3
値:3
値:0
積算値は108です。
問題2 繰返し処理を用いて、m ÷ nの計算をするプログラム(商を求める)を作成しなさい。 ただし、演算に割り算記号 / を使ってはいけません。また、mとnはキーボードから入力してください。
【ヒント】 ・割り算をするとは、mからnを何回引くことができたか?を調べることと等価です 。元の数mが正の間、nを引くことができた回数が、割り算の商となります。
この回数を、 繰返し処理を使って数えさせてください。 ・繰返し条件は、「mからnを引いた結果が正の値の間」繰り返し、商を1ずつ増やしていきます。
負の値になったら、繰返しを終了します。
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:11月18日
[5] その他の制限: なし
よろしくお願いします。
0005デフォルトの名無しさん
2010/11/16(火) 23:16:03[2] 問題文(含コード&リンク): ランダムに入力された3次元における100点の重心を求めよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 2008
[3.3] 言語: C
[4] 期限: 11月18日
[5] その他の制限: 構造体を使う
よろしくお願いします。
0006デフォルトの名無しさん
2010/11/17(水) 01:02:43[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org1254228.txt.html
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010年11月17日12:00まで(一応20:00まででも可ですができれば12:00まで)
[5] その他の制限:できればなるべく簡単な(高度ではない)書き方をしてもらえたらと思います。(できればなのであまり気にしないで良いです)
問題数が3問と少し多いのですがどうかお願いします
0007デフォルトの名無しさん
2010/11/17(水) 02:15:33[2] 問題文
・キーボードから入力した整数値が3の倍数かどうかを表示するプログラム
・キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。
ただし、平均値を求める関数 float ave(int a,int b)
を利用すること。
・キーボードから入力した文字列をすべて大文字(小文字は大文字に、大文字はそのままに)に変換して表示するプログラムを作成しなさい。
ただし、文字を大文字に変換する関数を作成し、それを利用すること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010/11/18までにお願いします
[5] その他の制限:
0008デフォルトの名無しさん
2010/11/17(水) 02:21:46http://codepad.org/twiOoHeS
http://codepad.org/AwDSSo3p
http://codepad.org/IukKlXXu
0009デフォルトの名無しさん
2010/11/17(水) 07:34:30ありがとうございました!
0010デフォルトの名無しさん
2010/11/17(水) 12:40:56[2] 問題文(含コード&リンク):
サーバープログラム(英文清書サーバーの作成)
クライアントから送信された(大文字小文字が乱雑な)英文字文字列を次のように変換して送り返す。
分の先頭の文字:大文字
分の先頭以外の文字:小文字
アルファベット以外:変換しない
改行、スペース、タブにより単語の区切りとする。また、文末は改行コードではなく、ピリオド"."で判定する。
ポート番号は1202番
クライアントから接続されると、[Beautify Server Ready]を送信する。
"\end"または"\END"を送信すると、[Beautify Server Closed]を送信してコネクションを切断する。
このサーバーの目的(英文の清書)の範囲内で、高機能にすること(例えば単独の"I"を大文字にする、連続した空白文字を1つのスペースにする、など)を歓迎する。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11/19
[5] その他の制限:
http://codepad.org/w4zd0J0t
上記のプログラムを参考に作成してもよいとのことです。
大文字や小文字のプログラムまではできましたが、その後がうまくできません。
よろしくお願いします。
0011デフォルトの名無しさん
2010/11/17(水) 12:55:22INExp.hとできてるところまでのコード暮
0012デフォルトの名無しさん
2010/11/17(水) 13:55:24質問
・受信データに全角が混じる可能性は有るの?
・受信データの途中で 0x00 が出現する可能性は有るの?
・サンプルを見ると "\END" + 改行コード(2BYte) で終了判定しているけど "\END" のみで終了判定しても良いの?
・"\END"も返信するの?
・space + tab + space の場合、space 1つに変換するの?
・1Byte 単位で read() かけても文句言われない?
0013デフォルトの名無しさん
2010/11/17(水) 15:24:40http://codepad.org/CHFnxR5p
です。
>>12
・受信データに全角が混じる可能性は有るの?
全角はないと思います。
・受信データの途中で 0x00 が出現する可能性は有るの?
ちょっとわからないです。ごめんなさい。
・サンプルを見ると "\END" + 改行コード(2BYte) で終了判定しているけど "\END" のみで終了判定しても良いの?
・"\END"も返信するの?
"\END"+エンターキーで終了判定です。
"\END"は送信だけで大丈夫です。
・space + tab + space の場合、space 1つに変換するの?
区切りが3つできると思います。
・1Byte 単位で read() かけても文句言われない?
ちょっとわからないです。ごめんなさい。
0014デフォルトの名無しさん
2010/11/17(水) 16:47:17[1] 授業単元:自然言語処理
[2] 問題文(含コード&リンク):
曖昧性のないLR 表を利用して、ファイルに記述された「1
桁の数、+、*、(、)で構成される数式」を計算するプログラムを作成せよ。数式は1 行ず
つファイルに記述されているとする。
問題文↓
ttp://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/rep2.pdf
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名:gcc
[3.3] 言語:C
[4] 期限:12/3
[5] その他の制限:
資料
ttp://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/nlp05.pdf
の5〜15ページ。
またよろしければよろしくお願いします。
変数の役割や処理内容なども解説してくださると有り難いです。
0015デフォルトの名無しさん
2010/11/17(水) 17:27:22『ちょっと判らない』とは質問の意味が判らないという意味かい?
『"\END" は送信だけで大丈夫』とは返信の必要は無いと言う事?
区切りが3つできると言う事はtabは文字扱いで良いんだね
>>10 で提示されたソースコードは本当に動くの?
これTCP/IPでしょ、setup_server() の戻り値は待ち受けソケットだと思うんだけどなぁ...
0016デフォルトの名無しさん
2010/11/17(水) 17:32:24そうです。ちょっと質問の意味がわからないです。すみません。
"\END"は送信するとサーバー側が[Beautify Server Closed]を送信してコネクションを切断する。
ので返信はいらないです。
>>10 のプログラム単体だと動かないかもです。
0017デフォルトの名無しさん
2010/11/17(水) 18:27:56そらまぁサーバー単体では動かないわな
サーバーが動いているときにクライアントが接続して初めて通信が開始されるんだからね
まぁ動くとの前提で考えようか、バッファがグローバル変数だからマルチプロセスを考慮してないのは明らかだ
多分、setup_server() で待ち受けソケット作って→接続あったら→待ち受けソケットをクローズって流れなんだろうな
1対1の通信しか想定していないプログラムと考えるよ
0018デフォルトの名無しさん
2010/11/17(水) 18:30:42それでいいと思います。
ごめんなさい、学習不足で・・・。
0019デフォルトの名無しさん
2010/11/17(水) 18:49:45歴史は繰り返すだね
0020デフォルトの名無しさん
2010/11/17(水) 18:54:070021デフォルトの名無しさん
2010/11/17(水) 19:02:42解答があればだけど、その時の解答どっかにか落ちてないのかね
0022デフォルトの名無しさん
2010/11/17(水) 19:12:470023デフォルトの名無しさん
2010/11/17(水) 19:32:10#include <stdio.h>
int main(void)
{
int input,kasan=0,seki=1;
puts("=加算処理=");
while(1)
{
printf("値:"); scanf("%d", &input);
kasan += input;
if(input == 0){
printf("合計は%dです。\n", kasan);
break;
}
}
puts("=積算処理=");
input = 1;
do{
seki *= input;
printf("値:"); scanf("%d", &input);
}while(input != 0);
printf("積算値は%dです。\n", seki);
return 0;
}
0024デフォルトの名無しさん
2010/11/17(水) 19:35:32#include <stdio.h>
int main(void)
{
int m,n,syou=0;
printf("m:"); scanf("%d", &m);
printf("n:"); scanf("%d", &n);
while(n <= m){
m -= n;
syou++;
}
printf("syou:%d\n", syou);
return 0;
}
0025デフォルトの名無しさん
2010/11/17(水) 19:36:01お願いします
0026デフォルトの名無しさん
2010/11/17(水) 19:36:45問題1: http://codepad.org/ZdNJupRP
問題2: http://codepad.org/t9J0CI7t
0027デフォルトの名無しさん
2010/11/17(水) 19:50:32#include <stdio.h>
int c;
float ave(int a, int b) { return ((a+b+c)/3); }
char to_upper(char c) {
if(('a' <= c) && (c <= 'z')){ c = c - 'a' + 'A'; }
return c;
}
int main(void) {
int a,b,i=0;
char str[100];
printf("a:"); scanf("%d", &a);
printf("b:"); scanf("%d", &b);
printf("c:"); scanf("%d", &c);
printf("str:"); scanf("%s", str);
printf("aは3の倍数で%s\n", (a%3)==0 ? "す" : "ない");
printf("bは3の倍数で%s\n", (b%3)==0 ? "す" : "ない");
printf("cは3の倍数で%s\n", (c%3)==0 ? "す" : "ない");
printf("a,b,cの平均値は%f\n", ave(a,b));
while(str[i] != '\0'){ str[i] = to_upper(str[i]); i++; }
printf("===after to_upper===\n");
printf("str:%s", str);
return 0;
}
0028デフォルトの名無しさん
2010/11/17(水) 20:27:15書いたけど部分的なテスト(beautifyString)しかしてないよ、全体的なテストはやりようが無いからね
動かして変な動作が有ったら言ってくれ
ttp://codepad.org/GxRLKH2W
0029デフォルトの名無しさん
2010/11/17(水) 20:30:56>>7は全部別々の問題です
1.キーボードから入力した整数値が3の倍数かどうかを表示するプログラム
2.キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。
ただし、平均値を求める関数 float ave(int a,int b)
を利用すること。
3.キーボードから入力した文字列をすべて大文字(小文字は大文字に、大文字はそのままに)に変換して表示するプログラムを作成しなさい。
ただし、文字を大文字に変換する関数を作成し、それを利用すること。
0031デフォルトの名無しさん
2010/11/17(水) 20:40:25ありがとうございます。
ちょっと動かしてみましたが。
・・・・.・・・・・.
のように一行にピリオドが2つ以上入力したとき
・・・・.
・・・・.
のように出力されると思うのですが。
うまくできなかったです。
0032デフォルトの名無しさん
2010/11/17(水) 20:41:09float ave(int a, int b) { return ((a+b+c)/3); } は、
float ave(int a, int b) { return ((a+b+c)/3); } な。
0033デフォルトの名無しさん
2010/11/17(水) 20:41:49float ave(int a, int b) { return ((a+b+c)/3); } は、
float ave(int a, int b) { return ((a+b+c)/3.0); } な。
0035デフォルトの名無しさん
2010/11/17(水) 20:46:33cはどこから来るのかな?
0036デフォルトの名無しさん
2010/11/17(水) 20:48:27言ってる意味がよく判らないんだけど >>28 は駄目だよ >>30 を試してくれ
0037デフォルトの名無しさん
2010/11/17(水) 20:53:5390行目
ptr = strstr( buf1, "\\end\r\n" );
を
ptr = strstr( buf1, "\\end" );
に直してみてくれる?
改行コードまでを終了判定に使うか迷ったんだけど "\end \r\n" みたいな入力がある事を考えると使わない方が良いかも
そのかわり、文中に "\end" が入るとそこで終わっちゃうけどね
0038デフォルトの名無しさん
2010/11/17(水) 20:54:46下記が実行結果です。
[Beautify Server Ready]
It is June now. I will finish my studies in America soon,and leave for Japan next month.
It is june now. I will finish my studies in america soon,and leave for japan next month.
It is june now.
I will finish my studies in america soon,and leave for japan next month.
のようにはならないのですか?ってことです。わかりづらくてごめんなさい。
0039デフォルトの名無しさん
2010/11/17(水) 20:58:56変えてみましたが
\end
\End
のようになって終わらないです。。
0040デフォルトの名無しさん
2010/11/17(水) 21:00:30ピリオドで改行しろって事?>>10 からはその意図を読み取れなかったんだけど、その方が良いのかな?
そっちの方が良いなら直すのは簡単だよ
>>34はOK?
0041デフォルトの名無しさん
2010/11/17(水) 21:02:55私はすぐにアメリカの宿題を終えるでしょう。そして来月日本を発ちます。
0042デフォルトの名無しさん
2010/11/17(水) 21:03:26\end が独立してないんじゃないかな
0043デフォルトの名無しさん
2010/11/17(水) 21:06:40理由は判った、無くて7バグを体現してるなぁwww
文頭に 'Cause が有った場合は 'cause に直すべき?
答えによっては修正法が異なるので
0044デフォルトの名無しさん
2010/11/17(水) 21:07:08文末をピリオドで判定するから
ピリオドで改行するのかなと、思うのですが・・・。
0045デフォルトの名無しさん
2010/11/17(水) 21:09:11そこは直さなくてもいいと思います。
特に記載されてないので・・・。
0046デフォルトの名無しさん
2010/11/17(水) 21:09:45仕様を決めるのは君だから君がそう思うなら直すよ >>43 の答えが出たら作業を開始する
0047デフォルトの名無しさん
2010/11/17(水) 21:15:562箇所しか修正箇所が無いから codepad の無駄使いかなぁ....
ttp://codepad.org/Cv02rynJ
0048デフォルトの名無しさん
2010/11/17(水) 21:33:03急ぎなのでお願い致します!
0049デフォルトの名無しさん
2010/11/17(水) 21:46:28>2.キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。
>ただし、平均値を求める関数 float ave(int a,int b)
>を利用すること。
問題文、あってる?
>float ave(int a,int b)
これは課題として記述する関数?それとも与えられた関数?
0050デフォルトの名無しさん
2010/11/17(水) 21:50:41参考までに
http://nojiriko.asia/prolog/c143_7_2.html
0051デフォルトの名無しさん
2010/11/17(水) 22:03:2815パズルをランダムに状態を遷移させて完成にまで持って行きたいのですが
15パズルには考えられる状態数が多すぎるため10000回の遷移では完成させることができません
乱数を用いて、比較的すぐにパズルを完成させるためにはどのようにすれば良いですか?
0052デフォルトの名無しさん
2010/11/17(水) 22:06:010055デフォルトの名無しさん
2010/11/17(水) 22:15:550056デフォルトの名無しさん
2010/11/17(水) 22:22:11左上が正しい位置に来たら、そのピースだけは動かさないようにする。
更にその周辺のピースが正しい位置に来たら、そのピースは動かさないようにする。
みたいに動かさなくてもすむピースを固定していったら?
0057デフォルトの名無しさん
2010/11/17(水) 22:31:04float ave(int a,int b,int c)の間違いじゃない?
0058デフォルトの名無しさん
2010/11/17(水) 22:36:54横からですまんが
それで解けると思わないんだが
0059デフォルトの名無しさん
2010/11/17(水) 22:40:400060デフォルトの名無しさん
2010/11/17(水) 22:44:50とりあえず大雑把に。入力値のチェックはしていない
問題1:
#include<stdio.h>
int main()
{
int i;
scanf("%d",&i);
puts((i%3)?"3 no baisu dehanai":"3 no baisu");
return 0;
}
0061デフォルトの名無しさん
2010/11/17(水) 22:46:31問題2:
#include<stdio.h>
float ave(int a,int b)
{
return (float)a/b;
}
int main()
{
int a,b,c;
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
printf("%f\n",ave(a+b+c,3));
return 0;
}
0062デフォルトの名無しさん
2010/11/17(水) 22:48:05問題3:
#include<stdio.h>
char conv(char c)
{
return ((c>='a')&&(c<='z'))?(c-'a'+'A'):c;
}
int main()
{
char s[256];
int i;
scanf("%s",s);
for(i=0;'\0'!=s[i];i++)
printf("%c",conv(s[i]));
printf("\n");
return 0;
}
006347
2010/11/17(水) 22:51:36>>47 は話にならない事が飯食ってたら判ったので修正、何回目のアップだろう...orz
ttp://codepad.org/FJrFT2Ke
これで最後にしたいなぁ....
0064デフォルトの名無しさん
2010/11/17(水) 23:00:19多分、2項の平均値を得る関数を用いて3項の平均値を取るって所が肝なんじゃね?
ave( ave( a, b ), c );
だと重みが違っちゃうから駄目なんだろうなぁ、どうするんだろ?
0065デフォルトの名無しさん
2010/11/17(水) 23:08:23(ave(a,b)+ave(b,c)+ave(c,a))/3.0
こうか?w
0066デフォルトの名無しさん
2010/11/17(水) 23:11:320067デフォルトの名無しさん
2010/11/17(水) 23:18:260068デフォルトの名無しさん
2010/11/17(水) 23:47:390069デフォルトの名無しさん
2010/11/17(水) 23:48:02こんな式でもOK
ave(ave(a, b) * 2, c)
0070デフォルトの名無しさん
2010/11/17(水) 23:52:55やめてやれよw
0071デフォルトの名無しさん
2010/11/17(水) 23:57:34難しい式だなー 俺なら直感的にこう書くわ
(ave(a,a)+ave(b,b)+ave(c,c))/3.0
0072デフォルトの名無しさん
2010/11/17(水) 23:59:180073デフォルトの名無しさん
2010/11/18(木) 00:07:51おっしゃる通りなので訂正。
((ave(a, b) * 2 + c) / 3.0
0074デフォルトの名無しさん
2010/11/18(木) 00:30:100075デフォルトの名無しさん
2010/11/18(木) 00:54:24ave(a, b) = (a+b)/2
ave(b, c) = (b+c)/2
+ ave(c, a) = (c+a)/2
----------------------
ave(a, b)+ave(b, c)+ave(c, a) = a+b+c
ave(a, b, c) = (a+b+c)/3 = {ave(a, b)+ave(b, c)+ave(c, a)}/3
これでどうよ
>>54
乱数だったら完全に運じゃん?
0076デフォルトの名無しさん
2010/11/18(木) 01:52:380077デフォルトの名無しさん
2010/11/18(木) 02:07:13可能なんだろうか? 昔いろいろ考えたけど、いい方法が思い浮かばなかったわ
0078デフォルトの名無しさん
2010/11/18(木) 02:22:491/4+1/16+1/64+1/256+・・・
Σ(1/4^n)=1/3
0079デフォルトの名無しさん
2010/11/18(木) 02:26:480080デフォルトの名無しさん
2010/11/18(木) 03:20:3856とは別人だが、固定箇所を限定すればいけんじゃね?
↓こんな感じで
■□□□ ■■□□ ■■□□ ■■□□ ■■■■ ■■■■ ■■■■ ■■■■ ■■■■ ■■■■
□□□□ □□□□ ■□□□ ■■□□ □□□□ ■□□□ ■■■■ ■■■■ ■■■■ ■■■■
□□□□ □□□□ □□□□ □□□□ □□□□ ■□□□ □□□□ ■□□□ ■■□□ ■■□□
□□□□ □□□□ □□□□ □□□□ □□□□ ■□□□ □□□□ ■□□□ □□□□ ■■□□
0081デフォルトの名無しさん
2010/11/18(木) 03:33:260082デフォルトの名無しさん
2010/11/18(木) 04:13:11それって8パズルでも可能?
0083デフォルトの名無しさん
2010/11/18(木) 07:52:13[1] プログラムまとめ
[2] 課題1のストレート、フラッシュ、フルハウスをヒントを使って判定する関数を作る。
/* ヒント: この関数を使うと、 判定が簡単かも */
void distrib(struct card h[], int dist[]){
int i;
for(i = 0; i < 14; i++){
dist[i] = 0;}
for(i = 0; i < 5; i++){
dist[h[i].pips]++;}}
int is_straight(struct card h[]){
/* 課題1 */
return 0;}
int is_flush(struct card h[]){
/* 課題1 */}
int is_fullhouse(struct card h[]){
/* 課題1 */
return 0;}
[3] 環境
[3.1] Mac
[3.2] Xcode
[3.3] C
[4] 期限: 2010年11月22日まで
よろしくお願いします。
0084デフォルトの名無しさん
2010/11/18(木) 07:55:37card h[] は手札のカード
h[].pips は手札のカードの番号
h[].suit は手札のカードのマーク
のことです。
0085デフォルトの名無しさん
2010/11/18(木) 08:11:050086デフォルトの名無しさん
2010/11/18(木) 08:50:38カードは全部で52枚なので、ジョーカーは無いものと考えているようです。
0087デフォルトの名無しさん
2010/11/18(木) 10:13:18ただ添え字と数字あわせただけか
0088デフォルトの名無しさん
2010/11/18(木) 12:57:24書いてみた、ゲームの仕様が判らないので手役の判定だけね
ランダムに10000回手札を作ってその手役を判定する
出力としては、4カード以上の手役が出来たら手札を表示
最後に出来た役の総数を出力
手役表示の優先順位は誤っているかも知れん、ロイヤルストレートって出現頻度が低いんだなぁ
ttp://ideone.com/JiPy6
0090デフォルトの名無しさん
2010/11/18(木) 12:58:48[2] 問題文(含コード&リンク):
赤(0〜255)、緑(0〜255)、青(0〜255)のそれぞれの濃淡で
描かれた256色ビットマップ形式の3つの画像を読み込み、
それぞれの色を重ね合わせて一つの画像にする。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010 Express
[3.3] 言語: C/C++
[4] 期限: 2010年11月21日まで
[5] その他の制限:
↓これに近い感じでお願いします。
http://codepad.org/dZITrctF
0091デフォルトの名無しさん
2010/11/18(木) 13:11:310092デフォルトの名無しさん
2010/11/18(木) 13:23:17チェックしてないけど
int is_straight(struct card h[]) {
int i, j, dist[14];
distrib(h, dist);
for(i = 1; dist[i] == 0; i++);
if(i == 1) {
for(j = 10; j <= 13; j++) if(dist[j] != 1) break;
if(j > 13) return 1; }
for(j = 0; j < 5; j++) if(dist[i + j] != 1) return 0;
reutrn 1; }
int is_flush(struct card h[]) {
int i;
for(i = 1; i < 5; i++) if(h[0].suit != h[i].suit) return 0;
return 1; }
int is_fullhouse(struct card h[]) {
int i, dist[14];
distrib(h, dist);
for(i = 1; i <= 13; i++) if(dist[i] == 1 || dist[i] == 4) return 0;
return 1;
}
0093デフォルトの名無しさん
2010/11/18(木) 13:32:49[2] 問題文(含コード&リンク):
関数int yokin(int yen, double rishi, int year)を定義しなさい。
この関数はyen円を年利rishiの定期預金にyear年預けた後に戻ってくる金額を返す関数である。
引数はすべて0より大きいと仮定してよい。
rishiは,5%の場合には0.05となる。
利子は端数(小数点以下の値)があったとしても切り捨てられる。
端数の切り捨ては,毎年行われる。 main関数は次の処理をしなさい。
入力として,預け入れる金額を表す整数,利子を表す実数(0.0より大きく, 1.0より小さい),年数を受け付ける。
int yokin(int yen, double rishi, int year)を利用して,預け入れ後に受け取れる金額を出力せよ。
入力例1: 10000 0.05 3
入力例1に対する出力:11576
入力例2: 10000 0.05 5
入力例2に対する出力:12761
入力例3: 10000 0.035 10
入力例3に対する出力:14101
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C/C++
[4] 期限: できればはやめに
[5] その他の制限:
とくになしです
よろしくお願いします。
0094デフォルトの名無しさん
2010/11/18(木) 13:47:22#include <stdio.h>
int yokin(int yen, double rishi, int year)
{
for(; 0<year; year--, yen+=yen*rishi);
return yen;
}
int main(void) {
int yen; double rishi; int year;
int counter=1;
START:
printf("入力例%d: ", counter);
scanf("%d %lf %d", ¥, &rishi, &year);
printf("入力例%dに対する出力:%d\n", counter, yokin(yen, rishi, year));
goto START;
return 0;
}
0095デフォルトの名無しさん
2010/11/18(木) 13:48:31カウンターのインクリメント忘れ。
#include <stdio.h>
int yokin(int yen, double rishi, int year)
{
for(; 0<year; year--, yen+=yen*rishi);
return yen;
}
int main(void) {
int yen; double rishi; int year;
int counter=1;
START:
printf("入力例%d: ", counter);
scanf("%d %lf %d", ¥, &rishi, &year);
printf("入力例%dに対する出力:%d\n", counter++, yokin(yen, rishi, year));
goto START;
return 0;
}
0096デフォルトの名無しさん
2010/11/18(木) 13:49:480097デフォルトの名無しさん
2010/11/18(木) 13:56:550098デフォルトの名無しさん
2010/11/18(木) 13:57:260099デフォルトの名無しさん
2010/11/18(木) 14:08:18関数名が見えない目の不自由な人?
0100デフォルトの名無しさん
2010/11/18(木) 14:21:240101デフォルトの名無しさん
2010/11/18(木) 16:03:378パズル(右下が空きの場合)はこのように固定すればいい(一例)。たぶんな。
■□□ ■■■ ■■■ □□■
□□□ □□□ ■□□ □□□
□□□ □□□ ■□□ ■□□
(a) (b) (c) (d)
ただし、(a)とした状況で(d)を適用は不可能(d→aも同様)。下のようになっちゃうからね。
固定の仕方(aとするかdとするかなど)により、収束の早さが変わると思うが、どういう固定の仕方がいいのかはさっぱりわからん。
■□■
□□□
■□□
あと、おそらくだが、下の場合のように遷移可能な場所が1つであるような固定の仕方は駄目だと思う。
たとえば、ブロックの座標を(行,列)で表すとして、(1,2)のブロックは(2,2)だけにしか遷移できない、のように。
たぶん、こういった"遷移可能な場所が1つである部分"がないならどんな固定の仕方でも大丈夫だと思う。
1 2 3
1■□■
2□□□
3□□□
0102デフォルトの名無しさん
2010/11/18(木) 16:14:41飽きた
0103デフォルトの名無しさん
2010/11/18(木) 16:16:590104デフォルトの名無しさん
2010/11/18(木) 16:29:36ごめん、引っ張ってんの俺だわw
たぶん最後のレス。
>>101に間違いあり。
一番下のどんな固定の仕方でも大丈夫と書いたけど、これ間違い。
(e)を遷移させていくと(f)になるんだが、この時点で固定すると(e)に戻せなくなる。
123 123
456 754
78 68
(e) (f)
まぁ、>>101の(a)→(b)→(c)と固定していくのが無難だと思われ。
0106デフォルトの名無しさん
2010/11/18(木) 17:27:10コレって合成先のビットマップも256色なの?
なんかパレット数が妙なことになってるけど
それはなかったことにして24bitか32bitビットマップとしていいのか?
0107デフォルトの名無しさん
2010/11/18(木) 18:08:49>>1
0108デフォルトの名無しさん
2010/11/18(木) 18:13:12>>109
0109デフォルトの名無しさん
2010/11/18(木) 18:21:57[2] 問題文(含コード&リンク):3次元上に3点をランダム発生、半径を指定し、その3点が球面上に乗る球の中心を求めるプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:特になし
球の中心の求め方の参考 ttp://oshiete.goo.ne.jp/qa/195295.html
よろしくおねがいします。
0110デフォルトの名無しさん
2010/11/18(木) 19:11:48二次方程式の解き方を教えてください
0111デフォルトの名無しさん
2010/11/18(木) 20:02:57取りあえず完全乱数版を作ってみた。
これから >>101 方式作って比べてみる。
0112111
2010/11/18(木) 20:03:39http://codepad.org/0ehnVXCt
0113デフォルトの名無しさん
2010/11/18(木) 20:17:58http://codepad.org/r5SGn6ge
0114デフォルトの名無しさん
2010/11/18(木) 20:47:32http://codepad.org/y6kYFh9r
0115デフォルトの名無しさん
2010/11/18(木) 21:05:10[2] 問題文(含コード&リンク):名前、学年、学科、番号を標準入力から入力し、
サブルーチン内で表示するプログラムを作成せよ。(構造体を使用しないこと。)
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C++
[4] 期限:11/19
[5] その他の制限:特になし
連投しますが、よろしくお願いします。
0116デフォルトの名無しさん
2010/11/18(木) 21:09:36[2] 問題文(含コード&リンク):名前、学年、学科、番号を標準入力から入力し、
サブルーチン内で表示するプログラムを構造体を用いて作成せよ。ただし、
構造体のメンバに値を代入する際には変数実体を操作する。
すなわちドット演算子を用いること。
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C++
[4] 期限:11/19
[5] その他の制限:特になし
連投しますが、よろしくお願いします。
0117デフォルトの名無しさん
2010/11/18(木) 21:11:24[2] 問題文(含コード&リンク):>>116において、構造体のメンバに値を
代入する際にポインタを用いて代入するプログラムを作成せよ。
すなわちアロー演算子を用いること
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C++
[4] 期限:11/19
[5] その他の制限:特になし
0118デフォルトの名無しさん
2010/11/18(木) 21:14:54[2] 問題文(含コード&リンク):学年、学科、番号、を表示する
プログラムを作成せよ。ただし、構造体を使用し、構造体のメンバとして
構造体を含むようにすること。
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C++
[4] 期限:11/19
[5] その他の制限:特になし
0119デフォルトの名無しさん
2010/11/18(木) 21:18:24[2] 問題文(含コード&リンク):メンバとしてchar型変数chとint型変数をi、
double型変数dを持つ共用体を用意する。
iに16進数値を代入した後ch,i,dそれぞれを表示する
プログラムを作成せよ。なお、表示する際に、全ての変数を%xで表示すること。
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C++
[4] 期限:11/19
[5] その他の制限:特になし
以上よろしくお願いします。
0120デフォルトの名無しさん
2010/11/18(木) 21:33:43なんかすごいな...
やり方教えたほうがいいのかな...
0121デフォルトの名無しさん
2010/11/18(木) 22:25:25C言語を覚えたての奴が独習として回答するんじゃないのか?
0122デフォルトの名無しさん
2010/11/18(木) 22:57:20[2] 問題文
コンストラクタでrow,columnを指定して、動的に確保
デストラクタを解放
これで足し算メソット add(matrix Y)を作ってください
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:2010/11/20
[5] その他の制限:あまり難しくしすぎないでください。
あと、出力→coutで、入力はcinでお願いします。
0123デフォルトの名無しさん
2010/11/18(木) 23:03:52問題文を日本語で頼む
0124デフォルトの名無しさん
2010/11/18(木) 23:36:13お前日本語読めないの?
0125デフォルトの名無しさん
2010/11/18(木) 23:41:330126デフォルトの名無しさん
2010/11/18(木) 23:45:140127デフォルトの名無しさん
2010/11/18(木) 23:48:22高脳なら低脳の意味不明な文章でも問題なく理解できるが、でも低脳は不可能
低脳は高脳が低脳にあわせて解りやすく言うことしか理解できない
ついでに、低脳同士のコミュニケーションは不可能
0128デフォルトの名無しさん
2010/11/18(木) 23:50:550129デフォルトの名無しさん
2010/11/19(金) 00:00:09望んでるのはこんなんか?入力部分はコメントアウトしてある
ttp://codepad.org/bG4bQkai
0130122
2010/11/19(金) 00:55:47出来たら、coutの部分を日本語でいれていただきたいんですが…
あと、(void)って()の中のvoidは必要ですか?
0131デフォルトの名無しさん
2010/11/19(金) 01:39:08このようなことまで注文するのは
回答者(2ch?)の著作権を尊重しての
ことなのでしょうね。
0132デフォルトの名無しさん
2010/11/19(金) 01:40:51int main() { } でどうぞ。return 0;も省略可。
0133デフォルトの名無しさん
2010/11/19(金) 02:07:32日本語に直すぐらいは自分でやれ、エディターを使った事が無いなら別だけど
引数の void は引数が無いことを明示的に表現しているだけなので省略しても良い
しかし、明示的に表示する事によるデメリットは何も無いので、俺は必ず付ける
0134デフォルトの名無しさん
2010/11/19(金) 14:24:49分かる方いましたらよろしくお願いします。
0135デフォルトの名無しさん
2010/11/19(金) 15:41:570136デフォルトの名無しさん
2010/11/19(金) 16:27:09newしたものを初期化してほしければ
m_Mat[i] = new int[m_column]();
じゃないか?
0137デフォルトの名無しさん
2010/11/19(金) 16:33:26() 付けないとコンストラクタは呼ばれないんだっけ?
忘れてることって多いな....
0138デフォルトの名無しさん
2010/11/19(金) 16:46:21コンパイルエラー
0139デフォルトの名無しさん
2010/11/19(金) 16:48:06やってみたら E2243 new で確保した配列には初期化子が使えない (C++) が出るな
#include <iostream>
class foo {
public: int x; foo( void ) { x = 1; }
};
int main( void ) {
foo* p; int* x; int i;
p = new foo[10]; x = new int[10];
for( i = 0; i < 10; i++ )
std::cout << p[i].x << ", " << x[i] << std::endl;
return 0;
}
試しにこんなコードを書いてみたら、p[].x は全て1に初期化されていたけど、x[] は未初期化状態だ
int はディフォルトコンストラクタを持たないって事かな?
0140デフォルトの名無しさん
2010/11/19(金) 16:50:11int()は単独では使えるけど、配列newには使えないだけ
0141デフォルトの名無しさん
2010/11/19(金) 16:53:11codepadとVC++2010じゃコンパイル出来た。
0142デフォルトの名無しさん
2010/11/19(金) 17:00:2615 A new-expression that creates an object of type T initializes that object as follows:
? If the new-initializer is omitted:
? If T is a (possibly cv-qualified) non-POD class type (or array thereof), the object is defaultinitialized
(8.5). If T is a const-qualified type, the underlying class type shall have a user-declared
default constructor.
? Otherwise, the object created has indeterminate value. If T is a const-qualified type, or a (possibly
cv-qualified) POD class type (or array thereof) containing (directly or indirectly) a member of
const-qualified type, the program is ill-formed;
という事だそうです
0143デフォルトの名無しさん
2010/11/19(金) 17:15:43それは foo に関しても同じ、 foo の配列 new ではディフォルトコンストラクタが呼ばれて x が 1 に初期化されたけど、
int は 0 に初期化されなかったので int にはディフォルトコンストラクタが用意されてないのかという話
0144デフォルトの名無しさん
2010/11/19(金) 17:17:05それはC++0xではいいが
C++ではだめ
POD class type (or array thereof) containing (directly or indirectly) a member of
const-qualified type, the program is ill-formed;
これの意味が分かれば分かるはず
0145デフォルトの名無しさん
2010/11/19(金) 17:18:02ああこれも含めてな
0146デフォルトの名無しさん
2010/11/19(金) 17:37:500147デフォルトの名無しさん
2010/11/19(金) 17:40:410148デフォルトの名無しさん
2010/11/19(金) 18:24:28PODの場合は不定値となるという事
もし new int[constant]() と書くと文法エラー(C++0xではOK)
0149デフォルトの名無しさん
2010/11/19(金) 18:32:38じゃ >>143 は正しい解釈じゃないの?
要は plain old data にはディフォルトコンストラクタが無いことに起因してるんだから
0150デフォルトの名無しさん
2010/11/19(金) 18:44:44int i() とやると iは0に初期化される
しかし配列newの場合はPOD型はデフォルトコンストラクタは呼ばれなくて
不定値になるとちゃんと書いてあるじゃん
0151デフォルトの名無しさん
2010/11/19(金) 19:04:550152mery
2010/11/19(金) 19:10:58[2] 問題文(含コード&リンク):
無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は10等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン: 不明
[3.3] 言語:C
[4] 期限:11月21日
[5] その他の制限:1〜50以外の数字が入力されたときの処理は考えなくていいそうです
よろしくお願いします!
0153デフォルトの名無しさん
2010/11/19(金) 19:15:02その度数分布だと5等分なんじゃ?
0154デフォルトの名無しさん
2010/11/19(金) 19:44:05規格を解釈するとそうなる
0155デフォルトの名無しさん
2010/11/19(金) 19:48:48#include <stdlib.h>
double ave,var;
double heikin(double *array,int n)
{
int i;
double sum=0;
srand(10);
for(i=0;i<n;i++){
array[i] = (double)(rand())/RAND_MAX;
sum+=array[i];
printf("%lf\n",array[i]);
}
return sum;
}
0156デフォルトの名無しさん
2010/11/19(金) 19:50:46{
int d=0;
double *h,r;
printf("乱数の数:");
scanf("%d",d);
h=(double*)malloc(d*sizeof(int));
r= heikin(h,d);
printf("合計:%lf",r);
return 0;
}
乱数の合計値を求めるプログラムなんですが、エラーが発生します。
どこが原因なんでしょうか?
0157デフォルトの名無しさん
2010/11/19(金) 19:54:03sizeof(int)
0158デフォルトの名無しさん
2010/11/19(金) 19:56:05sizeof(int)をどうすれば良いのですか?
0159デフォルトの名無しさん
2010/11/19(金) 20:12:30h=(double*)malloc(d*sizeof(int)); int型のサイズで確保してどーすんだと
0160デフォルトの名無しさん
2010/11/19(金) 20:13:200161デフォルトの名無しさん
2010/11/19(金) 20:20:25scanf("%d",d);
↓
scanf("%d",&d);
0162デフォルトの名無しさん
2010/11/19(金) 20:30:04ありがとうございます。
初歩的なミスでした。
実を言うと、もう一つ質問があります。
この合計から「分散」を計算したいのですが、どうすれば良いですか?
0163mery
2010/11/19(金) 20:57:47すいません、5等分でした。
正しい問題は、
「無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は5等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。 」です。
0164デフォルトの名無しさん
2010/11/19(金) 21:23:30#include <stdio.h>
int main(void)
{
int count[5]={0};
int i, j, x=0;
i=0;
while(1)
{
if(i>=10) break;
scanf("%d", &x);
count[(x-1)/10]++;
i++;
}
i=0;
while(1)
{
if(i>=5) break;
printf("%2d〜%2d : ", i*10+1, (i+1)*10);
j=0;
while(1)
{
if(j>=count[i]) break;
printf("*");
j++;
}
printf("\n");
i++;
}
return 0;
}
0165デフォルトの名無しさん
2010/11/19(金) 21:36:070166デフォルトの名無しさん
2010/11/19(金) 21:37:570167デフォルトの名無しさん
2010/11/19(金) 21:41:390168デフォルトの名無しさん
2010/11/19(金) 21:49:20範囲外の対処が甘かったか。
0169デフォルトの名無しさん
2010/11/19(金) 21:49:34ave=sum/n;
for(i=0;i<n;i++){
gokei+=(sum*((array[i]-heikin)*(array[i]-heikin)));
}
var=gokei/(n-1);
0170デフォルトの名無しさん
2010/11/19(金) 21:50:58いいえ
0171デフォルトの名無しさん
2010/11/19(金) 21:56:25どこが違うのか教えてください
0172デフォルトの名無しさん
2010/11/19(金) 22:45:54ave=sum/N;
for(i=0;i<N;i++){
sum2+=((array[i]-ave)*(array[i]-ave));
}
var=sum2/(N-1);
return var;
}
これで合ってますか?間違っているのなら指摘をお願いします。
0173デフォルトの名無しさん
2010/11/20(土) 00:05:58sum2=0;
をforの前に入れればOK
0174デフォルトの名無しさん
2010/11/20(土) 00:07:400175デフォルトの名無しさん
2010/11/20(土) 00:09:48(二乗の平均) - (平均の二乗)
に等しい、という公式がありますので(http://ja.wikipedia.org/wiki/%E5%88%86%E6%95%A3)
平均を求めるときに二乗の平均もあわせて計算すると、1 pass ですみます。参考までに。
0176デフォルトの名無しさん
2010/11/20(土) 01:35:23ありがとうございます!
0177デフォルトの名無しさん
2010/11/20(土) 01:46:27[2] 問題文
http://imepita.jp/20101120/039760
図の左のプログラム(○つけてある方です)の30行目〜32行目を消して、デストラクタを作って31行目の処理を実装して動作確認をしてください
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:2010/11/22
0178デフォルトの名無しさん
2010/11/20(土) 01:51:07読みづらい
それにSeiseki.hはどこにあるの?
面倒でもcodepadかどこかに上げてくれ
0179デフォルトの名無しさん
2010/11/20(土) 01:53:29そのページを打ち込んだテキストファイルをアップする
それが最低限のマナーだと思うぞ
0180デフォルトの名無しさん
2010/11/20(土) 01:53:42これって、printfはcoutにする事は不可能でしょうか
0181177
2010/11/20(土) 02:02:03ごめんなさい。全体を貼ったほうがいいですね…
0182デフォルトの名無しさん
2010/11/20(土) 02:05:13それもデジカメじゃなくて携帯で撮ったろ
ボケて読めない
テキストで打ち込め
0183デフォルトの名無しさん
2010/11/20(土) 02:20:24もとのテキストをアップすりゃ済むことだろw
0184デフォルトの名無しさん
2010/11/20(土) 02:26:49[2] 問題文(含コード&リンク):平均値:μ,分散:σ^2の分布がn個与えられているとする。
この分布が何であろうと、nの数が多きなるにつれてこの分布の合計は平均:nμ,分散:nσ^2の正規分布に近づくとされる。
要素数n個をもつx個の乱数系列を発生させるプログラムを作れ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2010
[3.3] 言語: C++
[4] 期限:2010年11月22日
[5] その他の制限:�@キーボードから入力すること
�A乱数は配列で保存すること
�B#include <stdio.h>#include <stdlib.h>にしてはじめること
0185177
2010/11/20(土) 02:27:17紙に印刷したんじゃなくて配布のプリントなんです…
0186デフォルトの名無しさん
2010/11/20(土) 02:28:16とっとと宿題をやれ
0187デフォルトの名無しさん
2010/11/20(土) 02:42:250188デフォルトの名無しさん
2010/11/20(土) 02:44:02だから、それを一字一句間違いなく打ち込んでアップするのが出題者の最低限のマナーだ
コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう
0189デフォルトの名無しさん
2010/11/20(土) 02:47:11ヾヽヽ
(,, ・∀・)チュンチュン
ミ_ノ
″″
0190デフォルトの名無しさん
2010/11/20(土) 02:48:51>コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう
これどうやるんですか?
0191デフォルトの名無しさん
2010/11/20(土) 03:14:560192デフォルトの名無しさん
2010/11/20(土) 03:26:10君に言うべき言葉が見つからない、ゴメン
0193デフォルトの名無しさん
2010/11/20(土) 03:30:47>>190
君はこのスレに来る前にしなければならない事が山ほどある
0194デフォルトの名無しさん
2010/11/20(土) 03:35:420195デフォルトの名無しさん
2010/11/20(土) 03:40:16宿題の解答は学校のPCでダウソかな
時代は携帯中心になり、モビリティのないPCはおっさん時代の中心ねだろうな
0196デフォルトの名無しさん
2010/11/20(土) 03:45:36全て机上のペーパープログラミング授業だとしたらどうだろう?
0197デフォルトの名無しさん
2010/11/20(土) 03:45:56よく分からないんだけど、これでいいの?
Seiseki.h http://codepad.org/pD9ELv8a
Seiseki.cpp http://codepad.org/eHbTlLw3
main.cpp http://codepad.org/EosY2r9A
019890
2010/11/20(土) 03:50:57亀レスでごめんなさい。
256色で出力しようと思ってたのですが。
求める画像ができるならどの形式でも問題ありません。
codepad重いみたいなのでおかしいと思ったところを書き直して貼ってみます。
どなたか>>90をお願いします。
#include "stdafx.h"
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
BITMAPFILEHEADER bmfh;
BITMAPINFOHEADER bmih;
FILE *fp = NULL;
int inwidth,inheight,insize;
RGBQUAD eq[256];
for(a=0; a<256; a++)
{
eq[a].rgbBlue = a;
eq[a].rgbGreen = a;
eq[a].rgbRed = a;
eq[a].rgbReserved = 0;
}
0199デフォルトの名無しさん
2010/11/20(土) 03:52:02if(fp==NULL)
{
printf("画像の読み込みに失敗");
exit (-1); /*処理を継続できないので終了する*/
}
fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
inwidth = bmih.biWidth;
inheight = bmih.biHeight;
insize = inwidth * inheight;
unsigned char* red;
red = new unsigned char[insize];
fread( &eq , sizeof(RGBQUAD)*256, 1 , fp );
fread(red, insize, 1, fp);
fclose(fp);
fopen_s(&fp, "緑rec00「RGB」.bmp", "rb");
if(fp==NULL)
{
printf("画像の読み込みに失敗");
exit (-1); /*処理を継続できないので終了する*/
}
fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
unsigned char* green;
green = new unsigned char[insize];
fread( &g , sizeof(RGBQUAD)*256, 1 , fp );
fread(green, insize, 1, fp);
fclose(fp);
0200デフォルトの名無しさん
2010/11/20(土) 03:52:44if(fp==NULL)
{
printf("画像の読み込みに失敗");
exit (-1); /*処理を継続できないので終了する*/
}
fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&bmih, sizeof(BITMAPINFOHEADER), 1, fp);
unsigned char* blue;
blue = new unsigned char[insize];
fread( &eq , sizeof(RGBQUAD)*256, 1 , fp );
fread(blue, insize, 1, fp);
fclose(fp);
unsigned char* rgbrec;
rgbrec = new unsigned char[insize];
RGBQUAD rgb[256*128];
for (a=0; a<insize; a++)
{
rgb[a].rgbBlue = blue[a];
rgb[a].rgbGreen = green[a];
rgb[a].rgbRed = red[a];
rgb[a].rgbReserved = 0;
rgbrec[a] = a;
}
0201デフォルトの名無しさん
2010/11/20(土) 03:53:25bmfh.bfType = 0x4D42;
bmfh.bfSize = 54+insize+(4*256*128);
bmfh.bfReserved1 = 0;
bmfh.bfReserved2 = 0;
bmfh.bfOffBits = 54+4*256*128;
bmih.biSize = 40;
bmih.biWidth = inwidth;
bmih.biHeight = inheight;
bmih.biPlanes = 1;
bmih.biBitCount = 8;
bmih.biCompression = 0;
bmih.biSizeImage = insize;
bmih.biXPelsPerMeter = 0;
bmih.biYPelsPerMeter = 0;
bmih.biClrUsed = 256;
bmih.biClrImportant = 0;
fopen_s(&fp, "rec「RGB」.bmp" , "wb" );
fwrite( &bmfh , sizeof(BITMAPFILEHEADER) , 1 , fp );
fwrite( &bmih , sizeof(BITMAPINFOHEADER) , 1 , fp );
fwrite( &rgb , sizeof(RGBQUAD)*256*128 , 1 , fp );
fwrite( rgbrec , 1 , insize , fp );
fclose( fp );
return 0;
}
0202デフォルトの名無しさん
2010/11/20(土) 03:54:050203デフォルトの名無しさん
2010/11/20(土) 04:25:28君がアンカーをミスらなければもっと早く答えたんだけどね
void Matrix::disp( void )
{
if( m_Mat ) {
int i, j;
for( i = 0; i < m_row; i++ ) {
cout << "|\t";
for( j = 0; j < m_column; j++ )
cout << m_Mat[i][j] << "\t";
cout << "|" << endl;
}
}
}
これの話だと思う、別にC++だからprintf() を使ってはいけない理由は無いと思うんだけどな
0205デフォルトの名無しさん
2010/11/20(土) 05:38:00全部書き直したいくらいのソースだけど
一応可能な限り残して修正
てか、これ色々エラー処理入れたほうがいいんじゃないか?
吐き出しフォーマットは24bitビットマップ
http://codepad.org/9jTAUdhP
0206デフォルトの名無しさん
2010/11/20(土) 10:27:17http://codepad.org/VbJwxmH3
C標準関数rand()の質が悪いのでもっと良いrand()を使えば
いい結果が得られると思う
0207デフォルトの名無しさん
2010/11/20(土) 10:31:37ごめん乱数は配列に保存すると題意にあったのでarray[]に保存している
表示はしていない
http://codepad.org/Piz4GErK
0209デフォルトの名無しさん
2010/11/20(土) 14:10:20正しくは、
�A乱数は配列で保存すること → �A乱数は「動的確保された」配列に保存すること
ごめんなさい。
0210デフォルトの名無しさん
2010/11/20(土) 14:21:25�C乱数係数xはキーボードから入力するようにプログラムすること
を追加してください。
0211デフォルトの名無しさん
2010/11/20(土) 14:33:26[2] 問題文(含コード&リンク):赤い領域と白い領域が隣り合っているところを抽出せよ。
[3] 環境
[3.1] OS:Windows、visual studio2005
[3.3] 言語:どちらでも可。
[4] 期限:今日か明日には完成させたいです。
[5] その他の制限:できるだけわかりやすいと嬉しいです。
とりあえず赤い領域は抽出できたのですが隣り合う白い領域を抽出するのができないです。
ラスタスキャンし、赤い画素を見つけたら4近傍を探索し、白い画素だったら抽出…という方向で組んでいるのですが
白い画素を見つけたとき、その白い画素の4近傍もまた探索しないといけないのでここでつまづいています。
よろしくお願いします。
0212デフォルトの名無しさん
2010/11/20(土) 14:36:19乱数は動的確保された配列に保存されています
乱数係数xの意味がよくわかりません
具体的に説明をお願いします
もしかしてsrand()に与える値ですか?
0213211
2010/11/20(土) 14:43:00// 赤色領域の4近傍を探索し、白色であった場合抽出する
for (y = 0; y < hsvImage->height; y++) {
for (x = 0; x < hsvImage->width; x++) {
cnt++;
p[0] = hsvImage->imageData[hsvImage->widthStep * y + x * 3]; //座標(x,y)のH(色相)値を取得
p[1] = hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1]; //座標(x,y)のS(彩度)値を取得
p[2] = hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2]; //座標(x,y)のV(輝度)値を取
//赤い画素を見つけたら
if(((p[0] >= THRESH_BOTTOM1) && (p[0] <= THRESH_TOP1)) || ((p[0] >= THRESH_BOTTOM2) && (p[0] <= THRESH_TOP2))){
if((p[2] >= THRESH_BOTTOM4) && (p[2] <= THRESH_TOP3)){
//// 4近傍を探索し、白色の画素があれば抽出(とりあえず左だけ)
x = x - 1;
if((p[2] >= THRESH_BOTTOM3) && (p[2] <= THRESH_TOP3)){
p[0] = cvRound(255);
p[1] = cvRound(255);
p[2] = cvRound(255);
flag=1;
}x=x+1;
0214211
2010/11/20(土) 14:44:08}
if((p[0] >= THRESH_BOTTOM1 && p[0] <= THRESH_TOP1) || p[0] >= THRESH_BOTTOM2 && p[0] <= THRESH_TOP2){
if((p[2] >= THRESH_BOTTOM4) && (p[2] <= THRESH_TOP3)){
hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(255);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(255);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(255);
}
}else if((p[0] == THRESHOLD_MAX_VALUE) && (p[1] == THRESHOLD_MAX_VALUE) && (p[2] == THRESHOLD_MAX_VALUE)){
hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(100);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(100);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(100);
}else{
hsvImage->imageData[hsvImage->widthStep * y + x * 3] = cvRound(0);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 1] = cvRound(0);
hsvImage->imageData[hsvImage->widthStep * y + x * 3 + 2] = cvRound(0);
}
//printf("flag:%d\n",y);
if(flag==1){
y = y -1;
flag=0;
}
}
}
今のところこんな感じです。
赤い画素をH,S,V全てに255をセットし、みつけた白い画素をH,S,V全てに100をセットしています
0215デフォルトの名無しさん
2010/11/20(土) 14:44:18サンプル画像も貼らずに質問とな?
説明の意味が分からんのだが、赤い領域と白い領域の境界を見るのなら
「白い画素の4近傍もまた探索」は必要ないのではないか?
とりあえず赤い領域と白い領域が何をさしてるのかちゃんと説明してくれ
0216デフォルトの名無しさん
2010/11/20(土) 14:52:32>>210
奇特な >>129 がせっかく書いてくれてるのに、
理解する能力もなければ(ホントに全くないよね)、
理解する気持ちもない。
君は単位落とすべきでは?
0217211
2010/11/20(土) 14:55:50http://www1.axfc.net/uploader/Img/link.pl?dr=4588966666&file=Img_100662.jpg
画像用意しました。
この中からエビの部分だけを抽出したいんです。
0218デフォルトの名無しさん
2010/11/20(土) 16:08:510219デフォルトの名無しさん
2010/11/20(土) 16:12:39乱数係数ではなく「乱数系列」でした。
0220デフォルトの名無しさん
2010/11/20(土) 16:13:40CDC MemDC1,MemDC2;を用意し、
MemDC1は白い色だけの色を残し、それ以外はCOLORREF=0にする。
MemDC2は赤い色だけの色を残し、それ以外はCOLORREF=0にする。
MemDC1とMemDC2のCOLORREF≠0の部分を縦横4ドットずつ広げる。
MemDC1とMemDC2のandを取る。
こんな感じでだめか?
0221デフォルトの名無しさん
2010/11/20(土) 16:15:16>>122は私が書いたのものではないのですが…
0222デフォルトの名無しさん
2010/11/20(土) 16:17:52http://codepad.org/Z4Tdf8rM
0223デフォルトの名無しさん
2010/11/20(土) 16:56:39[2] 問題文(含コード&リンク):双方向リストを使って、複数行を読み込み、読み込んだ行をそのままの順に出力するプログラムを完成させなさい。
[3] 環境
[3.1] OS: Windows7(Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0
[3.3] 言語:_C
[4] 期限:今日中
[5] その他の制限: 特になし
0224デフォルトの名無しさん
2010/11/20(土) 17:06:52従業員のやりがいとか成長とか全く興味がないからな。ビジネスモデルがピンはねなんだからやつらの考えることは
如何に従業員をこき使うかしか考えてない。それでしか利益を上げられないんだから。
普通会社の存在理由って、世の中に新しい価値を提供したいとかそういうことじゃん?
でもITの経営者のやることは技術者を売ってピンはねで金儲けすることだけだから。
技術者の命より金の方が優先度が高い世界だぞ?そりゃ精神病んで自殺に追い込まれるよ。
0225デフォルトの名無しさん
2010/11/20(土) 17:20:49[2] 問題文(含コード&リンク):http://hibari.2ch.net/test/read.cgi/tech/1289913298/224 はどこか
のスレからの誤爆である。このスレを探し、何に対するレスであるか示すプログラムを書きなさい。
[3] 環境
[3.1] OS: Windows7(Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0
[3.3] 言語:_C
[4] 期限:今日中
[5] その他の制限: 特になし
0226デフォルトの名無しさん
2010/11/20(土) 17:43:07画像ファイルの扱いは不慣れなので、変なところがあるかもしれませんが、
取りあえずエビっぽいのが抽出できたんで。
http://www1.axfc.net/uploader/Sc/so/175292.zip
0227デフォルトの名無しさん
2010/11/20(土) 17:46:04すごいシンプルだな、参考にさせてもらうよ
俺もがんばって解いたが発狂しそうになった
http://codepad.org/BsfWdhLl
0228デフォルトの名無しさん
2010/11/20(土) 17:53:22問題読んですらないけど51-98行の圧迫感にワロタw
力作おつです。
0229デフォルトの名無しさん
2010/11/20(土) 17:58:13出掛けていて遅くなった
http://codepad.org/3mIpUOYz
これでいいのかな
ちなみにcodepadには上げてないけど、自前のもっと質の良い乱数発生
ルーチンを使ったら発生個数を上げると平均、分散ともに桁数の一致が
良くなりました
でも宿題用ならこれで十分でしょう
0230226
2010/11/20(土) 18:01:15ごめん。↓ここがおかしいわ。
gAnd[y][x] = 0;
int xx,yy;
for (yy=((y-3)<0?0:(y-3)) ; !gAnd[y][x] && yy<((y+3)>300?300:(y+3)) ;yy++) {
for (xx=((x-3)<0?0:(x-3)) ; !gAnd[y][x] && xx<((x+3)>300?300:(x+3)) ;xx++) {
if (gW[y][x] && gR[y][x]) {
gAnd[y][x] = 1;
}
}}
正しくは、というより俺がイメージしたのは↓。
/* "3ドット広げて、W,Rともドットがあったら"って処理のつもり */
gAnd[y][x] = 0;
int xx,yy;
int flag = 0;
for (yy=((y-3)<0?0:(y-3)) ; !gAnd[y][x] && yy<((y+3)>300?300:(y+3)) ;yy++) {
for (xx=((x-3)<0?0:(x-3)) ; !gAnd[y][x] && xx<((x+3)>300?300:(x+3)) ;xx++) {
if (gW[y][x]) flag |= 1;
if (gR[y][x]) flag |= 2;
if (flag==3) gAnd[y][x] = 1;
}}
0231デフォルトの名無しさん
2010/11/20(土) 18:19:43ありがとうございます。
ところで、このプログラムは、#include <math.h>と#include <time.h>を使わずにつくれますか?
できればなしのプログラムも欲しいんです。
何度も注文つけてしまってすいません。
0232211
2010/11/20(土) 18:21:31ありがとうございます!
キレイに抽出できてますね…
ソースが難しいので頑張って解読してみます。
0233デフォルトの名無しさん
2010/11/20(土) 18:39:43できるけどsinとかcosとかを自分で作らないといけないよ?
もともとあるものを自分で作るのは全く無意味だし
問題の本質ではないからこのままでいいんじゃない?
math.hとtime.hを使いたくない理由が分からないけど
もし習ってないとか言うバカげた理由なら考えを改めたほうがいいよ
0234デフォルトの名無しさん
2010/11/20(土) 18:39:46スケルトンから変えたのはほぼ View の40〜120行目あたりだけ。
ソースがみずらくてすまんが、やってることは大したことない。
1.白と赤の部分だけを取り出す。gW , gR
2.白と赤のORを作る。gOr
3.白と赤を3ドット広げて、重なり部分を取り出す。gAnd
4.gOrの島の中から,gAndが含まれる部分を抽出する。gMsk
おそらく君にとって、Fillだけがキモだと思うが、
gOr && gAnd を見つけたら gMsk を1にし、
その上下左右にgOrが続いていたら、xy座標を更新してFillを再起する。
最初の基点からジワーッとgOrをあぶりだしていく感じ。
0235デフォルトの名無しさん
2010/11/20(土) 18:40:32あ、>>229は<time.h>はもう不要なので取り忘れました
<math.h>はlog()とsqrt()とsin()とcos()を呼び出すのに必要なので、
やるとすれば疑似的な発生法しかありません
それで作ってみます
0236211
2010/11/20(土) 18:49:05スケルトンをまず知らないのでww
c言語でお願いすればよかったと後悔してます\(^o^)/
0237デフォルトの名無しさん
2010/11/20(土) 18:54:45http://codepad.org/Z7lv5P4I
floor()もsqort()も使えなくなったので、分散を求める事が出来ないので
発生した正規分布の乱数を表示するようにしました
0238デフォルトの名無しさん
2010/11/20(土) 19:52:140239デフォルトの名無しさん
2010/11/20(土) 20:21:00無理なお願いを聞いて頂きありがとうございます。
0240デフォルトの名無しさん
2010/11/20(土) 21:09:33ありがとうございます。
RGBTRIPLEなんて構造体があったのですね。
0241デフォルトの名無しさん
2010/11/20(土) 21:13:01[2] 問題文(含コード&リンク)
問題1 1から10までの整数の表示をするプログラムを、 do-while 文とを使用して作成しなさい。
< 実行例 > 1 2 3 4 5 6 7 8 9 10
問題2 10から1までの整数の表示をするプログラムを、 while 文を使用して作成しなさい。
< 実行例 > 10 9 8 7 6 5 4 3 2 1
問題3
キーボードから 読み込ん だ整数が1〜9の範囲内の場合は 繰返し、それ以外の場合は終了するプログラムを作成しなさ い。
< 実行例 >
整数: 8
範囲内です
整数: 3
範囲内です
整数: 11
範囲外です。
終了します。
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:11月21日
[5] その他の制限: なし
よろしくお願いします。
0242デフォルトの名無しさん
2010/11/20(土) 21:43:31http://codepad.org/DE6gfYRT
0243デフォルトの名無しさん
2010/11/20(土) 21:45:35http://hibari.2ch.net/test/read.cgi/tech/1289715349/80
0244デフォルトの名無しさん
2010/11/20(土) 21:46:58おいおい問題があるスレに誘導するなよ
今運営に報告してきた所だぞ
0245デフォルトの名無しさん
2010/11/20(土) 21:55:53報告先の URL を教えてください。
回答がありしだい、誘導を停止します。
0246デフォルトの名無しさん
2010/11/20(土) 21:57:50その前にどうして誘導するのかその理由を聞かせてくれないか?
ここが宿題スレだろうに
誘導するのなら確固とした理由が必要だろ
0247デフォルトの名無しさん
2010/11/20(土) 22:03:49いいかげん他スレにちょっかい出すのやめればいいのに
自分が立てたスレに責任が持てないなら削除依頼だしてこいよ
0248デフォルトの名無しさん
2010/11/20(土) 22:05:32このスレから誘導すんな
このスレの意味が無くなる
0249226
2010/11/20(土) 22:19:01ちょっといじるとスタックオーバーフロー起こすので消しました。>>226
一応スタックオーバーフローの暫定対策版を↓に置いときます。
http://www1.axfc.net/uploader/Sc/so/175392.zip
0250デフォルトの名無しさん
2010/11/20(土) 22:21:48思う存分落とせばいいじゃん。
0251デフォルトの名無しさん
2010/11/20(土) 22:23:10ツールってのは、コマンドとして実行させて、終了とともに結果を得るもの、ってつもり。
0252デフォルトの名無しさん
2010/11/21(日) 00:34:14ツールだから落ちてもいいという根拠は何も出ていない。
0253デフォルトの名無しさん
2010/11/21(日) 02:32:40そうでなければ、あまりにも無責任
0254デフォルトの名無しさん
2010/11/21(日) 03:09:350255デフォルトの名無しさん
2010/11/21(日) 09:51:24入力した名前(アルファベット)を昇順に並び変える
sort_by_nameという関数を作りたいです。
2文字目ぐらいまで判定できればいいです。
数字の昇順ならできるのでヒントだけでもください。
http://codepad.org/6vjN9ld1
0256デフォルトの名無しさん
2010/11/21(日) 10:20:54[2] 問題文(含コード&リンク):
つると亀が合わせてn匹います。足の数は合わせてmです。
nとmを入力して、つると亀がそれぞれ何匹いるのか求めるプログラムを作りなさい。
もし解がない場合は、その旨を出力するようプログラムすること。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [無期限]
[5] その他の制限:if、while、for、配列、多重ループ、関数まで習いました。
よろしくお願いします。
0257デフォルトの名無しさん
2010/11/21(日) 10:30:42strncmp
0258デフォルトの名無しさん
2010/11/21(日) 10:37:01http://codepad.org/rvBnDcMH
0259デフォルトの名無しさん
2010/11/21(日) 11:01:00http://codepad.org/jxPppob9
0261デフォルトの名無しさん
2010/11/21(日) 14:30:29[2] 問題文: 4つの整数s,m,l,xlを小さい順に並べ替えるプログラムを作成しなさい。
ただし、並び替えをする部分はユーザ定義関数化し、
並び替え後の結果をmain関数で出力するようにすること。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限:11月23日まで
よろしくお願いしますm(__)m
0262デフォルトの名無しさん
2010/11/21(日) 14:46:04[2] 問題文(含コード&リンク): ・ランダムな整数列を生成し,挿入ソート・シェルソートにより
並べ替えるプログラムを作れ
・実行時間を計測せよ
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C/C++/どちらでも可
[4] 期限:11月24日
[5] その他の制限: unixのrand()とtimeコマンドを使用すること
mainの中もお願いします。
0263デフォルトの名無しさん
2010/11/21(日) 14:46:17#include <stdio.h>
void swap(int *a, int *b){int temp=*a; *a=*b; *b=temp;}
void sort(int *s, int *m, int *l, int *xl){
if(*s>*m) swap(s,m); if(*s>*l) swap(s,l); if(*s>*xl)swap(s,xl);
if(*m>*l) swap(m,l); if(*m>*xl)swap(m,xl);
if(*l>*xl)swap(l,xl);
}
int main(){
int s = 4, m = -33, l = 232, xl= 83;
sort(&s, &m, &l, &xl);
printf("s = %d, m = %d, l = %d, xl = %d",s, m, l, xl);
return 0;
}
0264デフォルトの名無しさん
2010/11/21(日) 16:27:49http://hibari.2ch.net/test/read.cgi/tech/1289715349/83
0265デフォルトの名無しさん
2010/11/21(日) 16:29:54[2] 問題文: http://www.dotup.org/uploda/www.dotup.org1261761.txt.html
[3] 環境
[3.1] OS: Cygwin on Windows
[3.2] コンパイラ名とバージョン: gcc 4.3.4
[3.3] 言語: C
[4] 期限:11月22日まで
どうか宜しくお願いします。
0266デフォルトの名無しさん
2010/11/21(日) 16:35:16◆QZaw55cn4cの出張ウザイです
0267デフォルトの名無しさん
2010/11/21(日) 19:08:46入力してテストってのは面倒だからやってない、入力するには5行目の #define TEST をコメントアウトしてくれ
コードの問題で化けると嫌なので出力は英語になってるので気に喰わなければ勝手に直してくれ
ttp://codepad.org/jfDB88t9
0269デフォルトの名無しさん
2010/11/21(日) 19:19:16コマンドプロンプトのmoreの役割をするプログラムを作るのはどうすればいいのでしょうか?
既に出来ているテキストファイルをコマンド上に表示するだけなのですが
出来ればソースをお願いします
0270デフォルトの名無しさん
2010/11/21(日) 19:24:280271デフォルトの名無しさん
2010/11/21(日) 19:38:42ありがとうございます
0272デフォルトの名無しさん
2010/11/21(日) 19:48:22助かりました。
これからがんばって読みます。
ありがとうございました。
0273デフォルトの名無しさん
2010/11/21(日) 21:40:07[2] 問題文
問題1.文字列を入力し、入力された文字列について、次の1~6のすべてを表示するプログラムを作
成しなさい。
1 全文字の合計文字数
2 数字の文字数
3 英大文字の文字数
4 英小文字の文字数
5 空白の文字数
6 その他の文字の文字数
ただし、
・ 下記の実行結果のように、それらの数値を表示しなさい。
・ データの読み込みは getchar 関数を使うこと。
問題2.12 個の整数を入力し、それらの 3 倍の数値を表示するプログラムを作成しなさい。
ただし、
・入力した整数は、4 行 3 列の 2 次元配列に格納しなさい。
・配列の作成と表示にはループ制御を使用すること。
・下記の実行結果になるようにしなさい。
Column1 Column2 Column3
------------------------------------
Row1 : 3 6 9
Row2 : 300 600 900
Row3 : 3000 6000 9000
Row4 : 30000 60000 90000
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:2010/11/20
[5] その他の制限: あまり難しくないようにお願いします。
繰り返しと条件判断と配列と簡単な関数までぐらいしか授業はやっていません。
0274デフォルトの名無しさん
2010/11/21(日) 21:50:02http://hibari.2ch.net/test/read.cgi/tech/1289715349/87
0275デフォルトの名無しさん
2010/11/21(日) 21:55:210276デフォルトの名無しさん
2010/11/21(日) 23:10:03ありがとうございました!とても助かりました!
0277デフォルトの名無しさん
2010/11/22(月) 07:46:51問題2だけ。
http://codepad.org/vx9De2AX
0278デフォルトの名無しさん
2010/11/22(月) 08:32:07問題1もやってみた。
C++でgetcharってこういうことかな?
http://codepad.org/7LG4EKWZ
0279デフォルトの名無しさん
2010/11/22(月) 12:53:40>>277
>>278
折角やっていただいたのにすみません!;
実行してみましたができませんでした。
普通にgetchar関数を使えと言われたんですが・・・。
0280デフォルトの名無しさん
2010/11/22(月) 13:08:02[2] 問題文
#include <stdio.h>
#include <string.h> /*strlenのため */
void
main( void )
{
char mojis[16]; /* 文字列を入れるための配列 */
int i;
int n; /* 'e'の数 */
printf("文字列:");
scanf("%15s", mojis );
mojis[15] = '\0';
for( i=0, n=0; mojis[i]; i++ ) /* ヌル字まで順に見ていく */
{
if( mojis[i] == 'e' ) /* 文字と文字定数との比較 */
{
n++;
}
}
printf( "文字数 %d のうち'e'は %d個", strlen(mojis ), n );
return; }
このプログラミングを改造
1.strlenを使わずに文字数をカウントする。
[3] 環境
[3.1] OS:Windows、visual studio2005
[3.3] 言語:C
[4] 期限:11月22日
0281デフォルトの名無しさん
2010/11/22(月) 13:16:54#include <stdio.h>
int main( void )
{
char mojis[16]; /* 文字列を入れるための配列 */
int i;
int n; /* 'e'の数 */
int len; /* 文字の数 */
printf("文字列:");
scanf("%15s", mojis );
mojis[15] = '\0';
for( i=0, n=0, len=0; mojis[i]; i++ ) /* ヌル字まで順に見ていく */
{
len++ ;
if( mojis[i] == 'e' ) /* 文字と文字定数との比較 */
{
n++;
}
}
printf( "文字数 %d のうち'e'は %d個", len, n );
return 0 ;
}
0282デフォルトの名無しさん
2010/11/22(月) 13:34:320283デフォルトの名無しさん
2010/11/22(月) 13:40:41書いてくれてるプログラムはC++だけど
入出力以外はCと同じだから
#include <iostream>は#include <stdio.h>
std::getchar()はgetchar()
std::cout〜の行はprintf()
std::cin〜の行はscanf()に置き換えれば動くと思うよ
0284mery
2010/11/22(月) 13:42:181] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):
無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は5等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:11月21日
[5] その他の制限:1〜50以外の数字が入力されたときの処理は考えなくていいそうです
で書き込ませていただいた者なんですが、教えていただいた通り、打ち込んでみたのですが、実行結果がでませんでした。
なぜでしょうか?
0285デフォルトの名無しさん
2010/11/22(月) 13:47:00iだと1引かないといけないのがなんか気持ち悪い
0286デフォルトの名無しさん
2010/11/22(月) 13:48:32え?w
0287デフォルトの名無しさん
2010/11/22(月) 14:06:22>>164 でうまくいきますよ。「実行結果がでませんでした」というのは、どういう状態か、もう少し詳しく教えてください。
0288デフォルトの名無しさん
2010/11/22(月) 14:09:000289デフォルトの名無しさん
2010/11/22(月) 14:11:48入力はできてるところをみると可能性はありそう
0290デフォルトの名無しさん
2010/11/22(月) 15:04:40ありがとうございました。参考にします。
0293ごばくすみません
2010/11/22(月) 16:00:49>以前152
>で書き込ませていただいた者なんですが、教えていただいた通り、打ち込んでみたのですが、実行結果がでませんでした。
>なぜでしょうか?
7行目>>164
i=0; を
i=0; puts("数値を入力>"); に変えてみようか?
0294デフォルトの名無しさん
2010/11/22(月) 16:47:17[2] 問題文:
変数iに100が入っています、
iとは別に、50,75,55,60というように、ランダムな数字の配列があり、
次にくる数字が前の数字(ここでは60)より、5%大きかったら、
iに1を加算するプログラムを作成。
-5%なら-1で、10%なら+2するといった感じです。5%未満なら加算しません。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限:特に無し
よろしくお願いいたします。
0295デフォルトの名無しさん
2010/11/22(月) 17:07:410296デフォルトの名無しさん
2010/11/22(月) 17:11:47ランダムな数字の配列に負数とかゼロが出現する可能性はあるのかな?
0297デフォルトの名無しさん
2010/11/22(月) 17:12:03そうです。私の頭じゃさっぱりで・・・if文の乱立しか思い浮かびません。
0298デフォルトの名無しさん
2010/11/22(月) 17:13:35負数やゼロはなしでお願いします。
問題にはありませんが、1〜100あたりの乱数が入ると思っていただければ。
0299デフォルトの名無しさん
2010/11/22(月) 17:19:56#include <stdio.h>
int main(void)
{
int i, j;
int data[]={50, 75, 55, 60, 0};
i=100;
for(j=1;data[j]>0;j++)
{
i+=(data[j]-data[j-1])*20/data[j-1];
}
printf("i=%d\n", i);
return 0;
}
0300299
2010/11/22(月) 17:54:23>>299 の修正
負数の割り算は気持ち悪いので
#include <stdio.h>
int main(void)
{
int i, j;
int data[]={50, 75, 55, 60, 0};
i=100;
for(j=1;data[j]>0;j++)
{
if(data[j]>data[j-1])
i+=(data[j]-data[j-1])*20/data[j-1];
else
i-=(data[j-1]-data[j])*20/data[j-1];
}
printf("i=%d\n", i);
return 0;
}
0301デフォルトの名無しさん
2010/11/22(月) 18:42:03ありがとうございます!
こういう式がさっと出てこないんですよね・・・頭悪いのが嫌になる・・・
0302デフォルトの名無しさん
2010/11/23(火) 08:07:57[2] 問題文:診断メーカー風のプログラムを作成しなさい。
名前を入力し、その名前に基づき何かしらの情報を出力。
.txtファイルを読み込み出力できるものにする事。
(オプション)日替わりで表示結果を変更。複数の組み合わせなど。
[3] 環境
[3.1] OS:Linux
[3.3] 言語:C++
[4] 期限:2010年11月23日12:00まで
自分の頭では何をどうしていいのかさっぱりわかりません。
ヒントだけでも良いので、どうかよろしくお願いします。
0303デフォルトの名無しさん
2010/11/23(火) 08:24:05テキストファイルの中に名前が書かれているの?
0304デフォルトの名無しさん
2010/11/23(火) 09:19:39http://codepad.org/wdclLmtI
0305デフォルトの名無しさん
2010/11/23(火) 09:29:08http://codepad.org/sgXIaOtZ
0306デフォルトの名無しさん
2010/11/23(火) 09:31:48脳内メーカーみたいな物を作れって事かな?
ならば、先ずは仕様を決めることが必要だ
例えば名前の文字列を1Byteづつ評価し、0〜15なら毒、16〜31なら薬、32〜47なら愛.....等々の評価を与える
最後に全文字が何の評価を与えたかを集計すれば、毒:M%、愛:M%、薬:O%みたいな出力を出せるだろ
txtファイルを読むというのは引数にテキストファイル名が指定された場合にはそのファイルに書かれている
名前を標準入力の変わりに使えと言う事だと思う
参考になれば幸いだ
0307デフォルトの名無しさん
2010/11/23(火) 09:44:29#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
unsigned str2number(std::string str){
unsigned ret=7743; // 必要ならここに日付を数値化したものを足す time(NULL)/(60*60*24) みたいに
for(unsigned i=0;i<str.length();i++) ret=ret*37+str[i];
return ret;
}
int main(void){
std::string name, buf;
std::ifstream ifs("data.txt");
std::cout << "名前を入力してください : ";
getline(std::cin, name);
srand(str2number(name));
std::cout << name << " さんの" << std::endl;
while(getline(ifs, buf)){
if(buf[0]=='#'){
std::string theme, result;
theme=buf.substr(1);
for(int i=1;getline(ifs, buf);i++){
if(buf=="") break;
if(rand()%i==0) result=buf;
}
std::cout << theme << " は " << result << " です"<< std::endl;
}
}
return 0;
}
0308307
2010/11/23(火) 09:45:47#運勢
大吉
吉
凶
#ラッキーアイテム
トイレットペーパー
栓抜き
生卵
ブルーアイズホワイトドラゴン
#ラッキーカラー
透明
シルバー
0309デフォルトの名無しさん
2010/11/23(火) 09:51:16argcのチェックを入れるべき。
0310デフォルトの名無しさん
2010/11/23(火) 14:27:43[2] 問題文:http://codepad.org/Duo48tj4
[3] 環境
[3.1] windows
[3.2] visual studio2010
[3.3] C言語
[4] 2010/11/26まで
[5]配列、関数、文字列、関数形式マクロ、再帰は習っています。
構造体、ポインタ等は習っていません。
問題文が長く改行が多すぎて書き込めなかったのでcodepaに問題文も書きましたが
問題があったら言ってください。
お願いいたします。
0311デフォルトの名無しさん
2010/11/23(火) 14:45:140312デフォルトの名無しさん
2010/11/23(火) 15:44:22http://codepad.org/XoOdAJHA
0313デフォルトの名無しさん
2010/11/23(火) 15:59:54>>312
御回答ありがとうございます。
無事できました。有難うございます。
>>311
あ…やっぱり文章を入れる物ではなかったですか…。
0314デフォルトの名無しさん
2010/11/23(火) 17:34:14[2] 問題文(含コード&リンク)
2分法により2の平方根を計算して表示するプログラムを作れ。
解の存在範囲|xb-xa|が矛め決めた値より小さくなったら計算を停止(収束判定)するようにせよ。
*注意
(1)f(xa)とf(xb)の符号が反対であるか否かの判定法を考えよ。
(2)f(xa)とf(xb)が共に同符号になるようなxa,xbが入力された場合に対処すること。
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:11月24日
[5] その他の制限: なし
よろしくお願いします。
0315デフォルトの名無しさん
2010/11/23(火) 20:04:09http://hibari.2ch.net/test/read.cgi/tech/1289715349/118
0316デフォルトの名無しさん
2010/11/23(火) 20:40:27http://codepad.org/OKPlr6yi
0317デフォルトの名無しさん
2010/11/23(火) 21:13:54たとえば、100個の数字が用意されたファイルを用意します。
そのファイルを使って平均値を求めるプログラムを作りたいのですが教えてください。
ファイル名は適当で良いです。
平均値を求める計算は関数部分でお願いします。
0318デフォルトの名無しさん
2010/11/23(火) 21:20:32をPerlでお願いします。
0319デフォルトの名無しさん
2010/11/23(火) 21:42:51system("cat temp.txt | perl -e \"while(<>){$i+=$_} print $i/100\"");
return 0;
}
0320デフォルトの名無しさん
2010/11/24(水) 00:37:03[2] 問題文: n 個の整数型データ配列a[i]を、一つの関数に渡して、
その一つの関数内で平均値と分散値を求め、main関数内で
平均値と分散値を参照できるプログラムを作成せよ。
ただし、配列の受渡し、結果の受け渡しにはポインタを利用すること。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:11月25日まで
[5] その他の制限:なし
宜しくお願いします。
0321デフォルトの名無しさん
2010/11/24(水) 00:57:35#include <stdio.h>
void func( int n, int* arr, double* heikin, double* bunsan ) {
int i, sum = 0, sum2 = 0;
for( i = 0;i < n; i++ ) {
sum += arr[i];
sum2 += ( arr[i] * arr[i] );
}
*heikin = (double)sum / (double)n;
*bunsan = (double)sum2 / (double)n - *heikin;
}
int main( void ) {
int arr[] = {1,2,3,4,5};
double h, b;
func( 5, arr, &h, &b );
printf( "heikin = %lf, bunsan = %lf\n", h, b );
return 0;
}
0322デフォルトの名無しさん
2010/11/24(水) 01:03:21*bunsanの式の右辺第二項は*heikinの二乗
0323デフォルトの名無しさん
2010/11/24(水) 01:07:57[2] 問題文: リーマン予想の解をアルゴリズム化して10^100桁の素数を決定的に因数分解する
プログラムを作成せよ
[3] 環境
[3.1] OS:Windows、Mac
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:1月25日まで
[5] その他の制限:しらみつぶしに因数分解するプログラムは不可
宜しくお願いします。
0324デフォルトの名無しさん
2010/11/24(水) 01:08:52そうだった
*bunsan = (double)sum2 / (double)n - *heikin * *heikin;
に修正、*が並ぶと気持ち悪いな
0325デフォルトの名無しさん
2010/11/24(水) 01:08:59おいww
0326デフォルトの名無しさん
2010/11/24(水) 01:12:23素数を決定的に因数分解するって?
0327デフォルトの名無しさん
2010/11/24(水) 01:13:36俺もそれ気になってた
素因数分解って言ってないから実数でもいいのか?だとしたら無数に存在するけど
0329デフォルトの名無しさん
2010/11/24(水) 01:29:50情報量として (10^100)/2.41 byte分なんてしらみつぶししようとも思わないw
0330デフォルトの名無しさん
2010/11/24(水) 01:36:40[1] 授業単元:メディア基礎
[2] 問題文(含コード&リンク):数式X=[{16/(k*π)^2}^2]がある。
kが整数1〜30の時のXの値をそれぞれ出力するプログラムをCで書きなさい。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日午前十時まで
[5] その他の制限: 特に無いと思います。
よろしくお願いしますorz
0331デフォルトの名無しさん
2010/11/24(水) 01:39:43だとしたら与えられた素数をそのまま出力するだけで終了じゃね?
0332デフォルトの名無しさん
2010/11/24(水) 01:47:23[2] 問題文: リーマン予想の解をアルゴリズム化して10^100桁の合成数を決定的に因数分解する
プログラムを作成せよ
[3] 環境
[3.1] OS:Windows、Mac
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:1月25日まで
[5] その他の制限:しらみつぶしに因数分解するプログラムは不可
宜しくお願いします。
0333デフォルトの名無しさん
2010/11/24(水) 01:56:140334デフォルトの名無しさん
2010/11/24(水) 01:59:44#include <stdio.h>
int main(void)
{
int i, k;
double PI = 3.14159265358979323846;
for(k = 1; k <= 30; k++) {
double t = 4 / (PI * k);
for(i = 0; i < 2; i++) t *= t;
printf("k = %d X = %f\n", k, t);
}
return 0;
}
0335デフォルトの名無しさん
2010/11/24(水) 02:01:19http://codepad.org/9BCsk9I2
0336デフォルトの名無しさん
2010/11/24(水) 02:05:09http://codepad.org/Lg7TVQgT
0337デフォルトの名無しさん
2010/11/24(水) 02:06:41ノーベル科学賞でも受賞できんじゃね?w
0338デフォルトの名無しさん
2010/11/24(水) 02:10:26俺がアンカーミスってたとは・・・
0339デフォルトの名無しさん
2010/11/24(水) 02:12:22数学にノーベル賞は無い
0340デフォルトの名無しさん
2010/11/24(水) 02:13:260341デフォルトの名無しさん
2010/11/24(水) 02:21:44ありがとうございます!
ほんとうに助かりました!
0342デフォルトの名無しさん
2010/11/24(水) 02:27:07数学が無いことくらい知っているから敢えて 科学 の面で言ってみたんだが・・・
0343デフォルトの名無しさん
2010/11/24(水) 02:29:040344デフォルトの名無しさん
2010/11/24(水) 02:30:42ありがとうございます!
あわせて参考にさせていただきます!
0345デフォルトの名無しさん
2010/11/24(水) 02:33:210346デフォルトの名無しさん
2010/11/24(水) 02:51:54ノーベルが数学が苦手だったからだと
代わりにフィールズ賞がある
0347デフォルトの名無しさん
2010/11/24(水) 04:03:190348デフォルトの名無しさん
2010/11/24(水) 18:55:55[2] 問題文:たとえば、100個の数字が用意されたファイルを用意します。
そのファイルを使って平均値を求めるプログラムを作りたいのですが教えてください。
ファイル名は適当で良いです。
平均値を求める計算は関数部分でお願いします。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:11月27日まで
[5] その他の制限:なし
お願いします。
0349デフォルトの名無しさん
2010/11/24(水) 19:13:55http://hibari.2ch.net/test/read.cgi/tech/1289715349/120
0350デフォルトの名無しさん
2010/11/24(水) 19:21:06巣にこもってろ出てくるなよ、ゴミが
0351デフォルトの名無しさん
2010/11/24(水) 19:33:53◆QZaw55cn4c
>たとえば、100個の数字が用意された
たとえば付くから、これは例を言っている(可能性ある)から数字の個数の100個は変化する可能性ある
と読み取れない?
0352デフォルトの名無しさん
2010/11/24(水) 20:06:551) #define N 100 と#define で記述して、コンパイル時に簡単に変えることができるようにしています。
2) 個数が仮に N より少ないデータだったとしても、正常に動くようにしています。
すなわち #define N 100 とした場合に対して、実際にはデータの個数が 5 であってもOKです。
100 を無視することも可能ではありましたが、平均を求める関数を準備する、という点を優先し、
一次近似として「データ数が100」を尊重いたしました。
>>348
問題があればコメントを下さい。随時変更いたします。
0353デフォルトの名無しさん
2010/11/24(水) 20:08:270354デフォルトの名無しさん
2010/11/24(水) 20:17:340355デフォルトの名無しさん
2010/11/24(水) 20:21:13いや、ここのスレでやり取りするなよ、自分のスレでやれ
スレチガイならともかく他所のスレのを無理やり横取りするなよ
お前、道徳的に最低ことしていると認識ないだろ
0356デフォルトの名無しさん
2010/11/24(水) 20:32:06にちゃんねるで「道徳的」といわれても。
0357 ◆EkRIf9bJPo
2010/11/24(水) 20:32:07[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
-------------------
/*hogehoge*/
int main(){/*ggg*/
printf("xxxxxx");
}
int a=c;
-------------------
上記のソース総ステップ数5ステップ、実ステップ数3ステップ、
コメント率40%が求められるステップカウンターを作製せよ。
また、以下の条件を提示する。
1.ディレクトリ単位で読み込めるようにする。
2.Cファイルのみのステップ数を求めるようにする。
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc 4.3.4
[3.3] 言語: C
[4] 期限: 2010年11月25日9:00
[5] その他の制限: なし
よろしくお願いします。
0358デフォルトの名無しさん
2010/11/24(水) 20:37:13当然、>>357も横取りするんだろ
0359デフォルトの名無しさん
2010/11/24(水) 20:42:46お客様としてお待ちしようかと。
でも期限が厳しいですね。
0360デフォルトの名無しさん
2010/11/24(水) 21:11:48ディレクトリ指定も可能って事はサブディレクトリも再帰的に捜査するんだよね
まぁ500円くらいなら払う価値は有る問題だと思うよ
総ステップは行数だと思うけど実ステップってのは?
if( x ) {
i = a + b
+ c + d;
}
これは何ステップ?
コメント率は ( "/*", "*/", "//" を含むコメント文字数 ) / (総文字数) の事?
その場合は改行コードは計算に入れるの?
この辺は詰める必要があるね
0361デフォルトの名無しさん
2010/11/24(水) 21:21:56カンマ演算子の扱いとか、do while とかどうする?
0362デフォルトの名無しさん
2010/11/24(水) 21:28:43実ステップは4行になりそうだけど。
0363 ◆EkRIf9bJPo
2010/11/24(水) 21:40:11そうです。サブディレクトリを読み込みます。
実ステップは、コメントのみの行、行区切りだけの行をはずした行数です。
なので、例に出されたソースの実ステップは、3ステップになります。
コメント率に関しては、特に条件が記載されてないです…
コメントが記載されている行/全行のことだと解釈しています。
改行コードについても記載がないので、計算には入れることは、考えてないです。
0365デフォルトの名無しさん
2010/11/24(水) 22:57:272chを楯に自分の糞さから逃げてないか?
0366デフォルトの名無しさん
2010/11/24(水) 23:06:24判定条件はこうかな
コメント外部にアルファベット、数字、記号({}を除く)が出現したら実ステップ行(*1)
コメントが入っている業はコメント行(*2)
当然、*1 でかつ *2 の行も存在する
例えば#if 0 〜 #endif の間は無効な行だけどこれも実ステップ行扱いで良いんだろうな、さもないと判定が難しすぎる
0367デフォルトの名無しさん
2010/11/24(水) 23:07:06http://hibari.2ch.net/test/read.cgi/tech/1289715349/
◆QZaw55cn4cもこのスレでそういう論議しなければ俺はかまわん。
このスレのそういうレスは双方無視の方向で。
0368デフォルトの名無しさん
2010/11/24(水) 23:18:41たとえば
a++,b++;
は1ステップか、それとも2ステップか
式は一つだから1ステップでいいとはおもうけど
do{
func();
}while();
は2ステップなのか3ステップなのか
doがなんかするわけじゃないから2ステップでいいのか?
あと、;だけの行はステップとして数えるのか?
>>363
途中ですが、コードを示します。使い方は、
./a.out Cプログラムファイル
です。
>>357 に例示されたコード例が指定どおりの数字を出す、という点だけで仕様を勝手にきめました。
大方は、>>366 にしたがっています。
これにいろいろ食わせてみて問題があるようであれば指摘ください。
途中ゆえデバッグコードを多数含みますことご容赦を。
http://codepad.org/ah8s28nT
xmalloc() -> malloc()
xfree() -> free()
xrealloc() -> realloc()
に読み替えてください。
0370 ◆1reJfOTbE.
2010/11/24(水) 23:35:18[1] 授業単元:プログラミング実験
[2] ttp://www.icsd3.tj.chiba-u.jp/~yasukuni/10jikken/
ここの第2回の課題です。
[3] 環境
[3.1] OS:WindowsXPでコマンドプロンプトやMeadowなどを使っています。
[3.2] gcc
[3.3] C
[4] 期限:11/26の18:00
[5] その他の制限:特にないと思います。
第1回に比べて急に難しくなったように思え、困っています。
とりあえず課題が何をどうすればよいかわかりません。
手順を教えていただきたいです。よろしくお願いします。
0371 ◆EkRIf9bJPo
2010/11/24(水) 23:36:00その判定条件で大丈夫です。
#if0〜#endifも実ステップ行扱いで良いと思います。
>>368
特にカンマ演算子と、do whileについて何も条件が出されてないので、>>663さんが提示した判断条件でお願いします。
0372デフォルトの名無しさん
2010/11/24(水) 23:40:32printf("xxx/*nocomment*/xxx");
0373デフォルトの名無しさん
2010/11/24(水) 23:54:48>>372
http://codepad.org/UuSFtHdy
これ以上複雑になれば、今のコードは捨てて状態遷移(オートマトン)で書き直すことを検討します。限界です。
0374デフォルトの名無しさん
2010/11/24(水) 23:58:24問題が結構いい加減だから、都合のいいように解釈すればよいと思う。
0375 ◆EkRIf9bJPo
2010/11/24(水) 23:58:29ありがとうございます!
早速、デバッグを行なったところ、以下のエラーが表示されました。
1.c:8: error: conflicting types for ‘getline’
/usr/include/sys/stdio.h:37: error: previous declaration of ‘getline’ was here
よろしくお願いします。
0376デフォルトの名無しさん
2010/11/25(木) 00:00:430377デフォルトの名無しさん
2010/11/25(木) 00:08:00/* "A" */
今のロジックだと /* と " のどちらかを優先しなければならないから限界みたいだね
>>375
http://codepad.org/fGj6gfV5
>>376
じゃあトリップつけときますか。
0379デフォルトの名無しさん
2010/11/25(木) 00:09:380380デフォルトの名無しさん
2010/11/25(木) 00:14:07そのようですね。
このコード>>378 は捨てましょう。
>>375
このロジックでよければ、ディレクトリを掘るコードをつけます、といっても明日があるので今日はおしまい。
期限を見直してください。あと >>2 をよろしく。
0381377
2010/11/25(木) 00:15:40間違えた、駄目なのはこんなケース
printf( "/* a */" );
/* "a */
printf( "/* a */" );
改行で終わらない行は無視してるみたいだけどそんな必要有るのかな
0382デフォルトの名無しさん
2010/11/25(木) 00:24:35乗り遅れたし、明日早いし。寝るくぁ。
0383デフォルトの名無しさん
2010/11/25(木) 01:07:35非常に丁寧な教材ですね。
難しいところを素直に先生に聞いてみるのはいかが?
このスレは回答を提示することで若い芽を摘み取る非情な場所であることをお忘れなく。
0384デフォルトの名無しさん
2010/11/25(木) 01:12:23ワロスw
確かにその通りかもw
0385デフォルトの名無しさん
2010/11/25(木) 01:48:20dequeだけ作っといた
フィルタは気が向いたらやるかも
http://codepad.org/o9fmgNBz
0386デフォルトの名無しさん
2010/11/25(木) 01:52:12『インターネット上に匿名で書かれた情報は信じるな!!』
0387デフォルトの名無しさん
2010/11/25(木) 01:56:290388デフォルトの名無しさん
2010/11/25(木) 02:21:45多分デジタルディレイの実装ではないかと思われる
queue.c はFifoリングバッファだろう
Fir_p.c のメインループ内では以下を行うんだろうな
for( ディレイ時間分ループ )
enqueue( 0 );
while(入力ファイルから short 一つを x に読み込む) {
enqueue( x );
y = dequeue()
x に y を重み付き加算
出力ファイルに x を書き込む
}
これでシングルディレイが付加された音声データ(wavファイル)が作成できるだろう
Fifo リングバッファをマルチインスタンスに修正し複数のリングバッファを使用すれば多段ディレイも作成できる
また enqueue( x ); の位置を加算後に持っていけば減衰率によっては自然な残響を得られるかも知れない
0389デフォルトの名無しさん
2010/11/25(木) 03:32:08修正
http://codepad.org/uKnnFD1v
0390デフォルトの名無しさん
2010/11/25(木) 05:03:09各論へのイントロになってる課題は面白いと思う
0391デフォルトの名無しさん
2010/11/25(木) 11:59:14[2]1~30の整数の範囲で、3辺a, b, c(cを斜辺)の三角形のうち、直角三角形が成立する場合のa,b,c辺をすべて見つけて配列
に入れる。その後、配列をもとにプログラムを作成しなさい。
ただし、a, b, c辺を見つけて配列に入れる機能は関数にすること。
[3] 環境
[3.1] OS:linux
[3.2] gcc
[3.3] C
[4] 期限:11/25
[5] その他の制限:
よろしくお願いします。
0392デフォルトの名無しさん
2010/11/25(木) 12:01:44#include<stdio.h>
#define N 30
int main(void)
{
int a,b,c;
int p[N][3];
int n;
n = 0;
for(a=1;a<=N;a++){
for(b=a;b<=N;b++){
for(c=b;c<=N;c++){
if(a*a + b*b == c*c){
p[n][0] = a;
p[n][1] = b;
p[n][2] = c;
n = n + 1;
}
}
}
0393デフォルトの名無しさん
2010/11/25(木) 12:33:21問題読むと直角三角形が成立する辺を配列に入れた後何かするようだけど
配列に入れて表示するプログラム?
0394デフォルトの名無しさん
2010/11/25(木) 13:13:35多分そうだと思います
0395デフォルトの名無しさん
2010/11/25(木) 13:18:29a <= b <= cを仮定してください。
0396デフォルトの名無しさん
2010/11/25(木) 13:26:39for(b=a;b<=N;b++){
for(c=b;c<=N;c++){
の時点でa <= b <= cを満たしてるはずなのに更に仮定するの?
0397デフォルトの名無しさん
2010/11/25(木) 13:31:59その部分をいじるなってことだろ
0398デフォルトの名無しさん
2010/11/25(木) 13:36:13#include <stdio.h>
#define N 30
int f(int p[][3], int size) {
int a, b, c, n = 0;
for(a = 1; a <= size; a++) {
for(b = a; b <= size; b++) {
for(c = b; c <= size; c++) {
if(a * a + b * b == c * c) {
p[n][0] = a;
p[n][1] = b;
p[n][2] = c;
n = n + 1;
}}}}
return n;
}
int main(void)
{
int p[N][3], i, n;
n = f(p, N);
for(i = 0; i < n; i++) printf("%d %d %d\n", p[i][0], p[i][1], p[i][2]);
return 0;
}
0399デフォルトの名無しさん
2010/11/25(木) 13:36:48[2] 問題文(含コード&リンク):整数型1次元配列に対して平均値を計算する関数を書き、
{1, 4, 2, 8, 1, 5} の平均値 3.5 を求めよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語: C++
[4] 期限:2010 11/27
[5] その他の制限:int型からdouble型に書き換えるとのこと、すいません。ここからしてあまり理解できていません。
0400デフォルトの名無しさん
2010/11/25(木) 13:45:06http://codepad.org/58K6ytHA
0401デフォルトの名無しさん
2010/11/25(木) 14:06:24こんなんしたらさすがに怒られるかな?
#include <iostream>
#include <numeric>
int main()
{
int a[] = {1, 4, 2, 8, 1, 5};
size_t SIZE = sizeof(a) / sizeof(a[0]);
double ave = std::accumulate(a, a + SIZE, 0.0) / SIZE;
std::cout << ave << std::endl;
}
0402370 ◆1reJfOTbE.
2010/11/25(木) 16:05:56課題3−1ですが、作っていただいたコードで、コマンドプロンプトで
gcc -Wall -c queue.c
とやって、queue.oが作られました。
この課題は後、
gcc -Wall -o FIR_P FIR_P.c queue.o
とやれば完了でよいのでしょうか?
そして>>388の中身がわかる方いませんか?
分割コンパイルというものは理解できたと思うのですが、
最初の式の説明のところからやっていることがまだ理解できていなく、
どうすればいいかわかりません。
それと関連プログラム4種類をダウンロードと書いてありますが、
Makefileに関しては講義資料22ページの説明が出てきますが、
ダウンロードができません。コピーしてテキストファイルとして
保存ということでしょうか?
0403デフォルトの名無しさん
2010/11/25(木) 16:30:35関連ファイルと同じところに保存して
% makeかな?でまとめてコンパイルしてくれる
追加したファイルもMakefileに追加すればそれもコンパイルできる
0404デフォルトの名無しさん
2010/11/25(木) 16:43:08C言語
実験のデジタルフィルタ
の両方なの?
デジタルフィルタは理解できるがC言語は駄目とか?
0405 ◆L.eSCJEwZk
2010/11/25(木) 16:48:34デジタルフィルタは、講義資料を見ていますがまだ理解できていません。
C言語はできるつもりでしたが、>>388の日本語で書いた部分をやろうと
思ったのですがどうすればよいかわかりませんでした。
基礎はできると思うのですが、ファイルのオープンなどでてくると
危ないです。
0406 ◆1reJfOTbE.
2010/11/25(木) 16:49:170407デフォルトの名無しさん
2010/11/25(木) 17:28:53そっちがわかったならこっちもたぶんコードわかると思うんだけど
>>388の日本語で書いてある部分のどこがわからないのかな?
0408388
2010/11/25(木) 18:09:56変数名を直して一部加筆
short int y;
for( ディレイ時間分ループ ) ←*1
enqueue( 0 );
while(入力ファイルから short 一つを data に読み込む) { ←現行のソースに有る
enqueue( data );
y = dequeue()
data に y を重み付き加算 ← *2
出力ファイルに data を書き込む ←現行のソースに有る
}
つまり君が書くべきは *1 と *2 だけなんだけどな
ディレイ時間は argv[1] で与えられる delay だ、これがどんな単位で与えられるか又、サンプリングレートが幾らか不明なので
必要なループ回数が判らない
例えば delay の単位がmsecでサンプリングレートが20msec なら必要なループ回数はdelay / 20 という事になる
重みは argv[2] で与えられる weight だ、これも%で与えられるのか小数で与えられるのか判らないけど小数で与えられるなら *2 は
data += (short int)( (double)y * weight );
となる
>>383 が書いた様に、若い芽を摘み取りたくなかったので抽象的な表現を行ったのだけど伝わらないなら仕方がないだろう
0409デフォルトの名無しさん
2010/11/25(木) 18:25:20[2] 問題文(含コード&リンク):
1.解答例のカレンダー(下にリンクはってます)について、dayofweek()を再帰で書き直せ。
◦ある月の1日の曜日は、前の月の日数と1日の曜日から計算できる
◦ある年の1月1日の曜日は、前の年の日数と前の年の1月1日の曜日から、あるいは、その年の日数と次の年の1月1日の曜日から計算できる
◦2000年1月1日は土曜日である
2.このプログラムについて、任意の年月についてdayofweek() の呼び出し回数が何回になるかを理論的に考察せよ。また、呼び出し回数を計測し、結果が実際に理論と合致しているかを確認せよ。
2.ヒント:呼出し回数を数えるためにグローバル変数を使用する
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] C
[4][2010年12月1日08:45まで]
[5]現在再起を習ったばかりで複雑なものは習っていません。
解答例のカレンダー↓
http://codepad.org/4rnf6hRf
0410389
2010/11/25(木) 19:02:18ファイルのオープンなんかより生ポインタのが千倍危ないんだけどね
http://codepad.org/E3nlvpXW
0411デフォルトの名無しさん
2010/11/25(木) 19:48:02元データを weight 分減少させる必要は無いと思うよ
0412デフォルトの名無しさん
2010/11/25(木) 20:46:57再帰?謎過ぎる問題だな
0413 ◆EkRIf9bJPo
2010/11/25(木) 20:47:26期限直しました。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
-------------------
/*hogehoge*/
int main(){/*ggg*/
printf("xxxxxx");
}
int a=c;
-------------------
上記のソース総ステップ数5ステップ、実ステップ数3ステップ、
コメント率40%が求められるステップカウンターを作製せよ。
また、以下の条件を提示する。
1.ディレクトリ単位で読み込めるようにする。
2.Cファイルのみのステップ数を求めるようにする。
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc 4.3.4
[3.3] 言語: C
[4] 期限: 2010年11月27日9:00
[5] その他の制限: なし
0414デフォルトの名無しさん
2010/11/25(木) 20:49:02波形データ a[123]={〜〜〜〜〜〜〜〜〜〜〜};
波形データ b[123];
今が、1から123の間、くりかえし
{
b[今] =
a[今] ・ 係数今用 +
a[1こ過去] ・ 係数過去用1 +
a[2こ過去] ・ 係数過去用2 +
a[3こ過去] ・ 係数過去用3 +
.
.
.
今++;
}
ってやると、できあがる波形データ b が、
もんもんした音になったり、キラキラした音になったり、シャリシャリした音になったり、音質が変わっておもしろい。ってことじゃないかしら? ようするに。 はて?
すごい単純だけど、たとえば単純に
b[今] = a[今] + a[1こ過去]
ってやるだけでも、波形が、こもった感じの音に変化したりして、おもしろいですよね。ふしぎ〜♪
0415デフォルトの名無しさん
2010/11/25(木) 20:52:33そう。単に過去のデータを足しこむだけで、いろんな特性を持つ回路(フィルタなど)になるのです。
z 変換またはラプラス変換でググッてくだしゃあ。
0416デフォルトの名無しさん
2010/11/25(木) 20:59:12何か汚いけど・・まあいいや
http://codepad.org/ldxwLKBl
http://www5a.biglobe.ne.jp/~accent/kazeno/calendar/1873.htm
0417デフォルトの名無しさん
2010/11/25(木) 21:00:50表示直した
http://codepad.org/g9j514Dw
0418 ◆EkRIf9bJPo
2010/11/25(木) 21:02:30大変申し訳ないのですが、読んでもロジックがわからなかったので自分で作りました。
http://codepad.org/JhtCuYqO
http://www.play21.jp/board/formz.cgi?action=res&resno=43608&page=&lognum=136&id=dixq&rln=44494
上記のサイトを参考にしました。
方法3 コメントを削除したファイルを中間ファイルとして保存し、再度読み込み、行数を数える方法を行いました。
残っている課題が二つあります。
・ディレクトリ指定してCファイルを求める。
・コメント率を算出する。
大変、勝手なことだと思いますがこのソースをベースに作製お願いします。
0419409
2010/11/25(木) 21:15:23なんかしたに張り付けてあるリンクのものを再起を使用して書き直すみたいです。
もうすこしコンパクトになるとか・・・
課題2はよくわかりません。
>>416
>>417
すみません。
再起はどこでどういう風に使用したらいいのでしょう?
0421416
2010/11/25(木) 21:36:54自分の定義に自分と同じ構造を持つ構造は再帰的に定義できる
さっきの例なら、ある月の一日の曜日は前の月の一日の曜日で求められる
前の月の一日はそのまた前の一日の曜日で
そのまた前も・・・ってな感じでずっと続く
ある状況で特殊化すればそこで再帰は終了する
さっきのなら2000年の1月で特殊化した
0422416
2010/11/25(木) 21:42:00ついでにちょっと整理しといた
http://codepad.org/Q7wmR5Wy
0423デフォルトの名無しさん
2010/11/25(木) 22:04:512ちゃんのスレに書き込まれるぅ〜♪
カレンダー(カレンダー)過ぎ行く時の中で
俺はソースを書いて彷徨うんだろう♪
0424409
2010/11/25(木) 22:12:19recurse
みたいなコード?は使わないのでしょうか?
あと漸か式を考えたりなど・・・
よくわからない質問をしてしまってばっかりですみません><
0425デフォルトの名無しさん
2010/11/25(木) 22:35:140426370 ◆1reJfOTbE.
2010/11/25(木) 22:54:27今日学校でレポートをすこしずつ進めていたのですが、
学校のパソコンや携帯では書き込みができなく、自宅のパソコンでは
環境が整っていなく実験ができないので、今のうちにやることを
把握しておいて明日学校に行ったらレポートを一気にやりたいと思って
います。なので、残りやるべきことを把握したいと思います。
課題3−1は、FIR_P.cとqueue.cを作っていただいたのでおkですが、
課題3−1(続)に、queue.c, FIR_P.c, FIR_N.c, IIR_P.c, IIR_N.cを実装せよ
とのことですが、これは3−1で作ったので終わりではないということですよね。
それに、FIR_N, IIR_P, IIR_Nという名前は初めて出てきたのですが、
これはFIR_P.cを書き換えてそれぞれの名前で保存しろということでしょうか?
プラスMakefileの修正ができれば、課題3−2以降はその作ったプログラムを
使って実行→聞いてみて考察〜などでできると思いますので
よろしくお願いします。
0427デフォルトの名無しさん
2010/11/25(木) 23:14:03[2] 問題文(含コード&リンク):入力された2分木を中央順で走査するプログラムを
再帰を使わずに書け。
自分で書いたプログラム
main.c http://codepad.org/GafORTG4
STACK1.c http://codepad.org/9JwtZ1J7
STACK2.c http://codepad.org/jwPHSuzG
Item1.h http://codepad.org/32bgVncE
Item2.h http://codepad.org/rk12GKcF
STACK1.h http://codepad.org/CI43AnzH
STACK2.h http://codepad.org/XJ1fy5MY
上三つをコンパイルして実行します。
コンパイルは通りますが、実行でsegmentation fault がでてしまいます。
main.cの最後のwhile文のところを修正していただけないでしょうか。
お願いします。
[3] 環境
[3.1] OS: macosX
[3.2] gcc
[3.3] 言語: C
[4] 期限: 明日の午後一時まで。
[5] その他の制限:とくになし。
0428デフォルトの名無しさん
2010/11/25(木) 23:15:49FIRが遅延時間前の入力信号を加算するのに対し、IIRは遅延時間前の出力信号を加算するものの様だ
ならば、FIRの encueue() するタイミングを加算後に移動させれば IIR になるのではと思う
PとNはポジとネガの意味かな?ならばNは重み付け加算を重み付け減算にすれば良いのだろうか?
>>413
とりあえず動くものをあげときます。
http://codepad.org/o1GYCrrO
0430デフォルトの名無しさん
2010/11/25(木) 23:29:39字句解析は作った人以外には理解が極めて困難、という面があります。
>>378 や >>429 も人に理解していただくような努力を微塵もしなかったことは申し訳ない。
本当に正確なものを作るのなら(そして人に理解していただくようにするのなら)、全然別のアプローチ(たとえば状態遷移でとらえるなど)をとらなければならないことは自覚しておりましたが、手が先に動いてしまいました。
(なお、>>429 は >>378 よりもちょっとだけ精度がよくなっております。)
というわけで >>418 を追いかける余裕がありません。すみません。
0431デフォルトの名無しさん
2010/11/25(木) 23:42:02嫌がらせみたいに汚いコードだな、無意味な typedef とか控えろよ
問題なのは while() 内で1回pop()、3回push() を行っている事にあるんじゃないかな
必然的にスタックは2つづつ増えるから最初に確保した領域をはみ出して segmentation fault となる
そもそも push() には確保した領域をはみ出さないかのチェックが必要だが実装されていないし
何をしたいのか不明なコードだけど、毎ループで pop() されるのは head と 1 で head と 1 が3回push() される
当然、無限ループとなり segmentation fault で終わるプログラムだな
0432デフォルトの名無しさん
2010/11/25(木) 23:59:54[2] 問題文(含コード&リンク):
大、中、小の3 個のさいころを同時にふった時、出た目の和がm になるような目の出方をすべて求めるプログラムを作りなさい。
ただし、m の値はキーボードから入力するものとする。表示を工夫して見やすい出力にすること。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [無期限]
[5] その他の制限: if、while、for、配列、多重ループ、関数まで既習です。
よろしくお願いします!
0433デフォルトの名無しさん
2010/11/26(金) 00:07:30さいころは6面でいい?
負数の扱いは?
0434デフォルトの名無しさん
2010/11/26(金) 00:09:080435デフォルトの名無しさん
2010/11/26(金) 00:16:21適切なアドバイスどうもありがとうございます。
間違っていいたところも直せ、理解も深まりました。
ほんとうにありがとうございますm(_ _)m
0436デフォルトの名無しさん
2010/11/26(金) 00:18:52#include<stdio.h>
#define MAX(a, b) ((a)>(b)?(a):(b))
#define MIN(a, b) ((a)<(b)?(a):(b))
int main(void)
{
int i_min, i_max, j_min, j_max, i, j, k;
int m=0;
printf("m を入力してください : ");
scanf("%d", &m);
i_min=MAX(1, m-12);
i_max=MIN(6, m-2);
for(i=i_min;i<=i_max;i++)
{
j_min=MAX(1, m-i-6);
j_max=MIN(6, m-i-1);
for(j=j_min;j<=j_max;j++)
{
k=m-i-j;
printf("大:%d 中:%d 小:%d\n", i, j, k);
}
}
return 0;
}
0437デフォルトの名無しさん
2010/11/26(金) 01:11:03>表示を工夫して見やすい出力にすること。
ということで>>436みたいな効率化は図っていない
http://ideone.com/ojVVa
0438デフォルトの名無しさん
2010/11/26(金) 02:05:41http://codepad.org/j6ll07Ay
いちまん回さいころふって、なにがでるかしらべてみて、しらべる☆ ためしてガッテンたいぷ♪
たまにまちがえちゃうけど、気にスンナ!
0439デフォルトの名無しさん
2010/11/26(金) 03:16:10[2] 問題文(含コード&リンク)
次のCプログラムとアセンブラコードを作成しなさい。
問題1「Hello World!」を作成するCプログラム
問題2九九の計算結果を一の段から九の段まで表示するプログラム
例 123456789
2 4 6 8 10 12 14 16 18
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:11月27日
[5] その他の制限: なし
よろしくお願いします。
0440デフォルトの名無しさん
2010/11/26(金) 04:13:46hello world を回答する奴はさすがに居ないと思うし、九九の回答はこのスレか前スレに出てたよ
アセンブラコードの出力なら gcc -S hoge.c で hoge.s が出力されるはず
man gcc でコンパイルオプションを調べてみよう
0441デフォルトの名無しさん
2010/11/26(金) 04:33:26#include <stdio.h>
int main(void)
{
int r,c;
printf("Hello m9(^д^ )プギャー!\n");
printf("%3c",0x20);
for(c=1; c<=9; c++) printf("%3d",c);
putchar('\n');
for(r=1; r<=9; r++) {
printf("%3d",r);
for(c=1; c<=9; c++) printf("%3d",r*c);
putchar('\n');
}
return 0;
}
0442デフォルトの名無しさん
2010/11/26(金) 09:12:16#include <stdio.h>
int main(void) {
int a[]={72,101,108,108,111,32,87,111,114,108,100,33},i;
for(i=0; i<sizeof(a)/sizeof(a[0]); i++) printf("%c",a[i]);
return 0;
}
0444デフォルトの名無しさん
2010/11/26(金) 16:13:450445デフォルトの名無しさん
2010/11/26(金) 16:17:16が半角スペース、改行なし)のように画面出力する文である。�@、�Aには何が入るか?
printf("�@",�A);
0446デフォルトの名無しさん
2010/11/26(金) 16:25:18printf ( "%5.2f", 1.0/n ) ;
0447デフォルトの名無しさん
2010/11/26(金) 16:54:26int i; で宣言されているとして、左の3 行を右のように書き換えた。�@〜�Gには何が入る
か?ただし、不要な行(削除すべき行)が3 行ある。そこには「-」(半角)を記入せよ。
for(i=0;i<5;i++){
printf("%d\n",i);
}
を
�@;
while(1) {x>=1){
�A;
�B;
if(�C) {
�D;
}
�E;
�F;
}
�G;
0448デフォルトの名無しさん
2010/11/26(金) 17:00:55>>1
0449デフォルトの名無しさん
2010/11/26(金) 17:13:51�@i=0;/*
�A*/while(1){
�Bprintf("%d\n",i++)
�C5<=i
�Dbreak
�E-
�F-
�G-
試してないから間違えてるかも
0450デフォルトの名無しさん
2010/11/26(金) 17:30:17ほんとうにありがとうございます。
0451デフォルトの名無しさん
2010/11/26(金) 17:59:42http://hibari.2ch.net/test/read.cgi/tech/1289715349/138
0452デフォルトの名無しさん
2010/11/26(金) 19:59:22問題文が間違ってると思う、要確認
0453デフォルトの名無しさん
2010/11/26(金) 20:36:38#include <stdio.h>
#include <stdlib.h>
double Rand(void)
{
return (double)rand() / (RAND_MAX + 1);
}
double Random(double mu, double siguma)
{
double r=0;
r = Rand() + Rand() + Rand() + Rand() + Rand() + Rand() + Rand() + Rand() + Rand() + Rand() + Rand() + Rand();
r-=6.0;
return siguma*r+mu;
}
0454デフォルトの名無しさん
2010/11/26(金) 20:38:52{
int i, n;
unsigned seed;
double mu, siguma, *array;
printf("乱数系列(x): ");
scanf("%u", &seed);
printf("個数: ");
scanf("%d", &n);
printf("平均(μ): ");
scanf("%lf", &mu);
printf("分散(σ): ");
scanf("%lf", &siguma);
srand(seed);
if ((array = (double *)malloc(sizeof(double) * n)) == NULL){
exit(1);
}
printf("\n乱数表\n\n");
for (i = 0; i < n; i++) {
array[i] = Random(mu, siguma);
printf("%d %10.5f\n", i+1, array[i]);
}
return 0;
}
このプログラムで出した出力をヒストグラムとして出したいです。
おねがいします!
0455デフォルトの名無しさん
2010/11/26(金) 21:00:39gnuplot使えば?
0456デフォルトの名無しさん
2010/11/26(金) 22:00:071つのプログラムでということなので
http://www.geocities.jp/cgengor/arg04.htmlのサイトのように出力したいです。
0457デフォルトの名無しさん
2010/11/26(金) 22:36:26ttp://codepad.org/0DCCjOkG
書いてみた、//ZZZ の行は入力の手間を省くために追加した行だから削除してくれ
codepad ではとんでもない結果が出力されているけど bcc ではもっともらしい結果が出てた
ヒストグラムを分割するためのパラメータが明記されていないので以下のルールで処理した
・分割数は HIST_NUM で定義する、これは偶数でなければならない
・分割中央 mu とし、範囲は mu +- sigma まで、但し両端にはそれ以下、それ以上も含む
最後に Random() で得た結果を元に平均と分散を計算しているが、平均はまぁまぁだけど分散が酷い
ヒストグラムを見ると最も小さい値域に集中しているのが判る
Random() ロジックには再検討が必要だと思うよ
0458デフォルトの名無しさん
2010/11/26(金) 22:43:21そのソースを書いたのは俺だけど、元々ポックス・ミュラー法を使っていたんだ
しかし>>231のように#include <math.h>を使わずに使ってくれと頼まれたので
仕方なくその疑似的Random()を使わざるを得なくなった
ボックス・ミュラー法を使ったソースは>>229に上げてある
これなら分散もちゃんとした値が出るよ
0459デフォルトの名無しさん
2010/11/26(金) 23:02:57あとn=1000位まで上げてみて欲しい
分散が揃って来ると思います
0460デフォルトの名無しさん
2010/11/26(金) 23:41:54ごめん、siguma = sqrt( 分散 ) だね、まぁまぁの結果が出てるわ
ヒストグラムの作成領域も mu +- sig だと綺麗に出ないから mu +- sig * 2 くらいにするべきだな
あと、n が大きくなると表示できなくなるから少し修正したら再アップするわ
0461デフォルトの名無しさん
2010/11/26(金) 23:46:00お願いします
それとn=1000とか10000になると生成した乱数の表示はしなくてもいいと思いますよ
画面がすごい事になりますから
0462デフォルトの名無しさん
2010/11/27(土) 00:08:51ttp://codepad.org/QG5N0wqi
最後に sigma の再計算をするため sqrt() を使ったので <math.h> を使用しているから気に食わなければ消してくれ
line60
while( max / cut > 50 )
は一行に表示可能な * を50に規定している、一行の表示文字数が130くらいの環境なら 100 に直してくれ
line106
dispHist( mu, siguma * 2.0, n, array );
は適当にヒストグラム範囲を与えてるだけだから * 1.5 でも * 3.0 でも好きに直してくれ
0463デフォルトの名無しさん
2010/11/27(土) 00:15:42いい感じですね、どうもありがとうございます
0464デフォルトの名無しさん
2010/11/27(土) 00:22:32乱数系列(x): 10
個数: 100
平均(μ): 50
分散(σ): 67
で計算したのですが、ヒストグラムは表示されます。
ですが、Real mu, Real sigma が表示されずにデバックエラーが表示されました。
無視すると最後まで表示されます。
0465デフォルトの名無しさん
2010/11/27(土) 00:24:28Real mu, Real sigma の部分を削ってもエラーが出ます。
0466デフォルトの名無しさん
2010/11/27(土) 00:29:39困ったな bcc では出ないぞ
0467デフォルトの名無しさん
2010/11/27(土) 00:41:24入力が可能ということは //ZZZ の行を消したと思われるな、変な行を消してないか?
とりあえず以下を試してくれ
1) >>462 をもう一度コピペしてファイルを作る
2) 85行目の #if 0 を #if 1 に直す
3) コンパイルして実行
これでも出るなら環境差の問題なので、ちょっと対応が難しいな
その場合はエラー内容を記述してくれ
0468デフォルトの名無しさん
2010/11/27(土) 00:49:00[2] 問題文(含コード&リンク): ニュートン法により実数の平方根を求める関数を作成せよ。(引数double, 戻り値double)
[3] 環境
[3.1] OS: any
[3.2] コンパイラ名とバージョン: any
[3.3] 言語: C
[4] 期限: なし
[5] その他の制限: stdio.h以外の使用は不可
0469デフォルトの名無しさん
2010/11/27(土) 01:47:53ttp://codepad.org/Owx14RLB
0470デフォルトの名無しさん
2010/11/27(土) 14:12:25Debug Error!
<プログラム名中略>
File:
Run-Time Check Failure#2-Stack around the variable 'hists'was corrupted.
(Press Retry to debug the application)
とエラーが出ました。
0471デフォルトの名無しさん
2010/11/27(土) 16:51:40>462の8行目が怪しいねぇ、うん
0472デフォルトの名無しさん
2010/11/27(土) 16:52:26findIndex()の中の
for( i = 0; i < max; i++ )
を
for( i = 0; i < max-1; i++ )
に変えると良いかも
0473デフォルトの名無しさん
2010/11/27(土) 17:56:21似たようなエラーなのでそのうちの一つは
Error 00001. 0x110200 (Thread 0x0CF0):
Pointer arithmetic in invalid stack: 0x0013FE6C+8.
| dai65_1.c line 76:
| dispOneHist( NULL, border + 0, hists[0] );
| for( i = 1; i < HIST_NUM - 1; i++ )
|> dispOneHist( border + i - 1, border + i, hists[i] );
| dispOneHist( border + HIST_NUM - 2, NULL, hists[HIST_NUM-1] );
| }
0474デフォルトの名無しさん
2010/11/27(土) 18:24:56根本的に書き直した方がいいと思われ
0475デフォルトの名無しさん
2010/11/27(土) 18:30:11乱数系列(x): 10
個数: 100
平均(μ): 50
分散(σ): 67
の指定すると、189.303894というデータが発生するんだが
配列borderの内容は、
-57.20, -30.40, -3.60, 23.20, 50.00, 76.80, 103.60, 130.40, 157.20, 0.00
なので、findIndexのループで引っかからず、HIST_NUMの値を返してる。
だから、配列histsの要素数を越えてアクセスしてる。
0476デフォルトの名無しさん
2010/11/27(土) 19:14:17linux 32bit gcc4.5でコンパイルして実行したら、こんな表示になりました。
http://codepad.org/xtsLbFtV
ちゃんとコンパイルできて動きましたよ。
0477デフォルトの名無しさん
2010/11/27(土) 19:25:19ありがとうございました。
今後の参考にしたいので、>>472に変更したら良いと思ったのか理由を教えてもらえてほしいです。
0478476
2010/11/27(土) 19:58:370479デフォルトの名無しさん
2010/11/27(土) 20:02:08[2] 問題文(含コード&リンク):X^3=1は、1つの実数解と2つの虚数解(複素数の買解)をもつ。
この3つの解すべての組み合わの四則演算の結果を示しなさい。
(複素数:ω=a+ibとするとき(ただし、i^2=-1)、ωと原点との距離:dは、d=(a^2+b^2)^1/2)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008
[3.3] 言語: C++
[4] 期限:2010年11月29日12時
[5] その他の制限:
・複素数を構造体として宣言し、複素数の四則演算を実現する関数(4つ)
値を設定する関数、値を表示する関数を作る。
・複素数の構造体は、
struct complex {
double re;
double im;
} と宣言する。
・引数は、演算対象の2つの構造体とする。
・戻り値は構造体とする。
0480デフォルトの名無しさん
2010/11/27(土) 20:10:43どんな数を入れてもこのプログラムは一定の分散幅しか表示しないから
プログラムそのものを変更しないとだめだろう
0481デフォルトの名無しさん
2010/11/27(土) 21:02:19問題文の文章が読み取れないんだけど
複素数の四則演算を関数として定義、実装しろってこと?
それともX^3=1の解を数値計算しろってこと?
0482デフォルトの名無しさん
2010/11/27(土) 21:11:44X^3=1の解すべてのパターン(組み合わせ)を四則演算して結果を表示するプログラムです。
0483デフォルトの名無しさん
2010/11/27(土) 21:12:47あと
虚数軸と実数軸でつくった平面上につくった、半径1の円を、
複素数どうしの掛け算だと、複素数の線が真ん中を中心にしてぐるぐるまわるから、3乗して1なら、2回うごいて一周するような位置ならいいんだから、
ケーキみたいに三等分した位置の値になって、
これは円の上側の120度のとこってことかなぁ?はて??
複素数で、長さ1の棒が、120度まわったとこですよ数? どうしをかけ算したら、
長さ1の棒x長さ1の棒=長さ1の棒 が、 120度回って+さらに120ど回ったとこ=240どのとこ、 になるから、
長さ1の棒が、240度まわったとこってなって、 いまの状態がちょうど X^2 の状態で、 X^3なら、 さらにXをかければいいんだから
長さ1の棒が、240どまわったとこに、 かける、 長さ1の棒が、120度まわったとこ
になるから
長さ1の棒x長さ1の棒=長さ1の棒 が 240度回って+さらに120どまわったとこ=360度になるから、
長さ1の棒が0度ってことで、これは数字の1だから、 X^3は1 って式のとうりになってよかった♪
ケーキ切る三等分の位置は、上側のほかに、下側のー120度の位置できったばあいでも同じ様になって、ー120度たすー120度たすー120度=ー360度=0度で
わーい3個だ
(iルート3+1)/2 の具体的な数字と、 (iルート3-1)/2 の具体的な数字と、 1の具体的な数字の1と、 の3つの数字がわかればいいってことかなぁ? はて??
>>481
わかんないけど、たぶんどっちもかも?
0484デフォルトの名無しさん
2010/11/27(土) 21:28:55それをプログラムで出力できればいいのです。
0485デフォルトの名無しさん
2010/11/27(土) 21:50:08ゴメン、>>472 の指摘通り、配列のオーバーランだ
line61 の
r = findIndex( HIST_NUM, border, arr[i] ); を
r = findIndex( HIST_NUM - 1, border, arr[i] );
にしてくれ、意味的にはこっちの方が妥当だ
同じ現象が生じるか確認したいんだけど、誰か bcc のデバッグオプション知らない?
0486デフォルトの名無しさん
2010/11/27(土) 21:52:12bccのバージョンいくつだ?C++Builderに付属している物なら -vG で
CodeGuardが動く
0487デフォルトの名無しさん
2010/11/27(土) 22:01:37その理由は判らんな、そも ecc って何?
dispOneHist( border + i - 1, border + i, hists[i] );
を
dispOneHist( ( border + i - 1), ( border + i ), hists[i] );
に直しても同じかな?
0488デフォルトの名無しさん
2010/11/27(土) 22:11:46cpad に付属してた bcc で 5.5.1 だよ(大昔にダウンロードして便利だから使ってるんで相当古いと思う)
-vG だと link で CG32.lib が無いとか言われるなぁ
0489デフォルトの名無しさん
2010/11/27(土) 22:23:38よく分からんが
#include <stdio.h>
#include <math.h>
int main() {
_Complex double a;
a = 1
+ 0.5+1.0i*sqrt(3)
+ 0.5-1.0i*sqrt(3);
printf("%f + %fi\n",a);
return 0;
}
でいいのか?
0490デフォルトの名無しさん
2010/11/27(土) 22:27:27- 0.5+0.5i*sqrt(3)
- 0.5-0.5i*sqrt(3);
0491デフォルトの名無しさん
2010/11/27(土) 22:32:58ああそれだとだめですね
C++Builderを買った人ならcg32.libも持ってますからCodeGuardが掛けられます
これは不正なポインタの使用の検出・アクセスオーバーランなど見つけにくいバグや
たまたま動いている潜在的なバグを洗いざらい検出してくれます
これだけのためにC++Builderを買っていると言っても過言ではないかも・・・
0492デフォルトの名無しさん
2010/11/27(土) 22:37:58>>479の形式にしてもらいたいです。
あと、実行したらエラーが出ました。
0493デフォルトの名無しさん
2010/11/27(土) 22:37:58ECCとはEmbarcadero C++ Compilerの略です
もはやBorlandの製品ではないのでECCとしたわけです
6.3.1は最新バージョンです
0494デフォルトの名無しさん
2010/11/27(土) 22:59:50#include <stdio.h>
#include <math.h>
struct complex {
double r;
double i;
complex(double a,double b){r=a;i=b;};
};
complex operator + (complex c0, complex c1) { complex a(c0.r+c1.r,c0.i+c1.i); return a; }
complex operator - (complex c0, complex c1) { complex a(c0.r-c1.r,c0.i-c1.i); return a; }
complex operator * (complex c0, complex c1) { complex a(c0.r*c1.r-c0.i*c1.i,c0.r*c1.i+c0.i*c1.r); return a; }
complex operator / (complex c0, complex c1) { complex a((c0.r*c1.r+c0.i*c1.i)/(c1.r*c1.r+c1.i*c1.i),(c0.i*c1.r-c0.r*c1.i)/(c1.r*c1.r+c1.i*c1.i)); return a; }
int main() {
complex a(1.0,0.0);
complex b(-0.5,+0.5*sqrt(3.0));
complex c(-0.5,-0.5*sqrt(3.0));
printf("%f + %fi\n",(a+b+c).r,(a+b+c).i);
printf("%f + %fi\n",(a-b-c).r,(a-b-c).i);
printf("%f + %fi\n",(a*b*c).r,(a*b*c).i);
printf("%f + %fi\n",(a/b/c).r,(a/b/c).i);
return 0;
}
0495デフォルトの名無しさん
2010/11/27(土) 23:02:00ttp://codepad.org/gUK5WYAK
上記は line 104 の printf() のコメントを外して n を 10 にした結果だ
codepad では Random() の結果が全て -700 前後になるんだが、codepad では gcc を使用しているはずなので
君の環境での結果と同じはず
で、禁を犯して codepad 上で少しデバッグしたら以下が判った
RAND_MAX は bcc では 0xFFFF/2 - 1 だが gcc では 0xFFFFFFFF/2 - 1 だ
>>462 line8 において
return (double)rand() / (RAND_MAX + 1);
とあり、この時の分母は一旦 singned int に代入されるため
bcc では 0xFFFF/2
gcc では 0xFFFFFFFF/2
となり、bcc では正の値、gccでは負の値となってしまう、よって
return (double)rand() / RAND_MAX;
とするのが正しい
言い訳になるけどこの部分の実装は俺では無いので見落としていた
return rand() / (RAND_MAX + 1.0);
でいいと思います。この値が 1 になる可能性はつぶしておいたほうがいいのでは?
0497478
2010/11/27(土) 23:16:358ぎょうめをいわれたと〜りになおしたら☆がいっぱいでました。らっきー♪ わーい
http://codepad.org/IEnpC3ev
提案:
*よりも☆の方が、見た目にうれし度が高い感じでいいとおもいます!! どうでしょうか
0498デフォルトの名無しさん
2010/11/27(土) 23:18:33だよなぁ、そんな便利なもんが無償なはずは無いよなぁ...orz
まぁ、配列のオーバーランは確かなので納得するよ
>>493
では特殊なモノではないんだね
>>483 における "Pointer arithmetic in invalid stack" とは不正なスタック上でのポインタ演算という意味だけど.
dispOneHist( border + i - 1, border + i, hists[i] );
この行に何の問題が有るのか俺には理解できないんだよな
>>487 の修正を行っても >>483 のエラーが再現するか確認してくれないか?
できれば以下の方が良いかな
dispOneHist( ( (double*)border + i - 1 ), ( (double*)border + i ), hists[i] );
0499デフォルトの名無しさん
2010/11/27(土) 23:20:55http://codepad.org/kIzzWXML
0500デフォルトの名無しさん
2010/11/27(土) 23:22:43その修正を行ったら劇的にエラーが減りました
要はarrayの解放が行われていないというだけです
borderがdouble型の配列なので問題ないと思うんですけどね?
VC10でもやってみます
CodeGuardのエラーは
Error 00001. 0x300010 (Thread 0x01C8):
Resource leak: The memory block (0x7FEE0010) was never freed
The memory block (0x7FEE0010) [size: 800000 bytes] was allocated with malloc
| dai65_3.c line 98:
| #endif //ZZZ
| srand(seed);
|>if ((array = (double *)malloc(sizeof(double) * n)) == NULL){
| exit(1);
| }
Call Tree:
0x00401710(=dai65_3.exe:0x01:000710) dai65_3.c#98
0x32B9C3BA(=CC32110MT.DLL:0x01:09B3BA)
のみです
0501デフォルトの名無しさん
2010/11/27(土) 23:24:27でも gcc で動かないのはマズイでしょ
もし1になる可能性を潰したいのであれば
double Rand(void)
{
int i = RAND_MAX;
while( i == RAND_MAX )
i = rand();
return (double)i / RAND_MAX;
}
なんてのはどうかな?
0502デフォルトの名無しさん
2010/11/27(土) 23:27:57RAND_MAX + 1.0 とすることでここがdoubleになってしまうのでrand()もdoubleに
格上げされるので問題ないと思いますよ
0503デフォルトの名無しさん
2010/11/27(土) 23:30:48VC10だと何の問題もなく実行出来ました
バグを取るためのツールがバグってるってのはシャレにならないので
QC(SP2の修正候補)に出しておきます
RAND_MAX + 1.0
とした段階で、この結果は double になります(し、double は普通仮数部が 52 ビットあります)から、
>>496 は、gcc でも問題なく動きます。
cf. ISO/IEC 9899:1999 6.3.1.8-1
0505デフォルトの名無しさん
2010/11/27(土) 23:46:380506デフォルトの名無しさん
2010/11/27(土) 23:48:29あぁ 1.0 だったのね
又、暗黙のキャストか、嫌いなんだよなぁ今みたいな誤解が生じるから
最初から
(double)rand() / ( (double)RAND_MAX + 1.0 );
って書いてくれれば誤解しないのに
ところで1.0を返す可能性を潰す必要が有るのか?0<=x<=1 で良いんとちゃう?
0507デフォルトの名無しさん
2010/11/27(土) 23:49:440508デフォルトの名無しさん
2010/11/27(土) 23:56:30[2] 問題文(含コード&リンク): すべての点について、もっとも近い点通しを結ぶ。 このとき、結んだ線分の
長さの合計を求めなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008
[3.3] 言語: C++
[4] 期限:2010年11月29日12時
[5] その他の制限:
・複素数を構造体として宣言し、複素数の四則演算を実現する関数(4つ)
値を設定する関数、値を表示する関数を作る。
・複素数の構造体は、
struct senbaigaeshi3 {
double re;
double im;
} と宣言
・引数は、演算対象の2つの構造体
・戻り値は構造体
0509デフォルトの名無しさん
2010/11/27(土) 23:58:17バグっていうほどではないけど、埋め込みコードの生成にクセが有るんだろうね
マニュアルに注意点とか書いてるんじゃないかな、こんなコードの書き方は駄目ですみたいなw
0510デフォルトの名無しさん
2010/11/28(日) 00:00:16長さに複素数?
0511デフォルトの名無しさん
2010/11/28(日) 00:01:55むしろ2つの問題に見える
0512デフォルトの名無しさん
2010/11/28(日) 00:02:37たとえば、xy平面上で、
A(0, 0), B(1, 0), C(0, 2)
があったとして、結ばれるのは
AB
のみですか?それとも
AB, AC
になりますか?
>>506
すみません。この場合は全部にキャストしたほうがよかったですね。
0513デフォルトの名無しさん
2010/11/28(日) 00:20:14すいません
もう一度確認してきます
代わりに下の問題をおねがいします
0514デフォルトの名無しさん
2010/11/28(日) 00:24:47[2] 問題文(含コード&リンク):X^n=1はn個の複素数の解を持つ。 複素平面上にこのn個の解をおくとき、
原点と各13個の点との距離の和はnになる。このプログラムを作れ。
(ω1=a1+ib1 ω2=a2+ib2とするとき、ω1とω2の距離:d12は、d12^2=(a1−a2)^2+(b1−b2)^2)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008
[3.3] 言語: C++
[4] 期限:2010年11月29日12時
[5] その他の制限:
・複素数を構造体として宣言し、複素数の四則演算を実現する関数(4つ)
値を設定する関数、値を表示する関数を作る。
・複素数の構造体は、
struct omega2{
double re;
double im;
} と宣言する。
・引数は、演算対象の2つの構造体とする。
・戻り値は構造体とする。
m(_ _)m
0515デフォルトの名無しさん
2010/11/28(日) 00:32:220516デフォルトの名無しさん
2010/11/28(日) 00:38:150517デフォルトの名無しさん
2010/11/28(日) 00:40:20実際にそう書いてあるわけで
0518デフォルトの名無しさん
2010/11/28(日) 00:40:350519デフォルトの名無しさん
2010/11/28(日) 00:40:42後半が >>508 と同じでやはり2つの問題に見える
後半に限って言うと加減乗算は簡単だけど除算ってどうするのか数学的に教えてくれ
0520デフォルトの名無しさん
2010/11/28(日) 00:52:00距離の和がnになることを、さまざまなnについて計算・確認せよ。
x∈Cで x^n = 1 を満たす x は複素平面上では原点を中心とする半径1の円に内接する正多角形(頂点のひとつは 1) になります。
この事実を計算で出さないといけないのですか?それともこの事実を使ってもいいですか?
半径 1 の n 個の根がありますから、各々の根と原点との総和は n になるのは自明ですけれども、どこまでプログラムで作ればいいものか迷います。
あと >>2 をよろしく。
0522デフォルトの名無しさん
2010/11/28(日) 00:57:2713個の点じゃなくて、n個の点だよな?
0523デフォルトの名無しさん
2010/11/28(日) 01:00:40n個の複素平面上の点について原点からの距離を全て求める
合計がnとなることを示す
0524デフォルトの名無しさん
2010/11/28(日) 03:00:41#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct complex { double re; double im; } c;
static c set_c(double re, double im) { return (c){re, im}; }
static double dif_c(c a) { return sqrt(a.re * a.re + a.im * a.im); }
#define f(n, e, r, i) static c n(c a,c b) { if (e) exit(1); return set_c(r,i); }
#define r1 (a.re)
#define i1 (a.im)
#define r2 (b.re)
#define i2 (b.im)
#define d2 dif_c(b)
f(add_c, 0, r1 + r2, i1 + i2); f(sub_c, 0, r1 - r2, i1 - i2);
f(mul_c, 0, r1*r2 - i1*i2, r1*i2 + r2*i1); f(div_c, d2==0, (r1*r2 + i1*i2)/d2, (r2*i1 - r1*i2)/d2);
#define t2r(t) ((t)/180.0 * 3.14159265)
static c pow_c(c a, int b) { c t = a; while (--b) t = mul_c(t, a); return t; }
static void pri_c(c a, int n) {
c t = pow_c(a, n);
printf("w = %.4f%+.4fi, |w| = %g, w^%d = %.4f%+.4f\n", a.re, a.im, dif_c(a), n, t.re, t.im);
}
int main(void) {
c *w, dw;
double dif;
int i, n;
scanf("%d", &n);
if ((w = (c *)calloc(n, sizeof(*w))) == NULL) return perror("calloc"), 1;
w[0] = set_c(1, 0), dw = set_c(cos(t2r(360.0/n)), sin(t2r(360.0/n)));
for (i = 1; i < n; i++) w[i] = mul_c(w[i - 1], dw); /* set_c(cos(t2r(360.0/n * i)), sin(t2r(360.0/n *i))) */
for (i = 0; i < n; i++) dif += dif_c(w[i]), pri_c(w[i], n);
return printf("dif = %g\n", dif), free(w), 0;
}
0525デフォルトの名無しさん
2010/11/28(日) 05:12:28[2] 問題文(含コード&リンク):以下の仕様を満たすプログラムを作成してください。
・文章の書かれたテキストファイルを読み込み、文字列を入力して検索する。
・検索した文字列がある箇所全てに対して、その文字列と前後10文字を、検索結果として別のテキストファイルに書き込む。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010年11月29日16:00
[5] その他の制限:なし
0526デフォルトの名無しさん
2010/11/28(日) 08:08:40http://codepad.org/e1tOt5Bg
こういうのでいいのか?
0527デフォルトの名無しさん
2010/11/28(日) 08:36:40行頭にパターンが出現したらどうなるんだろう?
そんなに簡単じゃないと思うよ
まずいです。
fprintf(ofp, "%s", strncpy(tmp, p - 10, 10));
は、strstr の返り値によっては p - 10 が tmp よりも小さくなってしまい p - 10 は line[] の外になる可能性があります。
また strncpy(s1, s2, 10) として s2 が 10 文字以上あった場合には、末尾に \0 は自動的にはつけません。(正直いってstrncpy() は使いにくい。)
0529409
2010/11/28(日) 09:11:03をもう一度お願いしたいです。
for を変えたり、漸か式を考えたりするみたいです。
recurseがなんたら。。。
あと2 もわからないのでよろしくお願いしたいです><
0530デフォルトの名無しさん
2010/11/28(日) 09:29:38if (expr)
A;
else
return;
だったら、
if (!expr)
return;
A;
にしろよ
0531デフォルトの名無しさん
2010/11/28(日) 09:46:240532デフォルトの名無しさん
2010/11/28(日) 10:00:27#include <stdio.h>
#include <math.h>
#define N (13)
struct complex { double re; double im; complex(double a,double b){re=a;im=b;}; };
double Len(complex c0) { return sqrt(c0.re*c0.re+c0.im*c0.im); }
int main(void) {
int i;
double PI = 2*acos(0);
double sum = 0;
for (i=0 ; i<N ; i++) sum += Len(complex(cos(2*PI*i/N),sin(2*PI*i/N)));
printf("%f\n",sum);
return 0;
}
0533デフォルトの名無しさん
2010/11/28(日) 10:44:54こんな感じですかね。
http://codepad.org/8wXXgxSw
0534デフォルトの名無しさん
2010/11/28(日) 11:05:46ABCDEFG0123456789\n
HIJKLMN0123456789\n
みたいなファイルが与えられてパターン文字列がHIJの場合、どのような出力になるの?
1)\n を無視して
0123456789HIJKLMN012345 なのか?
2)それとも \n も一文字と考えて
123456789\n
HIJKLMN012345 なのか?
3)もしくは、行内だけを考慮して前後が10文字に満たない場合は有るだけ表示するって考えで
HIJKLMN012345 なのか?
この手の問題は常に改行コードの扱いを明確にすべきなんだけど、あまり良い講師に恵まれていないようだね
0535デフォルトの名無しさん
2010/11/28(日) 11:22:17パターンに9Hが与えられたときやASCII以外のファイルの場合の処理が気になってしかたないのは僕だけではないはず
0536デフォルトの名無しさん
2010/11/28(日) 11:37:300537デフォルトの名無しさん
2010/11/28(日) 13:06:17行数を表示して前の行を考えないで行単位で処理すればいいんじゃないの?
0538デフォルトの名無しさん
2010/11/28(日) 13:31:50問題文(含コード&リンク):X^n=1はn個の複素数の解を持つ。 複素平面上にこのn個の解をおくとき、
原点と各点(例えば、13角形なら各13個の点との距離)との距離の和はnになる。このプログラムを作れ。
でした。問題文を書き間違えていました。すいませんm(==)m
0539デフォルトの名無しさん
2010/11/28(日) 13:35:16多角形の周囲長を求めることになりますの、複素数を使って求める。
nが無限大になったときには、円の周囲長になるはずです.
距離は実数で、複素数はベクトルのように使います.
複素数 w = a + bi と原点との距離dは、d ^ 2 = a^2 + b^2
0540デフォルトの名無しさん
2010/11/28(日) 13:36:220541デフォルトの名無しさん
2010/11/28(日) 13:45:57最悪改行1個っていうケースもあるだろう。
「その文字列と前後10文字」を書き出せば良いと思う。
0542デフォルトの名無しさん
2010/11/28(日) 14:01:31クソースコードを書いたでおじゃるが、晒すのは止めたでおじゃる。
ちみたちで解決してたもう。
0543デフォルトの名無しさん
2010/11/28(日) 14:09:29多角形の周囲長を求めることになりますの「で」、複素数を使って求める。
でした。 m(_ _)m
0544デフォルトの名無しさん
2010/11/28(日) 14:47:01http://codepad.org/6fPY9LsG
0545デフォルトの名無しさん
2010/11/28(日) 14:52:48誤字・脱字は目をつむるけど、もっと正確に問題書けよ。
正多角形とかじゃなかったか?
0546デフォルトの名無しさん
2010/11/28(日) 15:06:38以後気をつけます。
正多角形とは書いてありませんでした。
多角形とだけ書いてあります。
0547デフォルトの名無しさん
2010/11/28(日) 15:09:24acos(0); でエラーが発生します。
0548デフォルトの名無しさん
2010/11/28(日) 15:15:120549デフォルトの名無しさん
2010/11/28(日) 15:18:09gccなら g++ hoge.cpp -lm
>>508 で単に正多角形の外周の和なら↓の方が正確。
http://codepad.org/0MSXe5Qb
>>546
ただの多角形なら円の周囲長にはならんぞ。
何か他の条件は?
0550デフォルトの名無しさん
2010/11/28(日) 15:24:37計算から示すための問題じゃないの?
最初っからそれを利用してたら問題にならないと思うけど
0551デフォルトの名無しさん
2010/11/28(日) 15:31:47そういう問題なのかどうかは >>508 しか分からん。
>>508 待ちってことで。
0552デフォルトの名無しさん
2010/11/28(日) 15:46:28「x^n=1の解はnこの複素数の解を持ち、複素数平面上にこのn個の解をおくとき、
原点と各点との距離の和がnになることをプログラムで確認しなさい。」という問題です。
0553デフォルトの名無しさん
2010/11/28(日) 15:50:13error C2668: 'acos' : オーバーロード関数の呼び出しを解決することができません。
とエラーが発生しました。
0554デフォルトの名無しさん
2010/11/28(日) 15:55:28何でだろ? 取りあえず
double PI = 2*acos(0.0);
でもだめなら諦めて
double PI = 3.1415926535897931;
acos(0.0)
に書き換えてみてください。
>c:\documents and settings\administrator\my documents\visual studio 2008\projects\test04\test04.cpp(15) : error C2668: 'acos' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
> c:\program files\microsoft visual studio 9.0\vc\include\math.h(541): 'long double acos(long double)' の可能性があります。
> c:\program files\microsoft visual studio 9.0\vc\include\math.h(493): または 'float acos(float)'
> c:\program files\microsoft visual studio 9.0\vc\include\math.h(107): または 'double acos(double)'
> 引数リスト '(int)' を一致させようとしているとき
0556デフォルトの名無しさん
2010/11/28(日) 16:07:07そりゃ >>514 じゃねーの?
それなら >>524 >>532 じゃだめなのかい?
0557デフォルトの名無しさん
2010/11/28(日) 16:17:21直したところ出力されました。
ところで、この値を変えるにはどうすればいいのでしょうか?
0558デフォルトの名無しさん
2010/11/28(日) 16:21:32>>524、>>532ともエラーになりました。
0559デフォルトの名無しさん
2010/11/28(日) 16:32:12出来ないではなく、考えようともしないんだから。
0560デフォルトの名無しさん
2010/11/28(日) 16:39:38>>532をacos(0.0) に書き換えればいいんですか?
0562デフォルトの名無しさん
2010/11/28(日) 16:58:050564デフォルトの名無しさん
2010/11/28(日) 17:10:03読む人間のことを何も考えてない
>>357の問題で12時間でつくるとなれば、「赤あげて、白さげて」方式も止むを得なかったんですよ。
最終回答が >>451 でOKだったとして、これをオートマトンで書くと、フラグの数が >>451 では 8 個だから、状態数は 2^8 = 256 で、ちょっとしたお仕事になります。
>>357 の問題が出た段階で必要なフラグの数もいわんや状態数も見積もれない段階で、期限12時間というのに、オートマトンは書きにくいでしょう。
0566デフォルトの名無しさん
2010/11/28(日) 17:50:49どこが汚いって言われてるのか理解できないってことは
君って多人数プロジェクトに参加したことないでしょ
0567デフォルトの名無しさん
2010/11/28(日) 17:53:04変なこだわり持ってるやつは自分でやればいい
ええ、実務経験はありませんから。
よろしければ問題点を教えてください。
0569デフォルトの名無しさん
2010/11/28(日) 18:13:30解らないとか言う前に少なくともコード見たら?
漸化式もあなたの言うrecurse(たぶんrecursive:再帰)も
http://codepad.org/Q7wmR5Wy
で使ってるんだが
0570デフォルトの名無しさん
2010/11/28(日) 18:29:01[2] 問題文(含コード&リンク):
file1.csv(マスタファイル)からデータを読み込みfile2.csv(トランザクションファイル)に記述された内容でデータを更新・追加し、
再度file1.csvに保存せよ。
file1.csv
1,Ken Kawakami,[email protected]
2,Toshiyuki Ishikura,[email protected]
3,Yuuta Hayashi,[email protected]
4,Kazuwo Inoue,[email protected]
5,Kinya Nagata,[email protected]
6,Yuki Hayashi,[email protected]
7,Yoshiyuki Hihara,[email protected]
file2.csv
2,,[email protected]
4,Kazuo Inoue,
5,,[email protected]
7,Yoshiyuki Hinohara,[email protected]
8,Kouki Takahashi,[email protected]
9,airi Saito,[email protected]
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010年12月1日
[5] その他の制限:なし
宜しく御願いします。
0571デフォルトの名無しさん
2010/11/28(日) 18:39:22それで良いよ。数学的なことが分からないなら↓でも読むこと。
http://ja.wikipedia.org/wiki/1%E3%81%AE%E5%86%AA%E6%A0%B9
数学的なことでこれ以上の質問なら数学板へどうぞ。
0572デフォルトの名無しさん
2010/11/28(日) 18:46:29更新とは、ただ行を置換するだけですか?
0573デフォルトの名無しさん
2010/11/28(日) 18:54:48はい。
2番目だったら2,Toshiyuki Ishikura,[email protected]
4番目だったら4,Kazuo Inoue,[email protected]
のように置き換える処理です。
0574525
2010/11/28(日) 19:14:11どうもありがとうございます。
あまり課題について詳細な説明はうけていないので、曖昧な点が多くて申し訳ないです。
>>534
3)の形式で表示だと思います。
その場合、「 p - 10 が tmp よりも小さくなってしまい p - 10 は line[] の外になる
可能性がある」との指摘がありましたが、どのように対処したら良いでしょうか?
0575デフォルトの名無しさん
2010/11/28(日) 19:27:19http://codepad.org/d5T0wRQK
0576デフォルトの名無しさん
2010/11/28(日) 19:53:14http://codepad.org/qJEvuzCJ
0577デフォルトの名無しさん
2010/11/28(日) 20:25:47ありがとうございます
0578デフォルトの名無しさん
2010/11/28(日) 20:38:18[2] http://www.dotup.org/uploda/www.dotup.org1273890.pdf.html
[3]
[3.1]Windows
[3.2] gcc
[3.3] 言語: C
[4]11/29まで
[5] なるべく簡単なプログラムでお願いします。
0579デフォルトの名無しさん
2010/11/28(日) 20:52:18>ログラムの後にコメントで明記すること.また,自分なりに変更して使うこ
>と.理解せずに丸写しは厳禁.
参考元に2chって書くのかw
0580デフォルトの名無しさん
2010/11/28(日) 21:06:14二分法
http://codepad.org/xsFebk26
解が収束しません。
http://codepad.org/pE4RZpEM
失礼。手元の環境では解析解(-1±sqrt(7))/4 と一致しました。
codepad の問題と思われます。
0583デフォルトの名無しさん
2010/11/28(日) 21:27:44xが初期化されていない事がスグにわかる。お前ら二人とも落第。
0584デフォルトの名無しさん
2010/11/28(日) 21:27:58これなんでかね。
for ( ; 1e-16<a && a<1e16 ; a/=2) {
とかしてもダメみたいだし。
0585デフォルトの名無しさん
2010/11/28(日) 21:29:12こりゃ失礼。
http://codepad.org/gH82yTqJ
0586デフォルトの名無しさん
2010/11/28(日) 21:32:50ニュートン法の時の関数の微分は手で計算していい?
その方が数値計算で出すより早くて精度出ると思うけど
0587デフォルトの名無しさん
2010/11/28(日) 21:44:52はい。よろしくお願いします。
0588デフォルトの名無しさん
2010/11/28(日) 21:51:14> 何回で収束したかが分かるようせよ
に対応してたら収束が遅いことが分かったので。
http://codepad.org/t8WZDISt
0589デフォルトの名無しさん
2010/11/28(日) 22:08:31[2] 問題文(含コード&リンク): キーボードから入力した値を大きい順に並べ替えなさい。(ただし、配列を使うこと。)
[3] 環境
[3.1] OS:Windows 7
[3.2] コンパイラ名とバージョン:Visual Studio 2010
[3.3] 言語: C++
[4] 期限:2010年11月28日 23:59まで
[5] その他の制限:特にありません
途中まで作りました。http://codepad.org/H09vJg4U
実行すると、最大の数字が入力してもない数字が最大項として現れます。なぜでしょうか?ご教授お願いします。
0590デフォルトの名無しさん
2010/11/28(日) 22:16:02#if 1 の時に収束しない理由は分からん。
http://codepad.org/YEGQb4cz
0591デフォルトの名無しさん
2010/11/28(日) 22:25:49普通に動くよ
入力回数を5に制限していないから6個以上入力すると落ちるけど、記述のような現象は起きないな
0592デフォルトの名無しさん
2010/11/28(日) 22:29:04http://codepad.org/GaU5zVmA
0593デフォルトの名無しさん
2010/11/28(日) 22:36:28関数ポインタ使った奴
http://codepad.org/4nEH3OqI
codepadだとtimeoutするけど自分のPCだと7回で終了
0595デフォルトの名無しさん
2010/11/28(日) 22:47:37課題文の初期値云々はよくわからん
http://codepad.org/HRZoxPdF
0596デフォルトの名無しさん
2010/11/28(日) 22:49:40ありがとうございます。
考えたのですが、配列の初期化を行っていないので入力していない配列に
ランダムの数字が入ってそれが最大の値として入ったりしてたのだと考えました。
配列の初期化を行うことによって、解決しました。
0597デフォルトの名無しさん
2010/11/28(日) 23:02:35ああそうか、入力回数が5回に満たない場合はテストしなかったわ
入力終了判定を ctlZ の入力ではなく i < 5 にすれば変な現象は起きないんだけどな
0598デフォルトの名無しさん
2010/11/28(日) 23:02:46http://hibari.2ch.net/test/read.cgi/tech/1290857610/21
0599デフォルトの名無しさん
2010/11/28(日) 23:12:580600デフォルトの名無しさん
2010/11/28(日) 23:33:07http://codepad.org/SrdfSDs8
codepadはループが確実に終焉する保障の無い記述は強制的にtimeoutさせるのかな
>>599
pdf消えちゃってるから解んないけど
たぶん鞍点か何かにトラップされるじゃない?
その辺はレポート書くあなた自身が考察するべきだと思うけど
0601デフォルトの名無しさん
2010/11/28(日) 23:40:49>static const int EPS = 10e-16;
これが原因でわ?
0602デフォルトの名無しさん
2010/11/28(日) 23:53:54静的定数をマクロにしたらできた
http://codepad.org/3HMwpmDb
テラthx
static const double EPS=10e-16
でOKなのでは?
http://codepad.org/isC09tu6
0604デフォルトの名無しさん
2010/11/29(月) 00:12:04何が原因だったか分かってる?
0605デフォルトの名無しさん
2010/11/29(月) 00:14:50これはひどい
0606デフォルトの名無しさん
2010/11/29(月) 00:36:50orz
完全に盲目になってた
サーセン
0607デフォルトの名無しさん
2010/11/29(月) 05:56:140608デフォルトの名無しさん
2010/11/29(月) 12:54:47[2] 問題文(含コード&リンク): #include <stdio.h> struct man1{ char name[20];double kokugo;double sansu; }; strut man2{char name[20];double kokugo; double sansu;};struct man3{char name[20]double kokugo;double sansu;}; main()
{ struct man1 student1;
struct man2 student2;
struct man3 student3;
strcpy(student1.name,"SHARON" );
student1.kokugo=80;
student1.sansu=75;
printf("氏名:%s\n",student1.name );
printf("国語:%f\n",student1.kokugo );
printf("算数:%6.2f\n",student1.sansu );
strcpy(student2.name,"SATOH" );
student2.kokugo=81;
student2.sansu=76;
printf("氏名:%s\n",student2.name );
printf("国語:%f\n",student2.kokugo );
printf("算数:%6.2f\n",student2.sansu );
strcpy(student3.name,"SAKAI" );
student3.kokugo=86;
student3.sansu=73;
printf("氏名:%s\n",student3.name );
printf("国語:%f\n",student3.kokugo );
printf("算数:%6.2f\n",student3.sansu ); }このプログラムを改造する
1.出力で3人の国語の平均点と3人の算数の平均点を出す
[3] 環境
[3.1] OS:Windows 7
[3.2] コンパイラ名とバージョン:Visual Studio 2010
[3.3] 言語: C
[4] 期限:2010年11月29日
0609デフォルトの名無しさん
2010/11/29(月) 13:03:24ttp://codepad.org/1DvcEQBF
改造は最小限にしておきました
0610デフォルトの名無しさん
2010/11/29(月) 13:03:430611デフォルトの名無しさん
2010/11/29(月) 13:14:470612デフォルトの名無しさん
2010/11/29(月) 13:23:15ちゃんとやよハゲ死ね
ttp://codepad.org/skxL32RD
0613デフォルトの名無しさん
2010/11/29(月) 13:35:410614デフォルトの名無しさん
2010/11/29(月) 13:55:18printf("算数の平均点:%f\n", (student1.sansu + student2.sansu + student3.sansu) / 3);
を最後に追加するだけでいいだろ
無駄なポインタ配列とかいらない
0615デフォルトの名無しさん
2010/11/29(月) 14:03:170616デフォルトの名無しさん
2010/11/29(月) 14:17:04構造体の使い方にきちんと物申したら加点されるかもよw
0617デフォルトの名無しさん
2010/11/29(月) 14:44:56この日本語の読めなさはアレだなw
0618デフォルトの名無しさん
2010/11/29(月) 14:55:100619デフォルトの名無しさん
2010/11/29(月) 17:19:21さて、誰かな
0620デフォルトの名無しさん
2010/11/29(月) 19:06:07[2] 問題文(含コード&リンク):コマンド名 vhswitch に続く記号「-n」の後に「繰り返し数」を、「-s」の後に「文字列」
を、さらに「-v」または「-h」を書きます。
コマンドラインから次のように入力します。スイッチ「-v」が入力された場合は垂直方向に文字列を表示します。
例) $./vhswitch -n 3 -s "abcdef" -v <Enter>
abcdef
abcdef
abcdef
一方。スイッチ「-h」が入力された場合は水平方向に文字列を表示します。
例)$./vhswitch -s "abcdef" -h -n 3 <Enter>
このような実装をするプログラムを書け。
〜プログラムの一部分の骨子〜
http://codepad.org/pXaw5yU8
[3] 環境
[3.1] OS:Mac OS X バージョン10.6.4
[3.2] コンパイラ名とバージョン:ターミナル
[3.3] 言語:C
[4] 期限:2010年11月30日 19:00まで
[5] その他の制限:特になし
0621デフォルトの名無しさん
2010/11/29(月) 19:11:34について、すみません。。
書き忘れました。
スイッチ「-h」が入力された場合は水平方向に文字列を表示します。
例)$./vhswitch -s "abcdef" -h -n 3 <Enter>
の部分の出力イメージを書き忘れました。
例)$./vhswitch -s "abcdef" -h -n 3 <Enter>
abcdef abcdef abcdef
と出力されるようにお願い致します。
0622デフォルトの名無しさん
2010/11/29(月) 19:29:30[2] 移動平均 ファイルにある数字のデータを読み込んで配列の移動平均を求めるプログラム。
ファイル名は適当で。平均値を関数で求めて、その関数を使い、移動平均を求める関数を
作る。
[3] 環境
[3.1] OS:Windows
[3.2] 言語: C
[4] 期限:できるだけすぐ
[5] その他の制限:
0624デフォルトの名無しさん
2010/11/29(月) 21:08:31[2] 問題文(含コード&リンク):
プログラム例>>625において、リストからst_bをはずして、「(先頭)st_a←→st_c(最後尾)」としたい。
変数名st_bのみを用いて(st_aとst_cを用いないで)この操作を行うようにプログラムを書き換えよ。
nextとprevをうまく利用すること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010年12月1日
0625デフォルトの名無しさん
2010/11/29(月) 21:13:13よろしくお願いします。
>>625 では prev に値が設定されていないのですが、なにか抜けていませんか?
仮に、
st_a->prev = NULL;
st_b->next = st_a;
st_c->next = st_c;
というコードがあれば、st_b のリンクをはずすには、
st_b->prev->next = st_b->next;
st_b->next->prev = st_b->prev;
free(st_b);
とすればいいのですが。
0627デフォルトの名無しさん
2010/11/29(月) 21:26:52[2] 問題文(含コード&リンク):
以下の2分木を遺伝的アルゴリズムを用いて解きたいのですがどうすればいいですか?
まずはこの2分木の説明から。
「+」とあるところは下の2つの数字を足す。
「×」とあるところは下の2つの数字を掛ける。
なのでこのグラフの解は1340となります。
「この1から10までの数字を入れ替えて解が最小となるときを求めよ。」
という問題です。
これを遺伝的アルゴリズムを用いて解きたいのですかどのようなプログラムになりますか?
[3] 環境
[3.1] OS:Windows
[3.2] 言語:C
[4] 期限: 12月5日
0628デフォルトの名無しさん
2010/11/29(月) 21:26:56骨子完全無視で。
http://codepad.org/fDk1jVtV
enum { false, true }
と特定の値に結びつけずに定義している状態で、
if (gHori)
としてOKでしょうか?手元の環境では問題なく false = 0 となっているようでしたが、念のために規格を調べてみたもののよくわからなくて。
0630デフォルトの名無しさん
2010/11/29(月) 21:56:47骨子に加筆だとこんな感じかな
ttp://codepad.org/rzm6fznw
・ -n -s -v|h は複数回与えても良いが最後に指定されたモノが有効
・ -n -s はそれぞれ最低一回は指定されなければ駄目
・ -n -s の後に repeat や message が続かない場合はエラーになったりならなかったりする、厳密にチェックした方が良いのかな?
変な引数を与えて色々試して欲しい
0631デフォルトの名無しさん
2010/11/29(月) 22:07:18「遺伝的アルゴリズム」がさすのはかなり大雑把な意味になるので
多分お前のやってる授業とは食い違う答えしかでてこないがいいか?
あとどの2分木だよww用意された2分木の数字だけ入れ替える問題だよな?
0632628
2010/11/29(月) 22:11:01まず俺はあまり規格とか詳しくない。
昔よく見た、bool 関係の宣言をあまり考えず使ってる。
C言語 enum で検索すると、
数字省略時は0から順に振られるとあちこちにあるので、
大丈夫だとは思うけど、
enum { false=0, true }
にでもしとくかなぁ。
なんにしてもソースの変な部分を指摘して貰うのは助かるよ。
俺の場合そのために宿題スレの宿題やってるようなもんだ。
0633デフォルトの名無しさん
2010/11/29(月) 22:13:24画像の2分木でお願いしますw
0634デフォルトの名無しさん
2010/11/29(月) 22:17:460635デフォルトの名無しさん
2010/11/29(月) 22:19:02要するに虫食い状態の逆ポーランド記法をGAで求めるということなのか?
で、その2分木はどの画像なんだ?
0636デフォルトの名無しさん
2010/11/29(月) 22:20:34[2] 5000以下の素数を1行に10個ずつ、画面に出力するC言語のプログラムを作成しなさい。
[3] 環境
[3.1] OS:Windows7
[3.2] C言語
[4] 期限: 2010/11/30
[5] 配列などは習っていない。1行に10個ずつ表示する方法がわからない。
0637デフォルトの名無しさん
2010/11/29(月) 22:20:47ブルートフォースの方が計算量が少なくなりそうだw
0638デフォルトの名無しさん
2010/11/29(月) 22:26:49すいませんwwww
貼り付けるの忘れてましたwwww
http://imepita.jp/20101129/769470
0639デフォルトの名無しさん
2010/11/29(月) 22:28:51http://codepad.org/F9WtRCVR
0640デフォルトの名無しさん
2010/11/29(月) 22:38:100641デフォルトの名無しさん
2010/11/29(月) 22:39:34これはGAではなくてGPを適用すべき問題
0642デフォルトの名無しさん
2010/11/29(月) 22:41:08ではとりあえずこの画像の時の解を
出すプログラムを教えてもらってもいいですか?
0643デフォルトの名無しさん
2010/11/29(月) 22:56:06http://codepad.org/Pume5sMQ
このようにしてみましたがうまくいきませんでした。
どこを修正すればよいか教えてください。
よろしくお願いします。
0644デフォルトの名無しさん
2010/11/29(月) 23:04:0140~41行目。
st_b->prev = st_a;
st_c->prev = st_b;
0645デフォルトの名無しさん
2010/11/29(月) 23:12:04ありがとうございました!
0646デフォルトの名無しさん
2010/11/29(月) 23:26:03交叉したときに致死遺伝子がなぁとか思ってGPにしろとか言ったけど
良く見ると巡回セールスマンと同様の遺伝子コードにすればGAで解けるわ
まぁ、12/5までにはできると思う
0647デフォルトの名無しさん
2010/11/29(月) 23:43:38ありがとうございます!
0648デフォルトの名無しさん
2010/11/30(火) 01:46:21超適当
交差させる方法が思いつかなかったから単性生殖
2分木は何をさせたいのかイマイチ不明だからスルー
最小値が230かどうかは検算してない
http://codepad.org/irFqgtaJ
0649デフォルトの名無しさん
2010/11/30(火) 02:11:16http://codepad.org/GHxHo32j
0650デフォルトの名無しさん
2010/11/30(火) 02:12:28ありがとうございます!
調子に乗ってもう1つお願いします。
さっきの応用みたいな感じなんですが、、、
[1] 授業単元: 情報
[2] 問題文(含コード&リンク):
以下の数字には2つの要素が含まれている。
1:2 5
2:3 1
3:4 2
4:4 2
5:5 3
6:3 6
7:6 2
8:9 2
9:8 1
10:7 4
「A」:下の2つの数字の左の数字を足し、右の数字は大きい方を選択
「B」:下の2つの数字の左の数字は大きい方を選択し、右の数字は足す
なのでこのグラフの解は左が35、右が10となる。
右の数字の制約は15以下とした時、左の数字の最小値を
1から10までの数字、枝、A、Bを入れ替えたりして、
遺伝的アルゴリズムを用いて求めよ。
どのようなプログラムになりますか?
[3] 環境
[3.1] OS:Windows
[3.2] 言語:C
0651650
2010/11/30(火) 02:14:31http://imepita.jp/20101130/070050
0652デフォルトの名無しさん
2010/11/30(火) 02:24:18じゃあ、>>648は見当違いだから忘れてくれ
0653デフォルトの名無しさん
2010/11/30(火) 02:26:31すいません・・・
よろしくお願いします!
0654デフォルトの名無しさん
2010/11/30(火) 05:57:021] 授業単元:cプログラミング
[2] クイズゲームを作成する。
ファイル入出力についてどれだけ理解しているかを確かめる。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VC9.0?(Visual Studio2008)
[3.3] 言語: C
[4] 期限: 今日午前11時まで
[5] その他の制限:
画面上に問題を一文ずつ表示し、番号を入力させ答えさせる。
結果をtxtファイルで出力する。
なお、問題文はtxtファイルを作成しそれを読み込んで表示させる。
よろしくお願いします
0655デフォルトの名無しさん
2010/11/30(火) 06:17:55仕様が大雑把だが大丈夫か?
0656デフォルトの名無しさん
2010/11/30(火) 07:44:54結果とは入力された番号の事だろうか?
それとも問題のファイルが
2chは下らない 1)はい 2)いいえ 3)どうでも良い,3
みたいな形式になっていて 3 が入力された時に[正解]、それ以外の時に[不正解]とか出力するんだろうか?
0657デフォルトの名無しさん
2010/11/30(火) 08:22:020658デフォルトの名無しさん
2010/11/30(火) 09:15:540659デフォルトの名無しさん
2010/11/30(火) 09:23:13だから、そこさえ押さえとけば細かい仕様はどうでもいいんじゃね?
0660デフォルトの名無しさん
2010/11/30(火) 10:00:00問題ごとにファイル一個か。ファイル名の管理が必要だね。
0661デフォルトの名無しさん
2010/11/30(火) 10:01:290662デフォルトの名無しさん
2010/11/30(火) 10:11:05int isPrime( int n )
{
int i;
if( n < 2 || n%2 == 0 ) return 0;
if( n == 2 ) return 1;
for( i = 3; i * i <= n; i += 2 ) if( n%i == 0 ) return 0;
return 1;
}
って、これだと2がはじかれちゃうんじゃ?
0663デフォルトの名無しさん
2010/11/30(火) 10:16:03よくぞ気づいた!
0664デフォルトの名無しさん
2010/11/30(火) 10:21:14tmp[ 50 ][ 5 ]={ { 1,2,3,4,5 } , { 3,5,6,7,8 } , { 8,4,2,5,7} , ・・・ , [5,4,6,7,6} }
をdata.txtファイルに以下のように保存せよ
12345
35678
84257
・
・
・
54676
ファイルポインタの使い方が分かりません
どなたかお願いします
0665デフォルトの名無しさん
2010/11/30(火) 10:27:01多分あいつだな、トーマス。
0666デフォルトの名無しさん
2010/11/30(火) 10:30:02その記述直されるときには、テンプレも
>>3の提案を反映してくれるといいなあ
0667デフォルトの名無しさん
2010/11/30(火) 10:36:11負数を考えないにしても、まずn>=2かそうでないかで分ければ良いかと。
0668デフォルトの名無しさん
2010/11/30(火) 10:42:15>>664
int tmp[4][5] =
{
{1,2,3,4,5},
{3,5,6,7,8},
{8,4,2,5,7},
{5,4,6,7,6},
};
int main(void)
{
int i;
char cmd[100];
for(i=0; i<4; i++){
sprintf(cmd, "echo %d%d%d%d%d | cat >> data.txt",
tmp[i][0],tmp[i][1],tmp[i][2],tmp[i][3],tmp[i][4]);
system(cmd);
}
return 0;
}
0669デフォルトの名無しさん
2010/11/30(火) 10:44:57[2] 問題文(含コード&リンク):コマンドライン./a.out <オプション> <引数1> <引数2>
について、<オプション>がcatのときは<引数1>の後ろに<引数2>を連結した文字列を返し、
<オプション>がcmpのときは両引数を比較し、同じ文字列の場合はsameを、異なる場合はdiffを表示するプログラムを作れ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:emacs
[3.3] 言語:C
[4] 期限: 2010年12月1日10:00まで
0670デフォルトの名無しさん
2010/11/30(火) 11:03:39#include <stdio.h>
#include <string.h>
int main(int argc , char *argv[])
{
char *cmd[]={"cat","cmp"};
int i,flg;
if(argc<4) {
printf("オプションの指定と2つの文字列を入力して下さい。\n");
return 1;
}
for(i=0,flg=0; i<sizeof(cmd)/sizeof(cmd[i]); i++) if( !strcmp(argv[1],cmd[i]) ) {flg=i+1; break;}
switch(flg) {
case 0: printf("オプションが不適切\n");
break;
case 1: printf("%s%s\n",argv[2],argv[3]);
break;
case 2: printf("%sと%sは%s\n",argv[2],argv[3],strcmp(argv[2],argv[3])?"diff":"same");
break;
}
return 0;
}
0671デフォルトの名無しさん
2010/11/30(火) 11:21:320672デフォルトの名無しさん
2010/11/30(火) 11:23:22最初からマクロ設定済みだったのかもしれん
0673デフォルトの名無しさん
2010/11/30(火) 11:24:01>>670
いじわるだな〜
0674デフォルトの名無しさん
2010/11/30(火) 11:39:38http://codepad.org/y5MGgE4f
でも次から>>1みてテンプレに従おうね
0675デフォルトの名無しさん
2010/11/30(火) 11:48:450676デフォルトの名無しさん
2010/11/30(火) 11:49:57標準ライブラリを使わず、それらの機能を持つ関数を自分で作成しろと?
0677デフォルトの名無しさん
2010/11/30(火) 12:04:13#include <stdio.h>
int mystrcmp(const char *s1 , const char *s2) {
while( *s1 ) { s1++; s2++; if(*s1!=*s2) break; }
return *s1-*s2;
}
int main(int argc , char *argv[]) {
char *cmd[]={"cat","cmp"};
int i,cmd_sz=sizeof(cmd)/sizeof(cmd[i]);
if(argc<4) {
printf("オプションの指定と2つの文字列を入力して下さい。\n");
printf("実行プログラム名 <オプション> <文字列1> <文字列2>\n");
printf("例:a.out cat abc def\n");
return 1;
}
for(i=0; i<cmd_sz; i++) if( !mystrcmp(argv[1],cmd[i]) ) break;
switch(i) {
case 0: printf("%s%s\n",argv[2],argv[3]); break;
case 1: printf("%sと%sは%s\n",argv[2],argv[3],mystrcmp(argv[2],argv[3])?"diff":"same");
break;
default : printf("オプションが不適切\n"); break;
}
return 0;
}
0678デフォルトの名無しさん
2010/11/30(火) 12:08:53while( *s1 ) { s1++; s2++; if(*s1!=*s2) break; }
↓
while( *s1 ) { if(*s1!=*s2) break; s1++; s2++; }
最初の1文字が比較されてないし orz
0679525
2010/11/30(火) 12:58:38>>575を実行したところ、一部文字化けしてしまいました。
特に日本語が全く表示されなかったのですが、プログラムの問題ではないでしょうか?
どのようにプログラムを書き換えれば文字化けしないようになりますか?
ちなみに日本語以外でも文字化けします。
0680デフォルトの名無しさん
2010/11/30(火) 13:07:59そこは仕様ってことで。
0681デフォルトの名無しさん
2010/11/30(火) 13:31:15http://codepad.org/xZYb4nGy
*tmpとか**tmpは、tmpが定数でありポインタではない事から、
どんな値を示すか分からず、未定義の動作となる
0682デフォルトの名無しさん
2010/11/30(火) 13:32:00○>>664
0683デフォルトの名無しさん
2010/11/30(火) 13:44:45http://codepad.org/W7q0YfAY
0684デフォルトの名無しさん
2010/11/30(火) 13:48:190685デフォルトの名無しさん
2010/11/30(火) 13:50:330686デフォルトの名無しさん
2010/11/30(火) 13:50:410687デフォルトの名無しさん
2010/11/30(火) 13:51:31未定義じゃねーよw
0688デフォルトの名無しさん
2010/11/30(火) 13:53:04何を言ってるんだ?
じゃあ試しにprintf("%d\n", *tmp); ってやってみろよ
何が表示されるかわからないんだぞ
というより何が起きるか分からないと言った方がいいな
0689デフォルトの名無しさん
2010/11/30(火) 13:54:220690デフォルトの名無しさん
2010/11/30(火) 13:54:49そんな事は既に分かっている
0691デフォルトの名無しさん
2010/11/30(火) 13:56:46*tmp == int [5]
**tmp == int
0692デフォルトの名無しさん
2010/11/30(火) 14:02:18printf("%08x %08x\n", *tmp, tmp[0]);
同じ値が表示されるだけだが
0693デフォルトの名無しさん
2010/11/30(火) 14:02:470694デフォルトの名無しさん
2010/11/30(火) 14:04:520695デフォルトの名無しさん
2010/11/30(火) 14:11:160696デフォルトの名無しさん
2010/11/30(火) 14:12:110697デフォルトの名無しさん
2010/11/30(火) 14:13:00printf("%d\n", *tmp);
が表示されないって、そら
*tmpはポインタなのに%dで表示できるわけないだろ
こうすれば理解できるか?
printf ( "%d\n", (*(tmp+1))-*tmp ) ;
0698デフォルトの名無しさん
2010/11/30(火) 15:20:47[2] 問題文(含コード&リンク):
キーボードから実数配列a[N][N]の各要素に値を入力し、すべての要素の総和を求めるプログラムを作成せよ。
ただし、総和を求める部分はmain関数と別の関数を作ること。(たとえばN=3とする)
(注)2次元配列の入力には注意が必要。
scanf("%if",&x);
a[i][j] =x;
のように2段構えの入力が必要になる場合もある。
[3] 環境
[3.1] OS:windows 7
[3.2] gcc
[3.3] 言語:c
[4] 期限: 本日16:20まで
[5] その他の制限: なし
0699デフォルトの名無しさん
2010/11/30(火) 15:26:30#define N 3
double f(double a[N][N])
{
double ret = 0;
int i, j;
for(i = 0; i < N; i++) for(j = 0; j < N; j++) ret += a[i][j];
return ret;
}
int main(void)
{
int i, j;
double a[N][N], sum;
for(i = 0; i < N; i++) for(j = 0; j < N; j++) scanf("%lf", a[i] + j);
sum = f(a);
printf("%f\n", sum);
return 0;
}
0700デフォルトの名無しさん
2010/11/30(火) 17:46:43[2] 問題文(含コード&リンク)
:文字列をプレイヤーごとに入力し、それらを数値化し比較することにより勝敗を決するゲームを作成する。
処理内容:・プレイヤーについて
1、ゲームは2人のプレイヤーで行う。
2、各プレイヤーは名前、体力、攻撃力、防御力の情報を持っている。
3、プレイヤーの各情報は、入力された名前から設定する。
・ルールについて
1、各プレイヤーは互いに文字列の入力を行う。
2、入力文字列を数値化し比較を行う。
3、数値の大きいプレイヤーが相手側にダメージを与える。
4、最大ターンは10ターンよする。
・終了条件について
1、どちらかの体力がなくなる。
2、10ターンで勝負がつかなかったら引き分けで終了。
[3] 環境
[3.1] OS:Windows
[3.2] Visual studio
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([2010年12月02日まで]
[5]構造体を使用して作成すること
よろしくお願いします。
0701デフォルトの名無しさん
2010/11/30(火) 18:09:28[2] 問題文(含コード&リンク):
aの平方根は面積がaとなる正方形の一片を求めることと等しい。
今、その一辺をxとし、まずaに適当な初期値を設定する。
この場合、xが一辺とすると面積がaになるためには他編はa/xでなければならない。
最終的にx = a/xになるためには他編はa/xになればよいので、次にxとしてこの2辺の平均つまり(X+a/x)/2を設定し、再度他辺を計算しなおす。
そしてまたその平均をxに設定して繰り返すことにより面積がaとなる正方形の一片を求められる。
この繰り返しを10回行って、与えたaの平方根を求めるプログラムを作り、実際に10の平方根をxの初期値を2とした実行を作りなさい。
[3] 環境
[3.1] OS:windows7
[3.2] コンパイラ名とバージョン:VC10.0
[3.3] 言語:C++
[4] 期限:12/3
[5] その他の制限:特になし
実際にやってみましたが色々わかりません。よろしくお願いしますorz
0702デフォルトの名無しさん
2010/11/30(火) 18:18:31int main(void)
{
int i;
double a = 10.0, x = 2.0;
for(i = 0; i < 10; i++) x = (x + a / x) / 2;
printf("%f\n", x);
return 0;
}
>[3.3] 言語:C++
0704デフォルトの名無しさん
2010/11/30(火) 18:40:13それとも◆QZaw55cn4cの馬鹿はstd::coutとかを使わないと不満なのか?(笑
0705デフォルトの名無しさん
2010/11/30(火) 18:40:16[2] 問題文(含コード&リンク):ニュートン法と二分法の両方を用いて、直線y=x+1/2と単位円x^2+y^2=1の交点の座標の近似解(小数点6位まで)を求めよ。
1つのプログラムに書くこと。(ニュートン法と二分法に関する箇所はmain関数から独立させよ)
ニュートン法も二分法もともに何回で収束したかがわかるようにせよ。
関数へのポインタは必ず使うこと。
[3] 環境
[3.1] OS: mac os x
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 今日の夜12時までです。
[5] その他の制限: 特になし。
結構こまってます。お願いします。
0706デフォルトの名無しさん
2010/11/30(火) 18:40:300709デフォルトの名無しさん
2010/11/30(火) 18:52:320710デフォルトの名無しさん
2010/11/30(火) 18:53:470711デフォルトの名無しさん
2010/11/30(火) 18:56:00ttp://codepad.org/kRaqFu8X
・時間が無いから凝らないよ
・工夫されたし
0712デフォルトの名無しさん
2010/11/30(火) 19:00:08◆QZaw55cn4cが叩かれたのはこんな程度のミスじゃすまないものが原因だったのになw
0713デフォルトの名無しさん
2010/11/30(火) 19:01:40へえーC++のプログラムにstdio.hって使ったらだめなんだ〜
初めて聞いた
それともcstdioを使えって?
◆QZaw55cn4cはC++の知識がほとんどない事がはっきりしました
0714デフォルトの名無しさん
2010/11/30(火) 19:07:05いや俺は◆QZaw55cn4cは元々荒らしだと思うけどね
自己評価が不当に高い癖に能力がそれに見合ってないもん
叩かれて当然
>>713
ISO/IEC 14882:2003
The facilities of the Standard C Library are provided in 18 additional headers, as shown in Table 12:
Table 12?C + + Headers for C Library Facilities
<cassert> <ciso646> <csetjmp> <cstdio> <ctime>
<cctype> <climits> <csignal> <cstdlib> <cwchar>
<cerrno> <clocale> <cstdarg> <cstring> <cwctype>
<cfloat> <cmath> <cstddef>
#inclue <stdio.h> と書いて問題ないのはコンパイラ依存のはず。
0716デフォルトの名無しさん
2010/11/30(火) 19:11:320717デフォルトの名無しさん
2010/11/30(火) 19:13:00質問者の環境であるVCだと.cppとして問題なくコンパイルできる
了解。
0719デフォルトの名無しさん
2010/11/30(火) 19:30:26なんか私の宿題で荒れてしまって申し訳ないです…
荒らすつもりはありませんでしたが、些細な問題を攻撃的に書いてしまいました。こちらこそ、ごめんなさい。
0721デフォルトの名無しさん
2010/11/30(火) 19:46:51何度も要らん事言い出して波風を立てる
0722デフォルトの名無しさん
2010/11/30(火) 20:29:07ありがとうございました!!!!
0723デフォルトの名無しさん
2010/11/30(火) 20:29:35バーカ
それを必ず使う必要はないんだよ
std名前空間に包まれるだけの話
お前恥ずかしいからもうC++の話すんな
0724デフォルトの名無しさん
2010/11/30(火) 20:30:53○>>715
規格を持ち出すなら、「必ずC++はそれを使わなければならない」という時に出せ
使っても使わなくてもいい時に出すとか頭が悪すぎる
0725デフォルトの名無しさん
2010/11/30(火) 20:31:06[1] 授業単元:C言語
[2] 問題文(含コード&リンク):main関数中の実数配列(要素数は任意)の要素の平均と分散を計算してmain関数にその結果を返し、
main関数でその結果を表示するmain関数と平均、分散を計算する関数を作り、下の例について実行しなさい。
データ{50.0, 62.0, 80.0, 90.5, 99.5}
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:VisualStudio2008
[3.3] 言語:C
[4] 期限:12月6日
[5] その他の制限:無し
0726デフォルトの名無しさん
2010/11/30(火) 20:32:00へーえその文が規格書のどこに書いてあるんですかあ?出してみて下さいよ〜?
0727デフォルトの名無しさん
2010/11/30(火) 20:41:07ありがとうございます。
厳密なチェックは、あったほうがうれしいです。
失礼ですが、プログラムを全体的に説明して頂いてもいいですか?
>>723 >>726
大変失礼致しました。
確かに、
ISO/IEC 14882:2003 Annex D
D.5 Standard C library headers [depr.c.headers]
1 For compatibility with the Standard C library, the C + + Standard library provides the 18 C headers, as shown
in Table 100:
<assert.h> <iso646.h> <setjmp.h> <stdio.h> <wchar.h>
<ctype.h> <limits.h> <signal.h> <stdlib.h> <wctype.h>
<errno.h> <locale.h> <stdarg.h> <string.h>
<float.h> <math.h> <stddef.h> <time.h>
と、規格の中ではっきりと「提供されている」と明言されていました。
0729デフォルトの名無しさん
2010/11/30(火) 21:37:59ばーかばーか、馬鹿ちょんちょん
0730デフォルトの名無しさん
2010/11/30(火) 22:05:53ほんとに失礼だと思うなら、半年ROMれ
0731デフォルトの名無しさん
2010/11/30(火) 22:08:24何が問題なのか理解できんのだが。
0732デフォルトの名無しさん
2010/11/30(火) 22:11:310733デフォルトの名無しさん
2010/11/30(火) 22:17:07>>662に何が問題か書いてあるだろw
0734デフォルトの名無しさん
2010/11/30(火) 22:41:182は素数だよね。戻り値1で何がおかしい?
0735デフォルトの名無しさん
2010/11/30(火) 22:42:482/2の余りがいくつになるか計算してみるんだ
0736731
2010/11/30(火) 22:49:52ごめん勘違いだ。
wikiつーから、レスの内容よく見ずにここ↓見て
http://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0%E5%88%A4%E5%AE%9A
何でダメ? 見たいな思考になってた。
こっちね。
http://www23.atwiki.jp/homework/pages/27.html
0737デフォルトの名無しさん
2010/11/30(火) 22:53:020738デフォルトの名無しさん
2010/11/30(火) 22:59:51家に帰ったら修正するよ。いや誰か暇な人修正してくれよ
Cの宿題の方でコメントアウトされてる古いヤツは平気なんだけどな
なんで書き換えられたんだろう
0739デフォルトの名無しさん
2010/11/30(火) 23:02:29どっちもたいして変わりはしないよw
0741デフォルトの名無しさん
2010/11/30(火) 23:40:24http://codepad.org/6b2k6Ywd
0742デフォルトの名無しさん
2010/12/01(水) 00:29:59ありがとうございます!
0743デフォルトの名無しさん
2010/12/01(水) 01:01:28厳密なチェックを付けようとして気が付いたんだけど
vhswitch -n 5 -s "ABCD" とした時、argv[4] には ABCD が格納される
すなわち、引数を " で括った場合、" は削除されてしまうようだ
これでは文字列であるかのチェックはできないから厳密なチェックはできない
>>630 では " で括られた場合、それを外す処理を書いたけど無駄だったので削除した
追加したチェックは以下
・ -n の後のパラメータに 0 〜 9 以外が出現した場合はエラー
・ -s の後のパラメータ先頭が - だった場合はエラー(これは不要かも知れない)
プログラムに大量のコメントを付加したの説明に代えさせて欲しい
なお、4カラムタブで揃えたつもりなのでエディターの設定を調整する事
ttp://codepad.org/r7lXeer8
0745デフォルトの名無しさん
2010/12/01(水) 08:41:110746デフォルトの名無しさん
2010/12/01(水) 11:05:02フラグ多いな
0747デフォルトの名無しさん
2010/12/01(水) 11:06:04[2]
1.コピー元のファイル名とコピー先のファイル名を指定すると、ファイルの内容をコピーするプログラムを作成せよ。コピー元のファイルが存在しない場合と、コピー先が存在する場合は、その旨のメッセージを表示し処理を中止するようにせよ。
例:mycopysource.txt dest.txt
→source.txtの内容がdest.txtにコピーされる。
2.コマンドラインでファイル名、年、月を指定し、そのファイルにその年・月のカレンダーを出力するプログラムを作成せよ。
例:calendar cal1012.txt 2010 12
→ファイルcal1012.txt に2010年12月のカレンダーを出力する(このファイルも添付して提出すること)
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:12月5日
[5] 難しいのはだめです
0748デフォルトの名無しさん
2010/12/01(水) 11:14:18まっ、相手がレベルが低いからレベルの低い自分でも通用すると自覚しているんだろうけど。
0749デフォルトの名無しさん
2010/12/01(水) 11:17:520750デフォルトの名無しさん
2010/12/01(水) 11:17:57C++コンパイラでもC言語のコードがコンパイルされるからという屁理屈は
小学生レベルの屁理屈。恥ずかしいからレスするなよ、C++も使えない奴を馬鹿にしておきながら
C言語がまともに使えないバカ造。
0751デフォルトの名無しさん
2010/12/01(水) 11:19:24>>702-703から、よく読み直せ
読んでから書かないと,恥をかくのはお前だと思うが
0752デフォルトの名無しさん
2010/12/01(水) 11:22:46叩いている理由があまりにも稚拙。頭おかしいんじゃねーの?
引きこもりニート?このスレが自分のテリトリー?寂しい人生送ってんなぁ。
0753デフォルトの名無しさん
2010/12/01(水) 11:25:59>ここの連中は知能が低い。
お前って粘着だな
0754デフォルトの名無しさん
2010/12/01(水) 11:32:04その項目を提示しろ、C++しか使えない池沼共。お前らがC言語を語る方が厚かましいわ。
0755デフォルトの名無しさん
2010/12/01(水) 11:41:12C++はCの上位互換として開発された
C99などの新しい機能を除いて
C標準ライブラリがC++でも提供されることは規格で保証されている
0756デフォルトの名無しさん
2010/12/01(水) 11:47:260757デフォルトの名無しさん
2010/12/01(水) 11:47:47こんな低脳な煽りは見たのは初めてだ
C++が使えるという事は当然Cも使えるという事が全く分かってないのが丸わかり
◆QZaw55cn4cに間違いない
0758デフォルトの名無しさん
2010/12/01(水) 11:50:43>>728
> scanff
非ASCII文字は識別子に使えないから、これは無いけどな。w
0759デフォルトの名無しさん
2010/12/01(水) 11:52:210760デフォルトの名無しさん
2010/12/01(水) 11:55:21> C++の標準ライブラリなどを見てこい。printf、scanffがあるなら
ISO/IEC 14882:2003
Table 94懼Header <cstdio>
Functions:
clearerr fgets fscanf gets rename tmpfile
fclose fopen fseek perror rewind tmpnam
feof fprintf fsetpos printf scanf ungetc
ferror fputc ftell putc setbuf vfprintf
fflush fputs fwrite putchar setvbuf vprintf
fgetc fread getc puts sprintf vsprintf
fgetpos freopen getchar remove sscanf
0761デフォルトの名無しさん
2010/12/01(水) 11:56:11scanfなら分かるんだけどw
0762デフォルトの名無しさん
2010/12/01(水) 12:00:59規格票を引っ張り出して顔を真っ赤にしているアホもいたな
0763デフォルトの名無しさん
2010/12/01(水) 12:13:26世界中で大笑いされますよ。
0764デフォルトの名無しさん
2010/12/01(水) 12:18:320765デフォルトの名無しさん
2010/12/01(水) 12:19:480766デフォルトの名無しさん
2010/12/01(水) 12:20:550767デフォルトの名無しさん
2010/12/01(水) 12:26:34Cしか使えない馬鹿はそろそろ引っ込めよw
>>763
出題意図がC++を指定してあっても実際上Cなんだから仕方がない
何回iostreamやalgorithmを使わないでくれとお願いされたか分からねーや
0768デフォルトの名無しさん
2010/12/01(水) 12:27:58この表現だけで世界中で大笑いだぜ。以下ってなんだよ。w
0769デフォルトの名無しさん
2010/12/01(水) 12:31:05「すみません、printfでお願いします」と言い出す輩のなんと多いことか
とくにコンパイラVSの言語:C++はとくに信用ができない
C++コンパイラを使ってCの授業をしていることすら理解してない奴には
○○を使ってと特に注釈が無い限り標準Cで書いてあげるのがむしろ親切
0770デフォルトの名無しさん
2010/12/01(水) 12:36:33最新は>>747だが、課題に答える気がないのにレスしている池沼は何者だ?
暇人は早く死ね
0771デフォルトの名無しさん
2010/12/01(水) 12:39:51おやおやw
顔が真っ赤ですよwwww
0772デフォルトの名無しさん
2010/12/01(水) 12:43:01バカが死滅するまでうかつに答えられない。
0773デフォルトの名無しさん
2010/12/01(水) 12:48:470774デフォルトの名無しさん
2010/12/01(水) 12:48:49そんなのC言語じゃねーって言われるやつが出て来るな
0775デフォルトの名無しさん
2010/12/01(水) 12:50:11ageて書く奴は一人しかいないんでIDが表示されてなくても誰だか
分かっちゃいますなあw
0776デフォルトの名無しさん
2010/12/01(水) 12:51:09現実世界で自分がまともに相手にされていなから、こんな場所で
見えない敵を叩くんだぜ。2ちゃんしか人生の楽しみがない引きこもり。
いい加減、スレ違いなんで言語の仕様についてはそれ専用の別スレでやれ。
邪魔、迷惑。
0777デフォルトの名無しさん
2010/12/01(水) 12:52:21じゃあ>>747をお前がやってお前が役立たずでない事をさっさと証明してみせろ
今すぐに1分以内に答えろ
0778デフォルトの名無しさん
2010/12/01(水) 12:54:54無納税者か?社会のお荷物。早く死ねよ。
0779デフォルトの名無しさん
2010/12/01(水) 12:56:21形勢不利と見るやスレ違いだから止めろって言ってるのか?w
0780デフォルトの名無しさん
2010/12/01(水) 12:58:00どうやらそうみたいだな
>>778
クズはお前だろ
無納税者はお前だろ
社会のお荷物はお前だろ
0781デフォルトの名無しさん
2010/12/01(水) 13:03:42現実社会で相手にされなくて、逃げ込んだ先の場末のスレでも叩かれて、
スレ違いの荒らし行為を続けてるんだね。かわいそう。
お前、回答能力無いバカのくせに、なんのためにこのスレに粘着してるんだ?
0782デフォルトの名無しさん
2010/12/01(水) 13:06:32皆よく見ておけよ
廃人とはこういう奴の事を言うんだ
0783デフォルトの名無しさん
2010/12/01(水) 13:08:160784デフォルトの名無しさん
2010/12/01(水) 13:08:50お前がな
0785デフォルトの名無しさん
2010/12/01(水) 13:09:47他人に命令ってw 口先だけの屑が何言ってんの?w
お前が答えたお前が役立たずじゃないところを証明したら?
罵詈雑言だけででけぇ面している役立たず ( ´,_ゝ`)プッ
0786デフォルトの名無しさん
2010/12/01(水) 13:09:59http://codepad.org/kVS2IbxH
このプログラムにおいてどちらかの方法で値が収束しないはずなのに収束するのはなぜなんでしょうか?
0787デフォルトの名無しさん
2010/12/01(水) 13:12:25http://codepad.org/rRohipcq
http://codepad.org/bL5K1TJa
0788本日の池沼
2010/12/01(水) 13:14:03>>776
じゃあ>>747をお前がやってお前が役立たずでない事をさっさと証明してみせろ
今すぐに1分以内に答えろ
今すぐに1分以内に答えろ
今すぐに1分以内に答えろ
今すぐに1分以内に答えろ
今すぐに1分以内に答えろ
今すぐに1分以内に答えろ
1分以内に自分が答えられない癖に、偉そうにするだけの役立たず
このスレに何しに来ているんだろうね ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ
0789デフォルトの名無しさん
2010/12/01(水) 13:24:230790デフォルトの名無しさん
2010/12/01(水) 13:26:05低脳が昼間から笑かしてくれるww
0791デフォルトの名無しさん
2010/12/01(水) 13:28:120792デフォルトの名無しさん
2010/12/01(水) 13:42:02+ + +
+
. / ̄\ +. ∧_∧アハハハ +
ノリカエセヨー( ´∀`) (´∀` )
(つ つ (つ つ■
. + ( ヽノ ( ヽノ +
し(_) し(_)
0793デフォルトの名無しさん
2010/12/01(水) 13:44:090794デフォルトの名無しさん
2010/12/01(水) 13:56:59thx
荒れてて大変ななかsry
0795この板で何がしたいのか分からないクソガキ
2010/12/01(水) 15:54:430796デフォルトの名無しさん
2010/12/01(水) 15:56:50このスレで宿題に答えもせず、C++が使えないことを罵倒しているが
自分こそがC/C++について碌に理解していないことを知られて顔が真っ赤w
0797デフォルトの名無しさん
2010/12/01(水) 15:57:29ファビョっってプログラム板を荒らし始めましたよこの◆QZaw55cn4cの馬鹿は
0798デフォルトの名無しさん
2010/12/01(水) 16:05:57お前が俺を◆QZaw55cn4cと勘違いしているんだろうけど別人。
お前らの争いが邪魔なんだよ!死ねよクソガキ
0799デフォルトの名無しさん
2010/12/01(水) 16:07:140800デフォルトの名無しさん
2010/12/01(水) 16:10:050801デフォルトの名無しさん
2010/12/01(水) 16:12:020802デフォルトの名無しさん
2010/12/01(水) 16:18:45おまえがな
0803デフォルトの名無しさん
2010/12/01(水) 16:22:35引きこもりニート確定じゃんwwwwwww きもっ。仕事がないんでちゅか?
0804デフォルトの名無しさん
2010/12/01(水) 16:31:380805デフォルトの名無しさん
2010/12/01(水) 16:36:06+ +
アハハハ+
+ ∧_∧ .+ / ̄\ .+
( ´∀`) (´∀` )ノリカエセヨー
■⊂、 ⊂) ⊂、 ⊂) +
ヽ 人 ヽ 人
(_)J (_)J
0806デフォルトの名無しさん
2010/12/01(水) 17:37:350807デフォルトの名無しさん
2010/12/01(水) 17:43:36自分が生きる上で他人に誇れることらしいw
0808デフォルトの名無しさん
2010/12/01(水) 17:48:390809デフォルトの名無しさん
2010/12/01(水) 17:48:53>>687
何を言ってるんだ?
じゃあ試しにprintf("%d\n", *tmp); ってやってみろよ
何が表示されるかわからないんだぞ
というより何が起きるか分からないと言った方がいいな
0810デフォルトの名無しさん
2010/12/01(水) 17:50:25お前の失態を晒してどうするんだ?
0811デフォルトの名無しさん
2010/12/01(水) 17:54:45お前の失態だろカスw
0812デフォルトの名無しさん
2010/12/01(水) 17:59:47は?お前アホか?
0813デフォルトの名無しさん
2010/12/01(水) 18:00:590814デフォルトの名無しさん
2010/12/01(水) 18:01:58うっせーカス。
0815デフォルトの名無しさん
2010/12/01(水) 18:04:58見えない敵を叩く池沼w
0816デフォルトの名無しさん
2010/12/01(水) 18:07:21お前もなw
0817デフォルトの名無しさん
2010/12/01(水) 18:08:03+ + +
+
. / ̄\ +. ∧_∧アハハハ +
ノリカエセヨー( ´∀`) (´∀` )
(つ つ (つ つ■
. + ( ヽノ ( ヽノ +
し(_) し(_)
0818デフォルトの名無しさん
2010/12/01(水) 18:16:29意味不明。俺は罵倒してねーし。
0819デフォルトの名無しさん
2010/12/01(水) 18:17:570820デフォルトの名無しさん
2010/12/01(水) 18:24:08プログラム板に来て欲しくない
すごく迷惑
0821デフォルトの名無しさん
2010/12/01(水) 18:37:46今さっき、別の奴と罵倒し合ってたじゃねーかよwwwww
嘘つき。IDが無いからってやりたい放題やるなよ、池沼
0822デフォルトの名無しさん
2010/12/01(水) 18:38:50http://d.hatena.ne.jp/keyword/%A5%E1%A5%F3%A5%D8%A5%E9
そういう言葉を使っているお前が一番迷惑、2ちゃんねらーってマジキモイよな
0823デフォルトの名無しさん
2010/12/01(水) 18:40:19[2] 問題文(含コード&リンク):
double 型の実部、虚部から構成される倍精度複素数の構造体を定義し、入力した2つの
複素数の和差積商を算出するプログラムを作成しなさい
[3] 環境
[3.1] OS: windows vista
[3.2] コンパイラ名とバージョン: visual studio 2008
[3.3] 言語:C
[4] 期限:12/3
[5] その他の制限:構造体を定義する
なんか荒れてる中ですけどお願いします・・・
0824デフォルトの名無しさん
2010/12/01(水) 18:41:10お前もここに書き込んでいる以上2ちゃんねらーだからキモいんだけどな
http://codepad.org/0V0SZgOa
>>729-825
なにがあったんですか?
0827デフォルトの名無しさん
2010/12/01(水) 21:28:42[2] 問題文(含コード&リンク):木構造を使ってソートを行うプログラム。
元ソースがありこれは根ノードの数値の大きさが中、左の部分木の数値の大きさが小、右の部分木の数値の大きさが大、
となるようなプログラム。いわゆる中間順。
これを改造し根が小、左が中、右が大となるようなツリーを作る問題。
ただし、左に一直線や右に一直線といった偏ったツリーはNG。
元ソース:http://codepad.org/evknVwg3
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010年12月3日
[5] その他の制限:なし
宜しく御願いします
0828デフォルトの名無しさん
2010/12/01(水) 21:32:48なんか無理やり構造体でひねくれて考えてみた
例で加算減算のみ
反省はしていない
template <typename T>
struct BaseComplex
{
T re;
T im;
};
template <typename BT>
class TComplex:public BaseComplex<BT>
{
public:
TComplex(){re=0;im=0;};
TComplex(BT datRe, BT datIm){re=datRe;im=datIm;};
virtual ~TComplex(){};
TComplex& operator=(const TComplex& dat){
re=dat.re; im=dat.im;
return *this;
}
inline TComplex operator+(const TComplex& x){
return TComplex( re+x.re, im+x.im );
}
inline TComplex operator-(const TComplex& x){
return TComplex( re-x.re, im-x.im );
}
};
0829デフォルトの名無しさん
2010/12/01(水) 21:37:19[2] 問題文(含コード&リンク):
http://codepad.org/1OmvxbOE
上記ソースファイルに下記の関数を追加し、
/* ソート関数呼び出し位置 */ で関数を呼び出しプログラムを完成させなさい。
(1) バブルソートを実現する BSort 関数
(2) クイックソートを実現する QSort 関数
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: MinGW gcc
[3.3] 言語:C
[4] 期限:12/3
[5] その他の制限:無し
0830デフォルトの名無しさん
2010/12/01(水) 21:55:20[2]問題:
Cygwinで解答を作成してください.
1. 引数にファイル名を指定すると,
そのファイルのサイズとファイルの種類(一般ファイル,ディレクトリ,パイプ等),
そして最終変更時刻を表示するコマンド(fviewという名称とする)を作成せよ.
ただし,引数には,複数のファイルを指定できるようにすること.
また,fstatを用いること.
実行
$ fview aaa.txt bbb.txt ccc.txt …
ヒント
ファイルの種類は,fstat構造体メンバのst_modeの上位4ビットで表わされる.
0831デフォルトの名無しさん
2010/12/01(水) 21:56:01一つのファイルにまとめるコマンド(catfilesという名称とする)を作成せよ.
ただし,まとめた内容を格納するファイル名は,“concat.txt”とすること.
ただし,catコマンドをsystem関数の内部で呼ぶような構成は認めない.
システムコールとしては,open,close,read,writeを用いること.
また,結合してまとめた結果を格納するファイルが存在しない場合には,
creatシステムコールを用いて生成すること.
実行
$ catfiles aaa.txt bbb.txt ccc.txt …
[3] 環境
[3.1] OS:Windows 7
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語: C
[4] 期限:2010年12月3日
よろしくお願いします!!!
0832デフォルトの名無しさん
2010/12/01(水) 22:00:24問題の制約を読めないバカは引っ込んでいなさい。
0833デフォルトの名無しさん
2010/12/01(水) 22:38:15反論が稚拙。言葉の使い方が問題なんだが・・・やっぱり池沼は自覚症状がないんだな。
0834デフォルトの名無しさん
2010/12/01(水) 22:42:57口先だけで答えようとしない役立たずはレスしないでさっさとこの世から去れ
死ねよゴミ。生活保護だろ、お前?
0835デフォルトの名無しさん
2010/12/01(水) 22:43:28構造体使う、宣言時に倍数精度になるで満たしてるぞ
まあ、さぞかし頭いい人がここにいるみたいだからもう2度と来ない
お前一人で回答がんばれ
0836デフォルトの名無しさん
2010/12/01(水) 22:45:22>[3.3] 言語:C
これが目に入らないとは・・・
0837デフォルトの名無しさん
2010/12/01(水) 22:46:16まだ回答されていない課題があるのに、それには1つも手をつけない。
自分が口先だけの役立たずだって証明しているようなもんだろ。
このスレに何しに来てるの?口だけの役立たず ( ´,_ゝ`)プッ
0838デフォルトの名無しさん
2010/12/01(水) 22:47:401日中張り付いている生活保護のC++プログラマーさんがやってやればぁ?
解けもしないのに、C++が使えることが自慢だそうですw
0839デフォルトの名無しさん
2010/12/01(水) 22:54:09( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ
0840デフォルトの名無しさん
2010/12/02(木) 00:01:38ばーか。
[3.3] 言語:C
0841デフォルトの名無しさん
2010/12/02(木) 00:15:13無駄にスレが伸びて邪魔なんだけど。
0842デフォルトの名無しさん
2010/12/02(木) 00:44:22おまえが言うな。バカ。
0843デフォルトの名無しさん
2010/12/02(木) 02:51:190844デフォルトの名無しさん
2010/12/02(木) 05:18:38とりあえず >>829-831 は面倒だから回答が出てないよ
0846デフォルトの名無しさん
2010/12/02(木) 08:47:18バカが2人以上居ると荒れる。一方は冷静に、反応、レスをしないこと。
煽っている池沼は確実に生活保護を受けている暇人の引きこもりニート。
0847デフォルトの名無しさん
2010/12/02(木) 09:13:120848デフォルトの名無しさん
2010/12/02(木) 09:15:46勘違いしていた精神異常者。まだ見えない敵を標的にしているが
自分がこのスレで散々荒らしていた自覚が無く迷惑。
http://hibari.2ch.net/test/read.cgi/tech/1289715349/263
0849デフォルトの名無しさん
2010/12/02(木) 09:17:010850デフォルトの名無しさん
2010/12/02(木) 09:17:38>>776
じゃあ>>747をお前がやってお前が役立たずでない事をさっさと証明してみせろ
今すぐに1分以内に答えろ
自分がこのスレに回答する目的で来ている訳でもないのに
自分が標的にしている相手を勘違いして、場違いで迷惑だから
注意されているのに、言われなくてもやっている人がいるのを知らずに
自分が1分以内で回答できない癖に、他人には偉そうな態度でいる役立たず。
いるよな、自分が出来もしないのに相手にお前は出来るのか?お前も出来ないんだろ
自分と同じ低レベルだと巻き込む池沼。無能は黙ってろよ。
0851デフォルトの名無しさん
2010/12/02(木) 09:18:53迷惑だからその手の争いは↓でやれ!引きこもりニートの生活保護は早く失せろ!
【◆QZaw55cn4c 隔離】C/C++の問題を片付けます
http://hibari.2ch.net/test/read.cgi/tech/1289715349/
0852デフォルトの名無しさん
2010/12/02(木) 09:24:150853デフォルトの名無しさん
2010/12/02(木) 09:25:33白々しいんだよ、◆QZaw55cn4cと間違えて他人を攻撃していたバカ
ウザイから回答以外のレスはしないでね ♥
0854デフォルトの名無しさん
2010/12/02(木) 09:26:36邪魔なんだよ、精神異常者の池沼!低学歴!暇人!
0855デフォルトの名無しさん
2010/12/02(木) 09:31:54その流れは昨日ので十分でしょw
0856デフォルトの名無しさん
2010/12/02(木) 09:34:180857デフォルトの名無しさん
2010/12/02(木) 09:35:430858デフォルトの名無しさん
2010/12/02(木) 09:36:05お前が言うな。バカ。
0859デフォルトの名無しさん
2010/12/02(木) 09:36:240860デフォルトの名無しさん
2010/12/02(木) 09:40:44てめぇが答えられもしない癖に、簡単に折れる天狗の鼻を伸ばして
ホルホルしてんのか、無職の基地外は?
0861デフォルトの名無しさん
2010/12/02(木) 09:45:17正直言うと昨日ちょっと煽り入れてみたのは俺なw
>>809 >>811 >>814 >>816 >>819 は俺なw
相手の人ごめんなマジで。
0862デフォルトの名無しさん
2010/12/02(木) 10:10:490863デフォルトの名無しさん
2010/12/02(木) 10:12:560864デフォルトの名無しさん
2010/12/02(木) 10:13:500865デフォルトの名無しさん
2010/12/02(木) 10:18:53どういうことだってばよ
0866デフォルトの名無しさん
2010/12/02(木) 10:38:540867デフォルトの名無しさん
2010/12/02(木) 11:01:370868◇QZaw55cn4c
2010/12/02(木) 11:05:470869デフォルトの名無しさん
2010/12/02(木) 11:15:261日経っても終わりそうにないし、最適化のアイデアも浮かばないので
うpするのやめた。きっとスーパーな人が作ってくれるに違いないヽ(´ー`)ノ
0871デフォルトの名無しさん
2010/12/02(木) 11:17:29正義とか関係なくスレ違いのレスでスレが無駄に伸びるのがお前の望みか?
迷惑なんだよ。
0872デフォルトの名無しさん
2010/12/02(木) 12:46:17そのソースをうp!
0873デフォルトの名無しさん
2010/12/02(木) 14:32:14宿題スレだぜぇ!!!!!!!
0874デフォルトの名無しさん
2010/12/02(木) 16:17:17ぜひソースをお願いします(T_T)
0875デフォルトの名無しさん
2010/12/02(木) 16:31:490876デフォルトの名無しさん
2010/12/02(木) 16:38:000877デフォルトの名無しさん
2010/12/02(木) 16:44:53誰もやってくれない・・・
0878デフォルトの名無しさん
2010/12/02(木) 17:19:060879デフォルトの名無しさん
2010/12/02(木) 17:43:17どこら辺がわかりませんか?
0880デフォルトの名無しさん
2010/12/02(木) 17:52:55そこからして理解不能。
0881デフォルトの名無しさん
2010/12/02(木) 17:54:28数字(1〜10)、ABの入れ替えに加え、「枝を入れ替えたり」と
問題にあるってことは、2分木の形も固定でなく
グリグリ変わっちゃうってことでおk?
0882デフォルトの名無しさん
2010/12/02(木) 17:58:15数値10個とA5個B4個が混在
制約条件としてABが出現できるのは(数値の出現した数-1)個まで
0883デフォルトの名無しさん
2010/12/02(木) 18:00:45>「A」:下の2つの数字の左の数字を足し、右の数字は大きい方を選択
からして分からない
0884デフォルトの名無しさん
2010/12/02(木) 18:13:562分木の形が変わるのはなんの問題もありません
0885デフォルトの名無しさん
2010/12/02(木) 18:17:09AとBの数は自由(=どちらも0個以上)でいいのかな?
0886デフォルトの名無しさん
2010/12/02(木) 18:34:470個以上で自由です!
0887デフォルトの名無しさん
2010/12/02(木) 18:40:49すみません、これを御願いします。
0888デフォルトの名無しさん
2010/12/02(木) 19:12:06バカが登場
0889デフォルトの名無しさん
2010/12/02(木) 20:07:21お前が荒らしだろ
他のスレの書きこみを引用してここに書き込む事は立派な荒らし行為だ
0890デフォルトの名無しさん
2010/12/02(木) 20:09:350891デフォルトの名無しさん
2010/12/02(木) 20:28:320892デフォルトの名無しさん
2010/12/02(木) 20:55:04お前が言う事で倍増する。ちっとは頭使え。バカ。
0893デフォルトの名無しさん
2010/12/02(木) 21:06:16struct node { int val; struct node* left; struct node* right; };
struct node* create_node(int num) {
struct node* node = malloc(sizeof(struct node));
node->left = node->right = NULL; node->val = num;
return node;
}
void disp(struct node* p) {
if(p != NULL){ printf("%d ", p->val); if(p->left != NULL){ disp(p->left); } if(p->right != NULL){ disp(p->right); } }
}
void add_node(struct node** root, struct node** add_node) {
struct node* search_node = *root;
if((*add_node)->val < (*root)->val){
*root = *add_node; (*root)->left = search_node;
}
else{
while((search_node->right != NULL) && (search_node->right->val < (*add_node)->val)){ search_node = search_node->right; }
while((search_node->left != NULL) && (search_node->left->val < (*add_node)->val)){ search_node = search_node->left; }
(*add_node)->left = search_node->left; (*add_node)->right = search_node->right; search_node->left = *add_node;
}
}
int main(void) {
struct node* root = NULL; struct node* node; int num;
printf("input data:"); scanf("%d", &num);
while(0 < num){
node = create_node(num);
if(root == NULL){ root = node; }
else{ add_node(&root, &node); }
printf("input data:"); scanf("%d", &num);
} printf("result:"); disp(root); puts("");
return 0;
}
0894デフォルトの名無しさん
2010/12/02(木) 21:08:21たとえばたとえば0x12345678に0xFFFFFFFF入れるとき。
0895デフォルトの名無しさん
2010/12/02(木) 21:18:09*address = 0xFFFFFFFF;
0896デフォルトの名無しさん
2010/12/02(木) 21:21:470898デフォルトの名無しさん
2010/12/02(木) 21:50:32助かります。有難う御座います。
0899デフォルトの名無しさん
2010/12/02(木) 21:57:17だからそういう貼り方はやめろっつーに
迷惑なだけだ
0900デフォルトの名無しさん
2010/12/02(木) 23:05:22死ね
0901デフォルトの名無しさん
2010/12/03(金) 08:29:360902デフォルトの名無しさん
2010/12/03(金) 08:56:01その同罪の中の最底辺がお前だよ。
0903デフォルトの名無しさん
2010/12/03(金) 08:57:31ボケ老人のボケ防止とも言える基地外行動が発令しました。以後放置よろ。
課題に答える気がないなら無駄なレスするなよ、池沼。
0904デフォルトの名無しさん
2010/12/03(金) 09:12:130905デフォルトの名無しさん
2010/12/03(金) 09:24:53道理で課題に答えない訳だw
0906デフォルトの名無しさん
2010/12/03(金) 09:48:090907デフォルトの名無しさん
2010/12/03(金) 13:03:040908デフォルトの名無しさん
2010/12/03(金) 13:08:030909デフォルトの名無しさん
2010/12/03(金) 13:20:48全角スペースは使わないほうがいいと思う
0910デフォルトの名無しさん
2010/12/03(金) 13:30:020911デフォルトの名無しさん
2010/12/03(金) 13:44:500912デフォルトの名無しさん
2010/12/03(金) 14:00:200913デフォルトの名無しさん
2010/12/03(金) 14:04:07専ブラでコピペすると になって煩わしい
0914デフォルトの名無しさん
2010/12/03(金) 14:05:27&#160; だった
0915デフォルトの名無しさん
2010/12/03(金) 14:11:091
2
3
4
5
6
0916デフォルトの名無しさん
2010/12/03(金) 15:16:59Delphiで
TUnkoClass: class of TUnko
type
TGeri = class(TUnko)
・
・
TIpponGuso = class(TUnko)
・
・
function BuildUnko(AType:TUnkoClass):TUnko;
begin
Result:=AType.Create;
end;
こういうのがあったとして、これをC++でやるにはどうしたらいいんでしょうか。
0917デフォルトの名無しさん
2010/12/03(金) 15:18:220918デフォルトの名無しさん
2010/12/03(金) 16:50:01それだとローカルに落とすときにも置換が必要で面倒くさくね?
0919デフォルトの名無しさん
2010/12/03(金) 16:55:480920デフォルトの名無しさん
2010/12/03(金) 17:33:320921デフォルトの名無しさん
2010/12/03(金) 17:48:040922デフォルトの名無しさん
2010/12/03(金) 17:56:18typedef struct complex complex;
struct complex {
double re;
double im;
};
complex AddComplex(complex x, complex y);
complex SubComplex(complex x, complex y);
complex MulComplex(complex x, complex y);
complex DivComplex(complex x, complex y);
void ShowComplex(char varname[ ], complex x);
void main(void);
complex AddComplex(complex x, complex y)
{
complex z;
z.re = x.re + y.re;
z.im = x.im + y.im;
return (z);
}
complex SubComplex(complex x, complex y)
{
complex z;
z.re = x.re - y.re;
z.im = x.im - y.im;
return (z);
}
0923デフォルトの名無しさん
2010/12/03(金) 17:57:09{
complex z;
z.re = x.re * y.re - x.im * y.im;
z.im = x.re * y.im + y.re * x.im;
return (z);
}
complex DivComplex(complex x, complex y)
{
complex z;
z.re = x.re / y.re - x.im / y.im;
z.im = x.re / y.im + y.re / x.im;
return (z);
}
void ShowComplex(char varname[ ], complex x)
{
printf("%s = %3.1lf + %3.1lfi\n\n", varname, x.re, x.im);
}
0924デフォルトの名無しさん
2010/12/03(金) 17:58:50{
complex x, y, z;
double rx,ix,ry,iy;
printf("x実数部分の値:");
scanf("%lf",&rx);
printf("x虚数部分の値:");
scanf("%lf",&ix);
printf("y実数部分の値:");
scanf("%lf",&ry) ;
printf("y虚数部分の値:");
scanf("%lf",&iy) ;
x.re = rx;
x.im = ix;
y.re = ry;
y.im = iy;
ShowComplex("x", x);
ShowComplex("y", y);
z = AddComplex(x, y);
ShowComplex("x + y", z);
z = SubComplex(x, y);
ShowComplex("x - y", z);
z = MulComplex(x, y);
ShowComplex("x * y", z);
z = MulComplex(x, y);
ShowComplex("x / y", z);
}
0925デフォルトの名無しさん
2010/12/03(金) 18:00:20これで合っているのか教えてください。
0926デフォルトの名無しさん
2010/12/03(金) 18:24:25最後から3つ目の行の
z = MulComplex(x, y);
は
z = DivComplex(x, y);
の間違いだね
0927デフォルトの名無しさん
2010/12/03(金) 19:37:47ありがとうございます。
早速修正しました。他に間違いはありませんか?
0928デフォルトの名無しさん
2010/12/03(金) 20:23:02MulとDivが違ってる気がする
http://ja.wikipedia.org/wiki/%E8%A4%87%E7%B4%A0%E6%95%B0
ここを見て直して
0929デフォルトの名無しさん
2010/12/03(金) 20:38:03すみません、お願いします!!!
0930デフォルトの名無しさん
2010/12/03(金) 20:48:31Mulはあってる。違うのはDiv。
>>925
分かりにくくなるので虚数単位をiではなくjで表すものとする。
分母に虚部があると実際の虚部がどうなのか分からない。
よって分母・分子に同じものをかけて分母から虚部を消すことを考える。
分母から虚部が消えれば、分子の実部と虚部を分ければよいので簡単。
何をかければ虚部が消えるかというと
(A+Bj)*(C+Dj) = AC-BD +(AD+BC)j
AD+BC = 0 になるCとDを決めればいい。
いくつも答えがあるが、一番簡単なのは C=A , D=-B だと思う。
君の例だと
(Xr+jXi)/(Yr+jYi)の分母分子に(Yr-jYi)を掛けると分母の虚部が消える。
計算すると
(Xr+jXi)/(Yr+jYi)
=(Xr+jXi)(Yr-jYi)/(Yr+jYi)(Yr-jYi)
=(XrYr+XiYi)/(Yr^2+Yi^2) + j(XiYr-XrYi)/(Yr^2+Yi^2)
となる。後は分かるよね。
0932デフォルトの名無しさん
2010/12/03(金) 21:08:04問題自体が既出。過去の解答例で動かなかったの?
0933デフォルトの名無しさん
2010/12/03(金) 21:09:33z.re = (x.re*y.re + x.im*y.im) /((y.re*y.re)+(y.im*y.im));
z.im = (x.im*y.re + x.re*y.im) /((y.re*y.re)+(y.im*y.im));
これで合っていますか?
0934933
2010/12/03(金) 21:15:04z.im = (x.im*y.re - x.re*y.im) /((y.re*y.re) + (y.im*y.im));
の間違いでした。
0935デフォルトの名無しさん
2010/12/03(金) 21:26:54#include <stdio.h>
#include <sys/stat.h>
int main(int argc, char* argv[])
{
char cmd[100];
int i;
for(i=1; i<argc; i++){
sprintf(cmd, "ls -lF %s", argv[i]);
system(cmd);
}
struct stat buf;
fstat(0, &buf);
return 0;
}
0936デフォルトの名無しさん
2010/12/03(金) 21:30:07か。
0937デフォルトの名無しさん
2010/12/03(金) 21:41:50http://codepad.org/8WehiIB4
0938デフォルトの名無しさん
2010/12/03(金) 21:52:48fstat使うという条件らしい。
ディレクトリの場合openに失敗するんだが、どうすりゃいい?
0939デフォルトの名無しさん
2010/12/03(金) 21:56:35http://codepad.org/620V9m2H
0940933
2010/12/03(金) 22:50:10typedef struct complex complex;
struct complex {
double re;
double im;
};
complex AddComplex(complex x, complex y);
complex SubComplex(complex x, complex y);
complex MulComplex(complex x, complex y);
complex DivComplex(complex x, complex y);
void ShowComplex(char varname[ ], complex x);
void main(void);
complex AddComplex(complex x, complex y)
{
complex z;
z.re = x.re + y.re;
z.im = x.im + y.im;
return (z);
}
complex SubComplex(complex x, complex y)
{
complex z;
z.re = x.re - y.re;
z.im = x.im - y.im;
return (z);
}
0941933
2010/12/03(金) 22:51:23{
complex z;
z.re = x.re * y.re - x.im * y.im;
z.im = x.re * y.im + y.re * x.im;
return (z);
}
complex DivComplex(complex x, complex y)
{
complex z;
z.re = (x.re*y.re + x.im*y.im) /((y.re*y.re) + (y.im*y.im));
z.im = (x.im*y.re - x.re*y.im) /((y.re*y.re) + (y.im*y.im));
return (z);
}
void ShowComplex(char varname[ ], complex x)
{
printf("%s = %3.1lf + %3.1lfi\n\n", varname, x.re, x.im);
}
0942933
2010/12/03(金) 22:53:32{
complex x, y, z;
double rx,ix,ry,iy;
printf("x実数部分の値:");
scanf("%lf",&rx);
printf("x虚数部分の値:");
scanf("%lf",&ix);
printf("y実数部分の値:");
scanf("%lf",&ry) ;
printf("y虚数部分の値:");
scanf("%lf",&iy) ;
x.re = rx;
x.im = ix;
y.re = ry;
y.im = iy;
ShowComplex("x", x);
ShowComplex("y", y);
z = AddComplex(x, y);
ShowComplex("x + y", z);
z = SubComplex(x, y);
ShowComplex("x - y", z);
z = MulComplex(x, y);
ShowComplex("x * y", z);
z = DivComplex(x, y);
ShowComplex("x / y", z);
}
上のプログラムを 3つの複素数を入力し、四則演算した
全ての計算パターンを出力表示するプログラム にしてほしいです。
おねがいします。
0943デフォルトの名無しさん
2010/12/03(金) 23:02:09基本それでいい。
1.C言語でvoid main(void)は変な虫がわくので、バカよけ対策でint main(void)にしたほうが良い。
2.printf("%s = %3.1lf + %3.1lfi\n\n", varname, x.re, x.im);
double に %lf は ISO C90 で未対応らしいので普通に %f が良い。
3.レス3つも消費するようなソースを上げる時は、インデントの問題もあるし、
下記等に上げて、リンクを貼るとよい。
http://codepad.org/
http://www.codeupload.com/
http://ideone.com/
https://gist.github.com/
0944933
2010/12/03(金) 23:17:17わかりました。下に貼りました。
http://codepad.org/Q5sx15YL
>>942のお題よろしくおねがいします。
0945デフォルトの名無しさん
2010/12/03(金) 23:40:03http://codepad.org/8SrLpaUN
"全ての"の意味は下記かな?
for(i=0 ; i<3 ; i++) {
for(j=0 ; j<3 ; j++) {
0946デフォルトの名無しさん
2010/12/03(金) 23:40:48linuxやcygwinでもディレクトリの open() でエラーになるのかなぁ?
俺も書いたんだけど動作確認できないから回答しなかった
どっちみち windows で書いたらシンボリックリンクなんかも判定できないから linux 環境が無い人には回答不能だと思うけど
0947デフォルトの名無しさん
2010/12/03(金) 23:46:22linux と cygwin なら大丈夫みたい。
0948デフォルトの名無しさん
2010/12/03(金) 23:50:520951デフォルトの名無しさん
2010/12/04(土) 00:59:36cygwin なんて使い道ないだろ
redhat 入ってるマシンは物置部屋に有るけど引っ張り出すの面倒くさい
0952デフォルトの名無しさん
2010/12/04(土) 01:01:010953デフォルトの名無しさん
2010/12/04(土) 01:06:14本当にありがとうございます!!!
>>831
図々しくてほんとに申し訳ありませんが
できればこちらもお願いいたします
0954デフォルトの名無しさん
2010/12/04(土) 02:54:03ttp://codepad.org/qV6dbK4a
0955デフォルトの名無しさん
2010/12/04(土) 10:06:450956デフォルトの名無しさん
2010/12/04(土) 10:07:340957デフォルトの名無しさん
2010/12/04(土) 11:08:53ttp://www.coins.tsukuba.ac.jp/~yas/coins/syspro1-1997/1997-04-22/
0958デフォルトの名無しさん
2010/12/04(土) 15:20:47[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):ランダムな整数列を生成し,クイックソートにより並
べ替えるプログラムを作れ
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C/C++/どちらでも可
[4] 期限:12月8日
[5] その他の制限:なし
0959デフォルトの名無しさん
2010/12/04(土) 15:23:48[2] 問題文(含コード&リンク):次のクイックソートを実行できるようにせよ
quicksort (int a[], int n)
{
struct stack *s = newstack(SIZE, NAME);
int p, t, i, j, left =1, right =n;
for (;;) {
while (left < right) {
partition(left, right, i, j);
if (i-left > right-j) {
push(left, s); push(j, s); left = i;
} else {
push(i+1, s); push(right, s); right = j;
}
} if (
isempty(s))
break;
right = pop(s); left = pop(s);
}
}
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C/C++/どちらでも可
[4] 期限:12月8日
[5] その他の制限:mainの中もお願いします
0960958
2010/12/04(土) 15:25:02[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):ランダムな整数列を生成し,クイックソートにより並
べ替えるプログラムを作れ
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C/C++/どちらでも可
[4] 期限:12月8日
[5] その他の制限:mainの中もお願いします
0961デフォルトの名無しさん
2010/12/04(土) 19:21:06それに加筆しろって事かい?
それとも使われてる関数 newstack(), push(), pop(), isempty(), partition() のみを作成しろって事かい?
後者だったら無理だよ
0962デフォルトの名無しさん
2010/12/04(土) 19:51:34遅くなってしまいました。すみません。
File not found.と出るんですが、何という風に本当は出るんでしょうか
0963959
2010/12/04(土) 21:22:08959に加筆ということです。
0965デフォルトの名無しさん
2010/12/04(土) 22:34:02http://www1.axfc.net/uploader/Sc/so/180180
0966デフォルトの名無しさん
2010/12/04(土) 23:07:34C/C++の宿題片付けます 144代目
http://hibari.2ch.net/test/read.cgi/tech/1291471791/
0968デフォルトの名無しさん
2010/12/05(日) 01:36:210969デフォルトの名無しさん
2010/12/05(日) 02:15:21test.txt が無ければ file not found って出るのは当然だ
test.txt をカレントディレクトリに作成しる、フォーマットは
3
1 11 21 31
2 12 22 32
3 13 23 33
みたいな感じ
0970デフォルトの名無しさん
2010/12/05(日) 17:52:46何十回ループするんでしょうか。
俺は↓派です。
>>943
> 1.C言語でvoid main(void)は変な虫がわくので、バカよけ対策でint main(void)にしたほうが良い。
次はmalloc,freeの番かな?
0971デフォルトの名無しさん
2010/12/05(日) 18:07:07このスレでその話をしろとは誰も言ってないだろ。しつけぇよ。スレタイ読め。
0972デフォルトの名無しさん
2010/12/05(日) 18:07:54>バカよけ対策で
だったらお前がバカになれば?バカとかではなく標準スタイルの話。
頭悪いよ、お前。
0973デフォルトの名無しさん
2010/12/05(日) 18:09:18自分が基準だと思って生きているんだろうなw
視野の狭いカッペじゃね?周りに自分以上のプログラマーがいないから
自分が言うことは全て正しい、誰も間違いだと指摘できないから
自分が全知全能だと勘違いしているんだろうね。活動範囲が狭いカッペ丸出しw
0974デフォルトの名無しさん
2010/12/05(日) 18:10:380975デフォルトの名無しさん
2010/12/05(日) 18:15:40Previous Table of Contents "New C Standard" commentary
The function called at program startup is named main.
The implementation declares no prototype for this function.
It shall be defined with a return type of int and with no parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;9)
or in some other implementation-defined manner.
0976デフォルトの名無しさん
2010/12/05(日) 18:44:46【初心者お断り】ガチ規格準拠C専用スレ Part134
http://hibari.2ch.net/test/read.cgi/tech/1246115922/
0977デフォルトの名無しさん
2010/12/05(日) 19:02:23こいつさえいなければ問題は起きない
0978デフォルトの名無しさん
2010/12/05(日) 19:04:37一緒に消えてね
0979デフォルトの名無しさん
2010/12/05(日) 19:05:00経験豊富で優れたコードを書くってんならまだしも、日本語すらまともに読めないときたもんだ
0980デフォルトの名無しさん
2010/12/05(日) 19:07:02>>978
0981デフォルトの名無しさん
2010/12/05(日) 19:51:01void Func() が引数不問とはどういうこと?
一応↓がコンパイルも出来て実行も出来たけど、文法上下記はOKって認識でよい?
#include <stdio.h>
void Func();
int main(void) {
Func();
Func(1);
Func(1,2);
Func(1,2,3);
return 0;
}
void Func(int a, int b) {
printf("Func : %d\n",a+b);
}
0982デフォルトの名無しさん
2010/12/05(日) 19:57:06実務で書くのは int main( int argc, char** argv ) だけ(char** envp が付くことは有るけどね)
だから職業プログラマから見れば目くそ鼻くその話にしか見えない
0983デフォルトの名無しさん
2010/12/05(日) 20:06:14それ bcc だと警告が出るよ、foo() にはプロトタイプ宣言が無いって
文法上OKかと聞かれればOKなんだろうけど望ましくはないね
0984デフォルトの名無しさん
2010/12/05(日) 20:10:33実務だと別のエントリポイントを使うことが多くないか?
どんな仕事してるのか知らないけど
0985デフォルトの名無しさん
2010/12/05(日) 20:38:13Windowsアプリだとそうだね、他にも何か有ったっけ?
ベタなクラ/サバの仕事とか解析系の仕事がメインだから別のエントリポイントって Widows しか知らない
0986デフォルトの名無しさん
2010/12/05(日) 20:50:12組込とか。つかWindowsアプリは実務のうちに入らないのか?
0987デフォルトの名無しさん
2010/12/05(日) 20:57:12エントリーポイントってgccだとstartだよね。
0988デフォルトの名無しさん
2010/12/05(日) 20:59:440989デフォルトの名無しさん
2010/12/05(日) 21:11:44いわゆるmain関数に該当する部分の話じゃね?
0990デフォルトの名無しさん
2010/12/05(日) 21:19:240991デフォルトの名無しさん
2010/12/06(月) 00:36:38実行結果はどうでるんでしょうか
0992デフォルトの名無しさん
2010/12/06(月) 01:11:44早稲田大学基幹理工学部情報理工学科3年
オペレーティングシステム
期限は今日までだな
0993デフォルトの名無しさん
2010/12/06(月) 08:12:35動かせばわかるだろ、動かす環境無いの?
0994デフォルトの名無しさん
2010/12/06(月) 08:17:22組み込みはやったこと無いから知らないな
winアプリも実務だよ、あんまり書かないから忘れてただけ
でもwinアプリを実務で書くときエントリポイントなんて気にするの?
int far pascal WinMain() なんてのは15〜20年前には書いてたけど、最近はwizard使うんじゃね?
0995デフォルトの名無しさん
2010/12/06(月) 08:48:47もう終わってんだから黙れよ
0996デフォルトの名無しさん
2010/12/06(月) 09:02:32今さら大学で勉強する気はないが。どうせいつかは死ぬし
さっさと金を稼いだ方が楽。こうしている間にも老化して生きられる時間も刻一刻と減っているしな。
明日死ぬかもしれない人生だし。自分の頭にいくら知能を詰めても、活用しなきゃ意味ねーし。
0997デフォルトの名無しさん
2010/12/06(月) 09:04:32記述するしないではなく、標準スタイルの話。お前もバカだろw
そういうのを疎かにしている奴がヘボプログラマーなの。
多分、その他も自分はそういう記述はしないからという理由で
重要な内容を有耶無耶にして、不適切なコードを記述していることにも気づかずに
とんでもないバグを作っている可能性はあるよ。
ほら、世の中に完璧なものはない。OSレベルになると完璧なものは難しいが
市販ソフトでもまだまだ不十分。ハードウェアの環境も変わるしね・・・
0998デフォルトの名無しさん
2010/12/06(月) 09:13:390999デフォルトの名無しさん
2010/12/06(月) 09:24:08そういうカス使ってでもコスト下げた方が勝ち。客は品質なんてわからない。
1000↑こいつ最高にアホ
2010/12/06(月) 09:29:0910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。