• 締切済み

10進basicにて

今、10進basicで配列についてやっています。 問題は a(1),a(2)…a(5)を自ら入力して、偶数が少なくとも一つあれば「あり」、全てが奇数ならば「なし」と表示するプログラムを組みなさい。 というものなんです。 一つずつのaの判定ならできるのですが、全部の値を入力した後に、「あり」「なし」の判定をどう出せばいいのかわかりません。 100 dim a(5) 200 for k=1 to5 300 input a(k) この後はどうすればいいのでしょうか。 ご回答お願いします。

みんなの回答

  • ojisan7
  • ベストアンサー率47% (489/1029)
回答No.1

以下に参考までに書きますが、これではまだ合格点は出せません。 以下のプログラムを改良して、完璧なものに仕上げて下さい。 100 DIM a(5) 200 FOR k=1 TO 5 300 INPUT a(k) 400 NEXT k 500 FOR j=1 TO 5 600 LET s=MOD(a(j),2) 700 IF s=0 THEN 1000 800 NEXT j 900 PRINT "なし" STOP 1000 PRINT "あり" END

shibaken16
質問者

お礼

ご回答ありがとうございます。 やはりこの組み方では、偶数が出た時点で1000にstepしてしまうので、 全部を入力した上で判定ができないということで完璧ではないのでしょうか。 参考にさせていただき、 自分で改良してみたいと思います。 ありがとうございます。

