Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703

    verificare dati in input da console

    Devo realizzare delle funzioni che controllino i dati in input da console; c'è qualche libreria in particola che mi facilita la vita?Oppure qualche post particolarmente adatto al mio caso..
    già una cosa del genere non capisco perchè ma non mi funzia:
    codice:
    int main()
    {
        int a;
    cout << "inserisci un numero" <<endl;
    do
    {
    cin >> a;
    }
    while (a < 48 || a> 57);
    
    
    	return 0;
    }
    In teoria dovrebbe continuare a chiedere il numero fintanto che non lo inserisco.. come strumento di valutazione ho usato la tabella ascii(48 = 0 |57=9) solo che si blocca dopo aver inserito il primo dato in input..se inserisco una lettera poi non mi fa più inserire niente.. O_o

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    intanto il cout della domanda dovresti metterla nel do while sennò poi non viene più stampata.. poi a è un int e quindi non credo tu debba fare un paragone con i codici ascii ma bensì con i numeri direttamente:

    codice:
    int main()
    {
        int a;
        do
        {
             cout << "inserisci un numero" <<endl;
             cin >> a;
         }
         while (a < 0 || a > 9);
    
         return 0;
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    ok ho usato questa:

    codice:
    void immetti_cifra (int cifra)
                {
                    do
                    {
                        cifra = getch ();
                    }   while (cifra < '1' || cifra>'3');
                }
    ma io non voglio che termini, cioè quella funzione fa parte di una classe, tale classe è inclusa nel programma pricipale, solo che quando richiamo immetti_cifra e gli passo il parametro dopo essere stata eseguita correttamente esce, invece che seguire i restante flusso del programma..poi ho un altro switch per dire..

    @edit:
    molto probabilmente non riesce a prendere il valore del parametro lo switch successivo(il parametro viene modificato all'interno della funzinoe) che c'è dopo e per questo il programma termina, penso che devo utilizzare il passaggio per riferimento ma non l'ho ben chiaro..sapete come risolvere? :master:

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Se mostri tutto il codice che non funziona, capiamo di piu' ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    semplicemente:
    funzione:
    codice:
    #include <conio.h>
    void immetti_cifra (int cifra)
                {
                    do
                    {
                        cifra = getch ();
                    }   while (cifra < '1' || cifra>'3');
                }
    la funzione è all'interno di una classe; richiamo la classe nel main

    codice:
    #include <iostream>
    #include <"classe.h">
    using namespace std;
    int mail()
    {
      classe funzioni;
        int x;
        cout << "1"; 
        cout << "2";
        cout << "3";
        funzioni.immetticifra(x);
        switch(x)
        {
            ... ...
         }
    
    }
    bene, dopo il richiamo della funzione il programma termina..come se nello switch la 'x' fosse senza valore..

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Se il valore di x deve essere restituito dalla funzione, devi passarlo tramite puntatore, altrimenti il suo valore iniziale non viene modificato ...

    Ovviamente, la funzione dovra' ricevere il puntatore alla variabile e trattarlo di conseguenza.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    infatti la modifica all'interno della funzione non sortisce alcun effetto,mmm così intendi?
    codice:
    int immetti_cifra(int* cifra)
                {
    
    
                    do
                    {
                        *cifra = getch ();
                    }   while (*cifra < '1' ||*cifra>'3');
                    return *cifra;
                }
    la richiamo nel main:
    codice:
    funzione.immetti_cifra(&scelta_modulogestione);
    :master: non funzia però.. p.s scelta_modulogestione è stato dichiarato nel main di tipo int.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Deve funzionare ...

    Tu dici pero' che la funzione e' di una classe (un suo metodo) ... ma non lo vedo nella dichiarazione

    int immetti_cifra(int* cifra)

    ... manca la classe ...

    Non e' che stai mostrando esempi del codice e non quello che effettivamente stai utilizzando?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    la classe è composta da tante funzioni;
    il main è così costituito:

    codice:
    #include <iostream>
    #include <classe.h>
    using namespace std;
    int main()
    {
       classe funzione;
       int sceltamodulo_gestione;
       cout << "1"<<endl; 
       cout << "2"<<endl;
       cout << "3"<<endl;
       //richiamo la funzione
       funzione.immetti_cifra(&sceltamodulo_gestione);
       switch(sceltamodulo_gestione);
       return 0;
    }
    Ora sn sotto linux e purtroppo conio.h (per il getch()) non funziona, tuttavia forse potrei aver trovato l'errore:
    quando faccio lo switch devo passargli sempre l'indirizzo?! quindi ci va il '&' giusto?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    No.


    Ci fai vedere il file classe.h ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.