• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件式について)

C言語の条件式についての問題

Wakkey-sanの回答

回答No.1

具体的に、どんな処理結果を求めているのかがわかりません。 ご質問の内容は、他人から見れば  timeが2000以上であれば「条件1」を実行し、  その次に配列aのi番目の値が配列aの(i-1)番目と等しければ条件2を実行。  timeが2000未満であるなら条件3を実行。 という内容のプログラムにしか見えないはずです。 省略されている部分でaのi番目の値が配列aの(i-1)番目の値は等しくなるような処理が入っていますか? iは1から始まる値ですか?(0から始まるような値であればメモリのとんでもないところを参照することになりますが)

ryozeal
質問者

補足

非常におおざっぱな記述でした。もう少し詳しく書きます。 現在扱っているプログラムはモータの駆動プログラムです。 配列aにはモータのエンコーダ値が入りますので、モータが駆動すると同時に配列aのエンコーダ値は増え続けます。このプログラムはエンコーダ値でモータが駆動しているかを判断し、エンコーダ値が変化がない、つまり直前の値と変わっていない場合は、条件2を実行するというものです。 もちろん、a[0]には初期値を与え、iは1からスタートします。 さきほどの内容にコメントを付け加えます。 if(time>=2000){ 条件1; // モータ駆動の指令 if(a[i] == a[i-1]) 条件2; // エンコーダ値が変化しない、つまりモータが外力によって停止したら、現在の位置で待機 }else{ 条件3; // timeが2000以下の場合、現在の位置で待機 } となります。 なお、「>=」で試したと書きましたが、 if(a[i]>=1000) 条件2; というように、配列a(エンコーダ値)が1000以上になったら条件2を実行として確認しました。その場合は条件文のとおり1000以上になった時点で条件2を実行することができています。

関連するQ&A

  • プログラミングソースコード(アルゴリズム)の条件分岐の記述の仕方

    C言語始め擬似言語等プログラムで条件分岐はif~else以外にないのでしょうか?3つ以上に分岐する場合どのように記述するのでしょう?

  • 条件演算子 ? :

    条件演算子 ”?:”をつかってif分と同じようなことができると知りました。 c = (a>b) ? a : 0 ; というようにスルのですが、ふと、条件に満たない場合はそのまま、という場合にはどう記述したらいいのかわかりません。ためしに c = (a>b) ? a : c ; としてみました。これで正しく動作したのですが、 //(a<=b)のときは c = c ; ということになるんですよね。これってなんとなく”無駄”な感じがします。 if文でいうと、"else"を記述しない場合の書き方で、スマートなものはないでしょうか?

    • ベストアンサー
    • Java
  • 条件式について

    お世話になります。 if (n == "aaaa"){aaaaに関する条件式; } else if (n == "bbbb"){bbbbに関する条件式; } else if (n == "cccc"){ccccに関する条件式; } とある場合、n に「aaaa」、「bbbb」、「cccc」以外の 不特定の文字列が入った場合の記述方法を教えてください。 よろしくお願い致します。

  • if文の条件式の書き方について

    現在VC++2005でプログラムを作成しています。 そこであるテキストファイルをテキストボックスに表示してからその表示されている内容の1行目をif文を使って判断するというものを作っています。 そこで、質問なのですがif文の条件を作るときに文字列として条件を入れたい場合はどのようにしたら良いのでしょうか? 現在は7:00ならばというものなのですが、読み込んだ文字列に7:00以外のものが入っていてもそのまま判断されてしまうのできっと条件式のところが問題だと思うのですが。 下に作成中のコードを書きますので、良かったらご教授お願いします。 ********************************************************* String^ ss; ss=textBox3->Text; ss=textBox3->Lines[0]; textBox5->Text=ss; String^ time; time=textBox5->Text; if (char time='7:00'){ MessageBox::Show("7時"); } else { MessageBox::Show("ミス"); } **********************************************************

  • 条件式の省略

    if文の条件式の中を省略したいと思っています。 for(i=0;i<5;i++){ if(p[i][0]==a[0]||p[i][0]==b[0]||p[i][0]==c[0]||p[i][0]==d[0] ||p[i][1]==a[0]||p[i][1]==b[0]||p[i][1]==c[0]||p[i][1]==d[0] ||p[i][2]==a[0]||p[i][2]==b[0]||p[i][2]==c[0]||p[i][2]==d[0] ||p[i][3]==a[0]||p[i][3]==b[0]||p[i][3]==c[0]||p[i][3]==d[0]){ continue; }else{ a[1]=p[i][0]; b[1]=p[i][1]; c[1]=p[i][2]; d[1]=p[i][3]; } ifの条件式の中のp[i][1]~p[i][3]を省略したいのですが、どうやったらできるかわかりません。ぜひ教えてください。

  • if [ 条件式 ]とif[[ 条件式 ]]

    シェルスクリプトでのif [ 条件式 ] と if [[ 条件式 ]] の違いについて教えてください。 以下のシェルスクリプトを実行すると、 意図したとおり、111 と出力されます。 =========▼▼(ここから)▼▼========= #!/bin/sh AAA=yes if [[ "$AAA" = [yY]* ]] then echo 111 else echo 222 fi =========▲▲(ここまで)▲▲========= 上記、スクリプト3行目の if [[ "$AAA" = [yY]* ]] の部分を if [ "$AAA" = [yY]* ] というように、角カッコ 1重にすると、 エラーは発生しませんが、 222と表示されます。 if [ 条件式 ] と if [[ 条件式 ]] の違いについて教えていただけないでしょうか。

  • 条件分岐(if)について

    条件分岐(if)についてお聞きしたことがあります。 例えば if($a == 'A' || $a == 'B'){ 処理 }else if($a == 'C' || $a == 'D' || $a == 'E'){ 処理 }............... といった条件分岐があったとて、お聞きしたいことが2点あります。 ・条件分岐この後も数十個続いたとします。その場合もelse ifで一つ一つ 条件を書かなければならないのでしょうか? ・条件式if($a == 'A' || $a == 'B'....)が長くなる場合プログラムが見にくくなるので 別途に条件式を書いておいてif文の所では($a == ◯)といったように簡潔に書くことは できないのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • VBAで条件式について

    EXEL(VBA)で例えば、A列のデータが入っている行までの中で数値(x)が  x<2 ならばセルに色をぬる。そして空白セルと x>2ならば色をぬらない。 という条件式は、どうしたらいいのですか? Sub InteriorColor() For j= 5 to 21 worksheets(j).activate For i = 1 to 40 '30から40行ぐらい While cells(6+i,6)<>"" If(cells(6+i,6).value<2) Then ’6列7行目から  with selection.interior .Colorindex=45 .patern=xlsorid End with Wend End if Next i Next j End sub ということを連続していない列(5列ぐらい)に対してします。 同じ命令文になる部分もあるので簡潔にしたいという希望もあります。 上部の命令では無限ループの可能性があり実行が止まりません。 どのように記述したらいいのですか? また、同じブックのシート25枚のうち5枚目から21枚目に対して処理します。 5から21までのシートの間で関係ないシートが7枚目と10枚目と15枚目にあります。それを省いての処理もあれば教えてください。

  • 条件式

    お世話になります。初心者です。条件式について、知恵をお借りいただきたく、投稿しました。 サンプル ------------------------------- for i= 1 to 100 if i =x then Call *** next ------------------------------- 1)この”X”部分の記述法がわかりません。 2)させたいことは次です。 ・ある動作を100回ループさせる。 ・"i"が10増えるごとに、あるスクリプトを呼び出す よろしくお願いします。

  • エクセルマクロ 条件分岐 条件に合わない列は削除

    マクロ初心者です。 添付のようなデータが30000万行位ありますが、 1)セルAの値が16またはRFの場合はその行のデータをすべて残します 2)セルAの値が上記以外の場合はその行をすべて削除したいのですが 私なりに調べて次のようなマクロを記録しました。 Sub macro1() Dim i As Integer For i = 1 To 30000 If Cells(i, 1).Value = "16" Or Cells(i, 1).Value = "RF" Then Cells(i, 1) = Cells(i, 1) Else Rows(i).Delete End If Next i End Sub 1)の部分は何とか動いてくれているみたいですが 2)の条件に合わない行の削除の記録がぜんぜんだめみたいで途方に暮れています。 わかる方がいらっしゃいましたら是非ご教授願います。