Problemi Sottoprogramma

di il
3 risposte

Problemi Sottoprogramma

Ciao a tutti ragazzi!


Vi scrivo ancora una volta poichè ho riscontrato un piccolissimo problema in fase di esecuzione del mio programma in C.

La traccia richiede che il programma si occupi dell'organizzazione di prodotti (inseriti in una tabella) e la gestione delle richieste di vendita.
Viene inoltre richiesto di fornire delle informazioni riguardanti i pezzi venduti in una regione (presa in input dall'utente),visualizzandoli poi a video.

Premesso che tutto sembra funzionare, riscontro un problema appunto solo in quest'ultimo pezzo quando, stampando a video l' int contenente la somma dei pezzi venduti in quella regione, riscontro un valore "strano" non corrispondente con quello previsto.

Posto qui sotto il codice completo, sperando possiate aiutarmi a capire dove è l'errore.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 50

//Dichiarazione strutture
struct Sprod {
       char cod[6];
       int n_pezzi;
       float prezzo;
       int min;};
       typedef struct Sprod prod;

struct Sreg{
char regione[20];
int ric;};
typedef struct Sreg reg;

//Dichiarazione funzioni
prod registrazione_prodotti(void);

reg richieste(int b,prod prodotti[]);

void infov(reg regioni[],int g);

int main()
{int n,l,i;
prod prodotti[MAX];
reg regioni[MAX];

//Registrazione prodotti
printf("\nRegistrazione prodotti\n");
printf("\nInserire il numero di prodotti da registrare:");
scanf("%d",&n);
fflush(stdin);
system("cls");
l=n;
for (i=0;i<l;i++){
printf("\nProdotto %d\n",i+1);
prodotti[i]=registrazione_prodotti();
};


//Gestione richieste
printf("\nGestione richieste\n");
printf("\nInserire il numero delle richieste da inoltrare:");
scanf("%d",&n);
fflush(stdin);
for (i=0;i<n;i++){
system("cls");
 printf("\nRichiesta %d\n",i+1);
 regioni[i]=richieste(l,prodotti);};


//Informazioni vendite
infov(regioni,n);


return 0;}

prod registrazione_prodotti(void){
prod prodotti;

    printf("\nInserire codice prodotto:");
    fflush(stdin);
    gets(prodotti.cod);
    fflush(stdin);
    printf("\nInserire numero di pezzi disponibili:");
    scanf("%d",&prodotti.n_pezzi);
    fflush(stdin);
    printf("\nInserire numero di scorta minima:");
    scanf("%d",&prodotti.min);
    fflush(stdin);
    printf("\nInserire prezzo:");
    scanf("%f",&prodotti.prezzo);
    fflush(stdin);
    system("cls");

return(prodotti);}

reg richieste(int b,prod prodotti[]){
int c,flag1,flag2,k,m,y;
char codr[6];
char az[10];
reg regioni;

do{
printf("\nInserire il codice del prodotto richiesto:");
gets(codr);
fflush(stdin);
for(k=0;k<b;k++){
c=strcmp(prodotti[k].cod,codr);
if(c==0){
    flag1=1;
    y=k;
    k=b;
}
else{
flag1=0;};};
if(flag1==0){
    printf("\n\aProdotto non trovato!\n");
    system("pause");
    system("cls");}
else{printf("\n\aProdotto trovato!\n");
printf("\nInserire nome dell'azienda richiedente:");
fflush(stdin);
gets(az);
fflush(stdin);
do{
printf("\nInserire numero dei pezzi richiesti:");
scanf("%d",&m);
fflush(stdin);
if(m>prodotti[y].n_pezzi){
printf("\a\nNumero di pezzi disponibili insufficiente!\n\n");
system("pause");
system("cls");
flag2=0;}
else if(m<=0){
printf("\a\nErrore!\n\nInserire un numero valido di pezzi da richiedere!\n\n");
system("pause");
system("cls");
flag2=0;}
else{
    printf("\a\nRichiesta accettata!\n");
    prodotti[y].n_pezzi -=m;
    regioni.ric +=m;
    flag2=1;
};}while(flag2==0);
printf("\nInserire regione dell'azienda richiedente:");
fflush(stdin);
gets(regioni.regione);
fflush(stdin);
system("pause");
system("cls");
};}while(flag1==0);

return (regioni);}

void infov(reg regioni[],int g){
char r[20];
int i,c,h=0;
printf("\nInserire la regione per la quale si richiedono informazioni(es:Puglia):");
fflush(stdin);
gets(r);

for(i=0;i<g;i++){
c=strcmp(regioni[i].regione,r);
if(c==0){
h +=(regioni[i].ric);
}
else{};
};

printf("\nNumero di pezzi venduti in %s: %d \n",r,h);
return;}
Se serve,posso anche postare screenshot delle schermate. Grazie in anticipo!

3 Risposte

  • Re: Problemi Sottoprogramma

    dr_drew ha scritto:


    Se serve,posso anche postare screenshot delle schermate. Grazie in anticipo!
    si serve cosi possiamo capire meglio
  • Re: Problemi Sottoprogramma

    Quando fai questa somma

    regioni.ric +=m;

    ti sei accertato prima che regioni.ric all'inizio valga zero ?
  • Re: Problemi Sottoprogramma

    Ok il problema è stato che non avevo inizializzato la variabile, grazie mille! Ora va tutto liscio!
Devi accedere o registrarti per scrivere nel forum
3 risposte