y=ax+b, y=cx+dの平面上の2本の直線を入力しその交点を小数点第2位まで求めるプログラムを作成。
平行となる場合にはparallelを表示。
という問題なのですが、abを別々に入力させてスキャンする方法も一つあると思うのですが、配列を使ってadをインプットさせて計算するという方法を試してみようと考えました。4つの値NUMBER[SIZE]をそれぞれa~dとしその後のプログラムをNUMBERを使って計算する方法がいまいちよくわかっていません。以下のプログラムを実行するとこのようなエラーが出てしまいます。
解決方法分かる方がいらっしゃいましたらご回答お願い致します。
lines.c: In function ‘main’: lines.c:12:25: error: array subscript is not an integer 12 | scanf("%s", & NUMBER[i]); | ^
#include<stdio.h> #define SIZE 4 int main (void){ double i,x,y,a,b,c,d; char NUMBER[SIZE]={'a','b', 'c','d',}; /*4つの配列をそれぞれa,b,c,dとする*/ /*a,b,c,dの値をインプットする*/ for(i=0; i<SIZE; i++){ printf("Input %s", i); scanf("%s", & NUMBER[i]); } /*aの値が0であった場合とそうでない場合に分ける*/ if(a==c){ printf("Answer: Parallel \n"); }else{ x=(NUMBER[3]-NUMBER[1])/(NUMBER[0]-NUMBER[2]);/*2本の直線を連立方程式として時xの値を出せるように変形x=(d-b)/(a-c)*/ y=NUMBER[0]*x+NUMBER[1]; /*上で求めたxを代入してyを求める。y=ax+b*/ /*x,yの値を小数点第2桁まで表示*/ printf("Answer: %.2f,%.2f \n",x,y); } return 0; }
回答3件
あなたの回答
tips
プレビュー