[表示 : 全て 最新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/

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文)は習いました。
  お願い致します。

425 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 20:06:21 ]
int main(void) {
    float t, w, bmi;
    printf("t = "); scanf("%f", &t);
    printf("w = "); scanf("%f", &w);
    bmi = w / t / t;
    if (bmi < 18.5) printf("やせ\n");
    else if (bmi < 25.0) printf("標準\n");
    else printf("肥満\n");
    return 0;
}

426 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 20:55:26 ]
[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/18

すいません。なかなかうまくいきませんよろしくお願いします

427 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 21:03:49 ]
いくつかレスをもらっても何も進歩してないことにがっかりした

428 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 21:29:19 ]
>>426
ちゃんとみてないけど、
if(*(s+i)==' '){
の行を
if(*(s+i)==' ' || *(s+i)=='?' || *(s+i)=='!' …){
ってやっていけばいいんじゃね

429 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 21:52:12 ]
ということを>>336-337が。

430 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 22:13:26 ]
>>426
#include<stdio.h>
#include<string.h>
#define MAX 256
int main(void){
int len=0, max=0, moji;
char s[MAX+1], l[MAX+1]="";
while((moji=getchar())!=EOF){
if(strchr(" \t\n?!.,()", moji) || len>=MAX){
if(len>max){
strcpy(l, s);
max=len;
}
len=0;
}else{
s[len++]=moji;
s[len]='\0';
}
}
printf("The longest word is \"%s\"\n", l);
return 0;
}

431 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 23:41:45 ]
個人的にはif elseよりswitchの方が好きだ。

432 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 00:09:20 ]
個人的にはふさわしい方を使うのが好きだ。

433 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 00:15:54 ]
>>390
二分木の方だけやってみた
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7805.txt



434 名前:デフォルトの名無しさん [2008/10/18(土) 10:37:12 ]


[1] 授業単元:先輩の課題
[2] 問題文(含コード&リンク):
5.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7



みたいなtxtファイルがあるとします。

これを行ごとに呼んで double data[4]に順番にいれて、関数にわたす。
そして次の行をまた同じ配列data[4]にいれて、関数に渡すっていう処理するプログラムを書け

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual studio 2008
 [3.3] 言語: C
[4] 期限: 今日
[5] その他の制限: なし

435 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:18:31 ]
>>434
意味不明
文章を見直せ

436 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:25:05 ]
[1] 授業単元:先輩の課題
[2] 問題文(含コード&リンク):
5.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7



みたいなtxtファイルがあるとします。

これを行ごとに呼んで double data[4]に順番にいれて、関数にわたす。
そして次の行をまた同じ配列data[4]にいれて、関数に渡すっていう処理を
ファイルの終わりまで繰り返すプログラムを書け

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual studio 2008
 [3.3] 言語: C
[4] 期限: 今日
[5] その他の制限: なし

これでわかりますかね。すいません

437 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:33:08 ]
>>436
#include <stdlib.h>
#include <stdio.h>
void f(double *d)
{
}
int main(int argc, char *argv[])
{
FILE *fp;
double data[4];
if (argc != 2) return 1;
if (!(fp = fopen(argv[1], "r"))) {
return 1;
}

while (fscanf(fp, " %lf %lf %lf %lf",
&data[0], &data[1], &data[2], &data[3]) == 4) {
f(data);
}
return 0;
}


438 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:34:52 ]
>>437
ありがとうございます。
列が100ぐらいあるときは%lfを百個打つのはめんどくさいんですが・・・
なんとかなりませんか?

439 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:44:10 ]
>>438
Ctrl+Vを99回押すだけだろ

440 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:44:49 ]
>>439
そうなんですが・・・ソースが汚いのかなぁとおもいまして・・・

441 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:45:04 ]
9回コピーして10個まとめたのをあと9回コピー

442 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:51:09 ]
>>440
見た目の問題かい
ループで回したらいいじゃん
while (!feof(fp))
{
for (i = 0; i < 100; i++)
{
if (fscanf(fp, "%lf", &data[i]) != 1)
{
printf("error");
return 0;
}
}
f(data);
}


443 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 12:58:08 ]
>>442
どうもありがとうございました



444 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 13:01:02 ]
もうひとつ質問させていただきます。

入力ファイルの途中に

5.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7

52.3 121.1 123.0 56.8
45.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7

改行で空いてる行があったとしても正常に動きますか?ためしたところ問題ないようにみえましたが・・・

