【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19907

会社の課題:繰り返し
投稿者---C学習初心者(2005/02/14 12:01:44)


こんにちはご質問です。
 途中まで自分でやったのですが、1箇所わからないので、どなたかご教授いただけないでしょうか?
 選択肢が1から3まであるのですが、3が入力されるまで繰り返しが続くというものです。 例えば選択2−>選択1−>選択2−>選択1→選択1→選択3(終了!)です。
 この繰り返しがswitch文、while文でいろいろやったのですがうまくいかなかったのでご質問させていただきました。 いろいろ消したり書いたりしてますが試行錯誤したということです。

#include<stdio.h>
#include<stdlib.h>
int main(void){

 int k,l,m, n, o;
 int data[10] = {3, 2, 76, 4, 56, 89, 12, 100, 1, 5};
 printf("data[10] =");
 for(k=0;k<10;k++)
    printf("%d,",data[k]);
    printf("\n");
 
 printf("select NO [1-3] >");
 
 scanf("%d",&m);
 //switch(m){
  while (1) {   
    if(m == 3)
         break;
  //case 1:
    else if(m == 2 ){
    printf("data[10] =");
    for(l=0;l<10;l++)
    printf("%d,",data[l]+1); printf("\n");
    printf("select NO [1-3] >");
 
     scanf("%d",&m);

    }

  //case 2:
    else {  
    printf("input[0-8] > ");
    scanf("%d", &n);
    printf("data[%d] = %d, data[%d] = %d\n",n,data[n],n+1,data[n+1]);
    printf("select NO [1-3] >");
 
    scanf("%d",&m);
    }
    
  //case 3:
    
//printf("select NO [1-3]");
    //exit(0);
  //scanf("%d",&o);
    //default:
    //printf("");
  //}
 }
 return 0;
}
    



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:会社の課題:繰り返し 19908 南野骨茶 2005/02/14 12:24:25
<子記事> Re:会社の課題:繰り返し 19909 とと 2005/02/14 13:09:20
<子記事> Re:会社の課題:繰り返し 19910 REE 2005/02/14 13:15:07
<子記事> Re:会社の課題:繰り返し 19911 C学習初心者 2005/02/14 13:21:24


No.19908

Re:会社の課題:繰り返し
投稿者---南野骨茶(2005/02/14 12:24:25)


>こんにちはご質問です。

私のようなひねくれた人間からすると、
ここは「学校の」課題の「丸投げ」を禁止している、ならば
「会社の」課題の「一部」ならばOKだろうということで
こういった投稿をなさっているように見受けられます。


この投稿にコメントする

削除パスワード

No.19909

Re:会社の課題:繰り返し
投稿者---とと(2005/02/14 13:09:20)


>こんにちはご質問です。
> 途中まで自分でやったのですが、1箇所わからないので、どなたかご教授いただけないでしょうか?

1箇所ってどこですか?



この投稿にコメントする

削除パスワード

No.19910

Re:会社の課題:繰り返し
投稿者---REE(2005/02/14 13:15:07)


会社の課題であれば、出題者に聞いて下さい。




この投稿にコメントする

削除パスワード

No.19911

Re:会社の課題:繰り返し
投稿者---C学習初心者(2005/02/14 13:21:24)


>すいません。自分でもわかっていてご質問させていただきました。出題者は基本なので質問は原則受け付けないとのことなので。

 一箇所わからない点とは、つまり(条件付で=選択肢3の時終了)何回もループできるということです。(選択肢2・3の時)


この投稿にコメントする

削除パスワード

No.19912

Re:会社の課題:繰り返し
投稿者---おじゃす(2005/02/14 13:25:15)


あなたのプログラムを少し変えると
こんな感じになるんじゃないの?

#include <stdio.h>

