[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/05 20:54 / Filesize : 366 KB / Number-of Response : 964
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 116代目



1 名前:デフォルトの名無しさん [2008/10/01(水) 07:28:51 BE:151474728-PLT(18888)]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

前スレ
C/C++の宿題を片付けます 115代目
pc11.2ch.net/test/read.cgi/tech/1217741118/

324 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 13:39:56 ]
まちがった。こうだ〜!
友愛数を小さい方から10個見つけるプログラム。

#include <stdio.h>
int main(int argc,char **argv){
int i=1,j,k,l,c=0;
while(c<=10){
for(k=0,j=1;j<=i/2;j++)
if(i%j==0)
k+=j;
for(l=0,j=1;j<=k/2;j++)
if( k % j==0 )
l+=j;
if(( i==l )&&(i<k)){
c++;
printf("(%d,%d)\n",i,k);
}
i++;
}
return 0;
}


325 名前:320 mailto:sage [2008/10/15(水) 13:44:18 ]
>>323
なるほど
forには{ }がなくてifには { }があるので2文以上入るんだろうなと思ったんだよ
/* 友愛数を10個表示するプログラム */
#include <stdio.h>
int main(int argc,char **argv){
int i=1,j,k,l,c=0;
while(c<=10){
for(k=0,j=1;j<=i/2;j++)
if(i%j==0)
k+=j;
for(l=0,j=1;j<=k/2;j++)
if( k % j==0 )
l+=j;
if(( i==l )&&(i<k)){
printf("(%d,%d)\n",i,k);
c++;
}
i++;
}
return 0;
}

326 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 14:15:14 ]
>>322
後始末無視して簡単に書いてみた
#include<windows.h>
#include<stdio.h>
HANDLE eventA,eventB;
DWORD func(HANDLE self,HANDLE other,const char*str){
    while(*str)
        WaitForSingleObject(self,INFINITE) , putchar(*str++) , SetEvent(other);
    return 0;
}
DWORD WINAPI funcA(LPVOID p){return func(eventA,eventB,"12345");}
DWORD WINAPI funcB(LPVOID p){return func(eventB,eventA,"ABCDE");}
int main(){
    eventA = CreateEvent(0,0,1,0);
    eventB = CreateEvent(0,0,0,0);
    HANDLE f[] = {CreateThread(NULL,0,funcA,0,0,0),CreateThread(NULL,0,funcB,0,0,0)};
    WaitForMultipleObjects(2,f,1,INFINITE);
    printf("\n");
}


327 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 14:23:45 ]
>>326
ホント面倒かけて申し訳ない。

なにやってるか全くわからないけどとりあえず張り付けてデバッグします
ありがとう

328 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 16:26:42 ]
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):
このアーカイブにはいってるprog.cのファイルの逆の処理をする
プログラムを作ってほしいのですが。プログラムの説明はソースの一番上にかいてあります。
www1.axfc.net/uploader/He/so/147917
パスはsageです。知りたいところがあれば聞いてください
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 10/16 の12時くらい

329 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 16:34:57 ]
/ディレクトリ以下ファイルを強制的に全部消去し、消去した
ファイルのサイズの平均を求めるプログラムの逆の動作って
どうやって定義するのでしょうか?

330 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 16:35:43 ]
できない

331 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 17:04:22 ]
>>328
ソースファイルだけあげればよかったのに。
a.outとかバックアップとかいらないしそもそもgzファイルじゃなくてtgzだろとか

332 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 17:28:25 ]
いや確認用に




333 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 17:47:08 ]
どこの馬の骨が作ったともしれないバイナリを実行するぐらいなら自分でコンパイルするだろ。
スレ的にも。

334 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 18:19:19 ]
>>332
ふてくされるなよ

335 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 19:37:00 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7788.txt

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 10/16

よろしくお願いします