445 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 13:02:07 ]
>>444
正常の定義は?
エラーを出して止まるのが正常なのか
書式を無視するのが正常なのか

446 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 13:07:44 ]
>>445
空白の行を無視して次の行から配列に代入する処理というのが正常です

447 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 19:03:24 ]
[1]授業 c言語
[2] 問題:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7807.txt
[3] 環境
 [3.1] OS:linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限 10/20

448 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 19:56:05 ]
&s[i].id
s[i].name
&s[i].score[j]

449 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 22:10:12 ]
[1] 授業単元:プログラミング基礎
[2] 問題文
体重と身長をキーボードから入力し、BMIを計算して出力するプログラムを書け。
BMIの計算はユーザ定義の関数を用いて行い、データの型にはdoubleを用いよ。
ただし、BMIの計算式は以下の通り。
BMI=体重(kg)/身長(m)^2   例:65kg/(1.70m * 1.70m) =22.49

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月21日まで
[5] その他の制限: かなり初歩の段階みたいです。

よろしくお願いします。

450 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 22:27:55 ]
>>449
>>424-425

451 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 22:31:24 ]
>>449
#include<stdio.h>
double bmi(double weight, double height)
{
return weight / (height * height);
}
int main()
{
double weight, height;
printf("体重(kg)?");
scanf("%lf", &weight);
printf("身長(m)?");
scanf("%lf", &height);
printf("BMI=%g\n", bmi(weight, height));
return 0;
}

452 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 22:56:20 ]
>>450>>451
すいません。説明不足でしたがelseやifなんかはまだ習ってないくらい初歩なので
>>424-425はよくわからないんです。
お早いレスで助かりました。ありがとうございます。

453 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 02:08:14 ]
>>425
こんなに早くやって下さり、本当に有難う御座いました。
助かりました。



454 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 05:04:55 ]
>>453
elseやifについてどう思うかを>>452に伝えてやってくれまいか

455 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 13:54:08 ]
[1] 授業単元:プログラミング
[2] 問題文:
"A>B"と入力すると"AはBより大きい"のように、不等式を文章に変換するプログラムを作成せよ。また、入力データと実行結果は以下の通りとし、変換された文章をテキストファイルに順番に出力すること。

実行結果
データ1:A>B
データ2:B<C
データ3:A<C
○○○.txtに出力しました

○○○.txt
AはBより大きい
BはCより小さい
AはCより小さい

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:10/21
[5] その他の制限:可能な限り初歩的なものでお願いします

456 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 14:38:08 ]
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fpr, *fpw;
char s1[1000], s2[1000], c;
if (argc != 3) { fprintf(stderr, "引数にこでたのむ\n"); return 1; }
if (!(fpr = fopen(argv[1], "r"))) {fprintf(stderr, "ファイルが\n"); return 1; }
if (!(fpw = fopen(argv[2], "w"))) {fprintf(stderr, "ファイルが\n"); return 1; }
while (fscanf(fpr, " %[^<> ] %c%s", s1, &c, s2) == 3) {
switch (c) {
case '<':
fprintf(fpw,"%sは%sより小さい\n", s1, s2);
break;
case '>':
fprintf(fpw,"%sは%sより大きい\n", s1, s2);
break;
default:
fprintf(stderr, "なかみが\n"); return 1;
}
}
fclose(fpr);
fclose(fpw);
return 0;
}


457 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 15:42:56 ]
[1]授業 c言語
[2] 問題:
 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7807.txt
[3] 環境
 3.1 OS:linux
 3.2 gcc
 3.3 言語:C
[4] 期限 10/20
 
  すいません、よろしくお願いします。

458 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 15:48:02 ]
>>447
>>448


459 名前:デフォルトの名無しさん [2008/10/19(日) 16:04:58 ]
>>457
まず、リスト@はmain関数の外で定義な。中でもいいけど、個人的には外の方が分かりやすい。
 
で、○○○は上から順に
&s[i].id
s[i].name
&s[i].score[j]

あんまり偉そうなこといいたくないが、これって構造体の基本問題だろ??
できるだけ自分で解けるようにしないと後々、辛い目にあうぞ。

460 名前:457 mailto:sage [2008/10/19(日) 17:07:53 ]
>>459
ウザいです。
偉そうな口を聞いて欲しくないです。

461 名前:デフォルトの名無しさん [2008/10/19(日) 17:20:54 ]
>>460
本当のことだろーが
構造体の基礎の基礎も出来てないやつが喚くな餓鬼め

