|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2006
Città: Monza
Messaggi: 3686
|
[C]Mi aiutate a capire perchè non funziona?
Ciao, sono sempre io alle prese con C, pensavo di aver fatto un buon lavoro, ma a quanto pare c'è qualcosa che non va, mi aiutate? Thx a lot
Codice:
#include <stdio.h>
#include <stdlib.h>
/*
Un grande Magazzino è formato da N reparti. Creare 2 vettori contenenti il primo l'elenco dei codici dei reparti
e il secondo gli incassi di febbraio corrispondenti ai reparti inseriti.
Calcolare:
a-incasso totale del mese di febbraio;
b-incasso medio mensile di reparto. Usare due funzioni, una per la somma e una per la media;
c-incasso e codice di quale reparto ha venduto di più e quale di meno;
d-la percentuale di chi ha venduto di più nella media.
*/
int departments=0; //Numero reparti del magazzino
int codes[100]; //Vettore contenente i codici
float receipts[100]; //Vettore contenete gli incassi per ogni reparto
int load() //Con questa funzione carichiamo i dati del magazzino chiedendo all'utente di inserirli
{
int i;
printf("In quanti reparti è suddiviso il magazzino ?\n");
scanf("%i",&departments);
for(i=0;i<departments;i++){
printf("Inserici codice numerico reparto\n");
scanf("%i",&codes[i]);
printf("Inserici incasso di questo reparto\n");
scanf("%f",&receipts[i]);
}
return 0;
}
int menu ()//In questa funzione scriviamo il menu di scelta con il quale l'utente potrà orientarsi all'interno delle diverse funzioni
{
int choice=0;
printf("Cosa vuoi fare ?\n\n1)Visualizza incasso totale mensile del Magazzino\n2)Media degli incassi\n3)Quale reparto ha incassato di piu' equale di meno\n4)Percentuale di chi ha incassato di più nella media\n5)Esci\n");
scanf("%i", &choice);
return choice;
}
float addition ()//Usiamo questa funzione per sommare gli incassi di ogni reparto
{
int i;
float sum=0;
for(i=0;i<departments;i++)
sum=sum+receipts[i];
return sum;
}
float average () // Con questa funzione calcoleremo la media degli incassi totali
{
float mean=0, s=0;
s=addition();
mean=s/departments;
return mean;
}
float higher () //Usiamo questa funzione per trovare l'incasso maggiore
{
float big=0;
int i=0;
for(i=0;i<departments;i++)
if(big<receipts[i])
big=receipts[i];
return big;
}
float lower () //Usiamo questa funzione per trovare l'incasso minore
{
float little=receipts[0];
int i=0;
for(i=0;i<departments;i++)
if(little<receipts[i])
little=receipts[i];
return little;
}
int higherreceipt() //Ora confrontiamo con i vari reparti e vediamo a quale appartiene l'incasso maggiore
{
float h=higher();
int i,hr;
for(i=0;i<departments;i++)
if (h==receipts[i])
hr=codes[i];
return hr;
}
int lowerreceipt() //Ora confrontiamo con i vari reparti e vediamo a quale appartiene l'incasso minore
{
float l=lower();
int i,lr;
for(i=0;i<departments;i++)
if (l==receipts[i])
lr=codes[i];
return lr;
}
float percentage () //Con questa funzione calcoliamo la percentuale dell'incasso del reparto che ha incassato di più
{
float perc, sum, big;
sum=addition();
big=higher();
perc=(100*big)/sum;
return perc;
}
int main()
{
int choice, i,c,m,n;
float h,k,j,t,p;
i=load();
c=menu();
choice=menu();
switch(choice) {
case 1 :
h=addition();
printf("Nel corso del mese sono stati incassati euro %f \n", h);
break;
case 2 :
k=average();
printf("La media degli incassi totali per reparto e' %f\n", k);
break;
case 3 :
j=higher();
t=lower();
m=higherreceipt();
n=lowerreceipt();
printf("Il reparto che ha incassto di piu' e' %i e il suo incasso e' stato %f\n", m, j);
printf("Il reparto che ha incassto di meno e' %i e il suo incasso e' stato %f\n", n, t);
break;
case 4 :
p=percentage();
printf("La percentuale dell'incasso del reparto che ha incassato di più e' stata %f\n", p);
break;
case 5 :
break;
}
system ("PAUSE");
return 0;
}
__________________
" Disprezzato e reietto dagli uomini, uomo dei dolori che ben conosce il patire, come uno davanti al quale ci si copre la faccia, era disprezzato e non ne avevamo alcuna stima." ... "Maltrattato, si lasciò umiliare e non aprì la sua bocca; era come agnello condotto al macello, come pecora muta di fronte ai suoi tosatori, e non aprì la sua bocca" |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
Guarda se ora ti funziona come desideri...
Ho cambiato un paio di cose nel main. Codice:
#include <stdio.h>
#include <stdlib.h>
/*
Un grande Magazzino è formato da N reparti. Creare 2 vettori contenenti il primo l'elenco dei codici dei reparti
e il secondo gli incassi di febbraio corrispondenti ai reparti inseriti.
Calcolare:
a-incasso totale del mese di febbraio;
b-incasso medio mensile di reparto. Usare due funzioni, una per la somma e una per la media;
c-incasso e codice di quale reparto ha venduto di più e quale di meno;
d-la percentuale di chi ha venduto di più nella media.
*/
int departments=0; //Numero reparti del magazzino
int codes[100]; //Vettore contenente i codici
float receipts[100]; //Vettore contenete gli incassi per ogni reparto
int load() //Con questa funzione carichiamo i dati del magazzino chiedendo all'utente di inserirli
{
int i;
printf("In quanti reparti è suddiviso il magazzino ?\n");
scanf("%i",&departments);
for(i=0;i<departments;i++){
printf("Reparto %d:\n",i+1);
printf("Inserici codice numerico reparto\n");
scanf("%i",&codes[i]);
printf("Inserici incasso di questo reparto\n");
scanf("%f",&receipts[i]);
}
return 0;
}
int menu ()//In questa funzione scriviamo il menu di scelta con il quale l'utente potrà orientarsi all'interno delle diverse funzioni
{
int choice=0;
printf("Cosa vuoi fare ?\n\n1)Visualizza incasso totale mensile del Magazzino\n2)Media degli incassi\n3)Quale reparto ha incassato di piu' equale di meno\n4)Percentuale di chi ha incassato di più nella media\n5)Esci\n");
scanf("%i", &choice);
return choice;
}
float addition ()//Usiamo questa funzione per sommare gli incassi di ogni reparto
{
int i;
float sum=0;
for(i=0;i<departments;i++)
sum=sum+receipts[i];
return sum;
}
float average () // Con questa funzione calcoleremo la media degli incassi totali
{
float mean=0, s=0;
s=addition();
mean=s/departments;
return mean;
}
float higher () //Usiamo questa funzione per trovare l'incasso maggiore
{
float big=0;
int i=0;
for(i=0;i<departments;i++)
if(big<receipts[i])
big=receipts[i];
return big;
}
float lower () //Usiamo questa funzione per trovare l'incasso minore
{
float little=receipts[0];
int i=0;
for(i=0;i<departments;i++)
if(little<receipts[i])
little=receipts[i];
return little;
}
int higherreceipt() //Ora confrontiamo con i vari reparti e vediamo a quale appartiene l'incasso maggiore
{
float h=higher();
int i,hr;
for(i=0;i<departments;i++)
if (h==receipts[i])
hr=codes[i];
return hr;
}
int lowerreceipt() //Ora confrontiamo con i vari reparti e vediamo a quale appartiene l'incasso minore
{
float l=lower();
int i,lr;
for(i=0;i<departments;i++)
if (l==receipts[i])
lr=codes[i];
return lr;
}
float percentage () //Con questa funzione calcoliamo la percentuale dell'incasso del reparto che ha incassato di più
{
float perc, sum, big;
sum=addition();
big=higher();
perc=(100*big)/sum;
return perc;
}
int main()
{
int choice, i,c,m,n;
float h,k,j,t,p;
i=load();
//c=menu();
//choice=menu();
while (choice!=5){
system("cls");
choice=menu();
switch(choice) {
case 1 :
h=addition();
printf("Nel corso del mese sono stati incassati euro %f \n", h);
break;
case 2 :
k=average();
printf("La media degli incassi totali per reparto e' %f\n", k);
break;
case 3 :
j=higher();
t=lower();
m=higherreceipt();
n=lowerreceipt();
printf("Il reparto che ha incassto di piu' e' %i e il suo incasso e' stato %f\n", m, j);
printf("Il reparto che ha incassto di meno e' %i e il suo incasso e' stato %f\n", n, t);
break;
case 4 :
p=percentage();
printf("La percentuale dell'incasso del reparto che ha incassato di più e' stata %f\n", p);
break;
case 5 :
break;
}
system ("PAUSE");
}
return 0;
}
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2006
Città: Monza
Messaggi: 3686
|
Grazie!!! Prima nel menu, inserivo il numero, riappariva il menu e lo dovevo reinserirlo. Mi hai anche aggiunto i CLS
__________________
" Disprezzato e reietto dagli uomini, uomo dei dolori che ben conosce il patire, come uno davanti al quale ci si copre la faccia, era disprezzato e non ne avevamo alcuna stima." ... "Maltrattato, si lasciò umiliare e non aprì la sua bocca; era come agnello condotto al macello, come pecora muta di fronte ai suoi tosatori, e non aprì la sua bocca" |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
Di nulla!
Comunque era una cosa da poco...una disattenzione. Se controlli nel main ti ho commentato la riga c=menu(); E subito sotto choice=menu(); Per questo ti veniva due volte il menu! Un consiglio se mi permetti sarebbe quello di usare le variabili non globali. Ovvero potresti creare i vettori nel main e passarli alle varie funzioni come parametri. Comunque riprendi il codice che è postato sopra perchè prima ho modificato il post aggiungendo una riga di codice. Quando inserisci i dati di reparto dovrebbe venire scritto su quale reparto stai inserendo i dati. Se hai altri dubbi scrivi pure. Ciao. Ultima modifica di pmhwp : 31-03-2008 alle 22:58. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2006
Città: Monza
Messaggi: 3686
|
Gentilissimo, l'unica cosa che non capisco è perchè hai messo %d? Non andava bene un %i ?
__________________
" Disprezzato e reietto dagli uomini, uomo dei dolori che ben conosce il patire, come uno davanti al quale ci si copre la faccia, era disprezzato e non ne avevamo alcuna stima." ... "Maltrattato, si lasciò umiliare e non aprì la sua bocca; era come agnello condotto al macello, come pecora muta di fronte ai suoi tosatori, e non aprì la sua bocca" Ultima modifica di stgww : 31-03-2008 alle 23:28. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
Io ho sempre usato %d per gli interi...onestamente non so dirtelo.
Ciao! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:33.



