336 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 20:03:36 ]
>>335
if(*(s+i)==' '){
これを!とか,とかでも通るようなor条件をバカみたいに作ればいいと思うよ。

337 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 20:09:51 ]
だよな。
そんなこともわからずにプログラムかいてるのか

338 名前:sage [2008/10/15(水) 20:35:06 ]
[1]プログラミング及び演習
[2]標準入力から読み込んで標準出力へ書き出すプログラムのいろいろ
#include <stdio.h>
#define MAX 128
int main(void)
{
char buf[MAX];
while (fgets(buf, MAX, stdin) != NULL) fputs(buf, stdout); /* function */
return 0;
}
を参考に行番号を付加するプログラムを自作してみて下さい.
例えば,こんな感じで出力されれば OK です.
1: #include <stdio.h>
2:
3: int main(void)
4: {
5: int c;
6:
7: while ((c = getchar()) != EOF) putchar(c);
8:
9: return 0;
10: }
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ:VisualStudio2005
 [3.3] 言語:
[4]期限: 10/21
[5]簡潔でも構わないので解説があると助かります
よろしくお願い致します

339 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 21:01:14 ]
>>337
自分のできる範囲でバカみたいにかいた上で、これはもうちょっと
どうにかならんのかねって疑問がわき、そこでやっとASCIIコード体系なりis系関数なりを知って
感激しつつ改善するに至るんだが、いきなり結果を得ても何も理解できないし苦痛だよね。

340 名前:デフォルトの名無しさん [2008/10/15(水) 21:02:19 ]
自分の学籍番号,氏名をキーボードから入力し,
画面に表示するプログラムを文字型配列を用いて作成せよ

341 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 21:05:33 ]
>>338
int i = 0;
while (fgets(buf, MAX, stdin) != NULL) printf("%d: %s", i++, buf);

342 名前:338 mailto:sage [2008/10/15(水) 21:30:57 ]
>>341
回答ありがとうございます。
試してみたのですが
エラー E2342 numcpy.c 6: パラメータ '__s' は signed char * 型として定義されてい
るので int は渡せない(関数 main )
と出てしまいました。
また自分の説明不足なのですが、まだ明解C言語入門編第8章という
初歩的なところまでしか学習しておらず、%sという表現が理解できません。
御手数おかけして大変申し訳ないのですが、もう少し簡単な回答を頂けないでしょうか?




343 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 21:56:16 ]
>>342
>>341じゃないけど。
numcpy.cを全部貼ってみて。

while (fgets(buf, MAX, stdin) != NULL) {fprintf(stdout, "%d: ", i++); fputs(buf, stdout);}
これなら?

8章まで進んでたらprintfぐらい出てきてそうなもんだけどな。

344 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 21:57:03 ]
>>338
#include <stdio.h>
int main(void) {
int buf,i=1;
do{ printf("%d:",i++);
while ( (buf=getchar()) != '\n' && buf!= EOF) ;
}while(buf!=EOF);
return 0; }

345 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:10:26 ]
>>344
寝てこい

346 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:12:08 ]
>>345
お前がまともなソースを書いてから意見しろよ、クズがw

347 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:14:56 ]
>>346
まともなソースかどうか知らんが回答はしてる。
直近だと>>343になってしまうけどな。

348 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:19:20 ]
>>346
あんまりカリカリすんなよw
どの宿題待ち?

349 名前:338 mailto:sage [2008/10/15(水) 22:21:56 ]
>>343 >>344
回答ありがとうございます。
#include <stdio.h>
#define MAX 128
int main(void)
{
char buf[MAX];
while (fgets(buf, MAX, stdin) != NULL) fputs(buf, stdout); /* function */
return 0;
}
と343を参考に
#include <stdio.h>
#define MAX 128
int main(void)
{
int i;
char buf[MAX];
while (fgets(buf, MAX, stdin) != NULL) {fprintf(stdout, "%d: ", i++); fputs(buf, stdout);}
return 0;
}
としてみましたが、
2147344384:
2147344385:
2147344386:
2147344387:
となってしまいました。
自分なりに考えてみたのですが、どこが間違っているのでしょうか?

