Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89

    [C] Incomprensioni sulle strutture dati

    Salve a tutti,
    proseguo un thread iniziato ieri dal titolo "Newbie su puntatori e strutture". Oggi il problema lo verifico se nel mio prog voglio implementare la ricerca di un determinato libro in base al prezzo. Posto il codice:

    #include <stdio.h>
    #define MAXNUM 5
    struct libreria
    {
    char titolo[30];
    char autore[30];
    long int prezzo;
    };
    struct libreria lib[MAXNUM];
    void inserisci();
    void ricerca(long int prz);

    main()
    {
    long int prezzocerc;

    inserisci();

    printf("\nInserire il prezzo da ricercare :");
    scanf("%d",&prezzocerc);

    ricerca(prezzocerc);
    return 0;
    }

    void inserisci()
    {
    int i;
    for(i=0;i<MAXNUM;i++)
    {
    printf("\nInserire il titolo del libro %d :",i+1);
    gets(lib[i].titolo);
    printf("\nInserire l\' autore del libro %d :",i+1);
    gets(lib[i].autore);
    printf("\nInserire il prezzo del libro %d :",i+1);
    scanf("%d",&lib[i].prezzo);

    while(!getchar());
    }
    }

    void ricerca(long int prz)
    {
    int i;
    int trovato;

    trovato -=1;
    for (i=0;i<MAXNUM;i++)
    {
    lib[i].prezzo == prz ? trovato ++ : 0;
    if (trovato)
    {
    puts(lib[i].titolo);
    printf("\t");
    puts(lib[i].autore);
    printf("\t");
    printf("%d",lib[i].prezzo);
    printf("\t");
    };
    }
    }

    Quando do in input il prezzo da ricercare (quindi il prezzo deve essere ESATTAMENTE uno presente all'interno della tabella) mi vengono fuori un output fatto di numeri sballati, che non riguardano la stampa che io volevo.
    Ancora una volta sono qui (prostrato) a chiedere in cosa sbaglio...

    Grazie
    Kool K

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [C] Incomprensioni sulle strutture dati

    Originariamente inviato da koolk
    Quando do in input il prezzo da ricercare (quindi il prezzo deve essere ESATTAMENTE uno presente all'interno della tabella) mi vengono fuori un output fatto di numeri sballati, che non riguardano la stampa che io volevo.
    scanf: %d per int e %ld per long int. Idem per printf.

    La funzione ricerca poi non mi sembra corretta. Fai un trovato -=1;, sottrai 1 a una variabile non inizializzata (quindi risultato: boh...). La riga lib[i].prezzo == prz ? trovato ++ : 0; la trovo inutile. Basta un test: se il prezzo è uguale, stampa i dati, punto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Infatti ... dovresti semplicemente scrivere

    codice:
    void ricerca(long int prz)
    {
      int i;
      for (i=0;i<MAXNUM;i++)
      {
        if(lib[i].prezzo == prz)
        {
          printf("%s\t%s\t%d\n", lib[i].titolo, lib[i].autore, lib[i].prezzo);
          break;
        }
      }
    }

  4. #4
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89
    Grazie ragazzi
    Kool K

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.