新しく質問する

配列とfor文の組み合わせがうまくいきません

役に立った:0件
  • 質問者:moll77s
  • 投稿日時:2008/11/06 19:28
  • 困り度:困ってます

初心者なので質問文でおかしなことを言ってるかもしれませんが
よろしくお願いします
ソースは下に貼り付けました。

コースの数を入力し、そのコースに名前をつけるという
プログラムを書いたのですが
forでcoursename[0]からcoucename[3]までの4つに名前を入力しようと
コース数に「4」を入力しても
forによって繰り返されるのは
coursename[0]からcoucename[2]までの3つでした

どう直せばいいのでしょうか

====================================================
#include <stdio.h>

#define MAX_COURSE 5 /*最大数*/

int main(void){
int course = 0; /*コース数*/
char coursename[MAX_COURSE][100]; /*コース名*/
char line[100]; /*入力用文字型配列*/
int i;


/*コース数の入力*/
while (course < 1 || 5 < course){
printf("コース数の入力を行ってください。(1~5)\n");
printf("INPUT : ");
fgets(line, sizeof(line), stdin);
sscanf(line, "%d", &course);
}

/*コース名の入力*/

printf("コース名の入力を行ってください。\n");
for(i=0; i<course-1; i++){
printf("%d科目 : ", i+1);
fgets(line, sizeof(line), stdin);
sscanf(line, "%s" , coursename[i]);
}

return 0;
}

====================================================

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件
  • 回答者:SAYKA
  • 回答日時:2008/11/06 19:37

forが繰り返されるのは条件式が「真」である間だけ。

iの値と式の結果を表にして 条件が正しいか検証してごらん
なぁに、ほんの0~4までしかないし すぐすぐ


ほんとは いくないんだけど表の最初だけ書いておいてあげるよ

-------------------
course=4

i : i<course-1
---+------------
0 : true

通報する

この回答へのお礼

回答ありがとうございます。
基本的な算数の部分で間違えてました
本当にお恥ずかしい

  • 参考になった:0件

No.3ベストアンサー10pt

  • 回答者:okg00
  • 回答日時:2008/11/06 19:37

for(i=0; i<course-1; i++){

courceが4の場合、for文で条件を満たすのは0,1,2しかないですから当然です。この場合、

for(i=0; i<course; i++){
for(i=0; i<=course-1; i++){
のどちらかとする必要があります。

通報する

  • 参考になった:0件

No.2ベストアンサー20pt

  • 回答者:arain
  • 回答日時:2008/11/06 19:36

>コース数に「4」を入力しても
>forによって繰り返されるのは
>coursename[0]からcoucename[2]までの3つでした
>
for(i=0; i<course-1; i++)
なんだから、courseに「4」を入力したら
for(i=0; i<(4-1); i++)
 ↓
for(i=0; i<3; i++)
となるから、0~2までで正しい。
というか、「1」を入力した時点でおかしいのがわかるはずだし、
他の数で出こまで表示されるかで法則性もすぐにわかるはず。

通報する

  • 参考になった:0件
  • 回答者:asuncion
  • 回答日時:2008/11/06 19:35

>for(i=0; i<course-1; i++){

course-1 と書いているのはなぜですか?
このコードでは、courseが4のとき、iは0, 1, 2の順に変化します。

通報する

この回答へのお礼

回答ありがとうございます
お恥ずかしことに不等号の意味がわかっておりませんでした
以後気を付けます

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