350 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:22:57 ]
そんなエラー
あれが間違ってるにきまってんじゃん。
そういうエラーに遭遇したことないのか

351 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:24:06 ]
>>349
int i=0; のところを参考にし忘れてる

352 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:27:51 ]
その変数がからかどうかを確認するのは
一番最初じゃね?



353 名前:338 mailto:sage [2008/10/15(水) 22:30:45 ]
>>351
ご指摘ありがとうございます
#include <stdio.h>
#define MAX 128
int main(void)
{
int i=0;
char buf[MAX];
while (fgets(buf, MAX, stdin) != NULL) {fprintf(stdout, "%d: ", i++); fputs(buf, stdout);}
return 0;
}
0:
1:
2:
3:
4:
となりました。ただ、問題には
例えば,こんな感じで出力されれば OK です.
1: #include <stdio.h>
2:
3: int main(void)
4: {
5: int c;
6:
7: while ((c = getchar()) != EOF) putchar(c);
8:
9: return 0;
10: }
とあるのですが、これで正解ということでいいんでしょうか?
何度も質問してしまい、申し訳ありません。

354 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:33:20 ]
>>353
numcpy.exe < numcpy.c
とかコマンドプロンプトで。

1から開始したいという要望が出ると思うけどそこは自分なりに考えて。

355 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:35:55 ]
>>353 >>338
#include <stdio.h>
#include <string.h>
#define MAX 128
int main(void) {
char buf[MAX];
int i=1,ch;
FILE *tmp=tmpfile();
if(tmp==NULL) {perror(""); return 1;}
while (fgets(buf, MAX, stdin) != NULL) fwrite(buf,strlen(buf),1,tmp); /* function */
rewind(tmp);
do{
printf("%d: ",i++);
while((ch=fgetc(tmp))!='\n' && ch!=EOF) putchar(ch);
puts("");
}while( ch != EOF );
return 0; }


356 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:38:53 ]
なっ、なぬっ!?リダイレクトを使うとな?ならば先にそう言うでおじゃるよ。

357 名前:338 mailto:sage [2008/10/15(水) 22:39:21 ]
>>354
なるほど、そういうことだったんですね。

>1から開始したいという要望が出ると思うけどそこは自分なりに考えて。
はい。ここまで教えて頂けたので後は自力でなんとかしたいと思います。
色々と本当にありがとうございました。

>>355
回答ありがとうございます。
こちらも参考にさせて頂きますね。


358 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:00:56 ]
>>328
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7790.c
気が向いたので、なんとなく作ってみた。

359 名前:328 mailto:sage [2008/10/16(木) 00:11:00 ]
>>358
ありがとう。


360 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:23:58 ]
>>358
俺が作ったのも同じバイナリを吐くんだけど、元のバイナリと内容が異なる

361 名前:358 mailto:sage [2008/10/16(木) 00:37:46 ]
>>360
それをまたテキストも戻して、diffしてバイナリにする元のテキストと同じだから気にしなかった。
コンパイラやそのバージョンによっても、生成される機械語が違うからそんなもんだと思う。
最初にできたときにはdiffが違うのが気になって確認した。
しかし、float(0x3E624825)とfloat(0x3E62480F)が同じ値になっていたので、上げたんだけど。

362 名前:328 mailto:sage [2008/10/16(木) 01:23:45 ]
まあ試験的に数値が多いテキストでもバイナリにしようとおもうんだけど
この例では13個x()個てデータだったけど
30個x()個なかんじのデータだったらサイズもかえないといけないのかな?

とおもったけどそうでもなさそうですね。




