PROBLEMA Semplice programma C++

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.
La scanf lascia il carattere di newline nel buffer. Quando vai a chiedere la risposta, usando la scanf di nuovo, questa rileva il \n e si ferma.
Per ripulire il buffer stdin, basta usare
Codice:
while( getchar() != '\n' );
E questo è il codice completo:
Codice:
#include <stdio.h>int main()
{
 int num1, num2;
  char  risp;
 puts("Inserisci due numeri");
 scanf("%i", &num1);
 scanf("%i", &num2);
 printf("La somma è: %i? <s/n> ", num1 + num2 + 1);
 while( getchar() != '\n' );
 scanf("%c", &risp);
 if (risp == 's') 
    puts("....");
 else puts("Sai contare, vero?");


return 0;
}
Nota che la libreria iostream è del C++ non del C (stdio.h).:rolleyes:
 
La scanf lascia il carattere di newline nel buffer. Quando vai a chiedere la risposta, usando la scanf di nuovo, questa rileva il \n e si ferma.
Per ripulire il buffer stdin, basta usare
Codice:
while( getchar() != '\n' );
E questo è il codice completo:
Codice:
#include <stdio.h>int main()
{
 int num1, num2;
  char  risp;
 puts("Inserisci due numeri");
 scanf("%i", &num1);
 scanf("%i", &num2);
 printf("La somma è: %i? <s/n> ", num1 + num2 + 1);
 while( getchar() != '\n' );
 scanf("%c", &risp);
 if (risp == 's') 
    puts("....");
 else puts("Sai contare, vero?");


return 0;
}
Nota che la libreria iostream è del C++ non del C (stdio.h).:rolleyes:
Grazie mille!


Sai il perché quando uso la funzione "cout" anziché "printf" mi da un sacco di errori?
6rOEanK.png
 
Sbagli qualcosa.. è un programma facilissimo... comunque devi fare cout<<qualcosa; e scrive la variabile se vuoi mettere il testo devi usare le "" :D

PS : lo studio a scuola
 
cout, cin, cerr appartengono al C++ e sono nella libreria iostream
Nel C++ puoi usare printf, scanf includendo cstdio ma non viceversa.
 
cout, cin, cerr appartengono al C++ e sono nella libreria iostream
Nel C++ puoi usare printf, scanf includendo cstdio ma non viceversa.
Praticamente se cercavo di usare la libreria <iostream.h> mi diceva che nella directory non c'era. Ho risolto aggiungendo la funzione
Codice:
[COLOR=#555555][FONT=Monaco]using namespace std;
[/FONT][/COLOR]​in questo modo, posso usare i comandi cout e cin.
 
A)Quella non è una funzione;
B)Cout e cin ed i relativi operatori appartengono al C++, non è corretto usarli in C;
C)Il C++ è multiparadigma,ma principalmente OOP. Il C adotta un paradigma procedurale.

Chiaro?
 
che errore ti da?

scusa una domanda ma perché hai messo return(0); ?
mica è un metodo, è un'applicazione console, non serve return in teoria :boh:
Per favore, mi puoi spiegare a cosa serve e in quali circostanze bisogna mettere "return()"? Grazie mille! :)
 
Void lo usi quando non deve restituire nulla in caso poi devi restituire una cosa devi usare return qualcosa ... in una void invece devi mettere solo return e basta
 
Se la funzione è void non si usa return. E' un errore. "return" restituisce qualcosa alla funzione chiamante.
Il return() del main serve semplicemente per far chiudere il terminale e ha la funzione di comunicare che il programma (per programma si intende sempre la funzione main, la quale contiene o meno a seconda della complessità, chiamate ad altre funzioni) è terminato correttamente. Scrivere return() o scrivere return(0) è la stessa cosa.


ps. Per pulire il buffer dello stdin è più corretto usare la funzione int fflush(FILE * stream) scritta in questo modo: fflush(stdin), che cancella tutto il contenuto presente nel buffer associato allo standard input ovvero alla tastiera nei casi più comuni.
 
Ultima modifica:
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top