462 名前:457 mailto:sage [2008/10/19(日) 17:23:18 ]
>>461
スレ違いです。出て行ってください。

463 名前:457 mailto:sage [2008/10/19(日) 17:25:13 ]
そういうのは止めてください
>>458
どうもすいませんでした
>>459
ありがとうございます




464 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 18:22:51 ]
>>457
>>1
> なりすましを防ぐため、トリップを使ってください。

465 名前:デフォルトの名無しさん mailto:sage [2008/10/19(日) 19:44:19 ]
ワロタ

466 名前: ◆iTaRIJflUs mailto:sage [2008/10/20(月) 00:09:33 ]
[1] 授業単元:C言語プログラミング
[2] 問題文
<その1>
以下のようなプログラムを作成しなさい.

2×10の2次元配列を定義し、1行目の配列([0][0〜9])に1から10までの数字を格
納し、2行目の配列([1][0〜9])に2の倍数を2から20まで格納し、配列に格納した
数字を画面出力するプログラム。


<その2>
以下のようなプログラムを作りなさい

10人の学生の成績が以下のようになっている。
int score[]={90,28,35,80,72,55,76,90,96,42}
このとき、0から9までの学生の偏差値を計算せよ。

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月21日朝9時まで
[5] その他の制限: まだまだ初歩の段階です。

どなたかお願いします。

467 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 01:52:12 ]
>>466
int num[2][10];
int i, j;
for( i = 0; i < 2; i++ ) {
 for( j = 0; j < 10; j++ ) {
  num[i][j] = (j + 1) * (i + 1); /* (1〜10) × ( 1 or 2) */
  printf( "%2d ", num[i][j]);
 }
 printf("\n");
}


468 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 02:14:52 ]
>>466 その2
#include <stdio.h>
#include <math.h>

int main(void)
{
int score[]={90, 28, 35, 80, 72, 55, 76, 90, 96, 42};
int i, n = sizeof(score) / sizeof(score[0]);
double sum = 0., sqsum = 0., mean;

for (i = 0; i < n; i++) {
sum += score[i];
sqsum += score[i] * score[i];
}
mean = sum / n;

printf("標準偏差 = %f\n", sqrt(fabs(sqsum / n - mean * mean)));

return 0;
}

469 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 08:39:37 ]
[1] 授業単元:プログラミング
[2] 問題文:x=1y=2 が関数swapをもちいてx=2、y=1となる。関数swapを呼び出す前後のx,yのアドレスを表示し、アドレスが渡されていることをしめせ。

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:visual2005 c
 [3.3] 言語:C
[4] 期限:10/23
お願いします



470 名前:デフォルトの名無しさん [2008/10/20(月) 08:44:26 ]
【質問テンプレ】
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
前もって用意された暗号化された文のテキストファイルと暗号化されていない文のテキストファイルがあります。
暗号化されたテキストファイルの始めの3文字はXXXとなっています。
プログラムは最初の3文字をよんで、XXXだったらそのファイルを解読して新たなファイルに保存、
XXXじゃなかったらそのファイルを暗号化して新たなファイルに保存しなさい。
尚、テキストファイルが1000文字以上だったらexitすること。
(暗号はa→c,b→dのようなshift2です。)
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: Dev-C++
 [3.3] 言語: C++
[4] 期限: 今日中
どうやってファイルの最初の3文字を判断するのかがまず分かりません..。
どなたか教えて下さい。

471 名前:デフォルトの名無しさん [2008/10/20(月) 11:33:38 ]
[1] 授業単元:プログラミングC++
[2] 問題文:学籍番号、名前、姓、が記入されたリストを入力し、これを名前、姓、学籍番号の順に出力するC++ プログラムを書き、正しく動くことを確かめよ。
動作確認のためには、「実行ファイル < データリスト」のようにデータファイルを作り、コマンドラインでリダイレクションによりデータ入力せよ。
s10000001 Taro Aizu
s10000002 Jiro Aizu
s10000003 Nuri Aizu
s10000004 Taro Kin
s10000005 Atami Bandai
s10000006 Kogen Bandai
s10000007 Choucreme Hirota
s10000008 Kitakata Ramen
s10000009 Beko Aka
s10000010 Jo Tsuruga
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語:C++
[4] 期限: 2008年10月23日00:00まで
[5] その他の制限:特になし

