急いでいます。
C言語で以下の課題(2つ)のプログラムのソースがわからないもで教えてください。 また(1)は自身でソースを作成したが、エラーがでたうまくいきません。(2)は途中までできてその後のソースがわかりません。
(terapadとcygwinをしようします。)
(1)1文字を入力して、下のデータのうちaのときAmerica以下japanまで、bのときBritain以下japanまで、cのときCanada以下japanまで、dのときDenmark以下japanまで、それ以外のときjapanと表示するプログラムをつくれ。ただし、switch~case文を用いる。
※以下に作成したソースとエラーをしめします。
#include <stdio.h>
main()
{
int a.b.c.d.e;
printf("文字=");scanf("%d",&c);
switch (c) {
case 'a':printf("America\nBritain\nCanada\nDenmark\njapan\n");
break;
case 'b':printf("Britain\nCanada\nDenmark\njapan\n");
break;
case 'c':printf("Canada\nDenmark\njapan\n");
break;
case 'd':printf("Denmark\njapan\n");
break;
default:printf("japan\n");
}
(エラー)
$ gcc 5ek.c
5ek.c: In function `main':
5ek.c:4: error: syntax error before '.' token
5ek.c:5: error: `c' undeclared (first use in this function)
5ek.c:5: error: (Each undeclared identifier is reported only once
5ek.c:5: error: for each function it appears in.)
5ek.c:16: error: parse error at end of input
(2)以下のような連立方程式がある
ax+by=c
dx+ey=f
a,b,c,d,e,fの値を入力したら、x、yを求めるプログラムを作成せよ。
※とちゅうまで作成したプログラムです。
#include <stdio.h>
#include <math.h>
main()
{
float a,b,c,d,e,f,x,y;
printf("連立一次方程式の計算\n");
printf("a * x + b * y= c\n");
printf("d * x + e * y= f\n");
printf("a=");scanf("%f",&a);
printf("b=");scanf("%f",&b);
printf("c=");scanf("%f",&c);
printf("d=");scanf("%f",&d);
printf("e=");scanf("%f",&e);
printf("f=");scanf("%f",&f);
無題
-
ゆーずぃ
Re:無題
>もぐりんさん
データの内aの時ということは、データがaにあたる時とも取れますから、きっと自分の環境でaに当たる文字を文字コード表とにらめっこして数値を入れろということなのかもしれませんよw
私の環境ではaにあたる97を入力すれば上手くいくようですw
まぁ課題ということなので一応解答を。提出までに見るかもわからないので、需要があるかは分かりませんがw
因みに連立一次方程式は公式丸写しなので間違っていたら公式に文句を言って下さいw
--------------------1つ目---------------------
データの内aの時ということは、データがaにあたる時とも取れますから、きっと自分の環境でaに当たる文字を文字コード表とにらめっこして数値を入れろということなのかもしれませんよw
私の環境ではaにあたる97を入力すれば上手くいくようですw
まぁ課題ということなので一応解答を。提出までに見るかもわからないので、需要があるかは分かりませんがw
因みに連立一次方程式は公式丸写しなので間違っていたら公式に文句を言って下さいw
--------------------1つ目---------------------
#include <stdio.h>
int main(void){
char input;
puts("a~dのいずれかを入力して下さい");
scanf("%c",&input);
switch(input){
case 'a' : puts("America");
case 'b' : puts("Britain");
case 'c' : puts("Canada");
case 'd' : puts("Denmark");
default: puts("japan");
}
while(getchar()!='\n');//バッファクリア
getchar();
return 0;
}
--------------------2つ目---------------------#include <stdio.h>
int main(void){
enum {A,B,C,D,E,F};
int i, div, cal[6];
puts("ax + by = c");
puts("dx + ey = f");
puts("上記の連立一次方程式の計算を行います。\n");
for(i=0; i < 6; i++){
printf("%cの値を入力して下さい。(整数値)",'a'+i);
scanf("%d",&cal);
while(getchar() != '\n');
}
if((div = cal[A]*cal[E] - cal[D]*cal ) == 0 ){
puts("0除算になる為処理を中止します。");
return -1;
}
printf("x = %d\n",(cal[C]*cal[E] - cal[F]*cal) / div);
printf("y = %d\n",(cal[A]*cal[F] - cal[D]*cal[C]) / div);
puts("Enterで終了します");
getchar();
return 0;
}-
さかまき
Re:無題
break文を使ってもOKになったんだから、xftさんの努力(コピペ)を尊重して
switch文のところは↓のままでよいのでは?
switch (c) {
case 'a':printf("America\nBritain\nCanada\nDenmark\njapan\n");
break;
case 'b':printf("Britain\nCanada\nDenmark\njapan\n");
break;
case 'c':printf("Canada\nDenmark\njapan\n");
break;
case 'd':printf("Denmark\njapan\n");
break;
default:printf("japan\n");
}
switch文のところは↓のままでよいのでは?
switch (c) {
case 'a':printf("America\nBritain\nCanada\nDenmark\njapan\n");
break;
case 'b':printf("Britain\nCanada\nDenmark\njapan\n");
break;
case 'c':printf("Canada\nDenmark\njapan\n");
break;
case 'd':printf("Denmark\njapan\n");
break;
default:printf("japan\n");
}