363 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 01:59:56 ]
>>361
> コンパイラやそのバージョンによっても、生成される機械語が違うからそんなもんだと思う。
うーん、実行ファイルについてではなくて。
> しかし、float(0x3E624825)とfloat(0x3E62480F)が同じ値になっていたので、上げたんだけど。
なるほど。

にしても元のバイナリに戻せないのでは意味がないように思うんだなあ。何で変わっちゃうんだろ。

364 名前:デフォルトの名無しさん [2008/10/16(木) 02:48:17 ]
問題文:2つの円の位置関係(交わる(交点)、含まれる、離れている)

これを求めるにはどんな感じで書けば良いでしょうか?

365 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 02:52:49 ]
数学じゃん!
2円の半径と中心間の距離を考える!

366 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 02:52:53 ]
>>364
中心座標間の距離 - ( 円1の半径 + 円2の半径 )
の符号を調べる

367 名前:デフォルトの名無しさん [2008/10/16(木) 02:58:03 ]
数学的な考え方は解るのですが、
先週C++を始めたばかりで書き方がなかなか解りません;;
初歩的ですみません。

368 名前:358 mailto:sage [2008/10/16(木) 03:03:52 ]
>>363
0 01111100 11000100100100000100101 (0x3E624825)
0 01111100 11000100100100000001111 (0x3E62480F)
s [- e -] [--- m ---]

(-1)^s × 2^(e-127) × (1 + m/(2^23)) (Sign, Exponent, Mantissaはそれぞれ、十進数)
(-1)^(0)*2^(124-127)*(1+6440997/(2^23)) = 0.220978335
(-1)^(0)*2^(124-127)*(1+6440975/(2^23)) = 0.220978007

となるから、floatの精度のため値としては同じになったみたい。
16進表記で変わった理由は、機械語とそれに伴うFPU命令の違いからじゃないかな(実際はどうか知らん)。
エロい人後は頼んだ。


369 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 03:24:27 ]
>>368
質問者でもない者に対して丁寧に細かくありがとう><
エンディアンそっちのけでバイナリデータ見てた俺のバカ!

370 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 03:32:57 ]
まっ、麻呂のクソースはいらんかえぇ〜〜?

371 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 07:20:45 ]
>>361
テキストにした時点で精度が落ちてるから元には戻せないよ


372 名前:デフォルトの名無しさん [2008/10/16(木) 08:49:22 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 英文を入力すると、単語に分割して出力するプログラムを書く。
ただし、ピリオドとカンマは出力しないようにすること。
(実行例)
英文を入力してください:
There is , a textbook.

---
There
is
s
textbook
---

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 来週の木曜日
[5] その他の制限: 出来ればプログラミング下手な自分にもわかるように解説を付けてくれると助かります。
よろしくお願いします。




373 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 09:40:15 ]
>>372
#include <stdio.h>
#include <string.h>
int main(void){
char buf[256];
char *p;
printf("英文を入力してください:(255文字まで)\n");
fgets(buf, 256, stdin);
p = buf;
p = strtok(buf, " ,.\n");
while (p)
{
printf("%s\n", p);
p = strtok(NULL, " ,.\n");
}
return 0;
}


374 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 10:04:36 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
まず大きな正方形のエリアがあり
その大きな正方形の中に小さな正方形のエリアがある。
次に大きな正方形の線上で2点を取る。(一方は左下に固定)
左下の固定点と入力した大きな正方形の線上の二点を線で結び
その直線が中の小さい正方形に重なるか重ならないかを判定する

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10月中
[5] その他の制限:特になし

考えてみたけどさっぱりわかりません
正方形の大きさは変えられると助かります
よろしくお願いします。



375 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 11:21:02 ]
数学知識に遥かにウェイトがある問題に言語の技巧の問題を
組み合わせた課題を出す教師は...

376 名前:デフォルトの名無しさん [2008/10/16(木) 11:29:00 ]
一般化すれば、
平面座標内に正方形と直線があり
交わりがあるかどうかを調べる

