Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Problema con C++

    Ho provato a fare questo programma ma non mi viene anche se non sono segnalati errori di alcun tipo. Senza utilizzare le funzioni mi viene ma con le funzioni no...
    Non le ho proprio capite in generale e questo è il testo di uno dei tanti programmi che non riesco a fare:
    "Un autonoleggio che dispone di N automobili vuole effettuare una statistica sugli incassi dell'anno scorso memorizzando il numero di giornate di noleggio di ciascuna auto nei 4 trimestri dell'anno.Per ogni automobile è necessario memorizzare il costo del noleggio giornaliero. Definire le strutture di dati necessarie per risolvere il problema, utilizzando una funzione, e visualizzare l'incasso totale ottenuto in un trimestre inserito da tastiera."

    Questo è quello che ho provato a fare:

    codice:
    #include <iostream>
    using namespace std;
    
    int tot,n,scelta;
    
    int CacoloNoleggio(int tot, int tr[][4], int costo[])
    {  
      tot=0;
      for (int j=0; j<=3; j++)
       {
        if(j==scelta-1)
         {
         for (int i=0; i<=n-1; i++)
          {
            tot=tot+(costo[i]*tr[i][j]); 
          }                
         } 
       }
      
       return tot;
    }
    
    int main ()
    {
        
        cout<<"Inserire il numero di automobili  ";
        cin>>n;
        
        int sr,costo[n],tot,scelta,tr[n][4];
        
        for (int i=0; i<=n-1; i++)
        {
              cout<<"Automobile  "<<i+1<<endl;
              cout<<"Inserire il costo del noleggio giornaliero ";
              cin>>costo[i];
              cout<<"Trimestre 1 inserire il numero di giornate ";
              cin>>tr[i][0];
              cout<<"Trimestre 2 inserire il numero di giornate ";
              cin>>tr[i][1];
              cout<<"Trimestre 3 inserire il numero di giornate ";
              cin>>tr[i][2];
              cout<<"Trimestre 4 inserire il numero di giornate ";
              cin>>tr[i][3];
        }
        
        cout<<"Inserisci un trimestre a scelta ";
        cin>>scelta;
        CacoloNoleggio(tot, tr, costo);
        cout<<"L'incasso totale del trimestre e' "<<tot<<endl; 
        
    cout<<endl<<endl;
    system ("pause");
    return 0;
    }
    Se non vi scoccia potreste fare anche una mini spiegazione delle funzioni?
    Spero di essere stata chiara nelle spiegazioni, grazie mille in anticipo.
    Attendo con ansia risposte

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303

    Moderazione

    Comincia con il dare un'occhiata al Regolamento interno

    1) Il titolo delle discussioni deve essere quanto più preciso possibile: qui tutti quelli che postano per il linguaggio C++ hanno un problema... altrimenti, che postano a fare?

    2) Il codice va postato usanto gli appositi tag CODE del forum, altrimenti si perde in indentazione e leggibilità

    3) Quando il codice presenta un problema, si deve sempre specificare quale problema. Dici che con le funzioni non va... in che senso? Produce risultati errati? Quali? Non ne produce? Si blocca? Boh...

    Sistemo io il titolo ed il codice... tu aggiungi le informazioni necessarie.



    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Mi da sempre il risultato fisso 2686792 indipendentemente dai valori che inserisco. Scusa per come ho impostato il forum ma mi sono registrata 10 minuti prima di scrivere ed è la prima volta che lo uso, grazie per i consigli

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Mi sa che devi ripassare il concetto di funzione.
    La grossa differenza fra una chiamata a procedura e una chiamata a funzione è che la seconda prevede che venga restituito un risultato.

    Esempio:
    codice:
    int somma(int a, int b) {
       int tot = a + b;
       return tot;
    }
    Questa è una funzione. Essa prende due parametri interi ("a" e "b"), li somma e ne restituisce il risultato.

    Se io la richiamo in questo modo:
    codice:
    int a = 5;
    int b = 6;
    somma(a, b);
    La funzione farà il suo dovere: prenderà i due parametri, li sommerà e restituirà il risultato... che ne faccio del risultato? Lo butto via... (un po' inutile).

    Se, al contrario, faccio così:
    codice:
    int a = 5;
    int b = 6;
    int totale = somma(a, b);
    Succede lo stesso di prima, ma questa volta il risultato viene salvato nella variabile "totale".

    Ecco, nel tuo codice hai fatto l'errore del primo esempio...

    Chiarisciti le idee sulla differenza fra procedura e funzione e prova a sistemare il tuo codice.

    Ci sarebbe altro da dire sul passaggio del parametro "tot", ma per il momento credo tu abbia abbastanza materiale su cui lavorare.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Mi potresti correggere il programma per favore? Non so fare... Non ne ho un'idea.

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Originariamente inviato da fredfras0
    Mi potresti correggere il programma per favore? Non so fare... Non ne ho un'idea.
    Direi di no.
    Per tre motivi:

    1) Questo tipo di richiesta non è ammessa dal regolamento che ti ho linkato sopra
    2) Le indicazioni per poter correggere te le ho date tutte, con tanto di esempio
    3) Al momento non ho né tempo per mettermi a correggere il tuo programma, né voglia di fare i compiti a casa...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Scusa se nono sono alla sua altezza. Sei veramente una persona molto simpatica. Non mi pare di aver fatto una richiesta così impossibile... Come mi hai detto tu prima se scrivo vuol dire che avrò un problema... o no? Non mi da fastidio il fatto che tu non mi abbia risposto ma il tono che usi. Se uno non ha capito una cosa usando quel tono non lo aiuti di certo.

    Grazie comunque.
    P.S. Dato che ho letto il regolamento il punto 6 dice:

    "Non si svolgono compiti a casa conto terzi: se proponi un esercizio da risolvere, devi riportare obbligatoriamente anche il codice della tua soluzione adottata affinché sia possibile VERIFICARLO ED EVENTUALMENTE CORREGGERLO O MIGLIORARLO."

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    11
    codice:
    codice:  
    #include <iostream>  
    using namespace std;
    int n,scelta; ho tolto tot da variabile globale, dovrebbe essere inutile.. 
        
    int CacoloNoleggio(int tr[][4], int costo[])  {
    ho tolto tot come variabile da dare alla funzione in quanto la restituisce...
        var tot=0;aggiunto la definizione della variabile..     
        for (int j=0; j<=3; j++)     {      
            if(j==scelta-1)       {       
               for (int i=0; i<=n-1; i++)        {
                   tot=tot+(costo[i]*tr[i][j]);
               }                
             }      
         }         
         return tot;  
    }    
    
    int main ()
      {
                cout<<"Inserire il numero di automobili  ";
                cin>>n;
                int sr,costo[n],tot,scelta,tr[n][4];
                for (int i=0; i<=n-1; i++)      {
                cout<<"Automobile  "<<i+1<<endl;
                cout<<"Inserire il costo del noleggio giornaliero ";
                cin>>costo[i];
                cout<<"Trimestre 1 inserire il numero di giornate ";
                cin>>tr[i][0];
                cout<<"Trimestre 2 inserire il numero di giornate ";
                cin>>tr[i][1];
                cout<<"Trimestre 3 inserire il numero di giornate ";
                cin>>tr[i][2];
                cout<<"Trimestre 4 inserire il numero di giornate ";
                cin>>tr[i][3];
          }
                cout<<"Inserisci un trimestre a scelta ";
                cin>>scelta;
                tot = CacoloNoleggio(tr, costo);
    il risultato della funzione lo salvo in tot e
     sistemo la chiamata della funzione togliendo tot dalle variabili
                cout<<"L'incasso totale del trimestre e' "<<tot<<endl;
    eventualmente puoi eliminare questa riga e quella sopra e mettere:
    cout<<"L'incasso totale del trimestre e' "<<CacoloNoleggio(tr, costo)<<endl;
    dovrebbe andare lo stesso                       
                cout<<endl<<endl;
                system ("pause");
                return 0;
      }
    ho evidenziato le cose che ho cambiato... non sono sicurissimo perchè è un po' che non uso c++ abitualmente...

  9. #9
    non viene comunque.. Grazie mille lo stesso

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Originariamente inviato da fredfras0
    "Non si svolgono compiti a casa conto terzi: se proponi un esercizio da risolvere, devi riportare obbligatoriamente anche il codice della tua soluzione adottata affinché sia possibile VERIFICARLO ED EVENTUALMENTE CORREGGERLO O MIGLIORARLO."
    Questo non vuole assolutamente dire che gli utenti siano obbligati a doverlo correggere e migliorare al posto tuo: il fatto di postare il codice è un requisito essenziale, ed è un primo passo obbligatorio per consentire agli utenti di capire meglio il problema e fornire eventualmente dei suggerimenti, ma è responsabilità dell'autore farne tesoro e provare a modificare il proprio codice e a riproporlo nel caso in cui non funzioni, spiegando l'errore ottenuto o il malfunzionamento quando qualcosa "non va" o "non viene", altrimenti torniamo sempre e comunque nel primo caso, cioè far svolgere ad altri il proprio compito a casa, esulando da un semplice aiuto.


    Originariamente inviato da fredfras0
    non viene comunque.. Grazie mille lo stesso
    Ti è stato suggerito cosa devi ripassare e quali sono i problemi riscontrati sul tuo codice, per cui tutto ciò che ti rimane di fare è rimboccarti le maniche e provare a risolverlo; in caso di difficoltà specifiche, pubblicale qui tranquillamente e spiega cosa non capisci o cosa non ti è chiaro... è troppo comodo attendere la "pappa pronta" rimbrottando i moderatori per una questione di toni che, a mio avviso, non hanno offeso nessuno né sono stati assolutamente sopra le righe.

    Buon lavoro!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.