2009-07-30 9 views
-7

プログラムを実行しようとすると、エラーが発生します。この動作を引き起こしている可能性が何なぜこのC関数は整数値を返しませんか?

int choi(char *Tvide[48])//permet de choisir la place selon les choix de l utilisateur 
{ 
    char fum, classe, pos; 

    printf("\n S.V.P choisissez votre Classe (A:1 ere classe)/(B: 2 eme classe): "); 
    classe = getche(); 
    printf("\n Est ce que vous etes fumeur (O:fumeur)/(N:non fumeur):"); 
    fum = getche(); 
    printf("\n S.V.P vous preferez s''assoir pres de la fenetre ou du couloir(C:couloir)/(F:fenetre):"); 
    pos=getche(); 

    int Tfum[24] = {3,4,7,8,11,12,15,16,19,20,23,24,27,28,31,32,35,36,39,40,43,44,47,48}; 
    int Tnfum[24] = {1,2,5,6,9,10,13,14,17,18,21,22,25,26,29,30,33,34,37,38,41,42,45,46}; 
    int Tfen[24] = {1,4,5,8,9,12,13,16,17,20,21,24,25,28,29,32,33,36,37,40,41,44,45,48}; 
    int Tcol[24] = {2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31,34,35,38,39,42,43,46,47}; 
    int k; 

    char Tdispo[48]; 

    for(k=1; k<=48; k++) { Tdispo[k]='o'; } // on met içi le tableau des places vides 

    if (classe=='A') 
    { 
     for(k=9;k<=48;k++) { Tdispo[k]='n'; } 
    } 
    if (classe=='B') 
    { 
     for(k=1;k<=9;k++) { Tdispo[k]='n'; } 
    } 
    if (fum=='O') 
    { 
     for(k=1;k<=24;k++) { Tdispo[Tnfum[k]]='n'; } 
    } 
    if (fum=='N') 
    { 
     for(k=1;k<=24;k++) { Tdispo[Tfum[k]]='n'; } 
    } 
    if (pos=='C') 
    { 
     for(k=1;k<=24;k++) { Tdispo[Tfen[k]]='n'; } 
    } 
    if (pos=='F') 
    { 
     for(k=1; k<=24; k++) { Tdispo[Tcol[k]]='n'; } 
    } 

    int s; 

    printf("Les places disponibles sont:"); 

    for(s=1; s<=48; s++) 
    { 
     if(Tdispo[s] == 'o') { printf("%d",s,"~"); } 
    } 

    int ch; 
    printf("\n S.V.P introduire votre choix :"); 
    scanf("%d",ch); 

    Tvide[ch]=='n'; 
    int ch1 = ch; 
    return ch1; 
} 

:私は「ch」の最後の値を読み取ることができませんか?

+1

この投稿を少しフォーマットしてみてください。 – senfo

+1

コメントアウトしたコードは投稿しないでください。依然として問題を呈する最小限の自己完結型プログラムを投稿する。該当する場合は標準のC関数を使用するか、コンパイラ/プラットフォームの組み合わせを指定してください。 –

+2

解決しようとしている問題を簡素化すると、役に立つ回答が得られる可能性は非常に高いです。具体的には、問題をできるだけシンプルにするように煮詰めます。あなたがしようとしていること、起こっていることが何であるか、あなたが実際に見ていることを説明してください。ほとんどの人はあなたの連鎖を見て、戻るボタンをクリックして別の質問に移ります。 – jason

答えて

6

scanf関数の結果はchという名前の変数にを格納されますので、あなたは

scanf("%d",&ch); 

ない

scanf("%d",ch); 

を持つ必要があります。

0

主な問題は、Cが0ベースの配列を使用することです。サイズ24の配列は0から23までアクセスされますが、1から24までアクセスするため、最後のアクセスは配列の外にあります。

関連する問題