Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Lenovo ha lanciato il ThinkTab X11 rimettendo piede nel segmento dei tablet Android con il marchio Think dopo oltre un decennio di assenza. Il risultato è un dispositivo che prende una direzione precisa: massima dotazione funzionale, costruzione resistente, autonomia fuori dagli schemi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-03-2008, 21:24   #1
stgww
Senior Member
 
L'Avatar di stgww
 
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"
stgww è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 21:47   #2
pmhwp
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;   
}
Ciao.
pmhwp è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 21:52   #3
stgww
Senior Member
 
L'Avatar di stgww
 
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 Thx ancora!
__________________
" 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"
stgww è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 21:55   #4
pmhwp
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 21:58.
pmhwp è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 22:14   #5
stgww
Senior Member
 
L'Avatar di stgww
 
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 22:28.
stgww è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2008, 16:42   #6
pmhwp
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 453
Io ho sempre usato %d per gli interi...onestamente non so dirtelo.

Ciao!
pmhwp è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Altman smonta una delle più grand...
JVC HA-S59W in prova: le cuffie on-ear l...
Professore nasconde una trappola nel com...
I chip di NVIDIA attuali progettano quel...
HONOR Pad X9 Max debutta in Italia: disp...
Tutte le videocamere di sorveglianza e i...
Dreame Matrix10 Pro a 799€: robot aspira...
Grazie al Very Large Telescope abbiamo u...
S.T.A.L.K.E.R. 2: il DLC Cost of Hope ad...
I nuovi modelli di IA di Microsoft per l...
Come sta cambiando il mestiere dell'inst...
Meta sospende i test sull'abbonamento pe...
TCL OLED+ Pro X3B: monitor gaming o prof...
Safe Superintelligence stringe una partn...
Windows 11 divora RAM, Microsoft lo amme...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:50.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v