Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: c problema tabelle

  1. #1
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514

    c problema tabelle

    salve a tutti

    il seguente codice mi va in crash dopo l'inserimento del terzo valore
    chi mi sa dire il perchè?

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    struct libro{
    char titolo[50];
    int prezzo;
    };
    
    main()
    {
    libro lib[5];
    int i;
    i=0;
    for(i=0;i<5;i++)
    {
    gets(lib[i].titolo);
    scanf("%d",lib[i].prezzo);
    }
    system("pause");
    
    }
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  2. #2
    il campo prezzo è dichiarato di tipo int

    quindi sostituisci la riga

    scanf("%d",lib[i].prezzo);

    con

    scanf("%i",lib[i].prezzo);

    dovrebbe essere questo.
    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


  3. #3
    Originariamente inviato da m@ximo
    il campo prezzo è dichiarato di tipo int

    quindi sostituisci la riga

    scanf("%d",lib[i].prezzo);

    con

    scanf("%i",lib[i].prezzo);

    dovrebbe essere questo.
    %i che io sappia non esiste

    Gli int si leggono con la direttiva %d come ha giustamente fatto lui

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  4. #4
    prova cosi'...
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    struct libro{
    char titolo[50];
    int prezzo[50];
    }lib;
    
    int main()
    {
    int i;/*nn c'è bisgono che poni i =0,perchè lo fai dentro al for dopo */
    
    //leggo il titolo
    gets(lib.titolo);
    
    //leggo il prezzo che deve essere lungo 5 cifre...
    for(i=0;i<5;i++)
       scanf("%d",&lib.prezzo[i]);
    
    system("pause")
    
    }
    Oltre ad aver modificato un po il codice,sul tuo leggevi l'i-esimo valore dell'array titolo con una gets che invece non necessita(anzi è propio errore :F) di un for perchè acquisisce direttamente tutto l'array di valori.

    Per il prezzo che invece un array di int lo leggi tramite for

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  5. #5
    Originariamente inviato da andrea_NET-_DSL
    %i che io sappia non esiste

    Gli int si leggono con la direttiva %d come ha giustamente fatto lui



    Non sono molto pratico di C, ma penso esista anche se credo sia più giusto usare %d come avete detto.

    Inoltre andrea_NET penso volessi scrivere

    scanf("%d",lib[i].prezzo);

    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


  6. #6
    Originariamente inviato da m@ximo
    Non sono molto pratico di C, ma penso esista anche se credo sia più giusto usare %d come avete detto.

    Inoltre andrea_NET penso volessi scrivere

    scanf("%d",lib[i].prezzo);

    ah io il %i sapevo fosse solo per esadecimali e ottali(e non per integer)...meglio una cosa in + che so

    Per lo scanf va bene come ho fatto(guarda il codice da me modificato...non quello originario),l'array è prezzo e no lib(lib è solo il nome della struct).

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  7. #7
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    struct libro{
    char titolo[10];
    int prezzo;
    };
    
    main()
    {
    fflush(stdin);
    libro lib[5];
    int i;
    i=0;
    
    fflush(stdin);
    for(i=0;i<5;i++)
    {
    gets(lib[i].titolo);
    scanf("%d",&lib[i].prezzo);
    
    }
    system("pause");
    
    }
    il problema di prima è risolto solo che ora riesco ad inserire solo tre risultati quindi cmq no mi funziona
    dai ragazzi facciamo funzionare
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  8. #8
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    mi corrego e specifico meglio
    il problema è la seconda istruzione
    la prima volta mi legge entrambe le istruzioni di input poi mi legge solo la prima o la seconda...
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  9. #9
    Non puoi scrivere:

    libro lib[5];

    Se libro non è un def, devi fare:

    struct libro lib[5];

    Oppure:

    typedef struct libro miolibro;
    miolibro lib[5];

  10. #10
    Originariamente inviato da Lethalman
    Non puoi scrivere:

    libro lib[5];

    Se libro non è un def, devi fare:

    struct libro lib[5];

    Oppure:

    typedef struct libro miolibro;
    miolibro lib[5];
    infatti


    Ciro hai visto il codice che ti ho scritto sopra?usa quello se vuoi
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.