Buongiorno a tutti. Ho provato a fare un esercizio di C che sintatticamente sembrava essere ok e , mandando in esecuzione il programma fino a l'altro ieri, sembrava funzionare.
Ritrovo però,in fase di esecuzione, dati e numeri irregolari rispetto a quelli da me inseriti o da me previsti in output. Mi servirebbe urgentemente una mano ( domani ho l'esame ).
Posto qui sotto la traccia
La libreria “Buona lettura” gestisce l’approvvigionamento e la vendita dei libri mediante una tabella
che per ogni libro riporta: codice, titolo, autori, numero copie disponibili, numero copie minimo di
scorta. I clienti della libreria effettuano le loro richieste inviando il codice del libro e il numero di
copie da ordinare.
Progettare una soluzione al problema di gestione delle richieste che fornisca in output:
? per ogni richiesta trattata un messaggio di richiesta accettata o rifiutata;
? il codice del libro, il titolo e gli autori della richiesta evasa con il maggior numero di copie;
? i codici di tutti i libri le cui copie disponibili sono in esaurimento e la quantità da riordinare per
mantenere il numero minimo di scorta;
? la tabella aggiornata.
E qui il mio codice
#include <stdio.h>
#include <stdlib.h>
#define max 20
struct SData{
int cod[5];
char tit[15];
char aut[15];
int cop;
int min;
int ric;};
typedef struct SData lib;
int main()
{int n,m,i,flag,l;
int c;
lib libro[max];
printf("BENVENUTI NELLA LIBRERIA BUONA LETTURA!\n\n");
//Registrazione libri
do{
printf("\nQuanti libri si vogliono registrare?\n");
scanf("%d",&n);
if (n>max){
flag++;
printf("Errore,non e' possibile registrare piu' di 20 libri!\n");
}
else{
flag=0;
}}while (flag>=1);
for(i=0;i<n;i++){
printf("\n\nLibro %d\n",i);
printf("\nInserire il codice del libro(Il codice e' composto da 5 cifre,qualunque\ncifra in eccesso non verra' considerata!):");
scanf("%d",&libro[i].cod);
fflush(stdin);
printf("\nInserire il titolo del libro:");
gets(libro[i].tit);
fflush(stdin);
printf("\nInserire autori del libro:");
gets(libro[i].aut);
fflush(stdin);
printf("\nInserire il numero di copie disponibili:");
scanf("%d",&libro[i].cop);
printf("\nInserire numero minimo di copie da conservare nella scorta:");
scanf("%d",&libro[i].min);
libro[i].ric=0;}
//Richieste
printf("\nInserire il codice del libro di cui si vuol fare richiesta:\n");
scanf("%d",&c);
m=0;
for (i=0;i<n;i++){
if(c==libro[i].cod){
flag++;
m=i;
i=n;}
else{
flag=0;
i++;
};};
system("pause");
if(flag==0&&i==n){
printf("\n\aLibro non trovato!\n\n");}
else{
printf("\n\aLibro trovato!\n\n");
};
printf("Quante copie desidera ordinare?\n");
fflush(stdin);
scanf("%d",&l);
system("pause");
if(l<=libro[m].cop-libro[m].min){
libro[m].cop=(libro[m].cop)-l;
libro[m].ric=(libro[m].ric)+l;
printf("\nOrdine accettato!\n");
}
else{
printf("\nImpossibile accettare la richiesta per scarsa disponibilità!\n");
};
//Libro più richiesto
for(i=0;i<n;i++){
if(libro[i+1].ric>=libro[i].ric){
m=i+1;}
else{m=i;};};
printf("\n\nIl libro con piu' copie vendute e' libro cod%d\n",libro[m].cod);
printf("\nDati libro\n");
printf("\nTitolo:%s",libro[m].tit);
printf("\nAutore:%s",libro[m].aut);
printf("\nCopie vendute:%d",libro[m].ric);
printf("\nCopie disponibili:%d",libro[m].cop);
printf("\nCopie nella scorta minima:%d\n",libro[m].min);
//Tabella aggiornata
printf("\n\nInserire il codice del libro da visualizzare:\n");
fflush(stdin);
scanf("%d",&c);
m=0;
for (i=0;i<n;i++){
if(c==libro[i].cod){
flag++;
m=i;
i=n;}
else{
flag=0;
i++;
};};
system("pause");
if(flag==0&&i==n){
printf("\n\aLibro non trovato!\n\n");}
else{
printf("\n\aLibro trovato!\n\n");
};
printf("\nVisualizzazione dati:\n");
printf("\nLibro cod%d",libro[m].cod);
printf("\nTitolo:%s",libro[m].tit);
printf("\nAutore:%s",libro[m].aut);
printf("\nCopie disponibili:%d",libro[m].cop);
printf("\nCopie nella scorta minima:%d\n",libro[m].min);
return 0;
}