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

このエントリーをはてなブックマークに追加
899デフォルトの名無しさん:2006/07/04(火) 21:35:55
>>894
お前の世界じゃ0が2の倍数じゃないらしいな。
900デフォルトの名無しさん:2006/07/04(火) 21:39:25
>>877
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2245.cpp
うわっ、もうわけわかんね。とりあえず10の位が0になっていたのを除いてみたけど
0を入れるんだったらもっと簡単な式にできる罠
901デフォルトの名無しさん:2006/07/04(火) 21:46:18
っつか、0もおkなら単純に偶数のみの足し算をしろ
といった出題でええやん・・・やっぱ下二桁の積で0は抜かせってことじゃね?
902デフォルトの名無しさん:2006/07/04(火) 21:50:52
って、10の位が2だったら1の位が奇数でもええんやね・・・俺もうだめぽ
サッカーの試合まで寝るっすw
903837:2006/07/04(火) 21:55:40
>>857
ありがとうございます!
やっぱりあきらめきれなくてまたきちゃいました…
すみませんが、
while,printf,scanf,if,elseを使った式だけでできないものでしょうか?

FILE* fp;

char buf[128];

fp = stdin;

while (fgets(buf, sizeof buf, fp) != NULL) {

atoi(buf);

return 0;

↑このようなものを使ったことがないのでわからないんです…
注文がおおくてすみません!
長くなってもかまわないのでよろしくお願いします。




const,cher,label,for,return,
int grade[5] = {0};
904デフォルトの名無しさん:2006/07/04(火) 22:01:16
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2246.cpp
最後に下二桁の積が0でもおkな奴をうpして、今日はこれでジダンのごとく引退します
905デフォルトの名無しさん:2006/07/04(火) 22:03:07
>>904訂正、1000からやってへんかった orz
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2247.cpp
906デフォルトの名無しさん:2006/07/04(火) 22:10:22
>>897
どうでもいいけど気になったこと。

char input[20];

scanf("%s",&input); ←'&'イラネ

for文を使った初期化処理
→ memset(v,0,sizeof(v));で一発。

if(max == 4){ return 2; } else{ return 0; } みたいな処理
→ 条件演算子を使うと見やすい。 return (max == 4)? 2:0;
907 ◆NeetJ30Le. :2006/07/04(火) 22:13:15
>>903
#include <stdio.h>
int main()
{
int score;
int grade[5] = {0};
char *title[5] = {"秀:", "優:", "良:", "可:", "不可:"};
int i, j;

while (scanf("%d", &score) != EOF) {
if (score >= 90) grade[0]++;
else if (score >= 80) grade[1]++;
else if (score >= 70) grade[2]++;
else if (score >= 60) grade[3]++;
else grade[4]++;
}

i = 0;
while (i < 5) {
printf("%s", title[i]);
j = 0;
while (j < grade[i]) {
printf("*");
j++;
}
printf("\n");
i++;
}
}
908903:2006/07/04(火) 22:20:51
>>907
何度もすみません!ありがとうございます!
質問があります!
char *title[5] と grade[1]++; はどういう意味でしょうか?
909903:2006/07/04(火) 22:23:51
すみません。あと、
EOFとif文の後にgrade[0]++; をつけるのがよくわかりません…。
910デフォルトの名無しさん:2006/07/04(火) 22:24:04
char *title = "aaa" → titleはキャラのポインタ
char *title[5] = ... → titleはキャラのポインタの配列(要素数5)
grade[1]++ → grade[1] = grade[1] + 1と同じ。
911 ◆NeetJ30Le. :2006/07/04(火) 22:25:33
>>903
黙ってそのまま提出するか、それが嫌ならCの勉強をしてください。
912912:2006/07/04(火) 22:29:37
どうしてもわからないので質問させてください。
VC2005で以下のコードを入力して、実行すると結果がおかしいような気がする。
もし理由があれば教えてほしいのですが・・・

#include <stdio.h>
#include <time.h>

void main()
{
int i=1;
time_t t1,t2;
time(&t1);//表示前の秒数を格納

while(i<=5000){
printf("%d,",i++);
}
time(&t2);
printf("\ntime1=%ld\n",t1);//time_tはlong型なので%ld
printf("\ntime2=%ld\n",t2);//time_tはlong型なので%ld
printf_s(" %ld %ld ", t1 , t2 );//time_tはlong型なので%ld
printf("かかった時間は、%d秒です。\n",t2-t1);
}


・実行結果の最後
time1=1152019127

time2=1152019127
1152019127 0 かかった時間は、0秒です。
        ↑ここがなんで0なのかがわからないtime2の値が入ると思っていたのだけど。
913デフォルトの名無しさん:2006/07/04(火) 22:32:57
1152019127-1152019127=0
914デフォルトの名無しさん:2006/07/04(火) 22:34:49
>>912はコードも読めないのか
915912:2006/07/04(火) 22:34:55
0秒の左側の0のことです。
説明がおかしくてすみません。
916デフォルトの名無しさん:2006/07/04(火) 22:41:24
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):
プログラム
step1: a=x+y
step2: b=z+1
step3: c=a-b
step4: w=c+1
に関し、以下のプログラムを完成させて、step1とstep2を並列実行させるプログラムを作成せよ。
但し、x,y,zはプロンプトに従って入力するとする。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2248.c
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:7/4 26:00まで

