Ragaaaaaa...ho urgente bisogno di correzioni!!
devo consegnare il programma a breve e..help help..
#include <stdio.h>
#include <stdlib.h>
#define RIGHE 5
#define N 15
//definizione di un nuovo tipo
typedef struct {
char titolo[N];
char autore[N];
int prezzo;
} Tabella;
//dichiarazione di variabili globali
Tabella tabella[RIGHE];
int record_inseriti;
//prototipi delle funzioni
void visualizzazione_record();
void ordinamento_bubble_sort_crescente();
void ord_sel_min (Tabella array[],int n);
void inserimento_nuovo_record();
int main()
{
//dichiarazione di variabili locali per il main
enum {
inserimento,
ordinamento_descrescente,
visualizzazione,
uscita
} operazione;
do {
//pulisce lo schermo
system("cls");
printf("Che operazione vuoi eseguire? ");
printf("\n\t 1. Inserisci nuovo disco");
printf("\n\t 2. Restituisci disco con prezzo minore");
printf("\n\t 3. Visualizza tutti dischi");
printf("\n\t 4. Esci\n\t ");
scanf("%d", &operazione);
//scarta il carattere di a capo
getchar();
switch(--operazione) {
case inserimento:
inserimento_nuovo_record();
break;
case ordinamento_descrescente:
ord_sel_min ();
printf("\nIl vettore e' stato ordinato secondo oridinamento decrescente dei dischi");
break;
case visualizzazione:
visualizzazione_record();
break;
case uscita:
break;
default:
printf("\nHai effettuato una scelta non valida");
}
if(operazione != uscita) {
printf("\n\nPremi INVIO per continuare.");
getchar();
}
} while(operazione != uscita);
printf("\nPremi INVIO per uscire.");
getchar();
return 0;
}
//definizione della funzione di visualizzazione dei record
void visualizzazione_record()
{
int i;
if(!record_inseriti) {
printf("\nNon sono presenti record all'interno della tabella.");
return;
}
printf("\n%-15s %-15s %6s", "Titolo", "Autore", "Prezzo");
for(i = 0; i < record_inseriti; i++) {
printf("\n%-15s %-15s %6d", tabella[i].titolo, tabella[i].autore, tabella[i].prezzo);
}
}
//definizione della funzione di ordinamento attraverso algoritmo del selection sort
void ord_sel_min (Tabella array[],int n)
{
int i, indice_min;
double min_array;
for(i=0;i<n-1;i++)
{
min_val_ind(&array[i].prezzo, n-i, &min_array, &indice_min);
scambiare_c(&array[i].prezzo, &array[indice_min+i].prezzo);
}
}
void min_val_ind (Tabella a[], int n, double *min_array, int *i_min)
{
int i;
*min_array = a[0].prezzo;
*i_min = 0;
for (i=1;i<n;i++)
if( *min_array > a[i].prezzo)
{
*min_array = a[i].prezzo;
*i_min =i;
}
}
void scambiare_c(char*c1,char *c2)
{
char temp;
temp=*c1;
*c1 =*c2;
*c2 =temp;
}
//definizione della funzione di inserimento di un nuovo record
void inserimento_nuovo_record()
{
if(record_inseriti == RIGHE) {
printf("Hai inserito il numero massimo di dischi all'interno della tabella.");
return;
}
printf("\nInserisci il titolo del disco: ");
gets(tabella[record_inseriti].titolo);
printf("Inserisci il nome dell'autore: ");
gets(tabella[record_inseriti].autore);
printf("Inserisci il prezzo: ");
scanf("%d", &tabella[record_inseriti].prezzo);
getchar();
printf("\nIl disco e' stato inserito con successo.");
record_inseriti++;
}