PDA

Visualizza la versione completa : [C] Variabile menefreghista


LuLyLuNa
10-02-2014, 10:42
Buongiorno a tutti,
ho un problema con il mio progetto: una variabile che ha deciso di decrementarsi.

Dall'immagine potete vedere (nelle ultime due righe) che il coefficiente C12 diventa C10. C rappresenta la simpatia tra due invitati identificati con un ID. In particolare C12 rappresenta la simpatia tra ID 1 e ID 2. Quindi l'indice non deve variare.
Vi inserisco il codice perché sono cretina (molto probabilmente!) e non trovo l'errore


double visualizzaSimpatia(){

int IDfirst;
int IDsecond;
char ch[1];
double serviceDouble;


printf("\nInserisci l'ID del primo invitato:");
scanf("%d", &IDfirst);
printf("Inserisci l'ID del secondo invitato:");
scanf("%d", &IDsecond);


printf("\nIl coefficiente di simpatia C%d%d e': %lg", IDfirst, IDsecond, c[IDfirst][IDsecond]);


printf("\nVuoi modificare il coefficiente C%d%d? (Y/N)", IDfirst, IDsecond);
scanf("%s", &ch);

if ((strcmp ("y",ch) == 0) || (strcmp ("Y",ch) == 0)){
again2:
printf("\nInserisci il nuovo coefficiente di simpatia C%d%d:", IDfirst, IDsecond);
scanf("%lg", &serviceDouble);

if(serviceDouble>1.0 || serviceDouble<-1.0){
printf("\nATTENZIONE! Inserire un coefficiente compreso tra -1 e 1\n");
goto again2;

} else {
c[IDfirst][IDsecond]=serviceDouble;
printf("\nIl coefficiente di simpatia C%d%d aggiornato e':", IDfirst, IDsecond);
return c[IDfirst][IDsecond];

}
}
}

oregon
10-02-2014, 13:15
Una array di char ha un terminatore e devi prevedere lo spazio.

Quindi non

char ch[1];

ma

char ch[2];

LuLyLuNa
10-02-2014, 13:24
Una array di char ha un terminatore e devi prevedere lo spazio.

Quindi non

char ch[1];

ma

char ch[2];


non credevo che la gestione del carattere che immette (y o n) potesse modificare l'indice IDsecond!!! thaaaaaaank you

oregon
10-02-2014, 13:34
Succede perché, dato che non hai preparato lo spazio necessario, la scanf scrive nello stack sopra la variabile IDsecond ...

In ogni caso, il problema principale è la gestione degli array di char come stringhe che ti consiglio di rivedere ...

LuLyLuNa
10-02-2014, 19:51
Succede perché, dato che non hai preparato lo spazio necessario, la scanf scrive nello stack sopra la variabile IDsecond ...

In ogni caso, il problema principale è la gestione degli array di char come stringhe che ti consiglio di rivedere ...

potrei utilizzare uno switch per il controllo della scelta input tra Y o N , sarebbe meglio? se no cosa?

Loading