よろしくお願いします
917デフォルトの名無しさん:2006/07/04(火) 22:49:41
>>912
//time_tはlong型なので%ld
この前提がおかしい。VC2005ではtime_tは__int64型。
なので、

printf_s(" %lld %lld ", t1 , t2 );//time_tは__int64型なので%lld

こうしなければならない。
もっとも、環境依存を減らすための time_t なんだから、

printf(" %ld %ld ", (long)t1 , (long)t2 );

このように明示的にキャストするのがベター。
918917:2006/07/04(火) 22:51:35
もし「time_tはlong型」をお題目のように教えている教科書だったら糞なので窓から投げ捨てろ。
教授だったらテキトーに合わせた上で見限れ。
919912:2006/07/04(火) 22:53:15
>>917

ありがとうございます。
C言語初心者なもので・・・
助かりました!
920デフォルトの名無しさん:2006/07/04(火) 22:54:51
>>912
スレ違いだけど・・・
確かにやってみたら、0になるね。printfでも0が表示された。
VC6で試してみたら(printfで)、正しく表示された。
なんだろね?Visual Studio 2005スレか、C/C++室スレで聞いてみたら?
921903:2006/07/04(火) 22:55:21
>>910
ありがとうございます!
>>911
何度も付き合ってくださってありがとうございました!
もっと勉強したいと思います!
助かりました!本当にありがとうございました!
922920:2006/07/04(火) 22:55:44
書き込んでいる間に解答が orz
923デフォルトの名無しさん:2006/07/04(火) 22:58:24
[1] 授業単元:情報科学U
[2] 問題文(含コード&リンク):http://www.s.kyushu-u.ac.jp/~z6ty02in/TEXT/mokuji.html
ここの「11.ポインタと配列」の中の、「課題11(1/4)〜(4/4)」です
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年7月7日(金)8:40まで
[5] その他の制限:

よろしくお願いします。
924デフォルトの名無しさん:2006/07/04(火) 23:02:27
>>916
もうちょっとしたら習うのかもしれないけど、その元プログラム、根本的に
おかしいから気をつけてね。
925デフォルトの名無しさん:2006/07/04(火) 23:09:31
>>924
何がおかしいんですか?
926デフォルトの名無しさん:2006/07/04(火) 23:11:42
>>925
exit(0)
927デフォルトの名無しさん:2006/07/04(火) 23:12:39
exit(0)とexit(1)ってどう違うの?
ど素人な質問で申し訳ない
928デフォルトの名無しさん:2006/07/04(火) 23:15:28
>>926
元がこんなソースだったので多分教授が間違えたのかも…
できれば>>916の問題よろしくお願いします。
929デフォルトの名無しさん:2006/07/04(火) 23:17:31
>>927
いや、そういう話じゃない。
どのようなカリキュラムで、どの時点で>>916が出てきたのかわからないけど、
正しいお作法としては、親プロセスは勝手に終了してはいけないってこと。
この先waitの話が出てこなかったら、この話を思い出してくれ。
930デフォルトの名無しさん:2006/07/04(火) 23:22:45
ん?あってんじゃないの?exit(0)してるのは子プロセスだよ。
931デフォルトの名無しさん:2006/07/04(火) 23:27:47
なんか最近、問題にケチつけたり、余計な講釈垂れる奴多いな。
そういうのいらないから。答えないんだったら、黙ってて。
932デフォルトの名無しさん:2006/07/04(火) 23:35:56
好きにさせておけばいいじゃん
なんとかは放置に限るんじゃなかったっけ
933デフォルトの名無しさん:2006/07/04(火) 23:37:43
荒らしを完全無視できる俺は神?
934デフォルトの名無しさん:2006/07/04(火) 23:43:01
>>933
そういうことを書いた時点で負け組。
935デフォルトの名無しさん:2006/07/04(火) 23:45:13
>>933
お前を完全無視できる俺は神?
936924:2006/07/04(火) 23:54:28
えっと、そういう話じゃなくて・・・。

