Struct e Liste

di il
1 risposte

Struct e Liste

Buongiorno a tutti,

qualcuno di voi sa perché capita questa "stranezza" nel terminale ? (mi da come libro meno costoso quello che costa 0 euro).

L'esercizio è il seguente: /* Descrivere la struttura libro con gli attributi: titolo, autore, editore,
anno di edizione, codice ISBN e prezzo. Realizzare una funzione che riceve
in ingresso il puntatore a una struttura di quel tipo, richiede al' utente
gli attributi di un libro e li memorizza nella struttura stessa.
In riferimento a questo esercizio far immettere all' utente i valori di 4 libri in quattro
variabili di tipo libro. Realizzare una funzione che :
a) calcola e visualizza la media del prezzo dei libri;
b) determina il libro dal prezzo maggiore;
c) determina il libro dal prezzo minore;
d) determina il libro dal titolo con il maggiore numero di caratteri. */

Di seguito vi lascio il mio codice sorgente e in allegato lo screen shot del terminale sperando che uno di voi mi risponda al più presto.
Grazie e buon proseguimento a tutti!.
Antonio.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
#define LEN 1000
typedef struct{
    char titolo[MAX];
    char autore[MAX];
    char editore[MAX];
    int anno_edizione;
    int ISBN;
    int prezzo;
}Libro;


typedef struct{
    Libro elemento[LEN];
    int num_libri;

}Lista;

/* PROTOTIPI DI FUNZIONE */
Lista memorizza();
void media_prezzi(Lista list);
int prezzo_maggiore(Lista list);
int prezzo_minore(Lista list);
void titoloMaggiore(Lista list);

/* PROGRAMMA CHIAMANTE */
int main()
{
Lista L;
L = memorizza();

media_prezzi(L);

printf("Il libro piu costoso e' quello che costa: %d euro", prezzo_maggiore(L));

printf("\nIl libro meno costoso e' quello che costa: %d euro\n", prezzo_minore(L));

 titoloMaggiore(L);

printf("\n\n");
 return 0;
}

/*DEFINIZIONI DI FUNZIONI */

Lista memorizza(){


Lista list;
int i;


   printf("***INSERIMENTO ATTRIBUTI LIBRO***\n\n");

    printf("Quanti libri vuoi inserire nella lista?: ");
    scanf("%d", &list.num_libri);
    fflush(stdin);

    for (i = 0; i<list.num_libri; i++){
            printf("\nInserimento dati libro nmr.%d.. \n",i+1);
    printf("\nTitolo: ");
    gets(list.elemento[i].titolo);

    printf("Autore: ");
    gets(list.elemento[i].autore);

    printf("Editore: ");
    gets(list.elemento[i].editore);

    printf("Anno di edizione: ");
    scanf("%d", &list.elemento[i].anno_edizione);

    printf("Codice ISBN: ");
    scanf("%d", &list.elemento[i].ISBN);

    printf("Prezzo (euro): ");
    scanf("%d",&list.elemento[i].prezzo);

fflush(stdin);
    }

printf("\n\n");

return list;
}

void media_prezzi(Lista list){

int media = 0;
int i;

for (i=0; i <= list.num_libri; i++){
    media = media + list.elemento[i].prezzo;
}
    media = (media / list.num_libri);


printf("La media dei prezzi vale %d euro\n", media);
}

int prezzo_maggiore(Lista list){

Libro costoso = list.elemento[0];
int i;

for (i=0; i<= list.num_libri; i++){
if (costoso.prezzo < list.elemento[i].prezzo)
    costoso = list.elemento[i];

}
return (costoso.prezzo);
}


int prezzo_minore(Lista list){

Libro meno_costoso = list.elemento[0];
int i;

for (i=0; i<= list.num_libri; i++){
if ( meno_costoso.prezzo > list.elemento[i].prezzo )
    meno_costoso = list.elemento[i];
}
return (meno_costoso.prezzo);
}

void titoloMaggiore(Lista list){
Libro lungo = list.elemento[0];

int i;

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

        if(strlen(lungo.titolo) < strlen(list.elemento[i].titolo))
            lungo = list.elemento[i];
    }

printf("Il libro con il titolo piu lungo e:  %s", lungo.titolo);
}

Allegati:
16176_1348f5073cfd37f6e80b3c3fc1e6263a.png
16176_1348f5073cfd37f6e80b3c3fc1e6263a.png

1 Risposte

  • Re: Struct e Liste

    In linee come questa

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

    non devi usare <= ma <
Devi accedere o registrarti per scrivere nel forum
1 risposte