PDA

Visualizza versione completa : Piccolo problemino con il c++


metallica83
21-06-2001, 02.40.31
Ragazzi guardatevi questo programma in apparenza semplice:

#include <stdio.h>
#include <conio.h>

void f(void)
{
int t;

scanf("%d",&t);

if(t==1){
char s[80]; /*questa variabile viene creata
solo dopo l'ingresso in questo blocco*/

printf("immettere un nome:");
gets(s);
/*operazioni varie*/
}
}

L'ho copiato pari pari da un manuale che spiega la funzione di variabili globali, ma non me lo vuole eseguire dandomi degli strani errori; ho allora fatto include come mi ha consigliato un amico, ma niente. Mi potreste trovare l'errore? E poi mi potreste spiegare di preciso cosa f dato che il libro non che lo spieghi benissimo...

JGM
21-06-2001, 21.15.18
Sono un po' arruginito in C ma ci provo lo stesso

L'unico errore che trovo e' che manca il metodo main() per eseguire il programma per il resto mi sembra tutto ok.

Per quanto riguarda cosa fa il programma e' abbastanza semplice:
legge un intero su standard input (tastiera), se l'intero dgt e' 1 allora ti chiede di immettere un nome, questo nome viene poi copiato sull'array s.

prova a scrivere cosi':

#include <stdio.h>
#include <conio.h>

void f(void)
{
int t;

printf("Immetti un intero (poi premi invio): ");
scanf("%d",&t);

if(t==1){
char s[80]; /*questa variabile viene creata
solo dopo l'ingresso in questo blocco*/

printf("immettere un nome(poi premi invio): ");
gets(s);
/*operazioni varie*/

}else {printf("intero sbagliato");}

}

main(){
f();
}

spero di esserti stato utile

ciao....

metallica83
22-06-2001, 00.40.03
Ti ringrazio veramente jgm: ora ho risolto il problema.
Esiste anche il modo per vedere il risultato di quel che ha fatto il programma, dato che alaa fine la finestra si chiude subito? (e non riesco neanche a vedere il nome che ho scritto).

JGM
22-06-2001, 09.57.19
Per vedere il risultato basta mettere una printf alla fine della funzione f

..................
..................
}else {printf("intero sbagliato");}
printf("\nIl nome che ho scritto e': %s", s);;

per far si che la finestra dos nn si chiuda, CREDO (nn sono un esperto)che dipenda dal compilatore, un metodo abbastanza artigianale per farlo fermare e quello di inserire queste due righe nel main:

main(){
int i;
f()
scanf("%d", &i);
}

in questo modo il programma terminera dopo che avrai premuto 'invio' da tastiera.

Ciao...

Etabeta
22-06-2001, 16.50.59
azz.....tutto quel matassone di roba!!!!! un po eccessivo per quello che fa, mi pare....

boh...da che manuale l'hai preso?

che poi printf.......humm......

vampyhack83
30-06-2001, 19.34.50
Sono daccordo con jmg ma al posto di scanf ke rikiede la pressione di 2 tasti (ad es. 4 e poi invio)
puoi mettere

getch();

e il programma terminera' dopo ke avrai digitato un singolo tasto!!!

CIAO CIAO

DarkAngel
10-07-2001, 13.34.27
Se e' per questo nemmeno capisco molto l'uso di scanf e printf quando ci sono cin e cout per le operazioni si input/output in C++
Senza contare che oltre al getch c'e' pure il getche che e' simile ma fa anche vedere il carattere digitato sullo schermo!
A me sembra piu C puro che C++ quello dell'esempio precedente

Etabeta
10-07-2001, 15.24.38
Originally posted by DarkAngel
Se e' per questo nemmeno capisco molto l'uso di scanf e printf quando ci sono cin e cout per le operazioni si input/output in C++
Senza contare che oltre al getch c'e' pure il getche che e' simile ma fa anche vedere il carattere digitato sullo schermo!
A me sembra piu C puro che C++ quello dell'esempio precedente


concordo....