関連するQ&A

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

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

  • 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での文字列操作

    いつもお世話になっております。 ActiveBasicを使いBasic(http://ja.wikipedia.org/wiki/BASIC) の勉強をしております。下記の動きをするプログラムを作りたい場合はどうすれば良いでしょうか? 便利な関数や方法がありましたら教えてください。 お願いいたします。 ユーザが入力した数の分だけザイズ11の配列を作成し 例:ユーザが3と入力したら Dim x$(3)[11] 作成した配列に文字列を入れていき x$(0)="文字列01|01" x$(1)="文字列02|02" x$(2)="文字列03|03" 画面に文字列を奇数番目なら"|"から前の文字列を表示 偶数番目なら"|"より後の文字列を表示する 文字列01 02 文字列03

  • active basic

    active basicを使ってifと繰り返しと足し算、引き算(掛け算、割り算は使用不可)の3つを使って以下のプログラムの作り方を教えてください。 「正の整数を入力してください」とまず表示し、その数が奇数なら「奇数です」と表示しもし偶数なら「偶数です」と表示。これが一回終わるともう一度「正の整数を入力してください」と表示し偶奇の判定をさせる。これを続けさせる。 以上のプログラムの仕方を至急教えていただきたいです。よろしくお願いします。

  • Excellでの関数の作り方

    今、こんな関数を作りたいと思っているんですけど… 値を入力 ↓  ↓ 偶数 奇数 | ↓ ↓3倍して1加える 2で割る ↓ ↓ 偶数奇数 偶数奇数 : : : : : : : : : : : : 1(いわゆる「角谷の予想」です) 意味分かるでしょうか?こういう関数です。ご教授願います。

  • エクセルマクロ配列で変数は使えますか

    エクセル2013です。 初めて配列を使います。 以下のように作成し思ったようにできました。 Sub 計算() '成功 Dim a As Integer Dim c As Integer Dim b(5) As Integer Dim 最終行 Dim 値列  値列 = 17 最終行 = Cells(Rows.Count, 1).End(xlUp).Row For 処理業 = 1 To 最終行 For a = 1 To 5 b(a - 1) = Cells(1, 値列) 値列 = 値列 + 1 Next 値列 = 17 For a = 1 To (22 - 値列) c = c + b(a - 1) Next Cells(処理業, 30) = c a = 0 c = 0 Next 処理業 End Sub ただ計算する列の範囲をインプットボックスで入力した値 にしたい為以下のように改造しました。 Dim b(対象列) As Integerでエラーになります 配列には変数は使用できないのでしょうか? よろしくお願いします。 Sub 計算() '失敗 Dim a As Integer Dim c As Integer Dim b(対象列) As Integer’★ここでERRになる Dim 最終行 Dim 対象列 Dim 値列  対象列 = 22'インプットボックスで入力した値 値列 = 17 最終行 = Cells(Rows.Count, 1).End(xlUp).Row For 処理業 = 1 To 最終行 For a = 1 To (対象列 - 17) b(a - 1) = Cells(1, 値列) 値列 = 値列 + 1 Next 値列 = 17 For a = 1 To (22 - 値列) c = c + b(a - 1) Next Cells(処理業, 30) = c a = 0 c = 0 Next 処理業 End Sub

  • C++のフローチャート

    が分からないんですが、 ある整数変数aの値が偶数の場合『変数aの値は偶数です』と表示させて、奇数の場合は『変数aの値は奇数です』と表示させる テストの点数が格納されている変数xの値が45以上ならば、『合格です』と表示させて、45未満ならば『不合格です』と表示させる。 ある整数変数aの値が偶数の場合は『変数aの値は偶数です』と表示させて、奇数の場合は『変数aの値は奇数です』と表示させる。ただしaが負の場合、奇数偶数の判断をせず、『変数aは負です』と表示させる。 これ教えてもらえませんか? フローチャートだから枝分かれの矢印を作ってやるんですが。

  • 配列

    最後にもう一つだけお願いします。ずっと格闘しても解決できません・・ 配列の中の数字で、偶数を全て奇数の前にもって行きます 例) {1,0,1,0,0,1,1} → {0,0,0,1,1,1,1} {3,3,2} → {2,3,3} {2,2,2} → {2,2,2} 流れとしては、まず奇数の数を数えます。これは何回シフトするから知るためです。 配列0から奇数を探し、あればそれを一番最後の配列へとシフトします。 奇数を探す作業が一度終わっても、まだシフトさせないといけない奇数があるかもしれないので(奇数が連続で並んでる場合)、最初に数えた奇数の数分だけちゃんとシフトするようにしようと思います。 public void evensLeft(int[] array) { int odd=0; for (int i = 0; i < array.length; i++) { if(array[i]%2!=0) odd++; //奇数の個数 } while (odd>0) { //奇数分シフトするためのカウント for(int j=0;j<array.length;j++){ //奇数を探す if (array[j] % 2 != 0) { odd--; //奇数のカウントを1減らす for (int k = j; k < array.length-1; k++) { //その奇数を一番最後に移動 int temp = array[k+1]; array[k+1] = array[k]; array[k] = temp; } } } } return array; } いくつかの例では動くのですが、{3,3,2}の例だと配列0に3が来てしまいます。色々変えてみても結果無理でした・・・ どなたかご教授お願いします。

    • ベストアンサー
    • Java
  • 数学のBasicなのですが・・。

     数学のコンピューターを独学でやり始めたのですが、分からないことがたくさんあって、頼れる人がいなくて質問したのですが、  配列変数とかいうのがよく分からなくて、   DIM 変数名(n)  っていうのは、番号つき変数を0からn番まで用意するということは分かりました。  ○配列変数→大量のデータを一気に出力という題目のところがありまして、  ■N個の数値を入力して、逆の順序で出力するプログラム  10 INPUT ”データ数”;N  20 DIM A(N)  30 FOR K=1 TO N  40 INPUT ”データ”;A(K)  50 NEXT K  60 FOR K=1 TO N  70 I=N+1-K  80 PRINT A(I);  90 NEXT K  100 END  で まず、 10行目はデータ数って書いてあって、40行目はデータと書いてあって、その違いが分かりません。    それとFOR~NEXT文は挟まった動作を繰り返すんですよね!?  で、60行目と90行目は2文挟まっているのですが、この2文とも繰り返すということなのでしょうか?  分かってる方にとってはくだらない質問と思いますが、どうか教えてください。  お願いします。

  • 例外処理について

    続けて質問です…すみません; public class OddEven { private static boolean even(int k) { return k/2*2 == k; } public static void main(String[] args){ int l; int m=0; int n=0; try{ for(l=0;l<args.length; l++) { int a = Integer.parseInt(args[k]); if(even(a)) { m++; } else{ n++; } } }catch (NumberFormatException e) { System.out.println("<" + e + ">"); } System.out.println("Even = " + m); System.out.println("Odd = " + n); } } とし、例えば「1 2 3 a 5」の中の偶数奇数の個数を判定すると、奇数が2個、偶数が1個となり、例外処理されたaの後の5が奇数にカウントされないのですが、どのように修正すればよろしいのでしょうか?

    • ベストアンサー
    • Java