C言語質問スレ【激初心者】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/10/12(水) 00:07:44・最低でもC言語が何か分かってる人でお願いします。
・質問者は自分の環境をわかる範囲で書きましょう。
優しい方々が答えてくれることを期待してます。
0951デフォルトの名無しさん
2005/12/01(木) 20:27:51>scanf("%d.%d.%d",&yy,&mm,&yy);
yy がふたつ。
0952デフォルトの名無しさん
2005/12/01(木) 20:34:05やってしまった・・・見落とし・・。orz
次からは注意します。
0953デフォルトの名無しさん
2005/12/02(金) 00:35:30年数を入力する必要はないし、仮に元日からの日数を求めるんであれば、
1月31日を指定したら62日と帰ってきそうなんだが。
0954デフォルトの名無しさん
2005/12/02(金) 09:14:26#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);
}
完成しました。
入力した年月日を入力し、元日からの日数を求めるプログラムです。
年を入力する必要があったのは閏年の判定をする為です。
0955デフォルトの名無しさん
2005/12/02(金) 09:24:40100年判定入れるなら400年判定入れないと2000年がおかしくなる。
0956デフォルトの名無しさん
2005/12/02(金) 09:27:07if(yy%400==0 || (yy%4==0 && yy%100!=0))
0957956
2005/12/02(金) 09:27:520958デフォルトの名無しさん
2005/12/02(金) 09:36:36if(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;
}
}
お早いレスありがとうございます。判定の位置もおかしかったので修正
しました。これからも精進します。
0959デフォルトの名無しさん
2005/12/02(金) 10:28:54過去は振り返らないのさ。
0960デフォルトの名無しさん
2005/12/02(金) 22:29:32長い未来を見据えず、mktime()で算出するのはいかが?(w
0961デフォルトの名無しさん
2005/12/03(土) 10:44:15f(x) = x*x ( x=-4, -3, ..., 0, 1, ..., 4)
0962デフォルトの名無しさん
2005/12/03(土) 10:50:290963デフォルトの名無しさん
2005/12/03(土) 11:07:200964国士
2005/12/03(土) 14:18:550965デフォルトの名無しさん
2005/12/03(土) 14:22:250966デフォルトの名無しさん
2005/12/03(土) 14:42:42とかやったときのaが代入演算子。ようするに演算子を代入するもののことだ
0967デフォルトの名無しさん
2005/12/03(土) 14:51:28ワロタ
0968デフォルトの名無しさん
2005/12/03(土) 16:20:50f(x),g(x),h(x)とあれば、diff_fx(float x),diff_gx( float x),diff_hx( float x)みたいに3つ作るくらいしか考えられませんでした
diff_fx( float x) の内容は、手計算でf(x)の導関数を求めて、それを書き込んでというどうしようもない状態です(ノд`)
0969デフォルトの名無しさん
2005/12/03(土) 16:30:53あらかじめ関数が決まっているなら精度的にはそれが一番いい方法。
0970デフォルトの名無しさん
2005/12/03(土) 16:39:25関数決まってないなら
f'(c) = lim[h→0]{(f(h+c) - f(c))/h}
を使って、h=0.000000001とでもしてやるしかないんじゃまいか?
0971デフォルトの名無しさん
2005/12/03(土) 16:48:51確かにこれでも問題なく動くのですが、汎用性が全くないなぁと思いまして
関数変える度に、導関数も求め直すのも結構手間ですし
>>970
定義に従って微分していくということですか
試してみます
ありがとうございました
0972デフォルトの名無しさん
2005/12/03(土) 16:51:38それは小さすぎ。普通の多項式でもひどい誤差になる。
中心差分でも10の-5乗くらいが限度かと。
0973デフォルトの名無しさん
2005/12/03(土) 16:54:100974デフォルトの名無しさん
2005/12/03(土) 16:54:46hは適当に書いてみた。スマンカッタ
0975デフォルトの名無しさん
2005/12/03(土) 16:57:17>>1を読んで出直したら?
0976デフォルトの名無しさん
2005/12/03(土) 17:00:190977デフォルトの名無しさん
2005/12/04(日) 15:45:410978デフォルトの名無しさん
2005/12/04(日) 16:02:01else puts("NG!");
0979977
2005/12/04(日) 16:17:46自分ではこう書きましたがダメでした。
#include<stdio.h>
int main(void)
{
int x;
scanf("%c",&x);
if(x=='c'){
printf("OK!\n");
}
else{
printf("NG!\n");
}
return 0;
}
0980デフォルトの名無しさん
2005/12/04(日) 16:38:07intで宣言して%cで受けるのはおかしいだろがッ
とりあえずchar xに汁
0981977
2005/12/04(日) 16:58:59出来ました。
でも、「cc」でも「OK!」と出てしまいます。
0982デフォルトの名無しさん
2005/12/04(日) 17:25:52・・・・scanfが何してるか考えてるか?
0983977
2005/12/04(日) 17:30:52キーボードから数値を取り込む関数?
すみません。激初心者ですorz
0984デフォルトの名無しさん
2005/12/04(日) 17:33:00http://www.google.co.jp/search?client=firefox-a&rls=org.mozilla%3Aja-JP%3Aofficial_s&hl=ja&q=scanf&lr=lang_ja&btnG=Google+%E6%A4%9C%E7%B4%A2
0985977
2005/12/04(日) 17:42:37scanf("%c",&x);
if(a=='c')
この辺が間違ってる様な希ガス
0986977
2005/12/04(日) 17:47:33scanf("%c",&x);
if(x=='c')
こうか
0987デフォルトの名無しさん
2005/12/04(日) 17:48:43http://pc8.2ch.net/test/read.cgi/tech/1131282679/
こちらで。
0988デフォルトの名無しさん
2005/12/04(日) 17:52:24scanfの%cは文字一文字を受け取ることを示します。
つまり
char c;
scanf("%c",&c);
は標準入力からcに一文字入れるということです。
0989977
2005/12/04(日) 17:55:26int main(void)
{
char x;
scanf("%c",&x);
if(x=='c'){
printf("OK!\n");
}
else{
printf("NG!\n");
}
return 0;
}
ccと入力してもON!にするにはどうしたら?
0990977
2005/12/04(日) 17:56:160991デフォルトの名無しさん
2005/12/04(日) 18:09:51fgetsぐらい使え」
0992デフォルトの名無しさん
2005/12/04(日) 18:33:30#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;
}
冗長だと思ったら改行文字除去削って比較文字列に改行文字加えれ
0993977
2005/12/04(日) 18:40:46すいません。そこまで習っていません。
習ったのは
printf関数
scanf関数
if文
else if文
for文
等です。
これらで>>977は出来るはずなんだけどなぁ
0994デフォルトの名無しさん
2005/12/04(日) 18:48:39配列は習った?
習っていないなら2文字以上の入力は考えなくてもいいはずだ
0996デフォルトの名無しさん
2005/12/04(日) 19:18:19乙
でも,そしたら993のような香具師はスルーされるかもな
初心者は2chじゃなくて,K&R読んで勉強汁ってことか
0997デフォルトの名無しさん
2005/12/04(日) 19:19:050998デフォルトの名無しさん
2005/12/04(日) 19:20:34薬師?
0999デフォルトの名無しさん
2005/12/04(日) 19:25:37これでお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:04C言語なら俺に聞け! Part 117
http://pc8.2ch.net/test/read.cgi/tech/1131282679/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。