step1を子プロセス1で、step2を子プロセス2で計算させて、
その結果を親プロセスでさらに計算するってことでしょ。(これが違うのか?)

だとしたら、子プロセスはなんらかの方法で親プロセスに結果を返さないと
いけないんだけど、子プロセス1はなにもせずにexit(0)で終了してるでしょ。
それがおかしいってこと。

exitで計算結果を返すという手もあるけど、exit(0)してるから、それも出来ない。

というわけで、俺には解答不能です。
937デフォルトの名無しさん:2006/07/05(水) 00:00:53
[1] 授業:プログラミング演習
[2] 問題文:
・100個のノードを生成する
・ノードに重みを適当に点ける(1〜100)
・任意のノードペアを選び、重みの和を取り、重みの和が100以上のノードペアにリンクを張る
・それぞれのノードの持つリンクの数を計算する
・リンクの数の分布
 (リンクが1つ・・・○○、リンクが2つ・・・○○、・・・みたいな)
[3] 環境:[Windows XP Borland C++ Compiler 5.5(BCC Developer) C言語
[4] 期限:早目がうれしいです
[5] その他の制限:講義自体が酷いので独学で進めていますがさっぱりです
938デフォルトの名無しさん:2006/07/05(水) 00:03:15
>>936
多分、件の教授は、スレッドと間違えたんだよw
939デフォルトの名無しさん:2006/07/05(水) 00:08:37
[1]プログラミングA
[2]問題文(含コード&リンク):次のアルファベットのキーワードを入力して計算する関数電卓プログラムを作成しなさい。
sin, cos, tan, arcsin, arccos, arctan, ln, log, exp, squr, rad, deg, end
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C++
[4]期限 7月6日
[5]特になし
どうぞよろしくお願いします。

940920:2006/07/05(水) 00:12:04
>>916
一応、exitで計算結果を返すバージョンのものを書いてみた。
なんで256で割ってるのかは、man wait。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2250.txt
941デフォルトの名無しさん:2006/07/05(水) 00:12:51
>>939
おいおい、それ、いつ出された問題だ?
942デフォルトの名無しさん:2006/07/05(水) 00:15:35
>>941
6月の中旬くらいです。
943デフォルトの名無しさん:2006/07/05(水) 00:16:27
>>942
丸投げするなら早めに投げようよ・・・
944デフォルトの名無しさん:2006/07/05(水) 00:19:25
>>942
こういうやついるいるw
945デフォルトの名無しさん:2006/07/05(水) 00:19:58
お願いします
【質問テンプレ】
[1] 授業単元:基本プログラミング
[2] 問題文(含コード&リンク): 角度(0度以上180度以下)と計算すべき項数を引数として、正弦値の値を近似する関数を宣言し、入力した角度に対し、指定した項数に対する近似値を出力するプログラムを作成せよ。
角度に0未満もしくは180より大きい数が入力されたときに終了する。
角度は、近似の関数内でラジアンに変換すること。出力はmain関数で行うこと。
(実行例)
Input degree(0<=degree<=180):30
Input n:5
sin30=0.5
Input degree(0<=degree<=180):30
Input n:1
sin30=0.523598
Input degree(0<=degree<=180):30
Input n:2
sin30=0.499674
Input degree(0<=degree<=180):45
Input n:10
sin30=0.707106
Input degree(0<=degree<=180):-1
[3] 環境
 [3.1] OS:UNIX
 [3.3] 言語:C++
[4] 期限:明後日
[5] その他の制限:if,for,whileなどまでやりました
946デフォルトの名無しさん:2006/07/05(水) 00:20:57
>>940
どうもありがとうごじあます
947デフォルトの名無しさん:2006/07/05(水) 00:23:19
>>940
俺、924だったorz
948デフォルトの名無しさん
>>939
endって何?