Crash programma C++ compilato

di il
5 risposte

Crash programma C++ compilato

Salve sono nuovo, mi sono iscritto per chiedervi un consiglio su un apparente bug che fa crashare il programma arrivato al punto di mostrare il risultato, ecco il codice:
#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <math.h>

using std::cin;
using std::cout;
using std::endl;

int main()
{
    char operazione; float num1=0,num2=0,tot=0; double e;
    cout << "Benvenuto in -CALCOLATRICE-" << endl;
    cout << "Quale operazione vuoi compiere?" << endl;
    cout << "Altrimenti premi X per uscire: ";
    while(1)
    {
        cin >> operazione; num1=0; num2=0; tot=0;
        if(operazione == 'a'){
            cout << "Quale e' il primo numero? "; cin >> num1;
            cout << "Quale e' il secondo numero? "; cin >> num2;
            tot = num1 + num2; printf("La somma e': %f",tot); break;
            }

        if(operazione == 's'){
            cout << "Quale e' il primo numero? "; cin >> num1;
            cout << "Quale e' il secondo numero? "; cin >> num2;
            tot = num1 - num2; printf("La differenza e': %f",tot); break;
            }
        if(operazione == 'm'){
            cout << "Quale e' il primo numero? "; cin >> num1;
            cout << "Quale e' il secondo numero? "; cin >> num2;
            tot = num1 * num2; printf("Il prodotto e': %f",tot); break;
        }
        if(operazione == 'd'){
            cout << "Quale e' il primo numero? "; cin >> num1;
            cout << "Quale e' il secondo numero? "; cin >> num2;
            tot = num1 / num2; printf("Il quoziente e': %f",tot); break;
        }
        if(operazione == 'e'){
            cout << "Quale e' il numero da elevare alla seconda? "; cin >> num1;
            tot = num1 * num1; printf("Il risultato e': %f",tot); break;
        }
        if(operazione == 'r'){
            cout << "Quale e' il radicando? "; cin >> num1;
            e = sqrt(num1); printf("La radice quadrata e': %f",e); break;
        }
        if(operazione == 'X'){
            break;
            }
        }
        if(operazione != '\n'){
            MessageBox(NULL,"Comando non trovato","Errore",MB_ICONERROR);
        }
    }

}

È la quarta volta che scrivo il codice, ho provato a togliere i Void che usavo per risparmiare tempo, ad usare printf al posto di cout per mostrare i risultati e a togliere i MessageBox con un semplice messaggio DOS di errore, ma nulla. Se lo avvio in Dev C++, ma anche in Code Blocks funziona perfettamente, ma esternamente no. Considerando che sono ancora agli inizi, che mi consigliate?

5 Risposte

  • Re: Crash programma C++ compilato

    Hai provato a rimuovere quel bruttissimo while infinito?
    potresti riscriverlo con un do {...} while (operazione != 'X').
  • Re: Crash programma C++ compilato

    Ma quando hai questo crash? E che intendi esattamente?
  • Re: Crash programma C++ compilato

    oregon ha scritto:


    Ma quando hai questo crash? E che intendi esattamente?
    Il crash avviene quando apro il programma esternamente (ovvero quando apro il file .exe), dopo aver scritto i numeri la console non scrive il risultato ma si chiude automaticamente... non è che sia colpa dei break?
  • Re: Crash programma C++ compilato

    _Achille ha scritto:


    oregon ha scritto:


    Ma quando hai questo crash? E che intendi esattamente?
    Il crash avviene quando apro il programma esternamente (ovvero quando apro il file .exe), dopo aver scritto i numeri la console non scrive il risultato ma si chiude automaticamente... non è che sia colpa dei break?
    Il do si usa come un while? Grazie per le risposte veloci! Dopo provo. ah.. ma tu non intendi un crash (ovvero quando il pc si arrabbia e ti dice "tuprogramma.exe ha smesso di funzionare") ma intendi la chiusura della console. per evitarla, se sei su windows puoi usare il bruttissimo system("pause") (mettilo prima del return 0 del main), altrimenti un bel getch() (in c) o un cin.get() (c++), sempre prima del return 0.

    comunque penso che tu non abbia ben chiaro che cosa sono i cicli. ti consiglio di impararti per bene:
    - ciclo do-while
    - ciclo while
    - ciclo for
    senza conoscere questi 3 correttamente avrai molti problemi. inoltre, cerca di evitare il più possibile l'uso dei break, vanno usati solo negli switch (cerca e studia la programmazione strutturata).
  • Re: Crash programma C++ compilato

Devi accedere o registrarti per scrivere nel forum
5 risposte