Problema funzioni?

di il
5 risposte

Problema funzioni?

Ciao a tutti

dato il mio essere autodidatta nel linguaggio c++ (solo linguaggio fra l'altro ) dopo aver studiato un pò le basi (funzioni, array e far prendere decisioni) ho deciso di darmi un "esercizio" per mettere un pò insieme quello che ho (più o meno) imparato, ossia
Creare un' applicazione che ciclicamente continui a chiedere un carattere all'utente. Il ciclo si interromperà a discrezione di quest'ultimo pemendo un tasto prestabilito. Una volta premuto, l'applicazione deve chiedere se si vuole uscire dall'applicazione o no, e, in caso negativo, deve tornare a fare il ciclo.
detto questo, ho scritto (e riscritto, numerose volte) il codice:
#include <cstdio>
#include <iostream>

using namespace std;

char input1;

//bool answer (char input1)
//     {if (input1 == 'y' || input1 == 'Y')
//         answer = true;
//     else if (input1 == 'n' || input1 == 'N')
//          answer = false;
//    return (answer);
//            }
//array risposta

char answer (char input [2])
     {            cout << "vuoi uscire?" << endl;
                  cin >> input1;
                  input[0] = 'y';
                  input [1] = 'n';
                  if (input1 == input[0]) 
                          {cout << "arrivederci!!" << endl;}
                  if (input1 == input[1])
                          {ciclo (); };
                          }

char ciclo (char input1)
       {   cout << "premi un tasto" << endl;
           cin >> input1;
           do  { cout << "premi un tasto" << endl;
                         cin >> input1; }
                         while (input1 != 'q',input1 != 'Q');
                         if (input1 == 'q', input1 != 'Q')
                                    answer ();
                                      };
int main (void)
    {     char name [20];
          cout << "come ti chiami?  ";
          cin >> name;
          cout << "ciao" << name << "!" << endl;
          ciclo ();
          return 0;
         }             
              
creare un'applicazione che non si chiuda ho visto è semplice. semplicemente inserendo un ciclo do-while in main è possibile farlo andare finchè non si preme un tasto.
la funzione bool racchiusa dagli slash // è uno stralcio di tentativo per far funzionare la seconda domanda ("vuoi uscire?" ecc), ma non riuscendo a farlo funzionare ho optato per un piccolo array.

quello che chiedo io è qualche informazione riguardo alle funzioni ciclo e answer: come vedete ciclo è chiamata direttamente da main; ciclo dovrebbe ripetersi finchè non si preme q o Q: quando si preme questo tasto, viene chiamata la funzione answer. come risolvere questo problema? il compilatore mi continua a dire "ciclo undeclared, first use this function" o viceversa. Dal libro che sto studiando ho letto che bisogna dichiarare a priori le funzioni e il tipo di risultato che restituiscono. Provando però a mettere tipo
char ciclo (char input1)
mi riempie di altri errori!! come mi consigliate di fare?

5 Risposte

  • Re: Problema funzioni?

    Edit: quello che intendevo dire tra ciclo e answer è che se vedete in fondo a entrambe una chiama l'altra. Dato che mi visualizza questo problema come si può fare anche in futuro, creando applicazioni più complesse?
  • Re: Problema funzioni?

    Ciclo si aspetta in input un carattere che però tu non gli dai. Ergo per il compilatore è un'altra funzione (non dimenticare che in C++ esiste l'overload delle funzioni).
    Idem per answer
  • Re: Problema funzioni?

    shodan ha scritto:


    ciclo si aspetta in input un carattere che però tu non gli dai. Ergo per il compilatore è un'altra funzione (non dimenticare che in C++ esiste l'overload delle funzioni).
    Idem per answer
    in che senso?
    io avevo pianificato la cosa in questo modo:
    ciclo
    1) chiede un carattere
    2) legge il carattere dell'utente
    3) valuta il carattere
    4) se non è q o Q continua, altrimenti effettua la chiamata di answer

    a questo punto answer
    1)chiede se si vuole uscire dal programma
    2)se digiti y la funzione termina e continua la lettura di main
    3) se digiti N viene effettuata nuovamente la chiamata a ciclo

    penso che il mio errore sia nell'argomento delle funzioni, o sbaglio?
  • Re: Problema funzioni?

    Questa è la funzione che definisci prima del main: char ciclo (char input1)
    Questa è la funzione che invochi nel main: ciclo ();
    E' senza argomenti pertanto il compilatore (presumo g++ o un suo porting) ti avverte che non esiste nessuna funzione char ciclo() nel tuo codice.

    Se definisci una funzione affinché prenda un parametro, glielo devi dare per forza. Non puoi ignorarlo come potresti fare per il tipo di ritorno.

    Per farla breve o togli il parametro a quella funzione o continui ad avere errori. E lo stesso vale per answer.
  • Re: Problema funzioni?

    Mi sa che avevo già provato questa strada, ma il risultato non cambia!

    ho cambiato nel main e dentro le funzioni gli argomenti (tolti tutti ossia char answer () e char ciclo (), e nelle funzioni ho messo solo answer () e ciclo () ) ma continua a dirmi sempre che una o l'altra funzione viene usata prima di essere dichiarata!! c'è qualcosa che mi sfugge

    provando invece a mettere tutto dentro ciclo (eliminando answer) da main a ciclo ci arriva, peccato però che il ciclo vero e proprio non funziona: mi chiede di premere un tasto soltanto una volta, e qualunque cosa stia premendo mi visualizza la scritta se voglio uscire, e anche in quel caso, qualcunque tasto io stia premendo mi esce!
Devi accedere o registrarti per scrivere nel forum
5 risposte