377 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 11:33:00 ]
>>374
(数学の解)
まず直線の傾きとy切片を求め直線の式を作れ
y = ax + b
次に小さい正方形のx座標を代入してその値とy座標の値を比較
a * x1 + b - y1
a * x2 + b - y2
a * x3 + b - y3
a * x4 + b - y4
4つの正負が同じなら重ならない
1個でも負号が違えば重なる
0は適当にどちらかに決めて処理

Cでプログラム

378 名前:デフォルトの名無しさん [2008/10/16(木) 11:34:54 ]
より一般化すれば、凸多角形の共通部分や、
多角形ポリゴン同士の衝突判定をしたいのですが。。。
だ。

Spaghetti Source - 凸多角形の共通部分
www.prefield.com/algorithm/geometry/convex_intersect.html

多角形ポリゴン同士の衝突判定をしたいのですが。。。 - 教えて!goo
oshiete1.goo.ne.jp/qa675246.html

379 名前:374 mailto:sage [2008/10/16(木) 11:42:23 ]
ありがとうございます
書き忘れて申し訳ないのですが二次元で大丈夫です
>>377さん
左下を原点とすれば切片0は可能ですよね?

Cの知識がなさすぎて組めないorz

380 名前:デフォルトの名無しさん [2008/10/16(木) 13:32:11 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
bmp画像の各ピクセルごとの数値を読み込み、
二次元配列として表示するプログラムを作成せよ

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:10月中
[5] その他の制限:特になし

まったく見当がつきません。
よろしくお願いします

381 名前:デフォルトの名無しさん [2008/10/16(木) 13:34:45 ]
[1] 授業単元:c++builder
[2] 問題文(含コード&リンク):下に提示
[3] 環境
 [3.1] OS:windows xp
 [3.2] C++ builder5
 [3.3] 言語:C++ builder
[4] 期限: 10/17まで


Memo1には Memo2には Memo3には Memo4には
5    4     5     2
 6    3     2     6
 5    1     8     4
 6    4     6     6
と出してあるのですがこの4つのMemoの列に対応させて足し算したものを
 Memo5に
 16
 17
 18
 22

と出したいのですがどのようにすればいいんでしょうか。
builderに関してほとんど手探り状態なのでどなたかわかる方よろしくお願いします。



382 名前:デフォルトの名無しさん [2008/10/16(木) 13:58:13 ]
見当つかないんだったらフォーマットくらい調べろよ できるかもしれないじゃんか



383 名前:デフォルトの名無しさん [2008/10/16(木) 15:10:05 ]
C++で2分法のf(x)=X*X-2
プログラムよろしくお願いします。

384 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 15:19:35 ]
>>379
合ってるかどうかは知らない
あと、くそーすだがあしからず
#include <stdio.h>

int main(void)
{
double x, y, a, tmp;
int i;
//大きな正方形の座標(左下、右下、左上、右上)
double large_x[4] = {0.0, 10.0, 0.0, 10.0};
double large_y[4] = {0.0, 0.0, 10.0, 10.0};
//小さな正方形の座標(左下、右下、左上、右上)
double small_x[4] = {5.0, 7.0, 5.0, 7.0};
double small_y[4] = {1.0, 1.0, 3.0, 3.0};

printf("大きな正方形の線上の点");
scanf("%lf %lf", &x, &y);

a = y / x;

tmp = a * small_x[0] - small_y[0];
for(i=1; i<4; i++){
if( tmp * (a * small_x[i] - small_y[i]) <= 0.0 )
break;
}

if(tmp > 0.0) printf("重ならない\n");
else printf("重なる\n");

return 0;
}

385 名前:デフォルトの名無しさん [2008/10/16(木) 15:19:42 ]
#include <stdio.h>

#define GOSA 0.0001
float sqr(float c){
double x=c,y;
while(1){
y=x*x;
if(y>c-GOSA)if(y<c+GOSA)break;
x -= (y-c)/(2*x);}
return x; }



