Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250

    [C++] Particolare utilizzo dello switch..

    Salve a tutti!!Mi chiedevo se nel suddetto linguaggio è possibile scrivere uno switch con indefinite soluzioni...vi faccio un esempio pratico...
    Sto scrivendo un programma che deve avere uno switch con un numero di casi pari al numero delle righe presenti in un determinato file...ma non so di preciso quante righe ha quel determinato file...perchè è un file che si aggiorna continuamente.

    Ad esempio ho un file di tre righe quindi posso scrivere:
    codice:
    switch(n)
    {
    case 1: {...} break;
    case 2:{...}break;
    case 3:{...}break;
    }
    se improvvisamente viene aggiunta una riga al file come posso fare in modo che lo switch si aggiorni in automatico?
    Premetto che sono un neofita in programmazione e non credo sia possibile una cosa del genere...grazie delle eventuali risposte

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    No che non è possibile ... e non ha neanche senso.

    Cosa fai per ogni case che non possa essere "riassunto" in una funzione o gestito con delle if ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Niente ...mi sono risposto da solo!!Sono suno uno stupido

    La soluzione era semplicemente fare un ciclo for e tramite l'istruzione if (contenuta nel ciclo stesso),riesco a "scegliere il caso giusto" .
    Grazie lo stesso e perdono per la domanda idiota
    Comunque detta così non ha senso...ecco il pezzo di codice:
    codice:
    cout<<"Inserisci il numero corrispondente alla cosa che vuoi fare ";
    cin>>numero;
    for (int i=1;i<nrighe;i++)  //nrighe indefinito!!
                {
                   if (i==numero)
                      ShellExecute(NULL,"open",canzone[i].c_str(),NULL,NULL,SW_SHOW);
                }

    Problema risolto!! e complimenti per laa velocità di risposta

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Sì ... ma anche così non ha senso ...

    A che serve il for ? Forse leggi dal file ? Ma dove ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Scusa, ma fare direttamente
    codice:
    if (numero>=0 && numero<nrighe)
        ShellExecute(NULL,"open",canzone[numero].c_str(),NULL,NULL,SW_SHOW);
    else
        cout<<"Numero non valido!\n";
    ?
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Sì leggo dal file...il tutto è stato fatto precedentemente ma ho evitato di scrivertelo...comunque se vuoi ti passo il sorgente

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi postarlo qui il sorgente con tutto quello che serve per risponderti senza perdere giorni per capirci qualcosa ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Ma il problema è risoloto!!Comunque
    codice:
    #include <iostream.h>
    #include <conio.h>
    #include <windows.h>
    #include <string>
    #include <fstream>
    
    
    
    using namespace std;
    int main()
    {
        int numero;
        int scelta;
        char scelta1;
        string titolo;
        string url;
        string s[100];
        string canzone [100];
    
    
        cout<<"PICCOLO BUG!!!Il titolo deve essere tutto attaccato per consentirne la visualizzazione completa\n";
        getch();
        etichetta:
    
    
        cout<<"1-Aggiungi file database"<<endl;
        cout<<"2-Ascolta canzoni"<<endl;
        cout<<"3-Rimuovi files"<<endl;
        cout<<"4-Esci"<<endl;
        cout<<"Fai la tua scelta ";
        cin >> scelta;
        switch (scelta)
        {
            case 1:
            {
                do {
                    system("cls");
                    ofstream f("url.txt",ios::app);
                    ofstream g ("Titoli.txt",ios::app);
                    cout<<"Inseriscil il titolo ";
                    cin>>titolo;
                    g<<titolo<<endl;
                    cin.sync();
                    cout<<"Inserisci l'indirizzo ";
                    cin>>url;
                    f<<url<<endl;
                    cin.sync();
                    system("cls");
    
                    cout<<"Vuoi aggiungerne altre ? ";
                    cin>>scelta1;
                   }
                while((scelta1=='S') || (scelta1=='s'));
                goto etichetta;
    
            }
            break;
            case 2:
            {
                     system("cls");
                     ifstream f ("Url.txt");
                     ifstream g("Titoli.txt");
                     int nrighe=0;
    
    
                while (!g.eof())
                {
                 getline(g,s[nrighe]);
                 nrighe++;
    
                }
                for (int i=1;i<nrighe;i++)
                {
                    getline(g,s[i]);
                    cout<<i<<"- "<<s[i-1]<<endl;
                }
    
                for (int i=1;i<nrighe;i++)
                    getline(f,canzone[i]);
    
                cout<<"Inserisci il numero della canzone che vuoi ascoltare  ";
                cin>>numero;
                for (int i=1;i<nrighe;i++)
    
                   if (i==numero)
                      ShellExecute(NULL,"open",canzone[i].c_str(),NULL,NULL,SW_SHOW);
    
             }
             case 4: {
                         system("cls");
                         char vero;
                         cout<<"Vuoi uscire veramente? ";
                         cin>>vero; etichettina:
                           if ((vero=='S') || (vero=='s')) break;
                else
                   if ((vero=='n') || (vero=='N')) goto etichetta;
                else
                          do {
                              cout<<"Carattere errato "<<endl;
                              cin.sync();
                              cout<<"Ripetere la scelta ";
                              cin>>vero;
                              }
                         while ((vero!='s') && (vero != 'S') && (vero != 'n') && (vero != 'N'));
    
                         goto etichettina;
                       }
             case 3:   {
                          system("cls");
    
                                  DeleteFile("Url.txt");
                                  DeleteFile("Titoli.txt");
                                  cout<<"Entrambi i files sono stati rimossi correttamente "<<endl;
                                  getch();
    
    
    
    
                          goto etichetta;
                        }
    
                 }
                 getch();
    }
    è un programmino che mi è servito + che altro alla comprensione di alcune istruzioni..devo provvedere io a mettere risolto?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Scusa, ma fare direttamente
    codice:
    if (numero>=0 && numero<nrighe)     ShellExecute(NULL,"open",canzone[numero].c_str(),NULL,NULL,SW_SHOW);
    else     
    cout<<"Numero non valido!\n";
    ?
    Valida soluzione..non ci avevo pensato,te l'ho detto che sono un neofita

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.