Crash su uso di funzioni

di il
2 risposte

Crash su uso di funzioni

Salve a tutti.
stavo facendo un programmino a caso per impratichirmi sull'uso delle funzioni.
tutto bene tutto a posto tranne , nell'ultima parte di codice, quando provo a fare la divisione delle due
funzioni.
quando immetto ne codice la sequenza di numeri in coppia a salire : per esempio 1-2 3-4 5-6 7-8 e la quaterna di numeri 9-10-11-12
funziona , mi da il corretto risultato.
quando invece uso le coppie 1-1 2-2 3-3 4-4 e la quaterna 5-5-6-6 il programma va in crash.
inizialmente pensavo si trattasse di un errore di tipo (che non giustificherebbe il crash) avendo usato il tipo double per la variabile w.
cambiandolo in int il crash permane.
ovvio che mancano i controlli di tipo e tante altre cosine che al momento non saprei nemmeno gestire.
mi piacerebbe avere una spiegazione tecnica dell'avvenuto, e anche una terra terra casomai mi sfuggisse qualcosa su quella tecnica.
riporto il codice di seguito. grazie

#include <iostream>

using namespace std;/// esercizi con dichiarazione e chiamate di funzioni


int f_somma ( int a=0 ,int b=0)   /// dicgiarazione della funzione f_somma

{  cin>>a>>b;
    int res = a+ b;
    return res;                  /// corpo della funzione f_somma
}

int diff (int a =0 , int b =0) /// dichiarazione della funzione diff
{
    cin>> a >>b;
       int ris = a-b;
          return ris;            /// corpo della funzione diff
}

int main()
{
    int z = f_somma () ;            ///  chiamata della funzione f_somma
       cout<<"somma:  " << z << "\n";   ///stampa risultato di f_somma

       if (z%2 == 0 )                       /// controllo del risultato pari o dispari
       cout << "il risultato e' pari  \n";  ///stampa del risultato dìse pari
       else
        cout << "il risultato e' dispari \n"; /// stampa del risultato se dispari

       int h = diff  ()  ;      /// chiamata della funzione diff
         cout<<"diffe:  " << h << "\n";   /// stampa risultato di diff

              z= f_somma()+70;             /// altra chiamata per la funzione f_somma
              cout<< "f_somma+70=:  "<< z<< "\n"; ///stampa del risultato

                z= f_somma()-3;            ///ulteriore chiamata della funzione f_somma
                cout<<" f_somma-3=:  " << z << "\n"; /// stampa del risultato


                   int w=f_somma ()/diff();         ///operazione su due funzioni
                   cout<< "w=:"<< w   << "\n";

   return 0;
}

2 Risposte

  • Re: Crash su uso di funzioni

    Io vedo questo che è pericoloso:
    int w=f_somma ()/diff();         ///operazione su due funzioni
    Cosa succede se diff() ritorna 0?
    Questo molto probabilmente è la causa del crash.
  • Re: Crash su uso di funzioni

    Thanks!
Devi accedere o registrarti per scrivere nel forum
2 risposte