• 締切済み

C言語 ループ

本当にこんな稚拙なプログラムで申し訳ないのですが、画像のr==1となってwhile以下をやりなおすときに、なぜかfor以下に入りません・・・ どなたか、アドバイスくれると助かります・・・ こんな冗長な記述で申し訳ありません ※特に問題とするのはなぜ二回目はwhile以下うまくループできないか、なので配列に代入しているものや、未知の関数は正しく作動しているものと考えてください。 なお、わかりやすいように、それぞれのスクショの一番下の行を選択してスクショしました。 一枚目は元のプログラムとその実行結果です。

みんなの回答

  • black2005
  • ベストアンサー率32% (1968/6046)
回答No.2

顕微鏡使っても見えん

  • yomyom01
  • ベストアンサー率12% (197/1596)
回答No.1

>それぞれのスクショの一番下の行を選択してスクショしました こんなの読めるか

関連するQ&A

  • C言語 ループ 詳細ver.

    本当にこんな稚拙なプログラムで申し訳ないのですが、以下のプログラムでr==1となってwhile以下をやりなおすときに、なぜかfor以下に入りません・・・ どなたか、アドバイスくれると助かります・・・ while(r==1){ z=spaces(); /*ここは~をカウントするものだと考えてください*/ y=rnd(&min,&z); printf("%d\n%d\n",z,y); for(i=0;i<hl;i++){ for(j=0;j<vl;j++){ if(A[i][j]=='~'){ /*二次元配列の中にある~である場合xをカウントアップしていきます*/ x++; if(x==y){ /*動作は省きます*/ r=occhl(&i,&b,&cp); if(r==1){ printf("%d\n",r); } } } } } }

  • C言語のプログラムについて

    C言語のプログラムについて 3桁の自然数の中で、自分自身を含めた約数が奇数になるものがいくつあるかを求めるプログラムを作りたいのですが、swich文を使って、6通りの方法で出そうとしていまして、 while 文、 for文、 do while文に加え、 for文のを、1つの関数として独立させたもの、 さらに、for文のを重ループ部分のそれぞれのループに対応して、2つの関数として独立させたもの、 そして、この2つの関数のどちらともをループを用いずに再帰呼び出しを用いたもの の6通りで出したいのですが、swich文を使うところは自力でできたのですが、あとの6つそれぞれのプログラムの組み方がわかりません。 教えていただけないでしょうか?ややこしい書き方をしてすいません・・・。

  • C言語 break実行後の行先について

    いつもこちらで、ご援助頂いております。 さて、今回も趣味のマイコン制御において、ご指導お願い致します。 問い合わせ内容は、while(1)繰返しブロック中にbreakが実行されると、 whileブロックを抜け出るとは、聞いておりますが、その抜け出た後は どの位置までいくのでしょうか? 次にその疑問ソース構文の要点部分を、行番で記述いたしました。 1、void main() 2,{ main関数開始 3、while(1) 4、 {  while(1)の始まり中括弧 5、   for(・・・・・) 6、     {         forにより繰返す実行文 7、      break; 8、     } for文の終わり中括弧 9、   } while(1)の終わりの中括弧 10、}main関数終わりの中括弧 以上、簡単な表記ですが、実行動作の解説を致しますと、 行番6のfor文の繰返しの中にスイッチ入力すると、 breakに進み、結果を表示して停止します。 ここまでは、希望どおりの動作ですから、何ら問題がないのですが、 再度動作させるには、マイコン自体のリセットを 行わないと、同じことが出来ません。 希望の動作では、1個のスイッチを押すことにより, 停止させたり、動作させたりしたいのです。 この時の、breakの働きですが、whileの終わり中括弧行番9番を 抜け出た後は、行番2番と行番3番の間に行くのでしょうか? もし、そうだとすれば、プログラムの流れからは、 停止せずに繰返しの動作になると思います。 ところが、リセットをかけないと動かないので、 main関数外へ抜け出てしまうのでしょうか? これなら、想定の説明が出来ます。 という事で、break後の行先はどうなるのでしょうか? 簡素な質問内容で考査が難しいかと思われますが、 お気づきの範囲内で、アドバイスを頂けるなら大変幸いです。 宜しくお願い致します。     

  • 配列生成される限り、ループしたい

    function arrayxml (){ urlで取得したXMLから、配列を取得 return $hairetu; //戻り値は多次元配列 } $data = arrayxml(); $cnt = count($data); do { for ($i=0; $i < $cnt; $i++) { $data = arrayxml($data[$i][0]); } } while (count($data) > 0); //関数によって配列が作られる限り このスクリプトではループはうまくされません。 $data = arrayxml($data[$i][0]);を--->arrayxml($data[$i][0]);にすると $cnt分ループされますが、do~whileのループはなされません。 関数で配列が生成される限り、do~whileループをさせたいのですが正しい方法を教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • C言語プログラム

    こんな課題が出たのですが、さっぱりわかりません。 誰か解る人がいたら教えてほしいです。 1 3+5+7+…+nと奇数の和を求め、和が100を越えたときのnの値を求めて表示するプログラムをdo~whileを使って作成しなさい。 2  キーボードから3つの数を読み込み、最大値を求める処理を繰り返し行うプログラムを、do~whileを使って作成しなさい。繰り返しの終了は、計算のあとで、'S'(1文字)が入力されるまでとし、それ以外の文字では、処理を続行すること。 3  整数型1次元配列kに整数123,456,789をそれぞれ代入し、その内容を表示するプログラムを作成しなさい。 4  文字型1次元配列strに'u'を、'n'、'i'、'x'それぞれ代入し、その内容を文字列として出力するプログラムを作成しなさい。 5  要素数50の整数型1次元配列mの要素すべてに、その添字に対応した0~49の数値を代入し、その内容を表示するプログラムを作成しなさい。 3は #include <stdio.h> main() { int k[3]; k[0] = 123; k[1] = 456; k[2] = 789; printf("%d\n%d\n%d", k[0], k[1], k[2]); return 0; } と解いてみたんですが、やっぱ間違えてますよね?

  • C言語

    以下のC言語のプログラムを教えてください。 お願いします。 (1)標準入力から文字列(2 文字以上)を入力し,文字数を計上すると共に,入力された文字列の逆順に入れ替える処理を実現してください.なお,以下の要件を満たしたプログラムを作成してください. ・ 入力された文字列は,char 型の配列(要素数50)で受け取ること ・ 文字数を計上するcount 関数(引数:配列のアドレス,戻り値:文字数)を定義 し,main 関数より呼び出すこと ・ 文字列を逆順に入れ替えるreverse 関数(引数:配列のアドレス,戻り値:無し) を定義し,main 関数より呼び出すこと ・ 標準出力の処理は,main 関数で記述すること 【プロトタイプ宣言】 int count(char *str); void reverse(char *str); 【実行結果】 文字列を入力してください(2 文字以上) apple 文字数 = 5 入れ換え前 apple 入れ換え後 elppa (2)char 型の配列(要素数50)を2 つ宣言し,標準入力から2 つの文字列を入力してください.そして,格納した字列を入れ替える関数(swapstr 関数)を作成し,入れ替え前と入れ替え後の配列内の値(文字列)を配列名とともに標準出力するプログラムを作成してください. 【プロトタイプ宣言】 void swapstr(char *str1, char *str2); 【実行結果】 2 つの文字列を入力してください apple strawberry 入れ換え前 配列str1 = apple 配列str2 = strawberry 入れ換え後 配列str1 = strawberry 配列str2 = apple

  • c++について

    プログラム超初心者です。 int型の配列に空白と1を代入して、for文でループして内容が1のときは"■"を表示するというプログラムを作りたいのですが、大量の数字が出てうまくいきません。例を作っていただけませんか?

  • PHPのループ数限界値について

    PHPのループ数限界値について 宜しくお願い致します。PHP 5.1.6を使用しております。 PHPのforやwhileのループ処理について、限界のループ数というのは存在するのでしょうか? 今作っているプログラムで、約15,000項目の配列と約10,000項目の配列で2重のループ処理しています。 この場合のループ数は15,000×10,000=150,000,000回の繰り返し回数となってしまいます。 しかも、この配列数は今後も増える可能性が高いです。 ループの限界値が何回なのか、教えてください。

    • ベストアンサー
    • PHP
  • 変数をループ内で変更しループ外でも参照したい

    変数をループ内で変更しループ外でも参照したい Linuxのシェルを作成している最中にちょっとした壁にぶつかりました。 元々は以下のような感じの処理でした。 (A)------------------ FLAG=false awk "(NR>=2){print}" ${FILE} | while read LINE_STR do if […]; then FLAG=true fi done -------------------- 状況によってFLAGの値を変更し、あとの処理で FLAGの値に応じて異なる処理を行ないます。 で、少し調べたところパイプすると別プロセスになるので云々と あったのでループの前の定義でも中でも「export FLAG」と 書いてみたのですがダメでした。そういうもんじゃないのかと。 元々は、最初の1行は読み飛ばしたいという要望を持っていたので このような記述だったのですが、少し不本意ですが、 読み込むファイルの1行目も処理対象に含めることにした上で 以下のような記述に変更したところ一応動きました。 (B)------------------ while read LINE_STR do FLAG=true done < ${FILE} -------------------- 対処療法として今はこのようなコードにしましたが完全ではありません。 今自分の知識の中で実現可能な方法だと以下のような感じです。 ・フラグファイルを使用する ・1行読み飛ばした一時ファイルを作成しそれを使う ・読み込むファイルの仕様を変更し1行目のヘッダを削除する ・(B)の方法で読み込み、ループ内でカウンタを持ち、最初だけ  continueする どれでも一応実現は可能ですが、エレガントではありません。 そこで質問することにしました。 以下のどちらかもしくはそれ以外で私の希望を実現する方法を 教えてください。よろしくお願いします ・パイプを使用したループでループ内で変更した変数の値を取得する方法  ※(シェルの制約で出来ないのであれば、その旨を知りたいです) ・パイプを使用せず、1行読み飛ばす方法 ※そもそも1行読み飛ばす方法で 「awk "(NR>=2){print}" ${FILE}」 と書いていますが、これは妥当でしょうか? よりよい記述があればあわせて教えてください。 よろしくお願いします。

  • C言語のファイルの読み書き

    以下のようなプログラムを作成したいのですが、どうしても作成できません。 さまざまなサイトを参考にしたのですが、まったく理解できませんでした。 具体的なプログラム式をご教授願います。 よろしくおねがいします…。 1)複数の学生の情報を読み取り配列を行う struct student a [LIST_SIZE_A] 2)配列に代入した情報をファイルに書き込む fopen("…","w"); … fclose() 3)配列に代入した情報をファイルに追加する fopen("…","a"); … fclose() 4)ファイルの内容を表示する fopen("…","r")

専門家に質問してみよう