int main(void){

 int k,l,m,n;
 int data[10] = {3, 2, 76, 4, 56, 89, 12, 100, 1, 5};
 printf("data[10] =");
 for(k=0;k<10;k++)
     printf("%d,",data[k]);
 printf("\n");
 
 while(1){
      printf("select NO [1-3] >");
      scanf("%d",&m);
      if(m==3)
          break;
      if(m == 2 ){
          printf("data[10] =");
          for(l=0;l<10;l++)
              printf("%d,",data[l]+1);
          printf("\n");
      }

      else {
          printf("input[0-8] > ");
          scanf("%d", &n);
          printf("data[%d] = %d, data[%d] = %d\n"
              ,n,data[n],n+1,data[n+1]);
      }
  }
  return 0;
}
    





この投稿にコメントする

削除パスワード

No.19914

Re:会社の課題:繰り返し
投稿者---C学習初心者(2005/02/14 14:10:22)


>おじゃすさん返信ありがとうございます。早速ソースを拝見させていただき、その後コンパイラさせていただきました。if,else if ,elseに変更したり、continueを追加してみたりしましたがダメでした。(選択肢1と押すと処理後、自動的に選択肢2が出てきて、結局それで処理が自動的に終了になってしまうということです。)
おかしいなと思いながら、do{}while();を使いましたがやっぱりダメでした。(参考に下に添付してあります。)
 いったいどうしたら正常なループ(例:選択肢1−>処理後ー>選択肢1を選択できまた処理し、さらに選択肢を選べる)ができるのでしょうか?


#include <stdio.h>

int main(void){

 int k,l,m,n;
 int data[10] = {3, 2, 76, 4, 56, 89, 12, 100, 1, 5};
 printf("data[10] =");
 for(k=0;k<10;k++)
     printf("%d,",data[k]);
 printf("\n");
 do{
      printf("select NO [1-3] >");
      scanf("%d",&m);
      if(m == 1 ){
          printf("data[10] =");
          for(l=0;l<10;l++)
              printf("%d,",data[l]+1);
          printf("\n");
      
      }

      else {
          printf("input[0-8] > ");
          scanf("%d", &n);
          printf("data[%d] = %d, data[%d] = %d\n"
              ,n,data[n],n+1,data[n+1]);
        
      }
 }while(m != 3);
      
      
      
  
  return 0;
}




この投稿にコメントする

削除パスワード

No.19913

Re:会社の課題:繰り返し
投稿者---通りすがり(2005/02/14 13:37:38)


基本形はこんな感じですかね。

#include<stdio.h>

int main(void){

  int m;
  
  while (1) {   
    printf("select NO [1-3] >");
    scanf("%d",&m);
    if (m == 1) {
      printf("input:1\n");
    } else if (m == 2) {
      printf("input:2\n");
    } else if (m == 3) {
      printf("input:3->break\n");
      break;
    } else {
      printf("error input[1-3]\n");
    }
  }

  return 0;

}



この投稿にコメントする

削除パスワード

No.19918

Re:会社の課題:繰り返し
投稿者---C学習初心者(2005/02/14 14:34:45)


>基本形をご提示していただいたおかげで無事解決できました。
>ありがとうございます。
>自分の作ったソースとおじゃすさんが送ってくださったソースなどを基本形と見比べif文を細かめに書くことによってエラーが消えました。
>でもなぜおじゃすさんのソース(上のソース)ではうまく実行できないんでしょうか?そこが謎です。
>もしよろしかったらどなたか教えていただけませんか?
>
>


この投稿にコメントする

削除パスワード

No.19920

Re:会社の課題:繰り返し
投稿者---しろねこ(2005/02/14 14:54:52)


ただたんに、mが1のときと2のときの処理が逆になってるだけでは?
原因はあなたの一番最初のコードだと思いますが。


この投稿にコメントする

削除パスワード

No.19921

Re:会社の課題:繰り返し
投稿者---とと(2005/02/14 14:59:49)


今後のためにも、デバッグすることを覚えられたほうがいいかと
どこがおかしいのか、printfで、内容出力するとか
いろいろ手段はあります。


この投稿にコメントする

削除パスワード

No.19924

Re:会社の課題:繰り返し
投稿者---C学習初心者(2005/02/14 15:29:03)


>ありがとうございます。printfを使ってデバッグですか。これからは積極的にやってみます。
>いっていたとおり一番上のソースは間違っていました。
>ちなみにwhileとswitchを使う一番上のやつも無事できました。(結局3通りできました!)


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