386 名前:デフォルトの名無しさん [2008/10/16(木) 15:19:46 ]
[1] 授業単元:情報処理演習2
[2] 問題:1.大きさ5の配列の各要素に整数データを読み込みながら順次格納して、全要素を逆に並びかえて、その配列の0番から順に内容を表示するプログラムをつくりなさい
2.正整数を順次配列に読み込んで、三番目に大きな数(全て大きい数なら、左から三番目の数)を出力するプログラムを作れ。尚、0を読み込むと終了すること
ただし、必ず3個以上を読み込むと仮定してもよい
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限
16日の23:59分まで


お願いします

387 名前:デフォルトの名無しさん [2008/10/16(木) 15:20:40 ]
>>385
X*X=cを解くプログラムね

388 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 15:50:49 ]
>>386
(1)
#include<stdio.h>
int main(){
    int a[5],i,left,right;
    for(i=0;i<5;++i)scanf("%d",a+i);
    for(left=0,right=5-1;left<right;++left,--right)
        i = a[left] , a[left] = a[right] ,a[right] = i;
    for(i=0;i<5;++i)printf("%d\n",a[i]);
}
(2)
#include<stdio.h>
#include<stdlib.h>
int compare(const void*a,const void*b){
    int c=*(int*)a,d=*(int*)b;
    return (c>d) - (c<d);
}
int main(){
    int a[4]={-1,-1,-1,-1};
    while(scanf("%d",a),*a != 0)qsort(a,sizeof a/sizeof*a,sizeof*a,compare);
    printf("%d\n",a[1]);
}

389 名前:386 [2008/10/16(木) 17:00:07 ]
すいません!
osなんですが、Linuxとunix系OSを間違えて書いてました……
正しくは
OS:unix系のOSかwindowsです
申し訳ありません……


390 名前:デフォルトの名無しさん [2008/10/16(木) 18:45:15 ]
[1] 授業単元:
[2] 問題文(含コード&リンク):
以下のようなデータが大量に格納されているファイルがある.
[ダウンロード www.vox.tutkie.tut.ac.jp/~katurada/test.list ]
このファイルを読み込み,数値(キー)と英単語(データ)をセットにして
1データとして2分木へ格納し、数値(キー)にある値を指定して検索を行えば、
その数値(キー)に対応する英単語(データ)を検索できるプログラムを作成せよ。
ふたつめ
上記で使用したtest.list を読み込み,数値(キー)と英単語(データ)をセットにして
1データとしてリストへ格納し、数値(キー)にある値を指定して検索を行えば、
その数値(キー)に対応する英単語(データ)を検索できるプログラムを作成せよ。
そして、上記の木構造による実装との検索時間を比較せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[2008年10月19日24:00まで]


391 名前:390 [2008/10/16(木) 18:46:22 ]
5] その他の制限:
1. 格納できるデータ量は(メモリの許す限り)上限はない.
2. 対応する英単語が見付からない場合は、その旨を表示すること。
3. データは,「数値,英単語\n」(\nは改行)で定義されるものとする.
4. データが格納されたファイルは、プログラムの引数で指定できるようにせよ。
5. データは2分木に格納せよ。
6. 数値(キー)に重複はない。
7. 数値(キー)は8桁以内である。もしファイルに9桁以上の数値が入っていた場合はエラーを出力して終了せよ。
8. 数値(キー)に数字以外の文字(アルファベットなど)が含まれていた場合は,エラーを出力して終了せよ.
9. 検索時の入力にも9桁以上の数値や数字以外の文字が入力された場合はエラーを出力して終了せよ.
10. 英単語は25文字以内である。もしファイルに25文字以上の英単語が入っていた場合はエラーを出力して終了せよ。
ふたつめ
 # リストによる実装において、データの挿入は数値(キー)によるソートは行わず、単純にファイルに出現した順番にリストに追加していって下さい。
