|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Sep 2009
Messaggi: 133
|
[C]Problema record e tabelle
Il programma è questo:
Codice:
/*Scrivere un programmam che consenta di caricare un elenco di massimo 30 libri, ciascuno caratterizzato dai campi: -Titolo -Autore -Prezzo Scrivere una funziona che trovi il libro di prezzo maggiore*/ #include <stdio.h> #include <conio.h> typedef struct tlibri { char titolo [20]; char autore [30]; float prezzo [10]; }; tlibri libroprezmax; tlibri elencolibri [100]; void prezzomax (tlibri libroprezmax, int n); main () { int n,i; printf("Inserisci il numero dei libri: "); scanf("%d", &n); for(i=0;i<n;i++) { printf("Inserisci il titolo del libro: "); scanf("%s", elencolibri [i].titolo); printf("Inserisci l'autore del libro: "); scanf("%s", elencolibri [i].autore); printf("Inserisci il prezzo del libro: "); scanf("%f", elencolibri [i].prezzo); prezzomax(libroprezmax,n); } getch(); } void prezzomax (tlibri libroprezmax, int n) { |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Jul 2009
Messaggi: 146
|
la prima volta considera come prezzo massimo il primo libro e lo salvi in una variabile dopodichè controlli il prezzo sucessivo con quello che avevi salvato precendentemente , se è maggiore cambi il libro dal prezzo massimo altrimenti non fai niente .
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Sep 2009
Messaggi: 133
|
Ho risolto, ho cambiato tante cose:
Codice:
/*Scrivere un programmam che consenta di caricare un elenco di massimo 30 libri, ciascuno caratterizzato dai campi: -Titolo -Autore -Prezzo Scrivere una funziona che trovi il libro di prezzo maggiore*/ #include <stdio.h> #include <conio.h> typedef struct tlibri { char titolo[20]; char autore[30]; float prezzo; }; int prezzomax( tlibri elencolibri[] , int n ); main () { int n,i,imax; tlibri elencolibri[30]; printf("Inserisci il numero dei libri: "); scanf("%d", &n); for(i=0;i<n;i++) { printf("Inserisci il titolo del libro: "); scanf("%s", &elencolibri[i].titolo); printf("Inserisci l'autore del libro: "); scanf("%s", &elencolibri[i].autore); printf("Inserisci il prezzo del libro: "); scanf("%f", &elencolibri[i].prezzo); } imax= prezzomax( elencolibri, n ); printf("Il libro con prezzo piu' alto e' :%s", elencolibri[imax].titolo); getch(); } int prezzomax( tlibri elencolibri[] , int n ) { int I,imax; float ap; ap=elencolibri[0].prezzo; for(I=1;I<n;I++) { if(elencolibri[i].prezzo>ap) imax=I; return imax; } } |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Jul 2009
Messaggi: 146
|
l'unica cosa è che non fai nessun controllo per assicurarti che il numero n di libri sia effettivamente minore di 30 .
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2267
|
Sicuro che la funzione prezzomax sia corretta?
Io la porrei così: Codice:
int prezzomax( tlibri elencolibri[] , int n ) { int I,imax; float ap; ap=elencolibri[0].prezzo; imax = 0; for(I=1;I<n;I++) { if(elencolibri[I].prezzo>ap) { ap = elencolibri[I].prezzo; imax=I; } } return imax; } Codice:
int prezzomax( tlibri elencolibri[] , int n ) { int imax = 0; for(int i=1;i<n;i++) { if(elencolibri[i].prezzo>elencolibri[imax].prezzo) imax=i; } return imax; }
__________________
Concluso con:... Ultima modifica di Floris : 21-09-2011 alle 20:18. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:04.