• 締切済み

BASICからC言語に

BASICで for I=1 to 5:line input #2,w$:next I line input #2,COMMENT$ と書かれているプログラムをC言語に書き直したいのですがどのようにしたらいいのでしょうか?

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

BASIC の line input #x というのは その番号でオープンしたファイルから一行読み込むということですから、 で、forループの中で読み込んでいるのは 読み飛ばしのようなので for (i=0; i<5; i++) fgets(fp, readbuffer, sizeof readbuffer); //空読み fgets(fp, readbuffer, sizeof readbuffer); //COMMENT行の読み込み? てな感じでしょうか。 readbuffer には十分な大きさのchar 配列を使ってください。 ピンポイントで出されても他の部分との兼ね合いで 間違っている可能性がありますので 取り扱いにはご注意くださいませ。 #エラーチェックしていないし

関連するQ&A

  • BASICからC言語に

    line input #2,w$ ex$=left$(w$,3) print"extension=";ex$ というBASICのプログラムをC言語に変換したいのですがどのようにしたら良いのでしょうか?

  • BASICでの波形合成

    学校でのBASICの宿題で、複数のSIN波を合成する問題で 100 CLS 3:LINE(0,240)-(640,240),7 110 INPUT"基本波の周期は";C 120 INPUT"基本波の振幅は";W 130 INPUT"基本波の移送は";F 140 INPUT"第何倍音まで計算する";N:DIM A(N),B(N) 150 FOR I=1 TO N 160 PRINT I;:INPUT "番目の倍音の振幅は";A(I) 170 PRINT I;:INPUT "番目の倍音の移送は";B(I) 180 NEXT I 190 FOR K=0 TO 360/C*2*3.14159# STEP 3.14159#/90 200 X=C*K-F:Y=-(W*SIN(K))+240:LINE-(X,Y),4 210 NEXT K 220 FOR G=1 TO N:PSET(0,240),3 230 FOR H=0 TO 360/C*2*3.14159# STEP 3.14159#/90 240 X=C/(G+1)*H-B(G):Y=-((A(G))*SIN(H))+240:LINE-(X,Y),3 250 NEXT H,G ここで描いたSIN波を合成した波を描く方法が分からない状態です。 どうにも解決できないのでここに質問しました。どなたか分かる方がいたら教えてください。

  • Basicでのプログラムなのですが・・・

    配列変数についてなのですが、 『20個のデータを入力し、大きい順に並べて表示するプログラム。』 なのですが… 言語:【BASIC】 ソフト:【N88】 を使用しています。 とりあえず、 10 DIM A(20) 20 FOR I=1 TO 20 30 INPUT A(I) 40 NEXT I まではわかるのですが、ここから先がわかりません。 ここから先はどのようにすればいいでしょうか。 どなたかご教授いただけると幸いです。

  • BASICからC言語に変換

    F-BASICでline inputとなっているのをC言語で同様に使用する場合には何を使用すればいいでしょうか?

  • C言語で分からないところがあるのですが……

    C言語で分からないところがあるのですが…… すみません。C言語の課題で分からないところがあり、質問しに来ました。 ユーザから数を受けて、そこまでのフィボナッチ数列を表示させるというプログラムです。 下のソースコード(でいいんですよね?)は正しいやつです。 for文を使って、繰り返しの作業を行うことに成功しましたが、doとwhileに書き換える作業がうまくできません。 どなたか助けてください。 #include<stdio.h> fib(int n) { if(n == 1)return(1); else{ if(n == 2) return (1); else return fib(n-1) + fib(n-2); } } main() { int n, i ; printf("INPUT the number. : "); scanf("%d",&n); for(i=1; i<=n; i++){ printf("F%d = %d\n",i, fib(i)); } }

  • C言語 多重配列に関して

    以下のプログラムについての質問です。 10行目 for i = 0 の時、13行目 for j = 0 で scanf("%lf", &a[0][0])に10と代入します。 この時のドス画面は input 1-th line element:10 です。ここまではいいのですが、この次がよくわかりません。私の考えでは、10行目 i = 0 の時 13行目 j = 1 となって j がNMAXまでやったら、10行目のiが1になってまた同じように動いて、10行目の i がNMAXになったら、for文が終わると考えたのですが、このプログラムの実行結果(一番下にあります)を見てみると自分の考えが間違っていることに気がつきました。 3行3列のプログラムなので、a[0][0] a[0][1] a[0][2] a[1][0].......となると考え、scanfでドス画面に9回数字を打ち込むかと思ったのですが実際は3回でした。このプログラムはどのように読んだら良いのでしょうか?? 回答宜しくお願い致します。 1  #include <stdio.h> 2  #define NMAX 3 3 4  main() 5  { 6   double a[NMAX] [NMAX], b[NMAX] [NMAX], c[NMAX] [NMAX]; 7   int i,j,k; 8 9   printf("matrix 1:\n"); 10   for(i=0; i< NMAX; i++) 11   { 12   printf("input %d-th line element:", i+1); 13   for(j=0; j< NMAX; j++); 14   { 15   scanf("%lf", &a[i][j]); 16   } 17   } 18   printf("matrix 2:\n"); 19   for(i=0; i<NMAX; i++) 20   { 21   printf("input %d-th line element:", i+1); 22   for(j=0; j< NMAX; j++); 23   { 24   scanf("%lf", &b[i] [j]); 25   } 26   } 27  for(i=0; i<NMAX; i++) 28   { 29   for(j=0; j<NMAX; j++) 30   { 31   c[i][j] = 0; 32   for(k=0; k <NMAX; k++) 33   { 34   c[i][j] += a[i][k] * b[k][j]; 35   } 36   } 37   } 38 39  printf("matrix 1 * matrix2 = :\n"); 40  for(i=0; i<NMAX; i++) 41   { 42   printf("["); 43   for(j=0;j<NMAX; j++) 44   { 45   printf("%f", c[i][j]); 46   } 47   printf("]\n"); 48   } 49  }

  • basicでの三角関数のグラフの書き方??

    active basicを使って、sinxのグラフを書こうとしたのですが、出来ません。以下のようにやってみたのですが、x軸と平行な点線が描かれるだけ…。 100 cls3 110 line(50,550)-(1050,550) 120 line(550,50)-(550,1050) 130 for i=0 to 360 140 x=i/360:y=sinx 150 xw=500*x+550:yw=500*y+550 160 pset (xw,yw) 170 line -(xw,yw) 180 next i 990 end どこを直せばいいのか分かりません。初心者なので…。 どなたか分かる方がいらっしゃったら、教えてください。 宜しくお願いします。

  • エラーがでて困っています。

    デジタイザーという数値変換機を使ってグラフを数値化するプログラムを 作成したいと思っています。 デジタイザーはPCに認識済みでプログラム中でOPEN文でCOM1ポートを 開こうと思っていますが、実行するとエラーが出てしまいます。 通信ポートや通信速度等の設定は問題ないと思われます。 どなたか詳しい方がいらっしゃったら教えてください。 お願いします。 下にプログラムの一部を記します。 このプログラム中の4680行で メッセージの定義されていないエラーです、と エラーが必ず出ます。 他に何か間違いがあったら指摘して貰えたら嬉しいです。 4220 CLS 3 4230 WINDOW(0,0)-(639,399) 4240 VIEW(0,0)-(639,399) 4250 DIM X(1000),Y(1000),Q(12000) 4260 INPUT "FILE NAME >> ";AA$ 4270 BB$="C:\"+AA$+".FCV" 4280 AA$="C:\"+AA$+".DAT" 4300 INPUT "何分?",TTTT : INPUT "AU?",AAAA 4305 CHANGE=TTTT/3 4310 INPUT "カラム温度は";CT 4320 INPUT "流量は";FR 4325 INPUT "空隙率は";E 4326 CLS 3 4330 FOR I=0 TO 3 4340 LINE(100+I,40+I)-(500-I,300-I),5,B 4350 NEXT I 4580 WINDOW(40,40)-(3880*CHANGE,3860) 4590 VIEW(100,40)-(500,300) 4610 FOR I=1 TO 7 4620 LINE(40+I*500*CHANGE,3860)-(40+I*500*CHANGE,3700),5 4630 NEXT I 4650 FOR I=1 TO 7 4660 LINE(40*CHANGE,3860-(40+500*I))-(150*CHANGE,3860-(40+500*I)),5 4670 NEXT I 4680 OPEN "COM:N83NN" FOR OUTPUT AS #1 4690 OPEN AA$ FOR OUTPUT AS #2 4700 BEEP

  • C言語の使い方を教えてください。-C言語入門者

    C言語のプログラムの処理の対象となるファイルはどこに保存したらよいのでしょうか?たとえば下記のプログラムで #include <stdio.h> #include <stdlib.h> #include <string.h> void main(void) { char *line[100], *buf; int i = 0, len, lines; FILE *fp; fp = fopen("textfile.txt", "r"); buf = calloc(128, sizeof(char)); while (i < 100 && fgets(buf, 128, fp) != NULL) { len = strlen(buf); line[i] = calloc(len + 1, sizeof(char)); strcpy(line[i], buf); i++; } fclose(fp); lines = ((i <= 100) ? i :100); free(buf); for(i = 0; i < lines; i++) printf("%s", line[i]); for(i = 0; i < lines; i++) free(line[i]); } で [textfile.txt]という名のファイルをマイドキュメントやコンパイラーを保存しているのと同じ領域に保存してコンパイラーを実行しても所要の結果が得られません。テキストにはプログラムの作り方しか書いてありません。

  • C言語で分からないところがあるのですが・・・

    すみません。C言語で分からないところがあったので来ました。 ユーザから数字を任意の数だけ受け取って、その数字とその和を表示するプログラムです。atoiなる関数、そしてコマンドライン引数というのを使って考えてみた結果を下に書きましたので、どなたか修正してください。お願いします。 実行結果(のイメージ図) 20 39 4 sum 20 39 4 63 途中までのソースコードです。 #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc,char *argv[]) { int sum; int n,i; printf("How many numbers INPUT?: "); scanf("%d", &n); for(i = 0; i <= n; i++){ atoi(argv[i]); } sum = printf("%d",sum); return 0; }

専門家に質問してみよう