- ベストアンサー
変数のリセット方法とループからの抜け方
ohkawa3の回答
- ohkawa3
- ベストアンサー率59% (1388/2331)
回答でなくて申し訳ありませんが、 C言語プラグラム中の“WHILE文”なのでしょうか?
関連するQ&A
- perl:ループのカウンタ変数の値を保持したい。
While文のループのなかにfor文でループをまわしているスクリプトなのですが、 forの中でカウンタ変数をつくり、ループ回数を計測しております。 またforの中である条件を満たした際に、lastでforを抜け、引き続きWhileのループを継続するという処理をしております。 $i=0; While(○○){ 処理1 for(××){ 処理2 $i++; if($i >=100){ 処理3 last; } } } ここで、一度for文のif文で一度forループを抜け、Whileでループをし、またforループに突入した際に、前回forループでカウントした$iの値を保持したまま、そのつづきから$iのカウンタを動作させたいのですが、$iの値はforループを抜けるとリセットしてしまいます。 このような場合、どうすれば$iの値を保持できますでしょうか。 お詳しい方、宜しくお願い致します。 ※ネストがうまく表現できず、みずらくてスミマセン。
- ベストアンサー
- Perl
- Jump文について
main(){ char a[80]; int i = 0; --------------------------------------------------- while(1){ printf("文字を入力してください>"); scanf("%s" , a); if(a == "end"){ i++; break; } i--; } ---------------------------------------------------- printf("%d" , i); return; } -----でかこった部分になりますが、 変数aにendが入力されると、ループをぬける処理を作ろうと思うのですが、 endを入力しても、ループからぬけることができません。 ループから抜けられない原因として考えられるのが、aの初期状態に何か問題が あるのではと思われます。 以上、宜しくお願い致します。
- 締切済み
- C・C++・C#
- 未初期化変数の扱い方についての質問
Microsoft Visual C++ 2008を使用しています。 #include <stdio.h> int main() { float a; … for(;;) { … scanf("%f",&a); … printf("%f",a); } } このようなプログラムを書いて、実行しました。 aという変数に数字を入力すれば問題ないのですが、誤って文字を入力してしまうと、-107374176という値が連続で出力されます。(for文のループが無限に繰り返される。) for文ではあるキーワードを入力するとループから出るというプログラムになっています。 間違って文字を入力する時にどの文字を入れても必ず、-107374176の値になるので調べたら、「-107374176は0xccccccccでvcのデバッグビルド時の未初期化変数の値と一致する。」という内容をネットで見つけました。 変数として定義されていて、初期化されていない変数を未初期化変数ということなので、aが未初期化変数になるのはわかるのですが、なぜループが無限につづくのかが理解できません。 質問の回答をよろしくお願いします。
- 締切済み
- C・C++・C#
- マキノ KE-55 変数の取り扱いについて
NC初心者です。 マキノKE-55についているFUNUC 20-FAを使っています。 溶接材(70×150mm 厚さ9mm)の開先30°を加工しようと思っています。 YZ平面を直線補間G1で削ろうと考えています。 X方向は変数を使って、0.1mmずつ送っていこうと思っています。 以下のようなプログラムを考えました。 使っている工具は80mmのフルバックです。 ワーク原点はマシンバイスの固定口金右角です。 O0001 G54 G90.0 G0 X20.0 Y45.0 Z10.0; S600; M3; G1 Z1.0; #1=0 WHILE [#1 EQ -180] DO1; G91 Z-7.35 Y-12.7 Z7.35; #1=-#1-0.1; G0 X#1 Y12.7; END1; G90 G0 Z50; M5; X100 Y100; M30; シングルブロックで起動させると、 #1=0 で、「09 アドレス入力に誤りがあります」とエラーになります。 WHILE文をIF分に変更したり、何度も入力を確認したのですが、症状 は同じです。 変数を使わないで、サブプログラムではうまく動いたのですが、PCが接続できないので、操作盤から手打ちで入力しています。0.1mmで送ると1800行も入力しなければいけないので、変数を使って動かしたいのですが、根本的な使い方が間違っているのでしょうか? よろしくお願いします。 また、別の良い加工法があったら教えてください。
- 締切済み
- 切削
- 変数名(配列)の中の変数
配列変数の名前の中に変数を入れたい場合、どのように記述すればいいのでしょうか? use strictを用いて、以下のように書いてみましたが、エラーが出て上手く動きません。 ループ x: 1-3 ループ y: 1-2 ${"answer$x"[$y]}=入力値 ←この部分を教えてください。 ループ閉 y ループ閉 x -------------------- answer1[1] answer1[2] answer2[1] answer2[2] answer3[1] answer3[2] とループを通るように、変数名を設定したいのですが、 エラーが出て実行ができません。 エラー:Can't use string ("answer1") as an ARRAY ref while "strict refs" in use at~ -------------------- 実際のプログラムは以下のように書いています。(該当部分のみ) for(my $x=1; $x<$num; $x++) { for (my $y=0; $y<$n; $y++) { my $y = ($x*$n)+$d; my @line = split(/\r/, $data[$y]); my @line0 = split(/\t/, $line[0]); ${"answer$x"[$y]} = $line0[0]; } } よろしくお願いします。
- 締切済み
- Perl
- ループの特定入力終了
C言語初心者です。よろしくお願いします。 whileなどのループ関数を使って、キーボード 入力をするたびに、ループが一度走る事は、 可能です。ですが、 常にループは走らせながらendなどの特定 の入力をされた場合に、ループを抜ける プログラムをどうしてもできません。 わかる方、教えていただければ幸いです。
- 締切済み
- C・C++・C#
- キーボードから入力される文字を受け取る関数?
VB 2008 でキーボードから入力される文字を受け取る関数の作成は可能でしょうか? Module Main Sub Main() Dim nc As Long nc = 0 While FileSeek("D:\Temp\Test.txt", nc + 1) <> "" nc = nc + 1 End While Debug.Print(nc) End Sub End Module △ While FileSeek("D:\Temp\Test.txt", nc + 1) <> "" ○ While GetChar() <> "" もちろん、GetCharってのはありますので同じ名前では無理。 でも、こういう関数を欲している訳です。 OKWaveに助けられて FileSeek()ってのを作成しました。 が、これはファイルから1文字づつ読む関数。 欲している関数とは違います。 VB 2008Expressをダウンロードし某テキストの例題を初めから演習しています。 なにせ、プログラマでもないのに初めての言語ということで悪戦苦闘です。 そして、今、僅かに3題目。 宜しくお願いします。 なお、コンソールではなくWindowsアプリケーションで演習中です。
- ベストアンサー
- Visual Basic
- このプログラムのフローチャートについて。
フローチャートについての質問です。 main() { この辺に変数宣言 while(1) { 省略 while(1) { 省略 } if(firstletter == '\0') break; printf("ワード数:%d\n",wordnum); } } というようなプログラムでフローチャートを書こうとしたのですが、 これって初めの無限ループを抜ける事がないから 開始→変数宣言→ループ→中略→ループ閉じ で終わってもいいのでしょうか?最後に ・・・→終了 で終わらなくてもいいのでしょうか? でも最後のif文で初めの無限ループを抜けるようになってますよね? ということは「開始→」から始まって最後が「→終了」でいいですよね? もしbreakが無かったら最後が「→ループ閉じ」でOKでしょうか?
- ベストアンサー
- C・C++・C#
補足
FANUCの制御装置のマクロです