# リストによる実装での検索も、単純にリストの先頭から比較していくような単純なアプローチで結構です。
# 1回の検索では検索時間の差がないでしょうから、10000回くらい繰り返して下さい。なお、test.list のデータ数は130万個あります。

よろしくお願いします。

392 名前:374 mailto:sage [2008/10/16(木) 18:46:38 ]
>>384
ありがとうございます
ヒントにしてもうちょい考えてみます



393 名前:デフォルトの名無しさん [2008/10/16(木) 21:26:24 ]
>>373
ありがとうございました。
これを参考に、自分なりにもう少し頑張ってみます



394 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 22:02:18 ]
>>380
bmpのフォーマットは?

395 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 23:06:39 ]
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
UDPサーバkansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7791.txt
UDPクライアントkansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7792.txt
問題文(2問あります)kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7793.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] Visual stdio2005
 [3.3] 言語:C
[4] 期限:10月17日午後13:00まで
[5] その他の制限:特になし

よろしくお願いします

396 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 00:43:47 ]
[1] 授業単元:プログラミング技術
[2] 問題:30000以下の数字を入力して、「○時間、○分、○秒」と出力するプログラムを作りなさい。
<時間を分にして、分は秒にして、秒は分の答えの余り>
[3] 環境
 [3.1] OS:Windows XP
 [3.2] Ultla C
 [3.3] 言語:C
[4] 期限
特にありません

よろしくお願いします。

397 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 01:17:09 ]
>>396
#include <stdio.h>
int main()
{
int x;
scanf("%d", &x);
printf("%2d時間%02d分%02d秒", x / 3600, x % 3600 / 60 , x % 3600 % 60);
return 0;
}


398 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 01:28:59 ]

[1] 授業単元:C
[2] 問題:n=1
4973/n*2で始まり、4973/n*2の計算の答えが1になるまでnを増やしていき
1になったところで今まで出した数字を全部足した答えを出すプログラム。
少数は切り捨て。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限 [10/17/07:00まで]

   2     4     8         4096
(4973/n*2)+(4973/n*2)+(4973/n*2)+・・・・(4973/n*2)
 2486  + 1243  +  621  +・・・・  1   =4965
手計算だと最後のnは2048になって答えが4965になったのですが。
プログラムについてはさっぱりなので助けてください。。。

399 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 01:36:21 ]
>>398
あ、n*2じゃなくて、2^nです。

400 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 01:41:42 ]
こんなでいい?
#include<stdio.h>

int main(){
int sum,ex;

for(sum=0,ex=2; 4973/ex >= 1; ex*=2){
sum += 4973/ex;
}
printf("%d\n",sum);
return 0;
}

401 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 01:50:56 ]
include <stdio.h>
int main()
{
int n, sum = 0;
for (n = 1; 4973 / (1 << (n - 1)) != 1; ++n) {
sum += 4973 / (1 << (n - 1));
}
sum += 1;
printf("%d : %d", n, sum);
return 0;
}


402 名前:401 mailto:sage [2008/10/17(金) 01:51:44 ]
すいません間違えました



403 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 01:54:33 ]
そんなすっきりなプログラムが!!

ありがとうございます!!

404 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 01:56:50 ]
>>402
ぇ?答えの4956もでましたけど・・・

405 名前:404 mailto:sage [2008/10/17(金) 01:58:31 ]
あ、>>400の方と>>401の方を読み間違えた自分が恥ずかしい…

406 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 03:26:13 ]
>>392
if( tmp * (a * small_x[i] - small_y[i]) <= 0.0 )

if( (tmp *= (a * small_x[i] - small_y[i])) <= 0.0 )
な気がする

407 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 04:04:02 ]
>>380

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7794.txt

全BMPフォーマット対応は面倒だから、条件付き、
良く読んで理解して使用のこと

408 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 04:51:51 ]
>>407 ん〜〜〜

