[Supporto] Problema esecuzione programmi

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
giacomopatermo
Prode Principiante
Messaggi: 27
Iscrizione: venerdì 5 agosto 2011, 23:04

[Supporto] Problema esecuzione programmi

Messaggio da giacomopatermo »

Ciao a tutti, ho voluto creare un piccolo programma in C++, dopo averlo compilato, si crea l'eseguibile, lo eseguo, ma non succede nulla, anzi, il processo del programma nel monitor di sistema c'è, ma mi fa lavorare al 100% la CPU, allora non mi resta che killarlo, ho provato ad eseguirlo da windows, ma non mi riconosce l'estensione, anzi non c'è proprio. Viceversa, se creo lo stesso programma con windows, funziona sia su Ubuntu, Mac e ovviamente Windows. Ho provato sia con Gedit che con Code::Blocks, cosa potrebbe essere? Grazie.
Bakuriu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1156
Iscrizione: venerdì 23 ottobre 2009, 23:43
Desktop: KDE4
Distribuzione: Kubuntu 12.04 LTS - x86_64

Re: [Supporto] Problema esecuzione programmi

Messaggio da Bakuriu »

Senza nè codice, nè informazioni su come compili non si può dire niente.

Il fatto che consumi il 100% di CPU potrebbe essere a causa di un loop infinito.

PS: se compili su linux ovviamente non puoi usare lo stesso eseguibile su windows. Vale anche il viceversa, un exe lo puoi far girare su linux solo tramite wine/virtual box etc.
Un "problema" di molti linguaggi compilati è che devi compilare il codice per tutti i diversi SO/architetture.
giacomopatermo
Prode Principiante
Messaggi: 27
Iscrizione: venerdì 5 agosto 2011, 23:04

Re: [Supporto] Problema esecuzione programmi

Messaggio da giacomopatermo »

Sto creando una programma che tenga tutti i dati per non scordarli, l'ho fatto perchè mia sorella si dimentica sempre i dati di account online, comunque ecco il source:

Codice: Seleziona tutto

#include <iostream>



using namespace std;



int main()

{
    int tipo;
    char controllore;


    cout << "ACCOUNT/PASSWORD NOME" << endl;
    cout << "------------------------" << endl << endl;

    cout << "SCRIVI IL NUMERO CORRISPONDENTE A I DATI CHE VUOI VEDERE:\n\n";

    while (1){
        cout << "1 - YOUTUBE\n2 - FACEBOOK\n3 - GMAIL\n4 - YAHOO\n\n";
        cin >> tipo;

        if ( tipo == 1 ){
            cout << endl;
            //ANCORA DA METTERE
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin.get();
            cin.get();

        }

        else if ( tipo == 2 ){
            cout << endl;
            //ANCORA DA METTERE
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin.get();
            cin.get();

        }

        else if ( tipo == 3 ){
            cout << endl;
            //ANCORA DA METTERE
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin.get();
            cin.get();
        }

        else if ( tipo == 4 ){
            cout << endl;
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin.get();
            cin.get();
        }
    }


    return 0;

}
È che non ho mai programmato su Ubuntu con il C/C++, su Ubuntu programmo in Python, soprattutto con librerie opengl. Comunque ritornando al codice sopra, cosa c'è che non va?
Ultima modifica di giacomopatermo il lunedì 29 agosto 2011, 13:27, modificato 1 volta in totale.
Vonkes
Prode Principiante
Messaggi: 73
Iscrizione: martedì 15 agosto 2006, 19:15
Località: Roma
Contatti:

Re: [Supporto] Problema esecuzione programmi

Messaggio da Vonkes »

hai provato a realizzarlo con python visto che lo conosci?
vonkes vecchio clipparolo giovane pythoniano
Vecchiom Clipparolo e nuovo pythoniano
Bakuriu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1156
Iscrizione: venerdì 23 ottobre 2009, 23:43
Desktop: KDE4
Distribuzione: Kubuntu 12.04 LTS - x86_64

Re: [Supporto] Problema esecuzione programmi

Messaggio da Bakuriu »

Diciamo che non so perchè quel codice dovrebbe avere comportamenti strani...
il ciclo infinito c'è, ma usando cin comunque dovrebbe aspettare il tuo input.

So che cin può causare problemi con input non validi, forse tu gli stai dando numeri non validi?
In caso prova a leggere questo post che spiega come ottenere l'input senza usare cin ed in maniera più sicura peril typechecking.

Come suggerimento ti potrei dire che al posto degli if metterei un switch case e inoltre il codice che usi per visualizzare le informazioni potresti raggrupparlo in una funzione in modo da non ripeterlo uguale sempre. Nel case estrai dai file le informazioni e poi chiami la funzione per visualizzarle.

Comunque aspetta il resoconto di chi se ne intende di più di C++...
Avatar utente
durzino
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 872
Iscrizione: mercoledì 5 luglio 2006, 21:14

