ああああああぁぁぁぁぁぁ.....orz
やってしまった・・・見落とし・・。orz
次からは注意します。
で、そのプログラムは結局なにがしたいのさ
年数を入力する必要はないし、仮に元日からの日数を求めるんであれば、
1月31日を指定したら62日と帰ってきそうなんだが。
//演習3.6
#include<stdio.h>
void main()
{
int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int yy,mm,dd;
int monc,con=0;
printf("Please input date (yyyy.mm.dd) ==> ");
scanf("%d.%d.%d",&yy,&mm,&dd);
if(mm > 0 && mm < 13)
if((month[mm-1]+1)>dd){
if(yy%4==0 && yy%100!=0)
month[1]=29;
for(monc=1;monc!=mm;monc++){
con+=month[monc-1];
}
con+=dd;
}
else
printf("ERROR\n");
else
printf("ERROR\n");
printf("Total %d days",con);
}
完成しました。
入力した年月日を入力し、元日からの日数を求めるプログラムです。
年を入力する必要があったのは閏年の判定をする為です。
>>954 100年判定入れるなら400年判定入れないと2000年がおかしくなる。
細かいけどこうね
if(yy%400==0 || (yy%4==0 && yy%100!=0))
957 :
956:2005/12/02(金) 09:27:52
かぶった・・・
if(mm > 0 && mm < 13){
if(yy%400==0 || (yy%4==0 && yy%100!=0))
month[1]=29;
if((month[mm-1]+1)>dd){
for(monc=1;monc!=mm;monc++){
con+=month[monc-1];
}
con+=dd;
}
}
お早いレスありがとうございます。判定の位置もおかしかったので修正
しました。これからも精進します。
>>959 長い未来を見据えず、mktime()で算出するのはいかが?(w
961 :
デフォルトの名無しさん:2005/12/03(土) 10:44:15
FreeBSDで下の式のグラフを書いて表示させたい。どうすりゃいいんだ
f(x) = x*x ( x=-4, -3, ..., 0, 1, ..., 4)
gnuplot
ありがとう
964 :
国士:2005/12/03(土) 14:18:55
僕もどしろうとなんですけど代入演算子ってなにかわかりますか?
もちろんだ
char a = '+'
とかやったときのaが代入演算子。ようするに演算子を代入するもののことだ
任意の関数f(x)の x=n における微分係数を求めるにはどのような方法がありますか
f(x),g(x),h(x)とあれば、diff_fx(float x),diff_gx( float x),diff_hx( float x)みたいに3つ作るくらいしか考えられませんでした
diff_fx( float x) の内容は、手計算でf(x)の導関数を求めて、それを書き込んでというどうしようもない状態です(ノд`)
>>968 あらかじめ関数が決まっているなら精度的にはそれが一番いい方法。
>>968 関数決まってないなら
f'(c) = lim[h→0]{(f(h+c) - f(c))/h}
を使って、h=0.000000001とでもしてやるしかないんじゃまいか?
>>969 確かにこれでも問題なく動くのですが、汎用性が全くないなぁと思いまして
関数変える度に、導関数も求め直すのも結構手間ですし
>>970 定義に従って微分していくということですか
試してみます
ありがとうございました
>>970 それは小さすぎ。普通の多項式でもひどい誤差になる。
中心差分でも10の-5乗くらいが限度かと。
近似式ってもんを知らない馬鹿しかいないんだな
これがCの質問だと思ってる奴の脳味噌じゃその程度か。
977 :
デフォルトの名無しさん:2005/12/04(日) 15:45:41
キーボードから「c」を入力した時に「OK!」、それ以外の時には「NG!」と出力するプログラムはどう書けばいいですか?
if( キーボードから入力された文字 == 'c' ) puts("OK!");
else puts("NG!");
979 :
977:2005/12/04(日) 16:17:46
else if文でお願いしますorz
自分ではこう書きましたがダメでした。
#include<stdio.h>
int main(void)
{
int x;
scanf("%c",&x);
if(x=='c'){
printf("OK!\n");
}
else{
printf("NG!\n");
}
return 0;
}
980 :
デフォルトの名無しさん:2005/12/04(日) 16:38:07
>>979 intで宣言して%cで受けるのはおかしいだろがッ
とりあえずchar xに汁
981 :
977:2005/12/04(日) 16:58:59
>>980 出来ました。
でも、「cc」でも「OK!」と出てしまいます。
>>981 ・・・・scanfが何してるか考えてるか?
983 :
977:2005/12/04(日) 17:30:52
>>982 キーボードから数値を取り込む関数?
すみません。激初心者ですorz
985 :
977:2005/12/04(日) 17:42:37
char x;
scanf("%c",&x);
if(a=='c')
この辺が間違ってる様な希ガス
986 :
977:2005/12/04(日) 17:47:33
char x;
scanf("%c",&x);
if(x=='c')
こうか
char型は文字一文字が入るサイズのデータ型です。所謂1バイト。これは全処理系共通です。
scanfの%cは文字一文字を受け取ることを示します。
つまり
char c;
scanf("%c",&c);
は標準入力からcに一文字入れるということです。
989 :
977:2005/12/04(日) 17:55:26
#include<stdio.h>
int main(void)
{
char x;
scanf("%c",&x);
if(x=='c'){
printf("OK!\n");
}
else{
printf("NG!\n");
}
return 0;
}
ccと入力してもON!にするにはどうしたら?
990 :
977:2005/12/04(日) 17:56:16
↑NG!ですorz
#include <stdio.h>
#include <string.h>
int main(void){
char c[3];
fgets(c,sizeof(c),stdin);
if(c[strlen(c)-1]=='\n')
c[strlen(c)-1]='\0';
else{
puts("NG");
return 0;
}
if(!strcmp(c,"c")) puts("OK");
else puts("NG");
return 0;
}
冗長だと思ったら改行文字除去削って比較文字列に改行文字加えれ
993 :
977:2005/12/04(日) 18:40:46
>>991-992 すいません。そこまで習っていません。
習ったのは
printf関数
scanf関数
if文
else if文
for文
等です。
これらで
>>977は出来るはずなんだけどなぁ
>>993 配列は習った?
習っていないなら2文字以上の入力は考えなくてもいいはずだ
995 :
977:2005/12/04(日) 19:17:21
>>987 乙
でも,そしたら993のような香具師はスルーされるかもな
初心者は2chじゃなくて,K&R読んで勉強汁ってことか
>>993 これでおk
#include<stdio.h>
int main(void)
{
char x,y;
if((scanf("%c%[^\n]%*c",&x,&y)==1)&&(x=='c'){
printf("OK!\n");
}
else{
printf("NG!\n");
}
return 0;
}
1000 :
デフォルトの名無しさん:2005/12/04(日) 19:28:04
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。