Domanda Problema con un programma

Stato
Discussione chiusa ad ulteriori risposte.

Slipknot92

Utente Silver
13 Settembre 2009
16
6
0
62
So che è una ******ata ma non riesco a far funzionare esattamente questo programma. Allora si tratta di un programma che dopo aver scritto un numero ti dice se esso è compreso tra 0 e 10, 10 e 20, 20 e 30, se è maggiore di 30 e se il numero è minore di 0. Ora il problema sta che quando io scrivo -5 ad esempio mi dice che è un numero compreso tra 0 e 10. Chi mi aiuta. pls.
METTO LA SOURCE DEL PROGRAMMA
#include <cstdlib>
#include <stdio.h>

main(){
int a;
printf("Scrivi un numero:");
scanf("%d" , &a);
if (a<10){
printf("a e' compreso tra 0 e 10");
scanf("%d" , &a);
}
if(a<20) {
printf("a e' compreso tra 10 e 20");
scanf("%d" , &a);
}
if( a<30){
printf("a e' compreso tra 20 e 30");
scanf("%d" , &a);
}
if(a>30)
printf("a e' maggiore di 30");
scanf("%d" , &a);
if(a<0)
printf("a e' minore di zero");
scanf("%d" , &a);
}
 
semplicemente perchè scanf in questo caso prende solo ciò che può considerare come un numero, e chiaramente il tuo trattino (che userai per indicare il meno) non lo è... dovresti mettere un controllo che nel caso in cui vede un trattino prima del numero assogia ad a il valore negativo corrispondente

un' altra cosa, quando avete questi problemi provate prima di chiedere aiuto a semplificare il caso, tipo a mettere un printf di a senza nessun if... avresti visto dove era il problema... anche se in piccolo è fare un debug dei propri problemi
 
modifica il ciclo....

Per evitare equivoci col debugger metti

Codice:
if((a<=0)&& (a < 10))
{
printf("a e' compreso tra 10 e 20");
}

Secondo me, tu sbagli a ripetere ogni volta lo scanf ....
Lo metti una volta sola e poi fai uno switch... e al default metti un messaggio di errore...
 
in effetti mi sono sbagliato... credevo che lo scanf nn riconoscesse il trattino... comunque una versione funzionante del tuo programma è questa:
PHP:
#include <stdio.h>

main(){
  int a;
  printf("Scrivi un numero: ");
  scanf("%d" , &a);
  if (a<0) {
    printf("%d è minore di 0\n",a);
  }
  if (a<10 && a>=0) {
    printf("%d è minore di 10 e maggiore o uguale a 0\n",a);
  }
  if (a<20 && a>=10) {
    printf("%d è minore di 20 e maggiore o uguale a 10\n",a);
  }
  if (a<30 && a>=20) {
    printf("%d è minore di 10 e maggiore o uguale a 20\n",a);
  }
  if (a>=30) {
    printf("%d è maggiore o uguale a 30\n",a);
  }
}
infatti ogni volta dopo aver stampato la riga (come ti ha fatto notare steph) richiedi un'altra stringa in input... che sovrascrive la precedente... inoltre se passi come le condizioni dell'input come hai fatto te, nel caso in cui il numero sia per esempio 1, vengono eseguiti tutti gli if perchè uno è sia maggiore di 10, che di 20, che di 30 :)

ps. la prossima volta magari metti il codice in dentro tag php o code che si legge meglio... e magari impara ad usare l'indentazione che il codice diventa più leggibile...
 
Grazie a tutti il fatto che io ripeto scanf è perchè faccio i programmi in console wizard se io non inserisco scanf il programma mi si chiude e non mi fa vedere nnt. Cmq la funzione "&&" A cosa corrisponde? Sul mio libro non cè o comunque non ho cercato bene.
 
&& non è una funzione ma è un connettivo logico e corrisponde a AND oppure
9cae4437756a15b8e44ec23e07fb1f65.png


ritorna vero solo so entrambe le affermazioni ai lati sono vere... puoi avere di più su wikipedia

per quanto riguarda il tasto x chiudere la finestra se sei su windows ti basta mettere subito prima della graffa del main
Codice:
system("pause");
e di importare la libreria stdlib.h all'inizio del file

o comunque è sufficiente uno scanf ma sempre subito prima della fine del file ;)
 
si, ma in teoria la iostream può essere usata anche dal C... (sempre se tra gli header predefiniti è presente la iostream).
 
Stato
Discussione chiusa ad ulteriori risposte.