472 名前:デフォルトの名無しさん [2008/10/20(月) 12:15:46 ]
>>471の補足ですが、ループを使うのが条件です

473 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 14:10:40 ]
>>470
1000文字未満だったらfreadでchar[1000]に読み込んではじめの三文字見ればよくね?



474 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 18:10:38 ]
授業単元: C
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7810.txt 
条件は関数 void sort3 の引数は3つの int 型の値であるが,これをポインタ変数を受け取る関数に書き換える.交換の作業はすべて関数内で処理し,main 関数では交換作業を行わないものとする

[3] 環境
 [3.1] OS: Windows/Linux
 [3.2] コンパイラ名とバージョン: 任意
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:2008年10月23日まで




475 名前:デフォルトの名無しさん [2008/10/20(月) 18:33:20 ]
[1] 授業単元:プログラミング
[2] 問題文:
Newton--Raphson法を用いて
X*X*X-7X*X+16X-10=0
の解を求めよ。

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:10/24
[5] その他の制限:初心者です。なるべく基本的な構造でお願いします。

476 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 18:48:16 ]
>>474
void sort3(int *x, int *y, int *z)
{
int tmp;

if (*y < *x) { tmp = *x; *x = *y; *y = tmp; }
if (*z < *y) { tmp = *y; *y = *z; *z = tmp; }
if (*y < *x) { tmp = *x; *x = *y; *y = tmp; }
}

477 名前:デフォルトの名無しさん [2008/10/20(月) 19:07:40 ]
#define GOSA 0.00001
#define F(X) (X*X*X-7*X*X+16*X-10)
#define dF(X) (3*X*X-14*X+16)

int main(){
double x=10,y;

while(1){
printf("計算経過 %f\n",x);
y=F(x);
if(y>-GOSA)if(y<GOSA)break;
x -= y/dF(x); }
}

478 名前:デフォルトの名無しさん [2008/10/20(月) 19:22:25 ]
#define GOSA 0.00001
#define F(X) (X*X*X-7*X*X+16*X-10)
#define dF(X) (3*X*X-14*X+16)

int main(){
double x=10,y;
do{
x -= y/dF(x);
printf("計算経過 %f\n",x);
y=F(x);
}while(y<-GOSA || y>GOSA);
}

479 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 23:25:55 ]
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7806.txt
[3] 環境
 [3.1] OS: Windows)
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限:関数・配列は習いましたが、ポインタは知りません。

自分で書いてみたのですが、例えば15を打つと
「素数ではありません」「素数ではありません」「素数です」とでてしまいます。

480 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 23:36:28 ]
else{
for(i=3;i<=no;i+=2){
if ((no%i)==0){
puts("素数ではありません");
break;
}
else{
puts("素数です");
break;
}
}
}


481 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 23:57:28 ]
>>479

int main(){
unsigned long int i ;
unsigned long no = 0;
printf("1から%luまで入力可能です\n", ULONG_MAX);
do {
printf("正の整数:");
scanf("%lu", &no);
if (no <= 0) {
puts("0以外、正の整数を入力してください") ;
} while(no <= 0) ;

if (no == 2) {
puts("素数です");
}
else if (no == 1 || no%2 == 0) {
puts("素数ではありません");
}
else {
for ( i = 3; i * i <= no; i += 2) {
if (no % i == 0) {
puts("素数ではありません");
return 0;
}
}
puts("素数です");
}
return 0;
}


482 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 00:06:50 ]
>>480 481
ありがとうございます!


483 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 02:39:36 ]
>>469
エスパーするとこうかな?関数swapを自分で書いて、呼び出す側とその関数内それぞれでアドレスを表示。

#include <stdio.h>
/* aの指すデータとbの指すデータを交換する */
void swap( int *a, int *b) {
int temp = *a;

printf( "swap() : &a = %p, &b = %p\n", a, b);

*a = *b;
*b = temp;
}

int main(void) {
int x = 1, y = 2;

printf( "main() : x = %d, y = %d, &x = %p, &y = %p\n", x, y, &x, &y);
swap( &x, &y);
printf( "main() : x = %d, y = %d, &x = %p, &y = %p\n", x, y, &x, &y);

return 0;
}




484 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 08:16:08 ]
>>483
俺は
int* temp = a;
a = b;
b = temp;
かと思った


485 名前:デフォルトの名無しさん [2008/10/21(火) 12:43:13 ]
>>473
ありがとうございました。調べてみます。






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

前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