Re: [Supporto] Problema esecuzione programmi

Messaggio da durzino »

Ciao

Sei sicuro che ti occupa il 100 % della CPU?
Ho provato e non mi risulta, anzi mi va correttamente in stato sleep.

Fai una cosa:
compilalo con g++ sorgente.cpp -o progr
poi mettilo in esecuzione con ./progr
e poi posta:

Codice: Seleziona tutto

ps faux | grep progr
...Meglio un terminale oggi Che un Crash oggi e domani...E dopodomani....
Avatar utente
Sorriso.
Prode Principiante
Messaggi: 29
Iscrizione: martedì 30 agosto 2011, 20:56

Re: [Supporto] Problema esecuzione programmi

Messaggio da Sorriso. »

Ei... Io non so darti soluzioni al tuo problema riguardo al fatto che tu non riesca a far partire l'eseguibile.
Però posso darti dei consigli a livello di codice. Io non programmo in C++ ne in C però l'ho studiato e ti posso dire che non servono tutti quegli if... Basta un solo switch e vari case...
si usa così:

Codice: Seleziona tutto

switch(condizione){
                                     case 1: bla bla bla;
                                     break;
                                     case 2: e continui con tutti i case!
                                     break;
                                    }
Come ti ho detto non conosco bene il C++ quindi prova a vedere (QUI)http://www-numi.fnal.gov/computing/d120/releases/development/WebDocs/Companion/cxx_crib/switch.html come funziona, esattamente. Però scusa secondo me il tuo programma è pensato un pochino male :).
Avatar utente
Eni
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: martedì 21 luglio 2009, 14:28
Località: Campania

Re: [Supporto] Problema esecuzione programmi

Messaggio da Eni »

windows non legge i file .cpp se non hai un compilatore o impostato il notepad per quei file...e per avviarlo devi compilarlo su windows...non è come python che fai e avvii tramite compilatore direttamente! devi creare il .sh...


poi...se quei cin.get() servono a mettere in pausa non sono necessari su ubuntu...se proprio vuoi mettere in pausa dai un

Codice: Seleziona tutto

cin>>a;
in cui a è una variabile char


quell'if non è tanto efficiente poi e perdi tempo a farlo...consiglio uno switch...come gia suggerito...
se ti serve uscire dal ciclo o dallo switch usa un:

Codice: Seleziona tutto

break;
p.s.
cin.get() da problemi coi numeri se superi il limite della variabile come tutte le cose simili del resto...dato che da un valore NULL premendo invio allora sarebbe 0 che gli dai
del tipo fai:

Codice: Seleziona tutto

#include <iostream>
using namespace std;

void main(void){
    int tipo;
    char controllore,a;


    cout << "ACCOUNT/PASSWORD NOME" << endl;
    cout << "------------------------" << endl << endl;

    cout << "SCRIVI IL NUMERO CORRISPONDENTE A I DATI CHE VUOI VEDERE:\n\n";

    while (1){
        cout << "1 - YOUTUBE\n2 - FACEBOOK\n3 - GMAIL\n4 - YAHOO\n\n";
        cin >> tipo;
       switch(tipo){
        case 1:
            cout << endl;
            //ANCORA DA METTERE
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin>>a;

        break;

        case 2:
            cout << endl;
            //ANCORA DA METTERE
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin>>a;
        break;

        case 3:
            cout << endl;
            //ANCORA DA METTERE
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin>>a;
        break;

        case 4:
            cout << endl;
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin>>a;
        break;
        }
}
}
si potrebbe restringere ancora di più il codice usando gli operatori ?: ma dato che non programmi in C/C++ lasciamoli perdere altrimenti non capiresti il codice...


provalo dimmi se hai problemi (ho modificato al volo il tuo perdona eventuali errori di sinstassi...)


il void davanti al mail potrebbe dare warning su alcuni compilatori...è xke il compilatore considera che il main deve dare un valore di ritorno...ma fa lo stesso...
Ultima modifica di Eni il martedì 30 agosto 2011, 23:15, modificato 1 volta in totale.
disse il saggio Ping Pong...windows si "impala" un passo alla volta..........linux si "impala" difficilmente...
giacomopatermo
Prode Principiante
Messaggi: 27
Iscrizione: venerdì 5 agosto 2011, 23:04

Re: [Supporto] Problema esecuzione programmi

Messaggio da giacomopatermo »

enimrac ha scritto: windows non legge i file .cpp se non hai un compilatore o impostato il notepad per quei file...e per avviarlo devi compilarlo su windows...non è come python che fai e avvii tramite compilatore direttamente! devi creare il .sh...


poi...se quei cin.get() servono a mettere in pausa non sono necessari su ubuntu...se proprio vuoi mettere in pausa dai un

Codice: Seleziona tutto

cin>>a;
in cui a è una variabile char


quell'if non è tanto efficiente poi e perdi tempo a farlo...consiglio uno switch...come gia suggerito...
se ti serve uscire dal ciclo o dallo switch usa un:

Codice: Seleziona tutto

break;
p.s.
cin.get() da problemi coi numeri se superi il limite della variabile come tutte le cose simili del resto...dato che da un valore NULL premendo invio allora sarebbe 0 che gli dai
del tipo fai:

Codice: Seleziona tutto

#include <iostream>
using namespace std;

void main(void){
    int tipo;
    char controllore,a;


    cout << "ACCOUNT/PASSWORD NOME" << endl;
    cout << "------------------------" << endl << endl;

    cout << "SCRIVI IL NUMERO CORRISPONDENTE A I DATI CHE VUOI VEDERE:\n\n";

    while (1){
        cout << "1 - YOUTUBE\n2 - FACEBOOK\n3 - GMAIL\n4 - YAHOO\n\n";
        cin >> tipo;
       switch(tipo){
        case 1:
            cout << endl;
            //ANCORA DA METTERE
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin>>a;

        break;

        case 2:
            cout << endl;
            //ANCORA DA METTERE
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin>>a;
        break;

        case 3:
            cout << endl;
            //ANCORA DA METTERE
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin>>a;
        break;

        case 4:
            cout << endl;
            cout << "E-MAIL:" << endl;
            cout << "PASSWD:" << endl << endl;
            cout << "Premi ENTER per avanzare..." << endl << endl;
            cin>>a;
        break;
        }
}
}
si potrebbe restringere ancora di più il codice usando gli operatori ?: ma dato che non programmi in C/C++ lasciamoli perdere altrimenti non capiresti il codice...


provalo dimmi se hai problemi (ho modificato al volo il tuo perdona eventuali errori di sinstassi...)


il void davanti al mail potrebbe dare warning su alcuni compilatori...è xke il compilatore considera che il main deve dare un valore di ritorno...ma fa lo stesso...
No, uguale, mi si blocca e mi occupa il 100% della CPU fa anche degli sballzi fino a 200% il che è impossibile, visto che il massimo è 100, mah.
Avatar utente
durzino
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 872
Iscrizione: mercoledì 5 luglio 2006, 21:14

Re: [Supporto] Problema esecuzione programmi

Messaggio da durzino »

durzino ha scritto: Ciao

Sei sicuro che ti occupa il 100 % della CPU?
Ho provato e non mi risulta, anzi mi va correttamente in stato sleep.

Fai una cosa:
compilalo con g++ sorgente.cpp -o progr
poi mettilo in esecuzione con ./progr
e poi posta:

Codice: Seleziona tutto

ps faux | grep progr
...Meglio un terminale oggi Che un Crash oggi e domani...E dopodomani....
Avatar utente
Eni
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 652
Iscrizione: martedì 21 luglio 2009, 14:28
Località: Campania

Re: [Supporto] Problema esecuzione programmi

Messaggio da Eni »

secondo me potrebbe dipendere dal ciclo infinito (anche se la vedo difficile)

prova con una condizione del tipo

Codice: Seleziona tutto

while(i<=1000)

che poi sale al 200% non credo sia possibile  :o forse è qualche errore nel sistem monitor...per forza non vedo altre alternative...il 200% significa una CPU co overclock del 100%...e così la bruci dopo circa 30 millesimi di secondo  (rotfl)
prova a vedere con

Codice: Seleziona tutto

top
I processi aperti e come si comportano quando hai il tuo programma aperto...e posti tutto...

poi fai anche
durzino ha scritto:
durzino ha scritto: Ciao

Sei sicuro che ti occupa il 100 % della CPU?
Ho provato e non mi risulta, anzi mi va correttamente in stato sleep.

Fai una cosa:
compilalo con g++ sorgente.cpp -o progr
poi mettilo in esecuzione con ./progr
e poi posta:

Codice: Seleziona tutto

ps faux | grep progr
Ultima modifica di Eni il martedì 6 settembre 2011, 21:18, modificato 1 volta in totale.
disse il saggio Ping Pong...windows si "impala" un passo alla volta..........linux si "impala" difficilmente...
Avatar utente
erPicci
Prode Principiante
Messaggi: 156
Iscrizione: martedì 26 aprile 2011, 12:07

Re: [Supporto] Problema esecuzione programmi

Messaggio da erPicci »

...non prendetemi troppo in giro per la risposta che sto per dare (per favore  :'()
Scherzi a parte... leggendo quanto hai scritto nel primo messaggio
dopo averlo compilato, si crea l'eseguibile, lo eseguo, ma non succede nulla
mi è venuto il dubbio che tu cerchi di eseguire il programma semplicemente cliccandoci sopra due volte... hai provato chiamandolo dal terminale? (come del resto aveva già suggerito giustamente durzino)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti