Struttura libri in c

di il
9 risposte

Struttura libri in c

Ciao ragazzi mi è venuto un dubbio. Ma se quando stampo il libro con minor numero di copie ,ho due libri che hanno lo stesso numero di copie,come posso farli stampare entrambi

9 Risposte

  • Re: Struttura libri in c

    Ciao Peppus, i dati li hai messi in una lista. Cioè hai creato una lista in cui i campi sono la struttura di cui necessiti?
  • Re: Struttura libri in c

    Oppure in un vettore di strutture?

    Poi, ci hai provato in tutti i modi ... Mostra come hai provato a fare ... se vuoi superare l'esame devi un po' cavartela da solo..
  • Re: Struttura libri in c

    Ciao adesso implemento ciò che ho capito oggi ragionandoci sopra e lo posto
  • Re: Struttura libri in c

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define max 1000

    typedef struct{
    char autore[30];
    char titolo[30];
    int copie_vendute;
    }libro;

    typedef struct{
    libro elemento[max];
    int n_libri;
    }lista;

    int menu();
    lista inserimento_libro();
    void stampa_libri(lista list);
    void minor_numero_copie(lista list);

    int main()
    {
    int scelta;
    lista L;
    while(scelta=menu()){
    switch(scelta){
    case 1:
    system("CLS");
    L=inserimento_libro();
    system("PAUSE");
    break;
    case 2:
    system("CLS");
    minor_numero_copie(L);
    system("PAUSE");
    break;
    case 3:
    system("CLS");
    stampa_libri(L);
    system("PAUSE");
    break;
    case 4:
    system("CLS");
    system("PAUSE");
    break;
    case 0:
    return 0;

    }
    }

    }


    int menu(){
    int scelta;
    printf("***GESTIONE LIBRI***\n\n");
    printf("[1] inserisci un nuovo libro\n");
    printf("[2] stampa il titolo del libro con minor numero di copie\n");
    printf("[3] stampa i libri in ordine di immissione e in ordine opposto\n");
    printf("[4] salvare i dati inseriti su file\n");
    printf("[0] esci\n");
    printf("Scelta: ");
    scanf("%d",&scelta);

    while(scelta<0 || scelta>4){

    printf("la scelta e' errata ");
    return scelta;
    }
    return scelta;

    }
    lista inserimento_libro(){
    int i;
    lista list;
    printf("quanti libri vuoi inserire?");
    scanf("%d",&list.n_libri);
    fflush(stdin);
    for(i=0;i<list.n_libri;i++){
    printf("Autore : ");
    gets(list.elemento.autore);
    printf("Titolo : ");
    gets(list.elemento.titolo);
    printf("n copie vendute: ");
    scanf("%d",&list.elemento.copie_vendute);
    printf("\n");
    fflush(stdin);

    }
    return list;
    }

    void stampa_libri(lista list){
    int i;

    for (i=0;i<list.n_libri;i++){

    printf("Autore : %s\n",list.elemento.autore);
    printf("Titolo : %s\n",list.elemento.titolo);
    printf("n copie vendute:%d\n\n",list.elemento.copie_vendute);

    }


    printf("***STAMPA IN ORDINE OPPOSTO***\n");

    }


    void minor_numero_copie(lista list){
    int i;
    libro min_copie=list.elemento[0];
    for(i=0;i<list.n_libri;i++){
    if(min_copie.copie_vendute>list.elemento.copie_vendute){

    min_copie=list.elemento;

    }

    }
    printf("il libro con minor numero di copie è : \n");
    printf("Titolo: %s\n\n",min_copie.autore);

    }

    Fino a qui funziona solo che ho provato a stampare la lista in ordine opposto e non riesco e mi manca come salvare su file ! Grazie della disponibilità
  • Re: Struttura libri in c

    Peppus hai fatto 30...a 31 manca poco!!!!
    Allora per la stampa inversa dovrai porre il comtatore i al massimo e con un for e i-- tornare verso 0.
    La i impostata già ce l'hai perchè hai appena stampato dal libro '0' all'ultimo libro, quindi la i già ha il valore massimo.

    Per la scrittura su file... Devi:
    Inizializzare un puntatore a cui assocerai un nome di variabile
    
    fopen(nomefile.qualcosa (solitamente txt), w)
    
    fprint(la variabile a puntatore di prima, il dato da salvare)
    
    fclose(la variabile di prima)
    
    
    Dai che ci sei!!!

    Troppo criptico??? Dai ormai hai quasi fatto; è solo un pó di sintassi e capire il meccanismo.
    Devi avere un puntatore che punta al file dove devi salvare.
    Userai un ciclo (for, while, quello con cui vai meglio) per salvare tutti gli elementi utilizzando sempre la famosa variabile comtatore 'i'

    Per leggerlo lo aprirai con
    
    
    fopen(nomefile.txt, r)
    ...
    
    
    Stavolta anzichè w c'è r (write; read) cioè apri il file in reading anzichè in writing

    Ricorda di chiudere sempre con fclose dopo aver terminato le operazioni Di scrittura e/o lettura.

    Facci sapere
  • Re: Struttura libri in c

    Grazie ragazzi!
  • Re: Struttura libri in c

    Grande!!
  • Re: Struttura libri in c

    Ragazzi ho un altro problema, ho modificato il post iniziale
  • Re: Struttura libri in c

    Non si modifica il post iniziale così non si capisce nulla...
Devi accedere o registrarti per scrivere nel forum
9 risposte