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: