Tornare indietro con ciclo [RISOLTO]

di il
6 risposte

Tornare indietro con ciclo [RISOLTO]

Ciao ragazzi sono nuovo sia di c++ che del forum:)
sto studiando da solo c++ e sono fermo ad un passaggio magari stupidissimo.
ho creato dei file di intestazione e un file cpp main.
vi posto il codice, si tratta di un menù e delle sezioni_menù. Una volta nella sezione_menù parte un ciclo while, chiedendo se voglio proseguire e rispondendo di no, imposto la condizione del ciclo per arrestarlo. una volta arrestato dovrebbe tornare al file precedente cioè alla funzione precedente menù.
Invece non lo fa, finito il ciclo si blocca, aspetta un qualcosa che non so. se lo compilate dovrebbe funzionare correttamente tranne questa cosa. cambiando il percorso per il file txt in parte6.h.

FILE:

main.cpp
class_menu.h //visualizzo men+
scelta_iniziale.h //scelta inziale
partedueprova.h //opzione 2 del menu
parte6.h //importa utenti in file txt (modifica percorso).

ho caricato i codici su MEGA, qui non me li faceva importare.




è una cosa stupida, sto studiando piano piano da solo. scusate l'ignoranza e e ca....te che sicuramente ho scritto.
grazie per l'aiuto ragazzi

6 Risposte

  • Re: Tornare indietro con ciclo [RISOLTO]

    Fai copia incolla del codice sul forum e usa i tag CODE
  • Re: Tornare indietro con ciclo [RISOLTO]

    Ok scusate pensavo fosse meglio caricare i files.

    ricordo che funziona ho fatto solo il menù due.
    
    //main.cpp 
    
    #include <iostream>
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    
    #include <string>
    
    using std::string;
    using std::getline;
    using std::to_string;
    
    #include "scelta_iniziale.h"
    
    int msgbenvenuto()
    {
    	cout << endl << "BENVENUTO NEL REGISTRO DI CLASSE, QUESTA APP E' ANCORA\n";
    	cout << "IN PROVA. Qualsiasi idea crea un file .txt e salvalo. \n";
    	cout << "\n";
    	cout << "\n";
    	cout << "Questa app è stata creata da Giacomo217" << endl;
    }
    
    
    
    int main()
    {
    	msgbenvenuto();
    	Scelta_inizio ese;
    	ese.scelta_inizio();
    
    
    
    }
    
    
    
    //scelta_iniziale.h
    
    #include <iostream>
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    
    #include <string>
    
    using std::string;
    using std::getline;
    using std::to_string;
    
    #include <cstdlib>
    
    
    #include "class_menu.h"
    
    
    class Scelta_inizio
    {
    public:
        void scelta_inizio()
        {
            string risposta;
    	
    	    int sicurezza; 
    	    sicurezza = 0;
    	
    
    	    cout << "\nvuoi andare al menu?  s/n....:  ";
    	
    	    while (sicurezza == 0)
    	    {
    		    cin >> risposta;
    		    if (risposta == "s")
    		    {
    			    sicurezza = 1;
    			    menu();
    
    		    }
    
    		    if (risposta == "n")
    		    {
    			    sicurezza = 1;
    				system("pause");
                    exit(0);
    		    }
    
    			cin.ignore();
            }
        }
    };
    
    
    
    //class_menu.h
    
    
    
    #include <sstream>
    using std::stringstream;
    //using namespace std;
    
    #include <iostream>
    
    using std::cout;
    using std::cin;
    using std::endl;
    using std::getline;
    
    #include <string>
    
    using std::string;
    using std::to_string;
    #include "partedueprova.h"
    
    
    int menu()
    {
    
    	int sicurezza;
    	sicurezza = 0;
    	string scelta;
    	cout << "1 - Creo accesso a registro di classe: \n";
    	cout << "2 - Creo nuovo utente: \n";
    	cout << "3 - Creo nuova classe scolastica: \n";
    	cout << "4 - Aggiorno scheda utente: \n";
    	cout << "5 - Aggiorno classe: \n";
    	cout << "6 - Visualizza tutti gli utenti: \n";
    	cout << "7 - Visualizza tutti gli utenti di una classe specifica: \n";
    	cout << "8 - Visualizza scheda utente specifico: \n";
    	cout << "9 - Registro di oggi: \n";
    	cout << endl;
    	cout << "per uscire premi 15 - 'n' " << endl;	
    
    	cout << "....: ";
    		
    		
    	while (sicurezza == 0)
    	{
    		cin >> scelta;
    		string s = scelta;
    		stringstream ss(s);
    
    		int intero;
    		ss >> intero;
    
    		if (scelta == "1")
    		{
    
    			cout << "in manutenzione..riprova\n";
    			cout << "....: ";
    			sicurezza = 0;
    
    		}
    
    		if (scelta == "2")
    		{
    
    			//cout << "in manutenzione..riprova\n";
    			//cout << "....: ";
    			listautenti();
    			sicurezza = 0;
    
    		}
    
    		if (scelta == "3")
    		{
    
    			cout << "in manutenzione..riprova\n";
    			cout << "....: ";
    			sicurezza = 0;
    
    		}
    
    
    		if (scelta == "4")
    		{
    			cout << "in manutenzione..riprova\n";
    			cout << "....: ";
    			sicurezza = 0;
    		}
    
    		if (scelta == "5")
    		{
    
    			cout << "in manutenzione..riprova\n";
    			cout << "....: ";
    			sicurezza = 0;
    			
    		}
    
    		if (scelta == "6")
    		{
    
    			cout << "in manutenzione..riprova\n";
    			cout << "....: ";
    			sicurezza = 0;
    
    		}
    
    		if (scelta == "7")
    		{
    
    			cout << "in manutenzione..riprova\n";
    			cout << "....: ";
    			sicurezza = 0;
    
    		}
    
    		if (scelta == "8")
    		{
    
    			cout << "in manutenzione..riprova\n";
    			cout << "....: ";
    			sicurezza = 0;
    
    		}
    
    		if (scelta == "9")
    		{
    
    				
    				
    			cout << "in manutenzione..riprova\n";
    					
    			cout << "....: ";
    			sicurezza = 0;
    
    		}
    
    		if (intero == 15)
    		{
    				
    			std::exit(0);
    			
    		}
    			
    
    		else if (intero > 9)
    		{
    			cout << "valore errato, riprova\n";
    			cout << "....: ";
    			sicurezza = 0;
    		}
    
    		else if (intero == 0)
    		{
    			cout << "valore errato, riprova\n";
    			cout << "....: ";
    			sicurezza = 0;
    		}
    
    		cin.ignore();
    			
    		//else if (scelta == to_string(scelta)
    		//{
    		//	cout << "bho";
    		//}
    
    
    
    	}
    
    }
    
    
    
    //partedueprova.h;
    //nel menù, sezione "2 - Creo nuovo utente:"
    
    //#include <cstdlib>
    #include <fstream>
    using std::ofstream;
    
    #include <stdlib.h>
    
    
    #include <iostream>
    
    using std::cout;
    using std::cin;
    using std::endl;
    using std::getline;
    using std::system;
    
    #include <string>
    
    using std::string;
    using std::to_string;
    
    #include "parte6.h"
    
    
    int listautenti()
    {
    
    	
    	//int static contatore1 = 0;
    	//int conta = 0;
    	int als;
    
    	while (als == 0)
    	{
    		string scelta;
    		string scelta2;
    		cout << "inserisci nome nuovo studente...: ";
    		cin.ignore();
    		getline(cin, scelta);
    		string nomeutente;
    		nomeutente = scelta;
    		string nomeclasse;
    		nomeclasse = scelta2;
    		//cout << "\nil nome dello studente inserito è..: ";
    		//cout << scelta << endl;
    		cout << "inserisco studente nel registro..\n";
    		Elencoutenti(nomeutente, nomeclasse);
    		int prova = 0;
    		cout << endl << "vuoi inserire un altro studente? s/n";
    		string scelta3;
    		cin >> scelta3;
    			
    		if (scelta3 != "n" && scelta3 != "s")
    		
    		{
    			cout << endl << "ottimo lavoro jack" << endl;
    			//cout << "TORNO AL MENU'";
    			//contatore = 1;
    			cout << "\nvalore non valido, riprova";
    			//system("pause");
    			exit(0);
    		}
    
    		if (scelta3 == "s")
    
    		{
    			als = 0;
    
    		}
    
    		if (scelta3 == "n")
    		{	
    			cout << "torno al menu" << endl;
    			//system("pause");
    			als = 1;
    			
    			//prova = 1;
    			//prova = 1;
    			//listautenti();
    
    		}
    
    	
    	}	
    	
    			//return 0;
    	cout << "bho";
    	return 0;
    	
    }
    
    
    
    //parte6.h
    
    #include <fstream>
    using std::ofstream;
    using std::ios;
    
    #include <iostream>
    
    using std::cout;
    using std::cin;
    using std::endl;
    using std::getline;
    
    #include <string>
    
    using std::string;
    using std::to_string;
    
    //#include "partedueprova.h"
    
    
    int Elencoutenti(string nomeutenteinserito, string classeinserita)
    {
    
    	int sentinella = 0;
    	while (sentinella == 0)
    	{
    
    		string nomeins;
    		string classeins;
    		classeins = classeinserita;
    		nomeins = nomeutenteinserito;
    		ofstream scrivousn("/Users/Jack/Desktop/PROGETTI_ED_ESEGUIBILI_C++/MEDIAVOTI_DI_OGNICLASSE/PROGETTO_DI_CLASSE/studenti.txt", ios::app);
    		scrivousn << "NOME STUDENTE:  "<< nomeins << endl << "   CLASSE FREQUENTATA:  " << classeins << endl;
    		sentinella = 1;
    
    	}
    }
    
    
    ecco qui il codice. grazie a tutti dell'aiuto. ricordo che sono all'inizio. anche la struttura del codice sarà impostata male, spero non troppo.
    se lo compilate capite subito il problema. grazie ancora

    questo è lo screen dell'output nel terminale..
    grazie ancora
  • Re: Tornare indietro con ciclo [RISOLTO]

    Nel codice, dopo che esegui

    menu();

    non c'è alcuna istruzione per tornare al menu.

    La chiamata a menu() deve essere inserita in un ciclo perché venga fatta nuovamente.
  • Re: Tornare indietro con ciclo [RISOLTO]

    Scusa ma non ho capito. Saresti così gentile da spiegarmi?
    Io richiamo la funzione menu dopo che inserisco che non voglio inserire più utenti. Dove sbaglio?
    Se inserisco n, termino il ciclo e dovrei tornare al menu ma non è così.
    Grazie a tutti per l aiuto scusate l ignoranza.. sto studiando!!!
  • Re: Tornare indietro con ciclo [RISOLTO]

    La while deve stare prima
    
    	string scelta;
    
    	while (sicurezza == 0)
    	{
    		cout << "1 - Creo accesso a registro di classe: \n";
    
  • Re: Tornare indietro con ciclo [RISOLTO]

    Grazie mille!!! Ci sono arrivato prima a lavoro. E ieri che stavo diventando scemo a pensarci.. Grazie ancora.. al prossimo problema! Risolto
Devi accedere o registrarti per scrivere nel forum
6 risposte