PDA

Visualizza la versione completa : [C++] Ciclo for


Ajdad
25-03-2014, 00:31
Salve, e' da qualche ora che mi sono inceppato in un problema su c++, con l'utilizzo del cilo for.
Il mio intento era quello di creare un semplice programma che mi avrebbe permesso di indovinare un numero inizializzato, in "t" tentativi, a quanto pare non c'e' alcun errore sintattico poiche' il programma viene compilato senza problemi; una volta eseguito, pero', dopo aver inserito in input i tentativi ("t") il programma si blocca dando il seguente errore: "Si e' verificato un errore. L'applicazione verra' chiusa. Potrebbe essersi verificata la perdita dei dati su cui si sta lavorando...ecc...ecc...Invia segnalazione errori\Non inviare.
Come detto in precedenza si tratta di un programma molto semplice, ma nonostante cio' non riesco ad individuare il problema:dh::dh::dh:



#include <iostream>
#define C 3 \\ Inizializzo il numero da trovare


int n, t, f;
int main (void)
{
printf("Di quanti tentativi vuoi usufruire?");
scanf("%d\n", t); \\ Inserisce in quanti tentativi vuole cercare di indovinare il numero
for(int i = 0; i<t; i=i+1)
{printf("Inserisci il numero vincente");
scanf("%d", n);
if (n==C)
f = t-i;
printf("Hai indovinato in tentativi %d", f);
system("pause");
}
}



P.S uso Dev-C++ 4.9.9.2

Samuele_70
25-03-2014, 01:07
Ciao
alla scanf() devi passare l'indirizzo della variabile
quindi


scanf("%d", &t);


il line comment inizia con due slash //, non con due backslash \\ che sono diversi.

Alex'87
25-03-2014, 11:02
Hai incluso iostream (C++) ma stai usando printf e scanf (C, che richiedono l'inclusione di stdio.h)

n, t e f; non hanno senso di essere globali, le puoi dichiarare direttamente nel main.
Potresti usare dei nomi migliori. Ad esempio, tentativiTotali al posto di t.

Perch calcoli in quel modo il numero di tentativi con cui l'utente ha vinto? Lo hai gi quel numero, i + 1.

Al posto di i = i + 1 puoi abbreviare con i++

Indenta correttamente e usa le parentesi grafe: la stringa "Hai indovinato in tentativi %d" viene stampata sempre (e tra l'altro meglio scriverla come "Hai indovinato in %d tentativo/i"

Il commento \\ non esiste, // (e non so come faccia a compilare...) ed valido solo in C++. In C esiste solo /* commento */

Ajdad
25-03-2014, 16:24
Hai incluso iostream (C++) ma stai usando printf e scanf (C, che richiedono l'inclusione di stdio.h)

n, t e f; non hanno senso di essere globali, le puoi dichiarare direttamente nel main.
Potresti usare dei nomi migliori. Ad esempio, tentativiTotali al posto di t.

Perch calcoli in quel modo il numero di tentativi con cui l'utente ha vinto? Lo hai gi quel numero, i + 1.

Al posto di i = i + 1 puoi abbreviare con i++

Indenta correttamente e usa le parentesi grafe: la stringa "Hai indovinato in tentativi %d" viene stampata sempre (e tra l'altro meglio scriverla come "Hai indovinato in %d tentativo/i"

Il commento \\ non esiste, // (e non so come faccia a compilare...) ed valido solo in C++. In C esiste solo /* commento */

Per quanto riguarda i commenti ho fatto la domanda dal portatile e il tasto dello slash e' rotto, nel programma, compilato dal fisso, ho usato gli slash, come anche in altri programmini funzionanti realizzati precedentemente; nel libro che sto seguendo come guida viene usato usato #include <iostream> e poi prosegue con printf, scanf e cosi via..Per quanto riguarda invece le graffe, sono sicuro di non averle messe correttamente, sono alle prime armi e non ho capito perfettamnte il meccanismo, soprattuto nel for. :mad::mad::mad:

Loading