1 :
デフォルトの名無しさん :
2010/11/16(火) 22:14:58
【◆QZaw55cn4c 隔離】C/C++の問題を片付けます 1 : ◆QZaw55cn4c :2010/11/14(日) 15:15:49 あなたが解けないC言語/C++言語の問題を ◆QZaw55cn4c が有償で片付けるスレッドです。
[1] 授業単元:プログラミング演習 [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] その他の制限: なし よろしくお願いします。
1] 授業単元: 数値解析 [2] 問題文(含コード&リンク): ランダムに入力された3次元における100点の重心を求めよ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC 2008 [3.3] 言語: C [4] 期限: 11月18日 [5] その他の制限: 構造体を使う よろしくお願いします。
[1] 授業単元:C言語基礎
[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問と少し多いのですがどうかお願いします
7 :
デフォルトの名無しさん :2010/11/17(水) 02:15:33
[1] 授業単元:プログラミング [2] 問題文 ・キーボードから入力した整数値が3の倍数かどうかを表示するプログラム ・キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。 ただし、平均値を求める関数 float ave(int a,int b) を利用すること。 ・キーボードから入力した文字列をすべて大文字(小文字は大文字に、大文字はそのままに)に変換して表示するプログラムを作成しなさい。 ただし、文字を大文字に変換する関数を作成し、それを利用すること。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010/11/18までにお願いします [5] その他の制限:
10 :
デフォルトの名無しさん :2010/11/17(水) 12:40:56
[1] 授業単元:情報通信
[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 上記のプログラムを参考に作成してもよいとのことです。
大文字や小文字のプログラムまではできましたが、その後がうまくできません。
よろしくお願いします。
>>10 INExp.hとできてるところまでのコード暮
>>10 質問
・受信データに全角が混じる可能性は有るの?
・受信データの途中で 0x00 が出現する可能性は有るの?
・サンプルを見ると "\END" + 改行コード(2BYte) で終了判定しているけど "\END" のみで終了判定しても良いの?
・"\END"も返信するの?
・space + tab + space の場合、space 1つに変換するの?
・1Byte 単位で read() かけても文句言われない?
13 :
デフォルトの名無しさん :2010/11/17(水) 15:24:40
>>11 http://codepad.org/CHFnxR5p です。
>>12 ・受信データに全角が混じる可能性は有るの?
全角はないと思います。
・受信データの途中で 0x00 が出現する可能性は有るの?
ちょっとわからないです。ごめんなさい。
・サンプルを見ると "\END" + 改行コード(2BYte) で終了判定しているけど "\END" のみで終了判定しても良いの?
・"\END"も返信するの?
"\END"+エンターキーで終了判定です。
"\END"は送信だけで大丈夫です。
・space + tab + space の場合、space 1つに変換するの?
区切りが3つできると思います。
・1Byte 単位で read() かけても文句言われない?
ちょっとわからないです。ごめんなさい。
14 :
デフォルトの名無しさん :2010/11/17(水) 16:47:17
>>13 『ちょっと判らない』とは質問の意味が判らないという意味かい?
『"\END" は送信だけで大丈夫』とは返信の必要は無いと言う事?
区切りが3つできると言う事はtabは文字扱いで良いんだね
>>10 で提示されたソースコードは本当に動くの?
これTCP/IPでしょ、setup_server() の戻り値は待ち受けソケットだと思うんだけどなぁ...
16 :
デフォルトの名無しさん :2010/11/17(水) 17:32:24
>>15 そうです。ちょっと質問の意味がわからないです。すみません。
"\END"は送信するとサーバー側が[Beautify Server Closed]を送信してコネクションを切断する。
ので返信はいらないです。
>>10 のプログラム単体だと動かないかもです。
>>16 そらまぁサーバー単体では動かないわな
サーバーが動いているときにクライアントが接続して初めて通信が開始されるんだからね
まぁ動くとの前提で考えようか、バッファがグローバル変数だからマルチプロセスを考慮してないのは明らかだ
多分、setup_server() で待ち受けソケット作って→接続あったら→待ち受けソケットをクローズって流れなんだろうな
1対1の通信しか想定していないプログラムと考えるよ
18 :
デフォルトの名無しさん :2010/11/17(水) 18:30:42
>>17 それでいいと思います。
ごめんなさい、学習不足で・・・。
大学の講義なんて毎年同じなのが当たり前だし
>>20 解答があればだけど、その時の解答どっかにか落ちてないのかね
>>22 #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;
}
>>22 #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;
}
25 :
デフォルトの名無しさん :2010/11/17(水) 19:36:01
>>25 #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;
}
29 :
デフォルトの名無しさん :2010/11/17(水) 20:30:56
書き方が悪くてすみません;
>>7 は全部別々の問題です
1.キーボードから入力した整数値が3の倍数かどうかを表示するプログラム
2.キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。
ただし、平均値を求める関数 float ave(int a,int b)
を利用すること。
3.キーボードから入力した文字列をすべて大文字(小文字は大文字に、大文字はそのままに)に変換して表示するプログラムを作成しなさい。
ただし、文字を大文字に変換する関数を作成し、それを利用すること。
30 :
28 :2010/11/17(水) 20:35:52
31 :
デフォルトの名無しさん :2010/11/17(水) 20:40:25
>>28 ありがとうございます。
ちょっと動かしてみましたが。
・・・・.・・・・・.
のように一行にピリオドが2つ以上入力したとき
・・・・.
・・・・.
のように出力されると思うのですが。
うまくできなかったです。
割り算の結果が整数になっとったわ float ave(int a, int b) { return ((a+b+c)/3); } は、 float ave(int a, int b) { return ((a+b+c)/3); } な。
割り算の結果が整数になっとったわ float ave(int a, int b) { return ((a+b+c)/3); } は、 float ave(int a, int b) { return ((a+b+c)/3.0); } な。
34 :
デフォルトの名無しさん :2010/11/17(水) 20:46:17
>>30 >>31 の追記です。
\ENDか\endの入力でサーバーが閉じないです。
>>34 90行目
ptr = strstr( buf1, "\\end\r\n" );
を
ptr = strstr( buf1, "\\end" );
に直してみてくれる?
改行コードまでを終了判定に使うか迷ったんだけど "\end \r\n" みたいな入力がある事を考えると使わない方が良いかも
そのかわり、文中に "\end" が入るとそこで終わっちゃうけどね
38 :
デフォルトの名無しさん :2010/11/17(水) 20:54:46
>>36 下記が実行結果です。
[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.
のようにはならないのですか?ってことです。わかりづらくてごめんなさい。
39 :
デフォルトの名無しさん :2010/11/17(水) 20:58:56
>>37 変えてみましたが
\end
\End
のようになって終わらないです。。
>>38 ピリオドで改行しろって事?
>>10 からはその意図を読み取れなかったんだけど、その方が良いのかな?
そっちの方が良いなら直すのは簡単だよ
>>34 はOK?
今は7月です。 私はすぐにアメリカの宿題を終えるでしょう。そして来月日本を発ちます。
ネットワークは適当に連結されて送受信されたりするから \end が独立してないんじゃないかな
>>39 理由は判った、無くて7バグを体現してるなぁwww
文頭に 'Cause が有った場合は 'cause に直すべき?
答えによっては修正法が異なるので
44 :
デフォルトの名無しさん :2010/11/17(水) 21:07:08
>>40 文末をピリオドで判定するから
ピリオドで改行するのかなと、思うのですが・・・。
45 :
デフォルトの名無しさん :2010/11/17(水) 21:09:11
>>43 そこは直さなくてもいいと思います。
特に記載されてないので・・・。
>>44 仕様を決めるのは君だから君がそう思うなら直すよ
>>43 の答えが出たら作業を開始する
48 :
デフォルトの名無しさん :2010/11/17(水) 21:33:03
どなたか
>>29 をお願いできませんか!;
急ぎなのでお願い致します!
>>48 >2.キーボードから入力した三つの整数値の平均値を求めるプログラムを作成しなさい。
>ただし、平均値を求める関数 float ave(int a,int b)
>を利用すること。
問題文、あってる?
>float ave(int a,int b)
これは課題として記述する関数?それとも与えられた関数?
全スレ999です。 15パズルをランダムに状態を遷移させて完成にまで持って行きたいのですが 15パズルには考えられる状態数が多すぎるため10000回の遷移では完成させることができません 乱数を用いて、比較的すぐにパズルを完成させるためにはどのようにすれば良いですか?
完全ランダムを辞めて戦略を考えてやればいいじゃないの
53 :
デフォルトの名無しさん :2010/11/17(水) 22:08:29
>>49 課題として記述する関数だと思います;
>>50 ありがとうございます。
でもよくわからない…orz
54 :
51 :2010/11/17(水) 22:14:45
>>52 探索ではなく、乱数を使った戦略は何がありますか?
なんで乱数にこだわるの
>>54 左上が正しい位置に来たら、そのピースだけは動かさないようにする。
更にその周辺のピースが正しい位置に来たら、そのピースは動かさないようにする。
みたいに動かさなくてもすむピースを固定していったら?
>>53 float ave(int a,int b,int c)の間違いじゃない?
>>56 横からですまんが
それで解けると思わないんだが
もしかして遺伝的アルゴリズムとかの系統を使う系?
>>29 とりあえず大雑把に。入力値のチェックはしていない
問題1:
#include<stdio.h>
int main()
{
int i;
scanf("%d",&i);
puts((i%3)?"3 no baisu dehanai":"3 no baisu");
return 0;
}
>>29 問題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;
}
>>29 問題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;
}
63 :
47 :2010/11/17(水) 22:51:36
>>57 多分、2項の平均値を得る関数を用いて3項の平均値を取るって所が肝なんじゃね?
ave( ave( a, b ), c );
だと重みが違っちゃうから駄目なんだろうなぁ、どうするんだろ?
>>64 (ave(a,b)+ave(b,c)+ave(c,a))/3.0
こうか?w
安部
麻里亞
こうだろ ave( ave( a, b ) * 2, c );
>>65 こんな式でもOK
ave(ave(a, b) * 2, c)
>>64 難しい式だなー 俺なら直感的にこう書くわ
(ave(a,a)+ave(b,b)+ave(c,c))/3.0
a=1,b=2,c=1.5の時のaveは1.5になるが、
>>68 >>69 では2.25になってしまう
>>72 おっしゃる通りなので訂正。
((ave(a, b) * 2 + c) / 3.0
誰か宿題の回答書いてやれよ
>>29 ave(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 乱数だったら完全に運じゃん?
3で割ったら負けかなと思ってる
スカラー量を2等分しかできない道具を駆使して、スカラー量を3等分することって 可能なんだろうか? 昔いろいろ考えたけど、いい方法が思い浮かばなかったわ
>>77 1/4+1/16+1/64+1/256+・・・
Σ(1/4^n)=1/3
ほう・・・
>>58 56とは別人だが、固定箇所を限定すればいけんじゃね?
↓こんな感じで
■□□□ ■■□□ ■■□□ ■■□□ ■■■■ ■■■■ ■■■■ ■■■■ ■■■■ ■■■■
□□□□ □□□□ ■□□□ ■■□□ □□□□ ■□□□ ■■■■ ■■■■ ■■■■ ■■■■
□□□□ □□□□ □□□□ □□□□ □□□□ ■□□□ □□□□ ■□□□ ■■□□ ■■□□
□□□□ □□□□ □□□□ □□□□ □□□□ ■□□□ □□□□ ■□□□ □□□□ ■■□□
なるほど、それならできるかも
83 :
デフォルトの名無しさん :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日まで よろしくお願いします。
84 :
デフォルトの名無しさん :2010/11/18(木) 07:55:37
83に付け足します。 card h[] は手札のカード h[].pips は手札のカードの番号 h[].suit は手札のカードのマーク のことです。
ジョーカーは0?
86 :
デフォルトの名無しさん :2010/11/18(木) 08:50:38
>85 カードは全部で52枚なので、ジョーカーは無いものと考えているようです。
dist[]のサイズが14だからジョーカーの分もあるのかと思ったら ただ添え字と数字あわせただけか
>>83 書いてみた、ゲームの仕様が判らないので手役の判定だけね
ランダムに10000回手札を作ってその手役を判定する
出力としては、4カード以上の手役が出来たら手札を表示
最後に出来た役の総数を出力
手役表示の優先順位は誤っているかも知れん、ロイヤルストレートって出現頻度が低いんだなぁ
ttp://ideone.com/JiPy6
89 :
デフォルトの名無しさん :2010/11/18(木) 12:57:37
90 :
デフォルトの名無しさん :2010/11/18(木) 12:58:48
[1] 授業単元:画像処理
[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
codepadが開けない
>>83 チェックしてないけど
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;
}
93 :
デフォルトの名無しさん :2010/11/18(木) 13:32:49
[1] 授業単元:プログラミング [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] その他の制限: とくになしです よろしくお願いします。
>>93 #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;
}
>>93 カウンターのインクリメント忘れ。
#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;
}
yokin yen rishi と来て、最後が year かよ
yen rishi と来て、最後が year かよ
いやあそれほどでも
誰かパステルカラーの宿題をお願いします。
>>82 8パズル(右下が空きの場合)はこのように固定すればいい(一例)。たぶんな。
■□□ ■■■ ■■■ □□■
□□□ □□□ ■□□ □□□
□□□ □□□ ■□□ ■□□
(a) (b) (c) (d)
ただし、(a)とした状況で(d)を適用は不可能(d→aも同様)。下のようになっちゃうからね。
固定の仕方(aとするかdとするかなど)により、収束の早さが変わると思うが、どういう固定の仕方がいいのかはさっぱりわからん。
■□■
□□□
■□□
あと、おそらくだが、下の場合のように遷移可能な場所が1つであるような固定の仕方は駄目だと思う。
たとえば、ブロックの座標を(行,列)で表すとして、(1,2)のブロックは(2,2)だけにしか遷移できない、のように。
たぶん、こういった"遷移可能な場所が1つである部分"がないならどんな固定の仕方でも大丈夫だと思う。
1 2 3
1■□■
2□□□
3□□□
お前らパズル引っ張りすぎ 飽きた
ポーカーは面白かったな
>>102 ごめん、引っ張ってんの俺だわw
たぶん最後のレス。
>>101 に間違いあり。
一番下のどんな固定の仕方でも大丈夫と書いたけど、これ間違い。
(e)を遷移させていくと(f)になるんだが、この時点で固定すると(e)に戻せなくなる。
123 123
456 754
78 68
(e) (f)
まぁ、
>>101 の(a)→(b)→(c)と固定していくのが無難だと思われ。
105 :
デフォルトの名無しさん :2010/11/18(木) 17:13:32
>>90 コレって合成先のビットマップも256色なの?
なんかパレット数が妙なことになってるけど
それはなかったことにして24bitか32bitビットマップとしていいのか?
[1] 授業単元:プログラミング
[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 よろしくおねがいします。
これ系→
>>101 取りあえず完全乱数版を作ってみた。
これから
>>101 方式作って比べてみる。
112 :
111 :2010/11/18(木) 20:03:39
115 :
デフォルトの名無しさん :2010/11/18(木) 21:05:10
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):名前、学年、学科、番号を標準入力から入力し、 サブルーチン内で表示するプログラムを作成せよ。(構造体を使用しないこと。) [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限:11/19 [5] その他の制限:特になし 連投しますが、よろしくお願いします。
116 :
デフォルトの名無しさん :2010/11/18(木) 21:09:36
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):名前、学年、学科、番号を標準入力から入力し、 サブルーチン内で表示するプログラムを構造体を用いて作成せよ。ただし、 構造体のメンバに値を代入する際には変数実体を操作する。 すなわちドット演算子を用いること。 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限:11/19 [5] その他の制限:特になし 連投しますが、よろしくお願いします。
117 :
デフォルトの名無しさん :2010/11/18(木) 21:11:24
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
>>116 において、構造体のメンバに値を
代入する際にポインタを用いて代入するプログラムを作成せよ。
すなわちアロー演算子を用いること
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C++
[4] 期限:11/19
[5] その他の制限:特になし
118 :
デフォルトの名無しさん :2010/11/18(木) 21:14:54
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):学年、学科、番号、を表示する プログラムを作成せよ。ただし、構造体を使用し、構造体のメンバとして 構造体を含むようにすること。 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限:11/19 [5] その他の制限:特になし
119 :
デフォルトの名無しさん :2010/11/18(木) 21:18:24
[1] 授業単元:プログラミング [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] その他の制限:特になし 以上よろしくお願いします。
>>115 ~
なんかすごいな...
やり方教えたほうがいいのかな...
>>116 と
>>117 なんて A[i].B と (A+i)->B の違いだけだしなぁ
C言語を覚えたての奴が独習として回答するんじゃないのか?
122 :
デフォルトの名無しさん :2010/11/18(木) 22:57:20
[1] 授業単元:プログラミング [2] 問題文 コンストラクタでrow,columnを指定して、動的に確保 デストラクタを解放 これで足し算メソット add(matrix Y)を作ってください [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C++ [4] 期限:2010/11/20 [5] その他の制限:あまり難しくしすぎないでください。 あと、出力→coutで、入力はcinでお願いします。
あずにゃん
いまや低脳日本人だらけだからね 高脳なら低脳の意味不明な文章でも問題なく理解できるが、でも低脳は不可能 低脳は高脳が低脳にあわせて解りやすく言うことしか理解できない ついでに、低脳同士のコミュニケーションは不可能
確かに、高脳なら普通に理解できるものを低脳は理解できない、しようとしない。
130 :
122 :2010/11/19(金) 00:55:47
>>129 出来たら、coutの部分を日本語でいれていただきたいんですが…
あと、(void)って()の中のvoidは必要ですか?
>>130 このようなことまで注文するのは
回答者(2ch?)の著作権を尊重しての
ことなのでしょうね。
ISO、ANSI準拠の標準スタイルではC++ではmain関数への引数が無い場合はvoidが無くてもおk int main() { } でどうぞ。return 0;も省略可。
>>130 日本語に直すぐらいは自分でやれ、エディターを使った事が無いなら別だけど
引数の void は引数が無いことを明示的に表現しているだけなので省略しても良い
しかし、明示的に表示する事によるデメリットは何も無いので、俺は必ず付ける
134 :
デフォルトの名無しさん :2010/11/19(金) 14:24:49
>>14 分かる方いましたらよろしくお願いします。
↓
>>129 newしたものを初期化してほしければ
m_Mat[i] = new int[m_column]();
じゃないか?
>>136 () 付けないとコンストラクタは呼ばれないんだっけ?
忘れてることって多いな....
>>136 やってみたら 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 はディフォルトコンストラクタを持たないって事かな?
>>139 int()は単独では使えるけど、配列newには使えないだけ
規格のバージョンとか、独自拡張とかなのかな? codepadとVC++2010じゃコンパイル出来た。
§5.3.4 New 15 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; という事だそうです
>>140 それは foo に関しても同じ、 foo の配列 new ではディフォルトコンストラクタが呼ばれて x が 1 に初期化されたけど、
int は 0 に初期化されなかったので int にはディフォルトコンストラクタが用意されてないのかという話
>>141 >>143 それはC++0xではいいが
C++ではだめ
POD class type (or array thereof) containing (directly or indirectly) a member of
const-qualified type, the program is ill-formed;
これの意味が分かれば分かるはず
Otherwise, the object created has indeterminate value. ああこれも含めてな
英語弱いから日本語で書いてくれ
よし in English
C++03では配列newの場合非PODではデフォルトコンストラクタが呼ばれ、 PODの場合は不定値となるという事 もし new int[constant]() と書くと文法エラー(C++0xではOK)
>>148 じゃ
>>143 は正しい解釈じゃないの?
要は plain old data にはディフォルトコンストラクタが無いことに起因してるんだから
デフォルトコンストラクタはある int i() とやると iは0に初期化される しかし配列newの場合はPOD型はデフォルトコンストラクタは呼ばれなくて 不定値になるとちゃんと書いてあるじゃん
PODのディフォルトコンストラクタは配列 new 時にはコールされないって解釈なら正しいのか?
152 :
mery :2010/11/19(金) 19:10:58
[1] 授業単元:プログラミングC [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以外の数字が入力されたときの処理は考えなくていいそうです よろしくお願いします!
#include <stdio.h> #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; }
int main(void) { 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; } 乱数の合計値を求めるプログラムなんですが、エラーが発生します。 どこが原因なんでしょうか?
>>157 sizeof(int)をどうすれば良いのですか?
double *h,r; hはdouble型のポイントで h=(double*)malloc(d*sizeof(int)); int型のサイズで確保してどーすんだと
ポイントってなんだ、ポインタやん orz
>>156 scanf("%d",d);
↓
scanf("%d",&d);
>>159-161 ありがとうございます。
初歩的なミスでした。
実を言うと、もう一つ質問があります。
この合計から「分散」を計算したいのですが、どうすれば良いですか?
163 :
mery :2010/11/19(金) 20:57:47
>153さん すいません、5等分でした。 正しい問題は、 「無限ループを用い、1〜50までの数値を任意に10個入力し、その度数分布を求めよ。但し、度数分布は5等分(例;1〜10に4個, 11〜20に3個, 21〜30・・・41〜50に0個)して表示せよ。 」です。
>>152 #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;
}
よし、マイナスの値を入力して結果を見てみようか。
範囲外の値を入力したらエラーで落ちた orz
こういうのを勇み足といいます
入力された値をもとに配列の添え字を指定するのは思いついたが 範囲外の対処が甘かったか。
>>162 の者ですが、「分散」のプログラムはこれで合ってますか?
ave=sum/n;
for(i=0;i<n;i++){
gokei+=(sum*((array[i]-heikin)*(array[i]-heikin)));
}
var=gokei/(n-1);
>>169 ですが、書き直しました。
ave=sum/N;
for(i=0;i<N;i++){
sum2+=((array[i]-ave)*(array[i]-ave));
}
var=sum2/(N-1);
return var;
}
これで合ってますか?間違っているのなら指摘をお願いします。
>>172 sum2=0;
をforの前に入れればOK
安部
177 :
デフォルトの名無しさん :2010/11/20(土) 01:46:27
[1] 授業単元:プログラミング
[2] 問題文
http://imepita.jp/20101120/039760 図の左のプログラム(○つけてある方です)の30行目〜32行目を消して、デストラクタを作って31行目の処理を実装して動作確認をしてください
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:2010/11/22
>>177 読みづらい
それにSeiseki.hはどこにあるの?
面倒でもcodepadかどこかに上げてくれ
>>177 そのページを打ち込んだテキストファイルをアップする
それが最低限のマナーだと思うぞ
180 :
デフォルトの名無しさん :2010/11/20(土) 01:53:42
>>132 これって、printfはcoutにする事は不可能でしょうか
181 :
177 :2010/11/20(土) 02:02:03
だからimepitaはやめろっつーに それもデジカメじゃなくて携帯で撮ったろ ボケて読めない テキストで打ち込め
なんでわざわざ紙に印刷した上にデジカメで撮影した画像をアップするんだよw もとのテキストをアップすりゃ済むことだろw
[1] 授業単元:プログラミング [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>にしてはじめること
185 :
177 :2010/11/20(土) 02:27:17
>>183 紙に印刷したんじゃなくて配布のプリントなんです…
186 :
デフォルトの名無しさん :2010/11/20(土) 02:28:16
宿題をくれているのに生意気なこと言うなよ とっとと宿題をやれ
野良猫にえさを与えないで下さい
>>185 だから、それを一字一句間違いなく打ち込んでアップするのが出題者の最低限のマナーだ
コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう
にゃおおおおー、にゃおーーーー ヾヽヽ (,, ・∀・)チュンチュン ミ_ノ ″″
>>188 >コードを書けない馬鹿でも紙に書いてある物を間違いなく打ち込むくらいは出来るだろう
これどうやるんですか?
まさかパソコン持ってないとか言うなよ・・・・
>>190 君に言うべき言葉が見つからない、ゴメン
いや、あるよ
>>190 君はこのスレに来る前にしなければならない事が山ほどある
PCなくてもネカフェ行けばいいんでないの
いまの学生は携帯は持っているけど、PCは持ってないの多そうだな 宿題の解答は学校のPCでダウソかな 時代は携帯中心になり、モビリティのないPCはおっさん時代の中心ねだろうな
だが、PCが一人1台すらない詐欺学校で 全て机上のペーパープログラミング授業だとしたらどうだろう?
198 :
90 :2010/11/20(土) 03:50:57
>>106 亀レスでごめんなさい。
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;
}
199 :
デフォルトの名無しさん :2010/11/20(土) 03:52:02
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); 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);
200 :
デフォルトの名無しさん :2010/11/20(土) 03:52:44
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* 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; }
201 :
デフォルトの名無しさん :2010/11/20(土) 03:53:25
bmfh.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; }
202 :
デフォルトの名無しさん :2010/11/20(土) 03:54:05
長々と失礼しました。
>>181 君がアンカーをミスらなければもっと早く答えたんだけどね
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() を使ってはいけない理由は無いと思うんだけどな
204 :
203 :2010/11/20(土) 04:27:58
208 :
デフォルトの名無しさん :2010/11/20(土) 12:53:14
>>203 ごめんなさい。これを
>>129 のプログラムのprintfの所に代わりに入れてあげればいいんですか?
>>184 ですが、書き間違えていました。
正しくは、
A乱数は配列で保存すること → A乱数は「動的確保された」配列に保存すること
ごめんなさい。
>>209 の続きです。
C乱数係数xはキーボードから入力するようにプログラムすること
を追加してください。
211 :
デフォルトの名無しさん :2010/11/20(土) 14:33:26
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク):赤い領域と白い領域が隣り合っているところを抽出せよ。 [3] 環境 [3.1] OS:Windows、visual studio2005 [3.3] 言語:どちらでも可。 [4] 期限:今日か明日には完成させたいです。 [5] その他の制限:できるだけわかりやすいと嬉しいです。 とりあえず赤い領域は抽出できたのですが隣り合う白い領域を抽出するのができないです。 ラスタスキャンし、赤い画素を見つけたら4近傍を探索し、白い画素だったら抽出…という方向で組んでいるのですが 白い画素を見つけたとき、その白い画素の4近傍もまた探索しないといけないのでここでつまづいています。 よろしくお願いします。
>>209 >>210 乱数は動的確保された配列に保存されています
乱数係数xの意味がよくわかりません
具体的に説明をお願いします
もしかしてsrand()に与える値ですか?
213 :
211 :2010/11/20(土) 14:43:00
// (1)画素値(R,G,B)を順次取得し,変更する // 赤色領域の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;
214 :
211 :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をセットしています
>>211 サンプル画像も貼らずに質問とな?
説明の意味が分からんのだが、赤い領域と白い領域の境界を見るのなら
「白い画素の4近傍もまた探索」は必要ないのではないか?
とりあえず赤い領域と白い領域が何をさしてるのかちゃんと説明してくれ
>>209 >>210 奇特な
>>129 がせっかく書いてくれてるのに、
理解する能力もなければ(ホントに全くないよね)、
理解する気持ちもない。
君は単位落とすべきでは?
217 :
211 :2010/11/20(土) 14:55:50
jpegかよ
>>217 CDC MemDC1,MemDC2;を用意し、
MemDC1は白い色だけの色を残し、それ以外はCOLORREF=0にする。
MemDC2は赤い色だけの色を残し、それ以外はCOLORREF=0にする。
MemDC1とMemDC2のCOLORREF≠0の部分を縦横4ドットずつ広げる。
MemDC1とMemDC2のandを取る。
こんな感じでだめか?
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):双方向リストを使って、複数行を読み込み、読み込んだ行をそのままの順に出力するプログラムを完成させなさい。 [3] 環境 [3.1] OS: Windows7(Windows/Linux/等々) [3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0 [3.3] 言語:_C [4] 期限:今日中 [5] その他の制限: 特になし
IT会社の経営者なんて、自社製品を何も持たず技術者をよその会社にぶちこんでピンはねで利益を上げてるだけだぞ? 従業員のやりがいとか成長とか全く興味がないからな。ビジネスモデルがピンはねなんだからやつらの考えることは 如何に従業員をこき使うかしか考えてない。それでしか利益を上げられないんだから。 普通会社の存在理由って、世の中に新しい価値を提供したいとかそういうことじゃん? でもITの経営者のやることは技術者を売ってピンはねで金儲けすることだけだから。 技術者の命より金の方が優先度が高い世界だぞ?そりゃ精神病んで自殺に追い込まれるよ。
>>227 問題読んですらないけど51-98行の圧迫感にワロタw
力作おつです。
230 :
226 :2010/11/20(土) 18:01:15
>>226 ごめん。↓ここがおかしいわ。
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;
}}
>>229 ありがとうございます。
ところで、このプログラムは、#include <math.h>と#include <time.h>を使わずにつくれますか?
できればなしのプログラムも欲しいんです。
何度も注文つけてしまってすいません。
232 :
211 :2010/11/20(土) 18:21:31
>>230 ありがとうございます!
キレイに抽出できてますね…
ソースが難しいので頑張って解読してみます。
>>231 できるけどsinとかcosとかを自分で作らないといけないよ?
もともとあるものを自分で作るのは全く無意味だし
問題の本質ではないからこのままでいいんじゃない?
math.hとtime.hを使いたくない理由が分からないけど
もし習ってないとか言うバカげた理由なら考えを改めたほうがいいよ
>>232 スケルトンから変えたのはほぼ 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をあぶりだしていく感じ。
>>231 あ、
>>229 は<time.h>はもう不要なので取り忘れました
<math.h>はlog()とsqrt()とsin()とcos()を呼び出すのに必要なので、
やるとすれば疑似的な発生法しかありません
それで作ってみます
236 :
211 :2010/11/20(土) 18:49:05
>>234 スケルトンをまず知らないのでww
c言語でお願いすればよかったと後悔してます\(^o^)/
238 :
デフォルトの名無しさん :2010/11/20(土) 19:52:14
糞スレ
>>237 無理なお願いを聞いて頂きありがとうございます。
>>205 ありがとうございます。
RGBTRIPLEなんて構造体があったのですね。
[1] 授業単元:プログラミング演習 [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] その他の制限: なし よろしくお願いします。
>>243 おいおい問題があるスレに誘導するなよ
今運営に報告してきた所だぞ
>>244 報告先の URL を教えてください。
回答がありしだい、誘導を停止します。
>>245 その前にどうして誘導するのかその理由を聞かせてくれないか?
ここが宿題スレだろうに
誘導するのなら確固とした理由が必要だろ
◆QZaw55cn4c本人でしょ いいかげん他スレにちょっかい出すのやめればいいのに 自分が立てたスレに責任が持てないなら削除依頼だしてこいよ
と言う事で◆QZaw55cn4cは自分のスレに書き込まれた問題のみに解答しろ このスレから誘導すんな このスレの意味が無くなる
249 :
226 :2010/11/20(土) 22:19:01
サーバ用途じゃないツールだったら、 思う存分落とせばいいじゃん。
あ、サーバ用途ってのは、それ自身が動き続けることが使命になってるプログラムのことね。 ツールってのは、コマンドとして実行させて、終了とともに結果を得るもの、ってつもり。
言わんとするところは伝わるような気がするが、 ツールだから落ちてもいいという根拠は何も出ていない。
作った本人が私的に使うツールなら分かるが、 そうでなければ、あまりにも無責任
ソースあるんだから文句があるなら自分で直せばいいだけなのに
255 :
デフォルトの名無しさん :2010/11/21(日) 09:51:24
プログラミング演習の問題で
入力した名前(アルファベット)を昇順に並び変える
sort_by_nameという関数を作りたいです。
2文字目ぐらいまで判定できればいいです。
数字の昇順ならできるのでヒントだけでもください。
http://codepad.org/6vjN9ld1
256 :
デフォルトの名無しさん :2010/11/21(日) 10:20:54
[1] 授業単元:情報処理概論T [2] 問題文(含コード&リンク): つると亀が合わせてn匹います。足の数は合わせてmです。 nとmを入力して、つると亀がそれぞれ何匹いるのか求めるプログラムを作りなさい。 もし解がない場合は、その旨を出力するようプログラムすること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [無期限] [5] その他の制限:if、while、for、配列、多重ループ、関数まで習いました。 よろしくお願いします。
260 :
255 :2010/11/21(日) 11:11:06
261 :
デフォルトの名無しさん :2010/11/21(日) 14:30:29
[1] 授業単元: プログラミング [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
262 :
デフォルトの名無しさん :2010/11/21(日) 14:46:04
[1] 授業単元;プログラミング演習 [2] 問題文(含コード&リンク): ・ランダムな整数列を生成し,挿入ソート・シェルソートにより 並べ替えるプログラムを作れ ・実行時間を計測せよ [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C/C++/どちらでも可 [4] 期限:11月24日 [5] その他の制限: unixのrand()とtimeコマンドを使用すること mainの中もお願いします。
>>261 #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;
}
>>264 ◆QZaw55cn4cの出張ウザイです
268 :
デフォルトの名無しさん :2010/11/21(日) 19:15:22
>>222 >>227 どうもありがとうございます。
御二方のコードを参考に自分でもう一度作ってみようと思います。
269 :
デフォルトの名無しさん :2010/11/21(日) 19:19:16
c言語の宿題の一部なのですが コマンドプロンプトのmoreの役割をするプログラムを作るのはどうすればいいのでしょうか? 既に出来ているテキストファイルをコマンド上に表示するだけなのですが 出来ればソースをお願いします
ncursesを使う
解決しました ありがとうございます
>>267 助かりました。
これからがんばって読みます。
ありがとうございました。
273 :
デフォルトの名無しさん :2010/11/21(日) 21:40:07
[1] 授業単元:プログラミング [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] その他の制限: あまり難しくないようにお願いします。 繰り返しと条件判断と配列と簡単な関数までぐらいしか授業はやっていません。
うぜー
276 :
デフォルトの名無しさん :2010/11/21(日) 23:10:03
>>259 ありがとうございました!とても助かりました!
279 :
デフォルトの名無しさん :2010/11/22(月) 12:53:40
>>273 ですが言語はCでした;
>>277 >>278 折角やっていただいたのにすみません!;
実行してみましたができませんでした。
普通にgetchar関数を使えと言われたんですが・・・。
280 :
デフォルトの名無しさん :2010/11/22(月) 13:08:02
1] 授業単元: プログラミング [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日
>>280 #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 ;
}
iでいいだろうよw
>>279 書いてくれてるプログラムはC++だけど
入出力以外はCと同じだから
#include <iostream>は#include <stdio.h>
std::getchar()はgetchar()
std::cout〜の行はprintf()
std::cin〜の行はscanf()に置き換えれば動くと思うよ
284 :
mery :2010/11/22(月) 13:42:18
以前152で 1] 授業単元:プログラミング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以外の数字が入力されたときの処理は考えなくていいそうです で書き込ませていただいた者なんですが、教えていただいた通り、打ち込んでみたのですが、実行結果がでませんでした。 なぜでしょうか?
>>282 iだと1引かないといけないのがなんか気持ち悪い
>>284 >>164 でうまくいきますよ。「実行結果がでませんでした」というのは、どういう状態か、もう少し詳しく教えてください。
一瞬で終了してるとかってオチか?
>>288 入力はできてるところをみると可能性はありそう
290 :
デフォルトの名無しさん :2010/11/22(月) 15:04:40
>>281 ありがとうございました。参考にします。
292 :
デフォルトの名無しさん :2010/11/22(月) 15:58:58
>>283 わかりました。間違えてすみません;
ありがとうございます!
>>291 わざわざありがとうございます!
>>284 >以前152
>で書き込ませていただいた者なんですが、教えていただいた通り、打ち込んでみたのですが、実行結果がでませんでした。
>なぜでしょうか?
7行目
>>164 i=0; を
i=0; puts("数値を入力>"); に変えてみようか?
[1] 授業単元: プログラミング [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] 期限:特に無し よろしくお願いいたします。
100%なら+20?
>>294 ランダムな数字の配列に負数とかゼロが出現する可能性はあるのかな?
>>295 そうです。私の頭じゃさっぱりで・・・if文の乱立しか思い浮かびません。
>>296 負数やゼロはなしでお願いします。
問題にはありませんが、1〜100あたりの乱数が入ると思っていただければ。
>>294 #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;
}
300 :
299 :2010/11/22(月) 17:54:23
>>294 >>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;
}
>>300 ありがとうございます!
こういう式がさっと出てこないんですよね・・・頭悪いのが嫌になる・・・
302 :
デフォルトの名無しさん :2010/11/23(火) 08:07:57
[1] 授業単元:プログラミングC言語 [2] 問題文:診断メーカー風のプログラムを作成しなさい。 名前を入力し、その名前に基づき何かしらの情報を出力。 .txtファイルを読み込み出力できるものにする事。 (オプション)日替わりで表示結果を変更。複数の組み合わせなど。 [3] 環境 [3.1] OS:Linux [3.3] 言語:C++ [4] 期限:2010年11月23日12:00まで 自分の頭では何をどうしていいのかさっぱりわかりません。 ヒントだけでも良いので、どうかよろしくお願いします。
>>302 テキストファイルの中に名前が書かれているの?
>>302 脳内メーカーみたいな物を作れって事かな?
ならば、先ずは仕様を決めることが必要だ
例えば名前の文字列を1Byteづつ評価し、0〜15なら毒、16〜31なら薬、32〜47なら愛.....等々の評価を与える
最後に全文字が何の評価を与えたかを集計すれば、毒:M%、愛:M%、薬:O%みたいな出力を出せるだろ
txtファイルを読むというのは引数にテキストファイル名が指定された場合にはそのファイルに書かれている
名前を標準入力の変わりに使えと言う事だと思う
参考になれば幸いだ
>>302 #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;
}
308 :
307 :2010/11/23(火) 09:45:47
>>307 で使用する data.txt の中身
#運勢
大吉
吉
凶
#ラッキーアイテム
トイレットペーパー
栓抜き
生卵
ブルーアイズホワイトドラゴン
#ラッキーカラー
透明
シルバー
[1]プログラミング演習
[2] 問題文:
http://codepad.org/Duo48tj4 [3] 環境
[3.1] windows
[3.2] visual studio2010
[3.3] C言語
[4] 2010/11/26まで
[5]配列、関数、文字列、関数形式マクロ、再帰は習っています。
構造体、ポインタ等は習っていません。
問題文が長く改行が多すぎて書き込めなかったのでcodepaに問題文も書きましたが
問題があったら言ってください。
お願いいたします。
コードパッドに本文を入れるとは斬新w
>>310 です。
>>312 御回答ありがとうございます。
無事できました。有難うございます。
>>311 あ…やっぱり文章を入れる物ではなかったですか…。
[1] 授業単元:プログラミング演習 [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] その他の制限: なし よろしくお願いします。
317 :
デフォルトの名無しさん :2010/11/23(火) 21:13:54
配列とファイルの読み込みです。 たとえば、100個の数字が用意されたファイルを用意します。 そのファイルを使って平均値を求めるプログラムを作りたいのですが教えてください。 ファイル名は適当で良いです。 平均値を求める計算は関数部分でお願いします。
318 :
デフォルトの名無しさん :2010/11/23(火) 21:20:32
int main(void) { system("cat temp.txt | perl -e \"while(<>){$i+=$_} print $i/100\""); return 0; }
320 :
デフォルトの名無しさん :2010/11/24(水) 00:37:03
[1] 授業単元: プログラミング基礎 [2] 問題文: n 個の整数型データ配列a[i]を、一つの関数に渡して、 その一つの関数内で平均値と分散値を求め、main関数内で 平均値と分散値を参照できるプログラムを作成せよ。 ただし、配列の受渡し、結果の受け渡しにはポインタを利用すること。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:11月25日まで [5] その他の制限:なし 宜しくお願いします。
321 :
デフォルトの名無しさん :2010/11/24(水) 00:57:35
>>320 #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;
}
>>321 *bunsanの式の右辺第二項は*heikinの二乗
[1] 授業単元: 数学 [2] 問題文: リーマン予想の解をアルゴリズム化して10^100桁の素数を決定的に因数分解する プログラムを作成せよ [3] 環境 [3.1] OS:Windows、Mac [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:1月25日まで [5] その他の制限:しらみつぶしに因数分解するプログラムは不可 宜しくお願いします。
>>322 そうだった
*bunsan = (double)sum2 / (double)n - *heikin * *heikin;
に修正、*が並ぶと気持ち悪いな
>>326 俺もそれ気になってた
素因数分解って言ってないから実数でもいいのか?だとしたら無数に存在するけど
328 :
320 :2010/11/24(水) 01:16:09
そもそも10^100桁の数値なんてどうやって扱えばいいのか分からない 情報量として (10^100)/2.41 byte分なんてしらみつぶししようとも思わないw
始めたばかりで何が何だかわかりません… [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
素因数分解って素数に対してはそれ自身が素因数分解された結果だよな だとしたら与えられた素数をそのまま出力するだけで終了じゃね?
[1] 授業単元: 数学 [2] 問題文: リーマン予想の解をアルゴリズム化して10^100桁の合成数を決定的に因数分解する プログラムを作成せよ [3] 環境 [3.1] OS:Windows、Mac [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:1月25日まで [5] その他の制限:しらみつぶしに因数分解するプログラムは不可 宜しくお願いします。
サラリーマンの人、やってみようか?
>>330 #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;
}
リーマン予想なんて解明されていないのに、もう解いたのか。 ノーベル科学賞でも受賞できんじゃね?w
アンカー見て、誰も返信なかったから貼ったけど。 俺がアンカーミスってたとは・・・
2^100ならいいけど10^100はちょっとやる気しないなぁ
>>334 ありがとうございます!
ほんとうに助かりました!
>>339 数学が無いことくらい知っているから敢えて 科学 の面で言ってみたんだが・・・
科学も 化学 を文字ってネタで言ったまでw
>>335 ありがとうございます!
あわせて参考にさせていただきます!
数学にノーベル賞は無いっておかしくね?
>>345 ノーベルが数学が苦手だったからだと
代わりにフィールズ賞がある
リーマン予想には賞金もかかってるよ
348 :
デフォルトの名無しさん :2010/11/24(水) 18:55:55
[1] 授業単元: プログラミング [2] 問題文:たとえば、100個の数字が用意されたファイルを用意します。 そのファイルを使って平均値を求めるプログラムを作りたいのですが教えてください。 ファイル名は適当で良いです。 平均値を求める計算は関数部分でお願いします。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:11月27日まで [5] その他の制限:なし お願いします。
簡単な問題に必死だな 巣にこもってろ出てくるなよ、ゴミが
>>349 ◆QZaw55cn4c
>たとえば、100個の数字が用意された
たとえば付くから、これは例を言っている(可能性ある)から数字の個数の100個は変化する可能性ある
と読み取れない?
>>351 1) #define N 100 と#define で記述して、コンパイル時に簡単に変えることができるようにしています。
2) 個数が仮に N より少ないデータだったとしても、正常に動くようにしています。
すなわち #define N 100 とした場合に対して、実際にはデータの個数が 5 であってもOKです。
100 を無視することも可能ではありましたが、平均を求める関数を準備する、という点を優先し、
一次近似として「データ数が100」を尊重いたしました。
>>348 問題があればコメントを下さい。随時変更いたします。
いいから出てくるなって
こんな入門レベルのものはやりたくないみたいなこと言ってたのになw
>>352 ◆QZaw55cn4c
いや、ここのスレでやり取りするなよ、自分のスレでやれ
スレチガイならともかく他所のスレのを無理やり横取りするなよ
お前、道徳的に最低ことしていると認識ないだろ
>>355 にちゃんねるで「道徳的」といわれても。
357 :
◆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] その他の制限: なし よろしくお願いします。
◆QZaw55cn4c
当然、
>>357 も横取りするんだろ
>>358 お客様としてお待ちしようかと。
でも期限が厳しいですね。
>>357 ディレクトリ指定も可能って事はサブディレクトリも再帰的に捜査するんだよね
まぁ500円くらいなら払う価値は有る問題だと思うよ
総ステップは行数だと思うけど実ステップってのは?
if( x ) {
i = a + b
+ c + d;
}
これは何ステップ?
コメント率は ( "/*", "*/", "//" を含むコメント文字数 ) / (総文字数) の事?
その場合は改行コードは計算に入れるの?
この辺は詰める必要があるね
>>357 カンマ演算子の扱いとか、do while とかどうする?
363 :
◆EkRIf9bJPo :2010/11/24(水) 21:40:11
>>360 そうです。サブディレクトリを読み込みます。
実ステップは、コメントのみの行、行区切りだけの行をはずした行数です。
なので、例に出されたソースの実ステップは、3ステップになります。
コメント率に関しては、特に条件が記載されてないです…
コメントが記載されている行/全行のことだと解釈しています。
改行コードについても記載がないので、計算には入れることは、考えてないです。
364 :
◆EkRIf9bJPo :2010/11/24(水) 21:48:48
>>356 2chを楯に自分の糞さから逃げてないか?
>>363 判定条件はこうかな
コメント外部にアルファベット、数字、記号({}を除く)が出現したら実ステップ行(*1)
コメントが入っている業はコメント行(*2)
当然、*1 でかつ *2 の行も存在する
例えば#if 0 〜 #endif の間は無効な行だけどこれも実ステップ行扱いで良いんだろうな、さもないと判定が難しすぎる
>>364 たとえば
a++,b++;
は1ステップか、それとも2ステップか
式は一つだから1ステップでいいとはおもうけど
do{
func();
}while();
は2ステップなのか3ステップなのか
doがなんかするわけじゃないから2ステップでいいのか?
あと、;だけの行はステップとして数えるのか?
>>357 >>363 途中ですが、コードを示します。使い方は、
./a.out Cプログラムファイル
です。
>>357 に例示されたコード例が指定どおりの数字を出す、という点だけで仕様を勝手にきめました。
大方は、
>>366 にしたがっています。
これにいろいろ食わせてみて問題があるようであれば指摘ください。
途中ゆえデバッグコードを多数含みますことご容赦を。
http://codepad.org/ah8s28nT xmalloc() -> malloc()
xfree() -> free()
xrealloc() -> realloc()
に読み替えてください。
370 :
◆1reJfOTbE. :2010/11/24(水) 23:35:18
371 :
◆EkRIf9bJPo :2010/11/24(水) 23:36:00
>>363 その判定条件で大丈夫です。
#if0〜#endifも実ステップ行扱いで良いと思います。
>>368 特にカンマ演算子と、do whileについて何も条件が出されてないので、
>>663 さんが提示した判断条件でお願いします。
>>369 printf("xxx/*nocomment*/xxx");
>>373 問題が結構いい加減だから、都合のいいように解釈すればよいと思う。
375 :
◆EkRIf9bJPo :2010/11/24(水) 23:58:29
>>369 ありがとうございます!
早速、デバッグを行なったところ、以下のエラーが表示されました。
1.c:8: error: conflicting types for ‘getline’
/usr/include/sys/stdio.h:37: error: previous declaration of ‘getline’ was here
よろしくお願いします。
getlineって◆QZaw55cn4cじゃないかw
>>373 /* "A" */
今のロジックだと /* と " のどちらかを優先しなければならないから限界みたいだね
つけなくていいよ
>>377 そのようですね。
このコード
>>378 は捨てましょう。
>>375 このロジックでよければ、ディレクトリを掘るコードをつけます、といっても明日があるので今日はおしまい。
期限を見直してください。あと
>>2 をよろしく。
381 :
377 :2010/11/25(木) 00:15:40
>>373 間違えた、駄目なのはこんなケース
printf( "/* a */" );
/* "a */
printf( "/* a */" );
改行で終わらない行は無視してるみたいだけどそんな必要有るのかな
ありゃ、テレビ見てたら盛り上がってるな。 乗り遅れたし、明日早いし。寝るくぁ。
>>370 非常に丁寧な教材ですね。
難しいところを素直に先生に聞いてみるのはいかが?
このスレは回答を提示することで若い芽を摘み取る非情な場所であることをお忘れなく。
>>370 の講義資料より引用
『インターネット上に匿名で書かれた情報は信じるな!!』
信じるな!とは言い過ぎだが利用は自己責任で、って位が落としどころかな
>>370 多分デジタルディレイの実装ではないかと思われる
queue.c はFifoリングバッファだろう
Fir_p.c のメインループ内では以下を行うんだろうな
for( ディレイ時間分ループ )
enqueue( 0 );
while(入力ファイルから short 一つを x に読み込む) {
enqueue( x );
y = dequeue()
x に y を重み付き加算
出力ファイルに x を書き込む
}
これでシングルディレイが付加された音声データ(wavファイル)が作成できるだろう
Fifo リングバッファをマルチインスタンスに修正し複数のリングバッファを使用すれば多段ディレイも作成できる
また enqueue( x ); の位置を加算後に持っていけば減衰率によっては自然な残響を得られるかも知れない
話が繋がっていかない課題やレポートはつまらないけど 各論へのイントロになってる課題は面白いと思う
391 :
デフォルトの名無しさん :2010/11/25(木) 11:59:14
[1] 授業単元:プログラミング実験 [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] その他の制限: よろしくお願いします。
392 :
デフォルトの名無しさん :2010/11/25(木) 12:01:44
>>391 ですが、このプログラムをもとにして作っていただけますか
#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;
}
}
}
>>391 問題読むと直角三角形が成立する辺を配列に入れた後何かするようだけど
配列に入れて表示するプログラム?
394 :
デフォルトの名無しさん :2010/11/25(木) 13:13:35
395 :
デフォルトの名無しさん :2010/11/25(木) 13:18:29
すみません
>>391 の問題文に追加です;
a <= b <= cを仮定してください。
for(a=1;a<=N;a++){ for(b=a;b<=N;b++){ for(c=b;c<=N;c++){ の時点でa <= b <= cを満たしてるはずなのに更に仮定するの?
>>391 #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;
}
[1] 授業単元:C言語 [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型に書き換えるとのこと、すいません。ここからしてあまり理解できていません。
>>399 こんなんしたらさすがに怒られるかな?
#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;
}
402 :
370 ◆1reJfOTbE. :2010/11/25(木) 16:05:56
>>385-389 課題3−1ですが、作っていただいたコードで、コマンドプロンプトで
gcc -Wall -c queue.c
とやって、queue.oが作られました。
この課題は後、
gcc -Wall -o FIR_P FIR_P.c queue.o
とやれば完了でよいのでしょうか?
そして
>>388 の中身がわかる方いませんか?
分割コンパイルというものは理解できたと思うのですが、
最初の式の説明のところからやっていることがまだ理解できていなく、
どうすればいいかわかりません。
それと関連プログラム4種類をダウンロードと書いてありますが、
Makefileに関しては講義資料22ページの説明が出てきますが、
ダウンロードができません。コピーしてテキストファイルとして
保存ということでしょうか?
Makefileは拡張子の部分消して 関連ファイルと同じところに保存して % makeかな?でまとめてコンパイルしてくれる 追加したファイルもMakefileに追加すればそれもコンパイルできる
>>402 が解らないのは
C言語
実験のデジタルフィルタ
の両方なの?
デジタルフィルタは理解できるがC言語は駄目とか?
405 :
◆L.eSCJEwZk :2010/11/25(木) 16:48:34
>>404 デジタルフィルタは、講義資料を見ていますがまだ理解できていません。
C言語はできるつもりでしたが、
>>388 の日本語で書いた部分をやろうと
思ったのですがどうすればよいかわかりませんでした。
基礎はできると思うのですが、ファイルのオープンなどでてくると
危ないです。
406 :
◆1reJfOTbE. :2010/11/25(木) 16:49:17
↑トリップ間違いました、自分で間違いないです。
1回目の課題もファイル操作でてるけど
そっちがわかったならこっちもたぶんコードわかると思うんだけど
>>388 の日本語で書いてある部分のどこがわからないのかな?
408 :
388 :2010/11/25(木) 18:09:56
>>405 変数名を直して一部加筆
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 が書いた様に、若い芽を摘み取りたくなかったので抽象的な表現を行ったのだけど伝わらないなら仕方がないだろう
[1] 授業単元: プログラミングおよび演習
[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
410 :
389 :2010/11/25(木) 19:02:18
>>410 元データを weight 分減少させる必要は無いと思うよ
413 :
◆EkRIf9bJPo :2010/11/25(木) 20:47:26
>>375 です。
期限直しました。
[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] その他の制限: なし
>>408 波形データ a[123]={〜〜〜〜〜〜〜〜〜〜〜};
波形データ b[123];
今が、1から123の間、くりかえし
{
b[今] =
a[今] ・ 係数今用 +
a[1こ過去] ・ 係数過去用1 +
a[2こ過去] ・ 係数過去用2 +
a[3こ過去] ・ 係数過去用3 +
.
.
.
今++;
}
ってやると、できあがる波形データ b が、
もんもんした音になったり、キラキラした音になったり、シャリシャリした音になったり、音質が変わっておもしろい。ってことじゃないかしら? ようするに。 はて?
すごい単純だけど、たとえば単純に
b[今] = a[今] + a[1こ過去]
ってやるだけでも、波形が、こもった感じの音に変化したりして、おもしろいですよね。ふしぎ〜♪
>>414 そう。単に過去のデータを足しこむだけで、いろんな特性を持つ回路(フィルタなど)になるのです。
z 変換またはラプラス変換でググッてくだしゃあ。
418 :
◆EkRIf9bJPo :2010/11/25(木) 21:02:30
419 :
409 :2010/11/25(木) 21:15:23
>>412 なんかしたに張り付けてあるリンクのものを再起を使用して書き直すみたいです。
もうすこしコンパクトになるとか・・・
課題2はよくわかりません。
>>416 >>417 すみません。
再起はどこでどういう風に使用したらいいのでしょう?
420 :
409 :2010/11/25(木) 21:18:32
>>409 for のところを再起にやればいいとかなんたら・・・・。
421 :
416 :2010/11/25(木) 21:36:54
>>409 自分の定義に自分と同じ構造を持つ構造は再帰的に定義できる
さっきの例なら、ある月の一日の曜日は前の月の一日の曜日で求められる
前の月の一日はそのまた前の一日の曜日で
そのまた前も・・・ってな感じでずっと続く
ある状況で特殊化すればそこで再帰は終了する
さっきのなら2000年の1月で特殊化した
422 :
416 :2010/11/25(木) 21:42:00
カレンダー(カレンダー)C言語のソースが 2ちゃんのスレに書き込まれるぅ〜♪ カレンダー(カレンダー)過ぎ行く時の中で 俺はソースを書いて彷徨うんだろう♪
424 :
409 :2010/11/25(木) 22:12:19
みなさんありがとうございます。 recurse みたいなコード?は使わないのでしょうか? あと漸か式を考えたりなど・・・ よくわからない質問をしてしまってばっかりですみません><
recurse って再び呪うのか?
426 :
370 ◆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以降はその作ったプログラムを 使って実行→聞いてみて考察〜などでできると思いますので よろしくお願いします。
427 :
デフォルトの名無しさん :2010/11/25(木) 23:14:03
>>426 FIRが遅延時間前の入力信号を加算するのに対し、IIRは遅延時間前の出力信号を加算するものの様だ
ならば、FIRの encueue() するタイミングを加算後に移動させれば IIR になるのではと思う
PとNはポジとネガの意味かな?ならばNは重み付け加算を重み付け減算にすれば良いのだろうか?
>>418 字句解析は作った人以外には理解が極めて困難、という面があります。
>>378 や
>>429 も人に理解していただくような努力を微塵もしなかったことは申し訳ない。
本当に正確なものを作るのなら(そして人に理解していただくようにするのなら)、全然別のアプローチ(たとえば状態遷移でとらえるなど)をとらなければならないことは自覚しておりましたが、手が先に動いてしまいました。
(なお、
>>429 は
>>378 よりもちょっとだけ精度がよくなっております。)
というわけで
>>418 を追いかける余裕がありません。すみません。
>>427 嫌がらせみたいに汚いコードだな、無意味な typedef とか控えろよ
問題なのは while() 内で1回pop()、3回push() を行っている事にあるんじゃないかな
必然的にスタックは2つづつ増えるから最初に確保した領域をはみ出して segmentation fault となる
そもそも push() には確保した領域をはみ出さないかのチェックが必要だが実装されていないし
何をしたいのか不明なコードだけど、毎ループで pop() されるのは head と 1 で head と 1 が3回push() される
当然、無限ループとなり segmentation fault で終わるプログラムだな
432 :
デフォルトの名無しさん :2010/11/25(木) 23:59:54
[1] 授業単元: 情報処理概論T [2] 問題文(含コード&リンク): 大、中、小の3 個のさいころを同時にふった時、出た目の和がm になるような目の出方をすべて求めるプログラムを作りなさい。 ただし、m の値はキーボードから入力するものとする。表示を工夫して見やすい出力にすること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [無期限] [5] その他の制限: if、while、for、配列、多重ループ、関数まで既習です。 よろしくお願いします!
>>432 さいころは6面でいい?
負数の扱いは?
こまけぇこたぁ〜良いんだよ、それなりのものが出来れば
>>431 適切なアドバイスどうもありがとうございます。
間違っていいたところも直せ、理解も深まりました。
ほんとうにありがとうございますm(_ _)m
>>432 #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;
}
[1] 授業単元:プログラミング演習 [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] その他の制限: なし よろしくお願いします。
>>439 hello world を回答する奴はさすがに居ないと思うし、九九の回答はこのスレか前スレに出てたよ
アセンブラコードの出力なら gcc -S hoge.c で hoge.s が出力されるはず
man gcc でコンパイルオプションを調べてみよう
>>439 #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;
}
>>439 #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;
}
443 :
◆EkRIf9bJPo :2010/11/26(金) 12:47:56
>>430 そうですか…わかりました。
すみませんが、理解はしたいので
>>429 にコメント入れて貰ってもいいですか?
444 :
デフォルトの名無しさん :2010/11/26(金) 16:13:45
宿題てつだってもらえますか。
445 :
デフォルトの名無しさん :2010/11/26(金) 16:17:16
以下は、int 型変数n(≠0 とする)の逆数を、小数第3 位を四捨五入してn=-0.??(n が正なら'-' が半角スペース、改行なし)のように画面出力する文である。@、Aには何が入るか? printf("@",A);
>>445 printf ( "%5.2f", 1.0/n ) ;
447 :
デフォルトの名無しさん :2010/11/26(金) 16:54:26
ありがとうございます。。 int 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;
>>447 @i=0;/*
A*/while(1){
Bprintf("%d\n",i++)
C5<=i
Dbreak
E-
F-
G-
試してないから間違えてるかも
450 :
デフォルトの名無しさん :2010/11/26(金) 17:30:17
無礼失礼しました。 ほんとうにありがとうございます。
この前頼んだ者です。その節はお世話になりました。 #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; }
int main(void) { 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; } このプログラムで出した出力をヒストグラムとして出したいです。 おねがいします!
>>454 ttp://codepad.org/0DCCjOkG 書いてみた、//ZZZ の行は入力の手間を省くために追加した行だから削除してくれ
codepad ではとんでもない結果が出力されているけど bcc ではもっともらしい結果が出てた
ヒストグラムを分割するためのパラメータが明記されていないので以下のルールで処理した
・分割数は HIST_NUM で定義する、これは偶数でなければならない
・分割中央 mu とし、範囲は mu +- sigma まで、但し両端にはそれ以下、それ以上も含む
最後に Random() で得た結果を元に平均と分散を計算しているが、平均はまぁまぁだけど分散が酷い
ヒストグラムを見ると最も小さい値域に集中しているのが判る
Random() ロジックには再検討が必要だと思うよ
>>457 そのソースを書いたのは俺だけど、元々ポックス・ミュラー法を使っていたんだ
しかし
>>231 のように#include <math.h>を使わずに使ってくれと頼まれたので
仕方なくその疑似的Random()を使わざるを得なくなった
ボックス・ミュラー法を使ったソースは
>>229 に上げてある
これなら分散もちゃんとした値が出るよ
>>457 あとn=1000位まで上げてみて欲しい
分散が揃って来ると思います
>>454 >>498 ごめん、siguma = sqrt( 分散 ) だね、まぁまぁの結果が出てるわ
ヒストグラムの作成領域も mu +- sig だと綺麗に出ないから mu +- sig * 2 くらいにするべきだな
あと、n が大きくなると表示できなくなるから少し修正したら再アップするわ
>>460 お願いします
それとn=1000とか10000になると生成した乱数の表示はしなくてもいいと思いますよ
画面がすごい事になりますから
>>461 ttp://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 でも好きに直してくれ
>>462 いい感じですね、どうもありがとうございます
>>462 乱数系列(x): 10
個数: 100
平均(μ): 50
分散(σ): 67
で計算したのですが、ヒストグラムは表示されます。
ですが、Real mu, Real sigma が表示されずにデバックエラーが表示されました。
無視すると最後まで表示されます。
何度もすいません。 Real mu, Real sigma の部分を削ってもエラーが出ます。
>>464 入力が可能ということは //ZZZ の行を消したと思われるな、変な行を消してないか?
とりあえず以下を試してくれ
1)
>>462 をもう一度コピペしてファイルを作る
2) 85行目の #if 0 を #if 1 に直す
3) コンパイルして実行
これでも出るなら環境差の問題なので、ちょっと対応が難しいな
その場合はエラー内容を記述してくれ
[1] 授業単元:C/C++の宿題片付けます 143代目 [2] 問題文(含コード&リンク): ニュートン法により実数の平方根を求める関数を作成せよ。(引数double, 戻り値double) [3] 環境 [3.1] OS: any [3.2] コンパイラ名とバージョン: any [3.3] 言語: C [4] 期限: なし [5] その他の制限: stdio.h以外の使用は不可
>>467 の通り実行しましたが、同じようなエラーが出ました。
Debug Error!
<プログラム名中略>
File:
Run-Time Check Failure#2-Stack around the variable 'hists'was corrupted.
(Press Retry to debug the application)
とエラーが出ました。
>467, 470 >462の8行目が怪しいねぇ、うん
>>470 findIndex()の中の
for( i = 0; i < max; i++ )
を
for( i = 0; i < max-1; i++ )
に変えると良いかも
ECC 6.3.1でCodeGuardを掛けたら一杯エラーが出た 似たようなエラーなのでそのうちの一つは 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] ); | }
あっちを潰せばこっちでエラーが出る・・・ 根本的に書き直した方がいいと思われ
>>470 乱数系列(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の要素数を越えてアクセスしてる。
>>464 ですが、
>>472 に変更したらところエラーがでなくなりました。
ありがとうございました。
今後の参考にしたいので、
>>472 に変更したら良いと思ったのか理由を教えてもらえてほしいです。
478 :
476 :2010/11/27(土) 19:58:37
もっと全体にまんべんなく*を出すには、どういう数字を入力すればいいのでしょうか?
[1] 授業単元:画像処理 [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つの構造体とする。 ・戻り値は構造体とする。
>>478 どんな数を入れてもこのプログラムは一定の分散幅しか表示しないから
プログラムそのものを変更しないとだめだろう
>>479 問題文の文章が読み取れないんだけど
複素数の四則演算を関数として定義、実装しろってこと?
それともX^3=1の解を数値計算しろってこと?
>>481 X^3=1の解すべてのパターン(組み合わせ)を四則演算して結果を表示するプログラムです。
1^3=1だから1。
あと
虚数軸と実数軸でつくった平面上につくった、半径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 わかんないけど、たぶんどっちもかも?
>>483 それをプログラムで出力できればいいのです。
>>470 ゴメン、
>>472 の指摘通り、配列のオーバーランだ
line61 の
r = findIndex( HIST_NUM, border, arr[i] ); を
r = findIndex( HIST_NUM - 1, border, arr[i] );
にしてくれ、意味的にはこっちの方が妥当だ
同じ現象が生じるか確認したいんだけど、誰か bcc のデバッグオプション知らない?
>>485 bccのバージョンいくつだ?C++Builderに付属している物なら -vG で
CodeGuardが動く
>>473 その理由は判らんな、そも ecc って何?
dispOneHist( border + i - 1, border + i, hists[i] );
を
dispOneHist( ( border + i - 1), ( border + i ), hists[i] );
に直しても同じかな?
>>485 cpad に付属してた bcc で 5.5.1 だよ(大昔にダウンロードして便利だから使ってるんで相当古いと思う)
-vG だと link で CG32.lib が無いとか言われるなぁ
>>484 よく分からんが
#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;
}
でいいのか?
調べてみたら記憶違いだった。↓が正しい模様。 - 0.5+0.5i*sqrt(3) - 0.5-0.5i*sqrt(3);
>>488 ああそれだとだめですね
C++Builderを買った人ならcg32.libも持ってますからCodeGuardが掛けられます
これは不正なポインタの使用の検出・アクセスオーバーランなど見つけにくいバグや
たまたま動いている潜在的なバグを洗いざらい検出してくれます
これだけのためにC++Builderを買っていると言っても過言ではないかも・・・
>>487 ECCとはEmbarcadero C++ Compilerの略です
もはやBorlandの製品ではないのでECCとしたわけです
6.3.1は最新バージョンです
>>492 #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;
}
>>478 ttp://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;
とするのが正しい
言い訳になるけどこの部分の実装は俺では無いので見落としていた
>>495 return rand() / (RAND_MAX + 1.0);
でいいと思います。この値が 1 になる可能性はつぶしておいたほうがいいのでは?
497 :
478 :2010/11/27(土) 23:16:35
>>491 だよなぁ、そんな便利なもんが無償なはずは無いよなぁ...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] );
>>498 その修正を行ったら劇的にエラーが減りました
要は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)
のみです
>>496 でも gcc で動かないのはマズイでしょ
もし1になる可能性を潰したいのであれば
double Rand(void)
{
int i = RAND_MAX;
while( i == RAND_MAX )
i = rand();
return (double)i / RAND_MAX;
}
なんてのはどうかな?
>>501 RAND_MAX + 1.0 とすることでここがdoubleになってしまうのでrand()もdoubleに
格上げされるので問題ないと思いますよ
>>473 の出力はどうもCodeGuardのバグっぽいですね
VC10だと何の問題もなく実行出来ました
バグを取るためのツールがバグってるってのはシャレにならないので
QC(SP2の修正候補)に出しておきます
>>501 RAND_MAX + 1.0
とした段階で、この結果は double になります(し、double は普通仮数部が 52 ビットあります)から、
>>496 は、gcc でも問題なく動きます。
cf. ISO/IEC 9899:1999 6.3.1.8-1
うぜー
>>504 あぁ 1.0 だったのね
又、暗黙のキャストか、嫌いなんだよなぁ今みたいな誤解が生じるから
最初から
(double)rand() / ( (double)RAND_MAX + 1.0 );
って書いてくれれば誤解しないのに
ところで1.0を返す可能性を潰す必要が有るのか?0<=x<=1 で良いんとちゃう?
自分よりレベルの低い全角スペースのバカ相手におおはしゃぎだなw
[1] 授業単元:画像処理 [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つの構造体 ・戻り値は構造体
>>503 バグっていうほどではないけど、埋め込みコードの生成にクセが有るんだろうね
マニュアルに注意点とか書いてるんじゃないかな、こんなコードの書き方は駄目ですみたいなw
>>508 たとえば、xy平面上で、
A(0, 0), B(1, 0), C(0, 2)
があったとして、結ばれるのは
AB
のみですか?それとも
AB, AC
になりますか?
>>506 すみません。この場合は全部にキャストしたほうがよかったですね。
[1] 授業単元:画像処理 [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
作れ。とか偉そうに
出題者がここにあげてるアホに言ってるんだから偉そうでも問題ないだろw
おい◆QZaw55cn4c作ったれや
>>514 後半が
>>508 と同じでやはり2つの問題に見える
後半に限って言うと加減乗算は簡単だけど除算ってどうするのか数学的に教えてくれ
追記です。 距離の和がnになることを、さまざまなnについて計算・確認せよ。
>>514 x∈Cで x^n = 1 を満たす x は複素平面上では原点を中心とする半径1の円に内接する正多角形(頂点のひとつは 1) になります。
この事実を計算で出さないといけないのですか?それともこの事実を使ってもいいですか?
半径 1 の n 個の根がありますから、各々の根と原点との総和は n になるのは自明ですけれども、どこまでプログラムで作ればいいものか迷います。
あと
>>2 をよろしく。
>>514 13個の点じゃなくて、n個の点だよな?
x^n=1の解をn個全て求める n個の複素平面上の点について原点からの距離を全て求める 合計がnとなることを示す
>>514 よく分かりません
#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;
}
525 :
デフォルトの名無しさん :2010/11/28(日) 05:12:28
[1] 授業単元:情報検索処理 [2] 問題文(含コード&リンク):以下の仕様を満たすプログラムを作成してください。 ・文章の書かれたテキストファイルを読み込み、文字列を入力して検索する。 ・検索した文字列がある箇所全てに対して、その文字列と前後10文字を、検索結果として別のテキストファイルに書き込む。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年11月29日16:00 [5] その他の制限:なし
>>526 行頭にパターンが出現したらどうなるんだろう?
そんなに簡単じゃないと思うよ
>>526 まずいです。
fprintf(ofp, "%s", strncpy(tmp, p - 10, 10));
は、strstr の返り値によっては p - 10 が tmp よりも小さくなってしまい p - 10 は line[] の外になる可能性があります。
また strncpy(s1, s2, 10) として s2 が 10 文字以上あった場合には、末尾に \0 は自動的にはつけません。(正直いってstrncpy() は使いにくい。)
529 :
409 :2010/11/28(日) 09:11:03
>>409 をもう一度お願いしたいです。
for を変えたり、漸か式を考えたりするみたいです。
recurseがなんたら。。。
あと2 もわからないのでよろしくお願いしたいです><
頭おかしいのか? if (expr) A; else return; だったら、 if (!expr) return; A; にしろよ
日本語でおk
>>514 #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;
}
>>525 ABCDEFG0123456789\n
HIJKLMN0123456789\n
みたいなファイルが与えられてパターン文字列がHIJの場合、どのような出力になるの?
1)\n を無視して
0123456789HIJKLMN012345 なのか?
2)それとも \n も一文字と考えて
123456789\n
HIJKLMN012345 なのか?
3)もしくは、行内だけを考慮して前後が10文字に満たない場合は有るだけ表示するって考えで
HIJKLMN012345 なのか?
この手の問題は常に改行コードの扱いを明確にすべきなんだけど、あまり良い講師に恵まれていないようだね
>534 パターンに9Hが与えられたときやASCII以外のファイルの場合の処理が気になってしかたないのは僕だけではないはず
536 :
デフォルトの名無しさん :2010/11/28(日) 11:37:30
単元名が「情報検索処理」ってのが気になる。入力を正規表現と思ってDFAを作れとか、suffix arrayを使えとか、そういう指示は無かったか?
要はgrepでしょ? 行数を表示して前の行を考えないで行単位で処理すればいいんじゃないの?
>>514 です。
問題文(含コード&リンク):X^n=1はn個の複素数の解を持つ。 複素平面上にこのn個の解をおくとき、
原点と各点(例えば、13角形なら各13個の点との距離)との距離の和はnになる。このプログラムを作れ。
でした。問題文を書き間違えていました。すいませんm(==)m
>>508 は、構造体を使って計算する問題です。
多角形の周囲長を求めることになりますの、複素数を使って求める。
nが無限大になったときには、円の周囲長になるはずです.
距離は実数で、複素数はベクトルのように使います.
複素数 w = a + bi と原点との距離dは、d ^ 2 = a^2 + b^2
解の求め方に指定はないの?
問題文には「文章の書かれたテキストファイル」としか書いてないのだから、 最悪改行1個っていうケースもあるだろう。 「その文字列と前後10文字」を書き出せば良いと思う。
検索する文字より前に10文字無い場合の対策もした クソースコードを書いたでおじゃるが、晒すのは止めたでおじゃる。 ちみたちで解決してたもう。
>>539 の2行目に脱字がありました。
多角形の周囲長を求めることになりますの「で」、複素数を使って求める。
でした。 m(_ _)m
>>543 誤字・脱字は目をつむるけど、もっと正確に問題書けよ。
正多角形とかじゃなかったか?
>>545 以後気をつけます。
正多角形とは書いてありませんでした。
多角形とだけ書いてあります。
>>544 acos(0); でエラーが発生します。
◆QZaw55cn4cウザイな
x^n=1の解が、複素平面上で半径1の円周に内接する正n角形になることを 計算から示すための問題じゃないの? 最初っからそれを利用してたら問題にならないと思うけど
>>550 「x^n=1の解はnこの複素数の解を持ち、複素数平面上にこのn個の解をおくとき、
原点と各点との距離の和がnになることをプログラムで確認しなさい。」という問題です。
>>549 で実行したところ、
error C2668: 'acos' : オーバーロード関数の呼び出しを解決することができません。
とエラーが発生しました。
>>553 何でだろ? 取りあえず
double PI = 2*acos(0.0);
でもだめなら諦めて
double PI = 3.1415926535897931;
>>553 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)' を一致させようとしているとき
>>554-555 直したところ出力されました。
ところで、この値を変えるにはどうすればいいのでしょうか?
こりゃ、教えるほうも大変だよな。 出来ないではなく、考えようともしないんだから。
お前は自分が言いたいことだけ話すだけで他人に教える気なんて0じゃんw
汚ねぇソースだな 読む人間のことを何も考えてない
>>564 >>357 の問題で12時間でつくるとなれば、「赤あげて、白さげて」方式も止むを得なかったんですよ。
最終回答が
>>451 でOKだったとして、これをオートマトンで書くと、フラグの数が
>>451 では 8 個だから、状態数は 2^8 = 256 で、ちょっとしたお仕事になります。
>>357 の問題が出た段階で必要なフラグの数もいわんや状態数も見積もれない段階で、期限12時間というのに、オートマトンは書きにくいでしょう。
方法じゃなくてもっと根本的な所だと思うぞ? どこが汚いって言われてるのか理解できないってことは 君って多人数プロジェクトに参加したことないでしょ
宿題スレでは動きさえすれば、あとはどうでもいいだろ 変なこだわり持ってるやつは自分でやればいい
>>566 ええ、実務経験はありませんから。
よろしければ問題点を教えてください。
570 :
デフォルトの名無しさん :2010/11/28(日) 18:29:01
[1] 授業単元:C言語
[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] その他の制限:なし
宜しく御願いします。
>>570 更新とは、ただ行を置換するだけですか?
573 :
デフォルトの名無しさん :2010/11/28(日) 18:54:48
574 :
525 :2010/11/28(日) 19:14:11
>>526-528 ,534-537
どうもありがとうございます。
あまり課題について詳細な説明はうけていないので、曖昧な点が多くて申し訳ないです。
>>534 3)の形式で表示だと思います。
その場合、「 p - 10 が tmp よりも小さくなってしまい p - 10 は line[] の外になる
可能性がある」との指摘がありましたが、どのように対処したら良いでしょうか?
577 :
デフォルトの名無しさん :2010/11/28(日) 20:25:47
578 :
デフォルトの名無しさん :2010/11/28(日) 20:38:18
>他人のプログラムを参考にした場合は,出典(名前やURL,資料名)をプ >ログラムの後にコメントで明記すること.また,自分なりに変更して使うこ >と.理解せずに丸写しは厳禁. 参考元に2chって書くのかw
>>580 失礼。手元の環境では解析解(-1±sqrt(7))/4 と一致しました。
codepad の問題と思われます。
>>581 これなんでかね。
for ( ; 1e-16<a && a<1e16 ; a/=2) {
とかしてもダメみたいだし。
>>578 ニュートン法の時の関数の微分は手で計算していい?
その方が数値計算で出すより早くて精度出ると思うけど
587 :
デフォルトの名無しさん :2010/11/28(日) 21:44:52
589 :
デフォルトの名無しさん :2010/11/28(日) 22:08:31
[1] 授業単元: 配列
[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 実行すると、最大の数字が入力してもない数字が最大項として現れます。なぜでしょうか?ご教授お願いします。
>>589 普通に動くよ
入力回数を5に制限していないから6個以上入力すると落ちるけど、記述のような現象は起きないな
594 :
525 :2010/11/28(日) 22:43:22
596 :
デフォルトの名無しさん :2010/11/28(日) 22:49:40
>>591 ありがとうございます。
考えたのですが、配列の初期化を行っていないので入力していない配列に
ランダムの数字が入ってそれが最大の値として入ったりしてたのだと考えました。
配列の初期化を行うことによって、解決しました。
>>596 ああそうか、入力回数が5回に満たない場合はテストしなかったわ
入力終了判定を ctlZ の入力ではなく i < 5 にすれば変な現象は起きないんだけどな
599 :
デフォルトの名無しさん :2010/11/28(日) 23:12:58
578です。ありがとうございます。しかし資料に一つの関数は収束しないと書かれているのですがそこはどうしたらよいのでしょうか??
これでもtimeoutするなあ
http://codepad.org/SrdfSDs8 codepadはループが確実に終焉する保障の無い記述は強制的にtimeoutさせるのかな
>>599 pdf消えちゃってるから解んないけど
たぶん鞍点か何かにトラップされるじゃない?
その辺はレポート書くあなた自身が考察するべきだと思うけど
>>600 >static const int EPS = 10e-16;
これが原因でわ?
>>601 orz
完全に盲目になってた
サーセン
void main() 爆笑
608 :
デフォルトの名無しさん :2010/11/29(月) 12:54:47
[1] 授業単元:C言語 [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日
なんで中味の同じ構造体を3つも宣言してんだよ
1.出力で3人の国語の平均点と3人の算数の平均点を出す
やーよ
printf("国語の平均点:%f\n", (student1.kokugo + student2.kokugo + student3.kokugo)/ 3); printf("算数の平均点:%f\n", (student1.sansu + student2.sansu + student3.sansu) / 3); を最後に追加するだけでいいだろ 無駄なポインタ配列とかいらない
無駄に邪悪なキャストもアレだ
>>608 構造体の使い方にきちんと物申したら加点されるかもよw
◆QZaw55cn4cだな
!◆QZaw55cn4cだな さて、誰かな
620 :
デフォルトの名無しさん :2010/11/29(月) 19:06:07
[1] 授業単元:プログラミング及び演習
[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] その他の制限:特になし
621 :
デフォルトの名無しさん :2010/11/29(月) 19:11:34
>>620 について、すみません。。
書き忘れました。
スイッチ「-h」が入力された場合は水平方向に文字列を表示します。
例)$./vhswitch -s "abcdef" -h -n 3 <Enter>
の部分の出力イメージを書き忘れました。
例)$./vhswitch -s "abcdef" -h -n 3 <Enter>
abcdef abcdef abcdef
と出力されるようにお願い致します。
622 :
デフォルトの名無しさん :2010/11/29(月) 19:29:30
[1] 授業単元:情報 [2] 移動平均 ファイルにある数字のデータを読み込んで配列の移動平均を求めるプログラム。 ファイル名は適当で。平均値を関数で求めて、その関数を使い、移動平均を求める関数を 作る。 [3] 環境 [3.1] OS:Windows [3.2] 言語: C [4] 期限:できるだけすぐ [5] その他の制限:
[1] 授業単元:C言語
[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日
>>624 >>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);
とすればいいのですが。
627 :
デフォルトの名無しさん :2010/11/29(月) 21:26:52
[1] 授業単元: 情報 [2] 問題文(含コード&リンク): 以下の2分木を遺伝的アルゴリズムを用いて解きたいのですがどうすればいいですか? まずはこの2分木の説明から。 「+」とあるところは下の2つの数字を足す。 「×」とあるところは下の2つの数字を掛ける。 なのでこのグラフの解は1340となります。 「この1から10までの数字を入れ替えて解が最小となるときを求めよ。」 という問題です。 これを遺伝的アルゴリズムを用いて解きたいのですかどのようなプログラムになりますか? [3] 環境 [3.1] OS:Windows [3.2] 言語:C [4] 期限: 12月5日
>>628 enum { false, true }
と特定の値に結びつけずに定義している状態で、
if (gHori)
としてOKでしょうか?手元の環境では問題なく false = 0 となっているようでしたが、念のために規格を調べてみたもののよくわからなくて。
>>620 骨子に加筆だとこんな感じかな
ttp://codepad.org/rzm6fznw ・ -n -s -v|h は複数回与えても良いが最後に指定されたモノが有効
・ -n -s はそれぞれ最低一回は指定されなければ駄目
・ -n -s の後に repeat や message が続かない場合はエラーになったりならなかったりする、厳密にチェックした方が良いのかな?
変な引数を与えて色々試して欲しい
>>627 「遺伝的アルゴリズム」がさすのはかなり大雑把な意味になるので
多分お前のやってる授業とは食い違う答えしかでてこないがいいか?
あとどの2分木だよww用意された2分木の数字だけ入れ替える問題だよな?
632 :
628 :2010/11/29(月) 22:11:01
>>629 まず俺はあまり規格とか詳しくない。
昔よく見た、bool 関係の宣言をあまり考えず使ってる。
C言語 enum で検索すると、
数字省略時は0から順に振られるとあちこちにあるので、
大丈夫だとは思うけど、
enum { false=0, true }
にでもしとくかなぁ。
なんにしてもソースの変な部分を指摘して貰うのは助かるよ。
俺の場合そのために宿題スレの宿題やってるようなもんだ。
633 :
デフォルトの名無しさん :2010/11/29(月) 22:13:24
それは全然大丈夫です! 画像の2分木でお願いしますw
どの画像だよw
>>627 要するに虫食い状態の逆ポーランド記法をGAで求めるということなのか?
で、その2分木はどの画像なんだ?
[1] プログラミングC [2] 5000以下の素数を1行に10個ずつ、画面に出力するC言語のプログラムを作成しなさい。 [3] 環境 [3.1] OS:Windows7 [3.2] C言語 [4] 期限: 2010/11/30 [5] 配列などは習っていない。1行に10個ずつ表示する方法がわからない。
そもそもGAを適用するような問題じゃないな ブルートフォースの方が計算量が少なくなりそうだw
638 :
デフォルトの名無しさん :2010/11/29(月) 22:26:49
遺伝的アルゴリズムについて根本的に間違えている気がする
>627 これはGAではなくてGPを適用すべき問題
>>640 ,641
ではとりあえずこの画像の時の解を
出すプログラムを教えてもらってもいいですか?
>>643 40~41行目。
st_b->prev = st_a;
st_c->prev = st_b;
>642 交叉したときに致死遺伝子がなぁとか思ってGPにしろとか言ったけど 良く見ると巡回セールスマンと同様の遺伝子コードにすればGAで解けるわ まぁ、12/5までにはできると思う
647 :
デフォルトの名無しさん :2010/11/29(月) 23:43:38
650 :
デフォルトの名無しさん :2010/11/30(火) 02:12:28
>>648 ありがとうございます!
調子に乗ってもう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
651 :
650 :2010/11/30(火) 02:14:31
そういう問題なのか
じゃあ、
>>648 は見当違いだから忘れてくれ
653 :
デフォルトの名無しさん :2010/11/30(火) 02:26:31
>>652 すいません・・・
よろしくお願いします!
654 :
デフォルトの名無しさん :2010/11/30(火) 05:57:02
内容: 1] 授業単元:cプログラミング [2] クイズゲームを作成する。 ファイル入出力についてどれだけ理解しているかを確かめる。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:VC9.0?(Visual Studio2008) [3.3] 言語: C [4] 期限: 今日午前11時まで [5] その他の制限: 画面上に問題を一文ずつ表示し、番号を入力させ答えさせる。 結果をtxtファイルで出力する。 なお、問題文はtxtファイルを作成しそれを読み込んで表示させる。 よろしくお願いします
>>654 結果とは入力された番号の事だろうか?
それとも問題のファイルが
2chは下らない 1)はい 2)いいえ 3)どうでも良い,3
みたいな形式になっていて 3 が入力された時に[正解]、それ以外の時に[不正解]とか出力するんだろうか?
クイズとアンケート(調査)結果は違うだろw
「文」をどう把握するかが問題だな。
>ファイル入出力についてどれだけ理解しているかを確かめる。 だから、そこさえ押さえとけば細かい仕様はどうでもいいんじゃね?
>>659 問題ごとにファイル一個か。ファイル名の管理が必要だね。
1代目が立ったのはいつの事でしたか?
>>1 のwikiの素数のところの
int 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がはじかれちゃうんじゃ?
配列データ tmp[ 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 ファイルポインタの使い方が分かりません どなたかお願いします
>>662 うむ。誰が採用したか知らんが・・・実行してみれば気づいただろうに。
多分あいつだな、トーマス。
>>662 その記述直されるときには、テンプレも
>>3 の提案を反映してくれるといいなあ
そもそも、使用する際に引数が n<2 である場合が稀だろうし 負数を考えないにしても、まずn>=2かそうでないかで分ければ良いかと。
#include <stdio.h>
>>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;
}
669 :
デフォルトの名無しさん :2010/11/30(火) 10:44:57
[1] 授業単元:プログラミング [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まで
>>669 #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;
}
emacsってテキストエディタでしょ。それで編集したソースをコンパイルするコンパイラは別。
>>671 最初からマクロ設定済みだったのかもしれん
>>669 は文字列の比較、結合も配列あるいはポインタなどを使用して
標準ライブラリを使わず、それらの機能を持つ関数を自分で作成しろと?
>>669 #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;
}
>>677 while( *s1 ) { s1++; s2++; if(*s1!=*s2) break; }
↓
while( *s1 ) { if(*s1!=*s2) break; s1++; s2++; }
最初の1文字が比較されてないし orz
679 :
525 :2010/11/30(火) 12:58:38
再びすみません
>>525 です。
>>575 を実行したところ、一部文字化けしてしまいました。
特に日本語が全く表示されなかったのですが、プログラムの問題ではないでしょうか?
どのようにプログラムを書き換えれば文字化けしないようになりますか?
ちなみに日本語以外でも文字化けします。
半角で10文字なら、2バイトの全角文字の1バイト分では正常に表示されない。 そこは仕様ってことで。
*tmpは未定義だろうけどsizeof(*tmp)は問題ないというわけか
[]がシンタックスシュガーでしかないことを知らないなんて
>>687 何を言ってるんだ?
じゃあ試しにprintf("%d\n", *tmp); ってやってみろよ
何が表示されるかわからないんだぞ
というより何が起きるか分からないと言った方がいいな
ヒント:sizeofは演算子
int tmp[][5] == int (*tmp)[5] *tmp == int [5] **tmp == int
>>688 printf("%08x %08x\n", *tmp, tmp[0]);
同じ値が表示されるだけだが
そりゃな
◆QZaw55cn4c wwwwwwwwww
%dにしちゃだめだよなw
>>688 printf("%d\n", *tmp);
が表示されないって、そら
*tmpはポインタなのに%dで表示できるわけないだろ
こうすれば理解できるか?
printf ( "%d\n", (*(tmp+1))-*tmp ) ;
[1] 授業単元:コンピュータ基礎 [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] その他の制限: なし
#include <stdio.h> #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; }
[1] 授業単元: [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]構造体を使用して作成すること よろしくお願いします。
[1] 授業単元:プログラミング演習 [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
#include <stdio.h> int 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; }
>>702 でもC++の範疇に入ってるだろ
それとも◆QZaw55cn4cの馬鹿はstd::coutとかを使わないと不満なのか?(笑
[1] 授業単元:Cプログラミング [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] その他の制限: 特になし。 結構こまってます。お願いします。
宿題スレの言語:C++はほぼCと同義だと何度言えば
宿題の解答としては良くないが、C++としてはなんの問題もないな
iostream.h とか書いてた時代の人?
◆QZaw55cn4cは叩かれすぎて荒らしになっちゃった可哀想な人なんだよ ◆QZaw55cn4cが叩かれたのはこんな程度のミスじゃすまないものが原因だったのになw
>>707 へえーC++のプログラムにstdio.hって使ったらだめなんだ〜
初めて聞いた
それともcstdioを使えって?
◆QZaw55cn4cはC++の知識がほとんどない事がはっきりしました
>>712 いや俺は◆QZaw55cn4cは元々荒らしだと思うけどね
自己評価が不当に高い癖に能力がそれに見合ってないもん
叩かれて当然
>>709 >>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> と書いて問題ないのはコンパイラ依存のはず。
トリつける前とか、頭の悪さは今とかわらないけど、今ほど攻撃的でもなかったよ
>>715 質問者の環境であるVCだと.cppとして問題なくコンパイルできる
皆さんありがとうございます! なんか私の宿題で荒れてしまって申し訳ないです…
>>719 荒らすつもりはありませんでしたが、些細な問題を攻撃的に書いてしまいました。こちらこそ、ごめんなさい。
◆QZaw55cn4cは口で謝っても反省はしないからなー 何度も要らん事言い出して波風を立てる
>>717 >>718 バーカ
それを必ず使う必要はないんだよ
std名前空間に包まれるだけの話
お前恥ずかしいからもうC++の話すんな
×
>>717 ○
>>715 規格を持ち出すなら、「必ずC++はそれを使わなければならない」という時に出せ
使っても使わなくてもいい時に出すとか頭が悪すぎる
流れ変えがてら先生方お願いします [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] その他の制限:無し
>>#inclue <stdio.h> と書いて問題ないのはコンパイラ依存のはず。 へーえその文が規格書のどこに書いてあるんですかあ?出してみて下さいよ〜?
727 :
デフォルトの名無しさん :2010/11/30(火) 20:41:07
>>630 ありがとうございます。
厳密なチェックは、あったほうがうれしいです。
失礼ですが、プログラムを全体的に説明して頂いてもいいですか?
>>702 >>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>
と、規格の中ではっきりと「提供されている」と明言されていました。
>>728 ほんとに失礼だと思うなら、半年ROMれ
基礎からやり直せ
>>733 2は素数だよね。戻り値1で何がおかしい?
>>734 2/2の余りがいくつになるか計算してみるんだ
736 :
731 :2010/11/30(火) 22:49:52
すまん、よくある問題にコピペするときにチェックしてなかった 家に帰ったら修正するよ。いや誰か暇な人修正してくれよ Cの宿題の方でコメントアウトされてる古いヤツは平気なんだけどな なんで書き換えられたんだろう
ソースも読めないバカと、レスもまともに読めないバカ どっちもたいして変わりはしないよw
740 :
デフォルトの名無しさん :2010/11/30(火) 23:11:25
743 :
デフォルトの名無しさん :2010/12/01(水) 01:01:28
>>727 厳密なチェックを付けようとして気が付いたんだけど
vhswitch -n 5 -s "ABCD" とした時、argv[4] には ABCD が格納される
すなわち、引数を " で括った場合、" は削除されてしまうようだ
これでは文字列であるかのチェックはできないから厳密なチェックはできない
>>630 では " で括られた場合、それを外す処理を書いたけど無駄だったので削除した
追加したチェックは以下
・ -n の後のパラメータに 0 〜 9 以外が出現した場合はエラー
・ -s の後のパラメータ先頭が - だった場合はエラー(これは不要かも知れない)
プログラムに大量のコメントを付加したの説明に代えさせて欲しい
なお、4カラムタブで揃えたつもりなのでエディターの設定を調整する事
ttp://codepad.org/r7lXeer8
744 :
725 :2010/12/01(水) 06:47:07
[1] 授業単元:C言語 [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] 難しいのはだめです
>>713 のような稚拙な揚げ足取りって恥ずかしいよな。ここの連中は知能が低い。
まっ、相手がレベルが低いからレベルの低い自分でも通用すると自覚しているんだろうけど。
◆QZaw55cn4c本人乙
C++と指定してあるのに、使用するヘッダやライブラリがC言語のみで C++コンパイラでもC言語のコードがコンパイルされるからという屁理屈は 小学生レベルの屁理屈。恥ずかしいからレスするなよ、C++も使えない奴を馬鹿にしておきながら C言語がまともに使えないバカ造。
752 :
デフォルトの名無しさん :2010/12/01(水) 11:22:46
残念、本人じゃねーし。お前らがそのコテハンを叩く理由は分かるが 叩いている理由があまりにも稚拙。頭おかしいんじゃねーの? 引きこもりニート?このスレが自分のテリトリー?寂しい人生送ってんなぁ。
>>752 >ここの連中は知能が低い。
お前って粘着だな
C++の標準ライブラリなどを見てこい。printf、scanffがあるなら その項目を提示しろ、C++しか使えない池沼共。お前らがC言語を語る方が厚かましいわ。
>>754 C++はCの上位互換として開発された
C99などの新しい機能を除いて
C標準ライブラリがC++でも提供されることは規格で保証されている
ここ、宿題スレですが?言語の仕様に関しては別のスレでやれよ、日本語が通じない池沼共。
>>754 こんな低脳な煽りは見たのは初めてだ
C++が使えるという事は当然Cも使えるという事が全く分かってないのが丸わかり
◆QZaw55cn4cに間違いない
>>754 ばーか。
>>728 > scanff
非ASCII文字は識別子に使えないから、これは無いけどな。w
宿題に答える気がないなら失せろ、池沼
>>754 ばーか
> 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
scanffか、初めて聞く関数名だな scanfなら分かるんだけどw
そういや、現行標準CであるC89の機能を説明するのに、筋違いのC99の 規格票を引っ張り出して顔を真っ赤にしているアホもいたな
#include <stdio.h> 以下Cの標準ライブラリのみでC++を記述したなんて言ったら 世界中で大笑いされますよ。
引っ込みがつかないのは分かるがいい加減消えた方がいいんじゃないか?
互換ありなんだから当たり前だろって無視されるだけ
766 :
デフォルトの名無しさん :2010/12/01(水) 12:20:55
スレタイが読めない小学生以下の池沼は早くまともに働けよw
「C/C++」の宿題を片づけます、がスレタイなんだけどな
Cしか使えない馬鹿はそろそろ引っ込めよw
>>763 出題意図がC++を指定してあっても実際上Cなんだから仕方がない
何回iostreamやalgorithmを使わないでくれとお願いされたか分からねーや
> #include <stdio.h> 以下Cの標準ライブラリのみ この表現だけで世界中で大笑いだぜ。以下ってなんだよ。w
C++と書いてあるからcoutで出力したら 「すみません、printfでお願いします」と言い出す輩のなんと多いことか とくにコンパイラVSの言語:C++はとくに信用ができない C++コンパイラを使ってCの授業をしていることすら理解してない奴には ○○を使ってと特に注釈が無い限り標準Cで書いてあげるのがむしろ親切
スレタイが読めませんか?
最新は
>>747 だが、課題に答える気がないのにレスしている池沼は何者だ?
暇人は早く死ね
答えたくても「そんなのC++じゃねー」とほざくバカが粘着してるからな。 バカが死滅するまでうかつに答えられない。
773 :
デフォルトの名無しさん :2010/12/01(水) 12:48:47
無駄なレスをして、このスレに何しにきているんですか?暇人の老いぼれ爺
この流れだとsystem使ってコピーして そんなのC言語じゃねーって言われるやつが出て来るな
>>773 ageて書く奴は一人しかいないんでIDが表示されてなくても誰だか
分かっちゃいますなあw
役に立たない癖に、弱そうな相手を見つける叩く奴ってキモイよな 現実世界で自分がまともに相手にされていなから、こんな場所で 見えない敵を叩くんだぜ。2ちゃんしか人生の楽しみがない引きこもり。 いい加減、スレ違いなんで言語の仕様についてはそれ専用の別スレでやれ。 邪魔、迷惑。
>>776 じゃあ
>>747 をお前がやってお前が役立たずでない事をさっさと証明してみせろ
今すぐに1分以内に答えろ
自分がスレ違いな言動をしていると自覚があるなら失せろ、引きこもりニートの屑 無納税者か?社会のお荷物。早く死ねよ。
自分でスレ違いの話題で荒らしておいて 形勢不利と見るやスレ違いだから止めろって言ってるのか?w
>>779 どうやらそうみたいだな
>>778 クズはお前だろ
無納税者はお前だろ
社会のお荷物はお前だろ
>>776 現実社会で相手にされなくて、逃げ込んだ先の場末のスレでも叩かれて、
スレ違いの荒らし行為を続けてるんだね。かわいそう。
お前、回答能力無いバカのくせに、なんのためにこのスレに粘着してるんだ?
これが◆QZaw55cn4c脳って奴だ 皆よく見ておけよ 廃人とはこういう奴の事を言うんだ
スレに関係のないレスをしている池沼は早く死ねよ
>>777 他人に命令ってw 口先だけの屑が何言ってんの?w
お前が答えたお前が役立たずじゃないところを証明したら?
罵詈雑言だけででけぇ面している役立たず ( ´,_ゝ`)プッ
786 :
デフォルトの名無しさん :2010/12/01(水) 13:09:59
788 :
本日の池沼 :2010/12/01(水) 13:14:03
777 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/01(水) 12:52:21
>>776 じゃあ
>>747 をお前がやってお前が役立たずでない事をさっさと証明してみせろ
今すぐに1分以内に答えろ
今すぐに1分以内に答えろ
今すぐに1分以内に答えろ
今すぐに1分以内に答えろ
今すぐに1分以内に答えろ
今すぐに1分以内に答えろ
1分以内に自分が答えられない癖に、偉そうにするだけの役立たず
このスレに何しに来ているんだろうね ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ
この連投キチガイと◆QZaw55cn4cは犬猿の仲なのになw
名前が素直過ぎてフイタ
+ + + + + . / ̄\ +. ∧_∧アハハハ + ノリカエセヨー( ´∀`) (´∀` ) (つ つ (つ つ■ . + ( ヽノ ( ヽノ + し(_) し(_)
荒れてる(´・_・`)
795 :
この板で何がしたいのか分からないクソガキ :2010/12/01(水) 15:54:43
796 :
デフォルトの名無しさん :2010/12/01(水) 15:56:50
◆QZaw55cn4c が名無しで自分に対抗していると勘違いしている池沼が このスレで宿題に答えもせず、C++が使えないことを罵倒しているが 自分こそがC/C++について碌に理解していないことを知られて顔が真っ赤w
>>795 ファビョっってプログラム板を荒らし始めましたよこの◆QZaw55cn4cの馬鹿は
宿題に答える気がないならレスするなよ、池沼。 お前が俺を◆QZaw55cn4cと勘違いしているんだろうけど別人。 お前らの争いが邪魔なんだよ!死ねよクソガキ
と、顔を真っ赤にした馬鹿がファビョっております
宿題に答える気がないならレスするなよ、知能は小学生未満のガキ
この連投キチガイは◆QZaw55cn4cが荒らしになった原因の一つでもある
◆QZaw55cn4c に粘着しているこの池沼って1日中このスレに貼り付いてんの? 引きこもりニート確定じゃんwwwwwww きもっ。仕事がないんでちゅか?
と、引き籠もりニートが自己紹介をしております
+ + + アハハハ+ + ∧_∧ .+ / ̄\ .+ ( ´∀`) (´∀` )ノリカエセヨー ■⊂、 ⊂) ⊂、 ⊂) + ヽ 人 ヽ 人 (_)J (_)J
荒れてますなぁ
807 :
デフォルトの名無しさん :2010/12/01(水) 17:43:36
スレタイが読めない文盲の低学歴が一匹いるな。C++が使えることが 自分が生きる上で他人に誇れることらしいw
日本語でおk
688 名前: デフォルトの名無しさん [sage] 投稿日: 2010/11/30(火) 13:53:04
>>687 何を言ってるんだ?
じゃあ試しにprintf("%d\n", *tmp); ってやってみろよ
何が表示されるかわからないんだぞ
というより何が起きるか分からないと言った方がいいな
いいぞ、もっとやれw
IDが無いから罵倒している方が混乱しているなw 見えない敵を叩く池沼w
+ + + + + . / ̄\ +. ∧_∧アハハハ + ノリカエセヨー( ´∀`) (´∀` ) (つ つ (つ つ■ . + ( ヽノ ( ヽノ + し(_) し(_)
俺も罵倒してねーし。意味分かったか?
自己評価が低いメンヘラはこれだから厄介だよなあ プログラム板に来て欲しくない すごく迷惑
>>819 今さっき、別の奴と罵倒し合ってたじゃねーかよwwwww
嘘つき。IDが無いからってやりたい放題やるなよ、池沼
[1] 授業単元:C演習2 [2] 問題文(含コード&リンク): double 型の実部、虚部から構成される倍精度複素数の構造体を定義し、入力した2つの 複素数の和差積商を算出するプログラムを作成しなさい [3] 環境 [3.1] OS: windows vista [3.2] コンパイラ名とバージョン: visual studio 2008 [3.3] 言語:C [4] 期限:12/3 [5] その他の制限:構造体を定義する なんか荒れてる中ですけどお願いします・・・
>>822 お前もここに書き込んでいる以上2ちゃんねらーだからキモいんだけどな
825 :
デフォルトの名無しさん :2010/12/01(水) 18:50:07
827 :
デフォルトの名無しさん :2010/12/01(水) 21:28:42
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):木構造を使ってソートを行うプログラム。
元ソースがありこれは根ノードの数値の大きさが中、左の部分木の数値の大きさが小、右の部分木の数値の大きさが大、
となるようなプログラム。いわゆる中間順。
これを改造し根が小、左が中、右が大となるようなツリーを作る問題。
ただし、左に一直線や右に一直線といった偏ったツリーはNG。
元ソース:
http://codepad.org/evknVwg3 [3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2010年12月3日
[5] その他の制限:なし
宜しく御願いします
828 :
デフォルトの名無しさん :2010/12/01(水) 21:32:48
>>823 なんか無理やり構造体でひねくれて考えてみた
例で加算減算のみ
反省はしていない
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 );
}
};
[1] 授業単元:C言語
[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] その他の制限:無し
[1]授業単元:OS [2]問題: Cygwinで解答を作成してください. 1. 引数にファイル名を指定すると, そのファイルのサイズとファイルの種類(一般ファイル,ディレクトリ,パイプ等), そして最終変更時刻を表示するコマンド(fviewという名称とする)を作成せよ. ただし,引数には,複数のファイルを指定できるようにすること. また,fstatを用いること. 実行 $ fview aaa.txt bbb.txt ccc.txt … ヒント ファイルの種類は,fstat構造体メンバのst_modeの上位4ビットで表わされる.
2. 引数に指定した複数のテキストファイルの内容を結合して, 一つのファイルにまとめるコマンド(catfilesという名称とする)を作成せよ. ただし,まとめた内容を格納するファイル名は,“concat.txt”とすること. ただし,catコマンドをsystem関数の内部で呼ぶような構成は認めない. システムコールとしては,open,close,read,writeを用いること. また,結合してまとめた結果を格納するファイルが存在しない場合には, creatシステムコールを用いて生成すること. 実行 $ catfiles aaa.txt bbb.txt ccc.txt … [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン:cygwin [3.3] 言語: C [4] 期限:2010年12月3日 よろしくお願いします!!!
>>828 問題の制約を読めないバカは引っ込んでいなさい。
>>824 反論が稚拙。言葉の使い方が問題なんだが・・・やっぱり池沼は自覚症状がないんだな。
>>832 口先だけで答えようとしない役立たずはレスしないでさっさとこの世から去れ
死ねよゴミ。生活保護だろ、お前?
835 :
デフォルトの名無しさん :2010/12/01(水) 22:43:28
>>832 構造体使う、宣言時に倍数精度になるで満たしてるぞ
まあ、さぞかし頭いい人がここにいるみたいだからもう2度と来ない
お前一人で回答がんばれ
>>835 >[3.3] 言語:C
これが目に入らないとは・・・
おかしいですね、朝からギャーギャーこのスレで見えない敵を罵倒しているだけの役立たずは まだ回答されていない課題があるのに、それには1つも手をつけない。 自分が口先だけの役立たずだって証明しているようなもんだろ。 このスレに何しに来てるの?口だけの役立たず ( ´,_ゝ`)プッ
838 :
デフォルトの名無しさん :2010/12/01(水) 22:47:40
>>829-831 に課題がありますが、誰も答えてませんね。
1日中張り付いている生活保護のC++プログラマーさんがやってやればぁ?
解けもしないのに、C++が使えることが自慢だそうですw
あれ?回答しないの?自分はC++は使えますがC言語は出来ませんってか? ( ´,_ゝ`)プッ( ´,_ゝ`)プッ( ´,_ゝ`)プッ
840 :
デフォルトの名無しさん :2010/12/02(木) 00:01:38
スレタイが読めない文盲ってこのスレに何しに来てんの? 無駄にスレが伸びて邪魔なんだけど。
842 :
デフォルトの名無しさん :2010/12/02(木) 00:44:22
未回答問題を抽出する上手い方法って何かない?
スレの荒れが納まれば再出題されるんじゃね
とりあえず
>>829-831 は面倒だから回答が出てないよ
845 :
デフォルトの名無しさん :2010/12/02(木) 07:15:27
コテハンが出ると標的にして荒らす奴は、麻呂の時にもいたが バカが2人以上居ると荒れる。一方は冷静に、反応、レスをしないこと。 煽っている池沼は確実に生活保護を受けている暇人の引きこもりニート。
誰と戦ってるの?
848 :
デフォルトの名無しさん :2010/12/02(木) 09:15:46
まず君が冷静になろうか
777 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/01(水) 12:52:21
>>776 じゃあ
>>747 をお前がやってお前が役立たずでない事をさっさと証明してみせろ
今すぐに1分以内に答えろ
自分がこのスレに回答する目的で来ている訳でもないのに
自分が標的にしている相手を勘違いして、場違いで迷惑だから
注意されているのに、言われなくてもやっている人がいるのを知らずに
自分が1分以内で回答できない癖に、他人には偉そうな態度でいる役立たず。
いるよな、自分が出来もしないのに相手にお前は出来るのか?お前も出来ないんだろ
自分と同じ低レベルだと巻き込む池沼。無能は黙ってろよ。
荒らしもウザイけど自分は正義の戦いをしてるとおもってる自治厨も同じくらいウザイ
853 :
デフォルトの名無しさん :2010/12/02(木) 09:25:33
>>852 白々しいんだよ、◆QZaw55cn4cと間違えて他人を攻撃していたバカ
ウザイから回答以外のレスはしないでね ♥
◆QZaw55cn4cを叩きたいなら◆QZaw55cn4cスレでやれ! 邪魔なんだよ、精神異常者の池沼!低学歴!暇人!
おまいらもちけつw その流れは昨日ので十分でしょw
ス・レ・タ・イが読めませんか?日本語も通じないバカはレスすんなよ
857 :
デフォルトの名無しさん :2010/12/02(木) 09:35:43
糞スレ発見
課題に答える気の無い役立たずが無駄にレスしてスレを伸ばすのは迷惑なんすけど?
他人に自分勝手に制限時間を設けて答えろって何様だよ? てめぇが答えられもしない癖に、簡単に折れる天狗の鼻を伸ばして ホルホルしてんのか、無職の基地外は?
can you recognize this thread title?
I can obey this thread title now.
言語系の宿題スレは揃ったからそろそろ別の宿題を解くスレをたてないか?
Recognize this thread subject!
荒れてますな
テスト
>>650-651 のプログラム作ってみたけど、計算量が多すぎて
1日経っても終わりそうにないし、最適化のアイデアも浮かばないので
うpするのやめた。きっとスーパーな人が作ってくれるに違いないヽ(´ー`)ノ
870 :
デフォルトの名無しさん :2010/12/02(木) 11:16:44
>>852 正義とか関係なくスレ違いのレスでスレが無駄に伸びるのがお前の望みか?
迷惑なんだよ。
873 :
デフォルトの名無しさん :2010/12/02(木) 14:32:14
うひょー!!!!! 宿題スレだぜぇ!!!!!!!
874 :
デフォルトの名無しさん :2010/12/02(木) 16:17:17
うっそぴょ〜ん!w
新しい問題カモン
問題の意味がさっぱり分からない
879 :
デフォルトの名無しさん :2010/12/02(木) 17:43:17
なぜ自分で解かないのか?なぜ自分にそんな課題が出されたのか? そこからして理解不能。
>>879 数字(1〜10)、ABの入れ替えに加え、「枝を入れ替えたり」と
問題にあるってことは、2分木の形も固定でなく
グリグリ変わっちゃうってことでおk?
モデル化としては逆ポーランド記法 数値10個とA5個B4個が混在 制約条件としてABが出現できるのは(数値の出現した数-1)個まで
一行目の >「A」:下の2つの数字の左の数字を足し、右の数字は大きい方を選択 からして分からない
884 :
デフォルトの名無しさん :2010/12/02(木) 18:13:56
>>881 2分木の形が変わるのはなんの問題もありません
>>879 AとBの数は自由(=どちらも0個以上)でいいのかな?
886 :
デフォルトの名無しさん :2010/12/02(木) 18:34:47
887 :
デフォルトの名無しさん :2010/12/02(木) 18:40:49
>>888 お前が荒らしだろ
他のスレの書きこみを引用してここに書き込む事は立派な荒らし行為だ
890 :
デフォルトの名無しさん :2010/12/02(木) 20:09:35
反応するから本人だとバレバレw
お願いですからスレ違いの書きこみはご遠慮下さい。
>>891 お前が言う事で倍増する。ちっとは頭使え。バカ。
>>887 struct 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;
}
Cで特定の決まったアドレスに数値ぶち込むにはどうしたらいいんでしょうか。 たとえばたとえば0x12345678に0xFFFFFFFF入れるとき。
unsigned int* address = (unsigned int*)0x12345678; *address = 0xFFFFFFFF;
サンクス
898 :
デフォルトの名無しさん :2010/12/02(木) 21:50:32
>>897 だからそういう貼り方はやめろっつーに
迷惑なだけだ
反応する奴も同罪。このスレの課題に答えない奴よりはマシ。
903 :
デフォルトの名無しさん :2010/12/03(金) 08:57:31
はい、また朝から池沼が課題に答えずに見えない敵を罵倒する ボケ老人のボケ防止とも言える基地外行動が発令しました。以後放置よろ。 課題に答える気がないなら無駄なレスするなよ、池沼。
お前が言うな。バカ。
905 :
デフォルトの名無しさん :2010/12/03(金) 09:24:53
ス・レ・タ・イ読めますか?発音できても意味を理解する頭はないのか。 道理で課題に答えない訳だw
お前が言うな。バカ。
コードってどういう形で答えるのがベストなの?
直接ここに貼り付け。タブは全角スペースで。
全角スペースの意味が分からないレベルの人が質問に来るのでコピペでトラブる 全角スペースは使わないほうがいいと思う
?
マなら"\t"を" "に変換するスクリプトを走らせる
そんなもの作らなくてもエディタの機能を使えば良い。置換で。
>>911 専ブラでコピペすると になって煩わしい
うはw油断してたw &#160; だった
0 1 2 3 4 5 6
こっちにかいたほうがよさげということでしつもんです〜 Delphiで TUnkoClass: class of TUnko type TGeri = class(TUnko) ・ ・ TIpponGuso = class(TUnko) ・ ・ function BuildUnko(AType:TUnkoClass):TUnko; begin Result:=AType.Create; end; こういうのがあったとして、これをC++でやるにはどうしたらいいんでしょうか。
あ、ここじゃねぇしww ごめんなさい 忘れてください。
貼り付けるのはnbspがベストだろうけど それだとローカルに落とすときにも置換が必要で面倒くさくね?
うまく行かないし、各自エディタで適当に置換すりゃええがな
回答者様がありがたいコードをお出しになっていらっしゃるわけだから質問者の置換の手間なんてのは些細なこと
emacsでCtrl+Alt+\で一発やん。
#include <stdio.h> typedef 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); }
complex MulComplex(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); } 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); }
void main(void) { 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); }
>>922-924 までは複素数の四則演算を計算す関数です。
これで合っているのか教えてください。
>>924 最後から3つ目の行の
z = MulComplex(x, y);
は
z = DivComplex(x, y);
の間違いだね
>>926 ありがとうございます。
早速修正しました。他に間違いはありませんか?
929 :
デフォルトの名無しさん :2010/12/03(金) 20:38:03
>>926 Mulはあってる。違うのは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)
となる。後は分かるよね。
931 :
930 :2010/12/03(金) 20:50:35
ごめんアンカー間違えた。一個目のアンカーは
>>928
>>830 問題自体が既出。過去の解答例で動かなかったの?
>>928 を見て直しました。
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));
これで合っていますか?
934 :
933 :2010/12/03(金) 21:15:04
>>933 z.im = (x.im*y.re - x.re*y.im) /((y.re*y.re) + (y.im*y.im));
の間違いでした。
>>830 #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;
}
sprintf(cmd, "ls -lFd %s", argv[i]); か。
>>937 fstat使うという条件らしい。
ディレクトリの場合openに失敗するんだが、どうすりゃいい?
940 :
933 :2010/12/03(金) 22:50:10
#include <stdio.h> typedef 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); }
941 :
933 :2010/12/03(金) 22:51:23
complex MulComplex(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); } 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); }
942 :
933 :2010/12/03(金) 22:53:32
void main(void) { 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つの複素数を入力し、四則演算した 全ての計算パターンを出力表示するプログラム にしてほしいです。 おねがいします。
944 :
933 :2010/12/03(金) 23:17:17
>>938 linuxやcygwinでもディレクトリの open() でエラーになるのかなぁ?
俺も書いたんだけど動作確認できないから回答しなかった
どっちみち windows で書いたらシンボリックリンクなんかも判定できないから linux 環境が無い人には回答不能だと思うけど
>>946 linux と cygwin なら大丈夫みたい。
cygwinも入れてないのか
949 :
933 :2010/12/03(金) 23:59:52
>>945 「3つの複素数全ての組み合わせ」という意味で言いました。
950 :
933 :2010/12/04(土) 00:04:54
>>945 起動したところ無事動きました。
ありがとうございました。
>>948 cygwin なんて使い道ないだろ
redhat 入ってるマシンは物置部屋に有るけど引っ張り出すの面倒くさい
仮想マシンがお手軽
システムコールでその昨日のコマンドを使えとか、ある意味バッチみたいなもんだな・・・
昨日やない、機能や orz
958 :
デフォルトの名無しさん :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] その他の制限:なし
959 :
デフォルトの名無しさん :2010/12/04(土) 15:23:48
[1] 授業単元:C言語演習 [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の中もお願いします
960 :
958 :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の中もお願いします
>>959 それに加筆しろって事かい?
それとも使われてる関数 newstack(), push(), pop(), isempty(), partition() のみを作成しろって事かい?
後者だったら無理だよ
962 :
デフォルトの名無しさん :2010/12/04(土) 19:51:34
>>197 遅くなってしまいました。すみません。
File not found.と出るんですが、何という風に本当は出るんでしょうか
963 :
959 :2010/12/04(土) 21:22:08
次スレ立てます
968 :
デフォルトの名無しさん :2010/12/05(日) 01:36:21
>>962 test.txt が無ければ file not found って出るのは当然だ
test.txt をカレントディレクトリに作成しる、フォーマットは
3
1 11 21 31
2 12 22 32
3 13 23 33
みたいな感じ
次スレで int main(void) の話題ですね。
何十回ループするんでしょうか。
俺は↓派です。
>>943 > 1.C言語でvoid main(void)は変な虫がわくので、バカよけ対策でint main(void)にしたほうが良い。
次はmalloc,freeの番かな?
>>970 このスレでその話をしろとは誰も言ってないだろ。しつけぇよ。スレタイ読め。
>>970 >バカよけ対策で
だったらお前がバカになれば?バカとかではなく標準スタイルの話。
頭悪いよ、お前。
C言語で int main() なんて記述している奴の方がバカだろw 自分が基準だと思って生きているんだろうなw 視野の狭いカッペじゃね?周りに自分以上のプログラマーがいないから 自分が言うことは全て正しい、誰も間違いだと指摘できないから 自分が全知全能だと勘違いしているんだろうね。活動範囲が狭いカッペ丸出しw
まーた始まったw
5.1.2.2.1 Program startup Previous 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.
要するに◆QZaw55cn4cが一番のトラブルメーカーだな こいつさえいなければ問題は起きない
荒れるのわかってて、大してよくもない自分のやり方に固執するからな 経験豊富で優れたコードを書くってんならまだしも、日本語すらまともに読めないときたもんだ
便乗して、質問だけど。 void 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); }
int main() も int main( void ) も学生しか書かないコード 実務で書くのは int main( int argc, char** argv ) だけ(char** envp が付くことは有るけどね) だから職業プログラマから見れば目くそ鼻くその話にしか見えない
>>981 それ bcc だと警告が出るよ、foo() にはプロトタイプ宣言が無いって
文法上OKかと聞かれればOKなんだろうけど望ましくはないね
>>982 実務だと別のエントリポイントを使うことが多くないか?
どんな仕事してるのか知らないけど
>>984 Windowsアプリだとそうだね、他にも何か有ったっけ?
ベタなクラ/サバの仕事とか解析系の仕事がメインだから別のエントリポイントって Widows しか知らない
>>985 組込とか。つかWindowsアプリは実務のうちに入らないのか?
何を持ってエントリーポイントというの? エントリーポイントってgccだとstartだよね。
未亡人
>>987 いわゆるmain関数に該当する部分の話じゃね?
WinMainとかのこと?
991 :
デフォルトの名無しさん :2010/12/06(月) 00:36:38
992 :
デフォルトの名無しさん :2010/12/06(月) 01:11:44
>>830 早稲田大学基幹理工学部情報理工学科3年
オペレーティングシステム
期限は今日までだな
>>991 動かせばわかるだろ、動かす環境無いの?
>>986 組み込みはやったこと無いから知らないな
winアプリも実務だよ、あんまり書かないから忘れてただけ
でもwinアプリを実務で書くときエントリポイントなんて気にするの?
int far pascal WinMain() なんてのは15〜20年前には書いてたけど、最近はwizard使うんじゃね?
いつの話題だよ もう終わってんだから黙れよ
>>830 ってわっせー?俺余裕で解いたし、ワッセーで卒業できんじゃね?
今さら大学で勉強する気はないが。どうせいつかは死ぬし
さっさと金を稼いだ方が楽。こうしている間にも老化して生きられる時間も刻一刻と減っているしな。
明日死ぬかもしれない人生だし。自分の頭にいくら知能を詰めても、活用しなきゃ意味ねーし。
>>982 記述するしないではなく、標準スタイルの話。お前もバカだろw
そういうのを疎かにしている奴がヘボプログラマーなの。
多分、その他も自分はそういう記述はしないからという理由で
重要な内容を有耶無耶にして、不適切なコードを記述していることにも気づかずに
とんでもないバグを作っている可能性はあるよ。
ほら、世の中に完璧なものはない。OSレベルになると完璧なものは難しいが
市販ソフトでもまだまだ不十分。ハードウェアの環境も変わるしね・・・
999 :
デフォルトの名無しさん :2010/12/06(月) 09:24:08
>>997 そういうカス使ってでもコスト下げた方が勝ち。客は品質なんてわからない。
1000 :
↑こいつ最高にアホ :2010/12/06(月) 09:29:09
クマー(AA略)
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。