409 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 07:23:29 ]
[1]授業 c
[2] 問題: 1単語を入力し、その単語のスペルを判定する。その判定を Ctrl-D を入力するまで続ける。判定は、ファイル ``eng.txt'' にその単語が存在する場合に限り、スペルが正しいと判定する。
[3] 環境
 [3.1] OS:linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限 10/19 16:00

関数は何を使ってもいいです。
何日も考えたのですがぜんぜんわかりませんでした。
どなたかお願いします

410 名前:395 mailto:sage [2008/10/17(金) 07:26:17 ]
すみません
問題文2問あるといっておいて4問ありました
B1とB2のみで構いません

多少遅れても大丈夫なので引き続きよろしくお願いいたします

411 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 07:40:04 ]
>>395
UDPサーバ:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7797.txt
UDPクライアント:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7798.txt

412 名前:410 mailto:sage [2008/10/17(金) 07:48:20 ]
>>410ちょっと訂正
UDPサーバ:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7799.txt
UDPクライアント:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7798.txt



413 名前:396 mailto:sage [2008/10/17(金) 07:59:31 ]
>>397
ありがとうございました

414 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 08:29:04 ]
400と401の両方とも、条件部とループ内部で同じ計算をしてるのが無駄

415 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 10:31:23 ]
>>412
ありがとうございました

416 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 11:13:35 ]
>>411
そんなの最適化されるんじゃないの?

417 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 11:15:12 ]
>>411じゃなくて>>414

418 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 15:40:59 ]
>>409
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7801.c

419 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 15:51:15 ]
[1]C言語実習
[2]問題文

以下のコードは、2つのプログラム(同一動作)のコードを
まとめたものです。(各ソースにおいて、行の順番は変えていません)
このコードを2つのプログラムに分解して、それぞれコンパイルが
通り、同一の動作をするようにして下さい。
また処理内容についても簡単にコメントして下さい。
コード
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7802.c[3] Linux/Gnu-C4.0/C
[4]無制限だそうです。難問だそうです。よろしくお願い致します。

420 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 15:55:13 ]
>>416
よく知らないんだが、どのコンパイラでどのオプションつけるとこれが最適化されるの?

421 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 16:14:39 ]
>>419
#include <stdio.h>
int is_prime(int p){
int i;
if(p<=1)
return 0;
if((p==2)||(p==3))
return 1;
if((p%2==0)||(p%3==0))
return 0;
for(i=3;i*i<=p;i+=2)
if(p % i==0)
return 0;
return 1;
}
int main(void){
int i,c=0;
for(i=1;i<=1000000;i++){
if(is_prime(i))
c++;
if(i%100==0)
printf("%d %d\n",i,c);
}
return 0;
}
素数の個数を求めるプログラム
残りはエラトステネスの篩だな


422 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 17:57:37 ]
>>420
僕もよく知らない、ってかよく知らないのに突っ込まないでください><
基本的に、共通部分式の削除が行われるんじゃないですか?



423 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 18:25:25 ]
418さんありがとうございました
感謝です

424 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 20:01:06 ]
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク): BMI値を判定するプログラムを作成する
               入力:身長t(m),体重w(kg)
出力:判定結果{やせ,標準,肥満}
               身長をt(m),体重をw(kg)としたとき,
               BMI=w/tの二乗
               
               BMI値が18.5未満⇒やせ
               BMI値が18.5以上かつ25.0未満⇒標準
               BMI値が25.0以上⇒肥満

               #include <stdio.h>
int main(void) {
float t, w;
printf("t = "); scanf("%f", &t);
printf("w = "); scanf("%f", &w);
????????????????????????????????←この部分が解りません。
               }
[3] 環境 Visual C++
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
 [3.3] 言語: C言語
[4] 期限: 2008年10月20日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数,条件分岐(if文,if-else文)は習いました。
  お願い致します。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<366KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef