Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104

    [C] Variabile menefreghista

    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

    codice:
    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];
                    
                   }
            }
    }
    Immagini allegate Immagini allegate
    Ultima modifica di LuLyLuNa; 10-02-2014 a 11:47

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Una array di char ha un terminatore e devi prevedere lo spazio.

    Quindi non

    char ch[1];

    ma

    char ch[2];
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Quote Originariamente inviata da oregon Visualizza il messaggio
    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
    Ultima modifica di LuLyLuNa; 10-02-2014 a 14:26

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    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 ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Quote Originariamente inviata da oregon Visualizza il messaggio
    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?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.