PDA

Visualizza la versione completa : [C] Terminare programma alla pressione del tasto 'N'


dukefg
06-12-2007, 15:39
ciao a tutti, premetto che sono alle prime armi con la programmazione in C. Utilizzo Microsoft Visual c++ come piattaforma. Per iniziare ho messo in piedi un programmino che fa la somma di N addendi compresi in un range; tutto tranquillo, solamente che non riesco a far kiudere il programma esclusivamente premendo il tasto "n". Alla fine si tratta solamente di un piccolo miglioramento ma fino ad ora sono riuscito a far continuare il programma premendo il tasto "s" e a farlo terminare premendo un qualsiasi tasto al di fuori di "s". qualcuno sa darmi una mano?
Il programma è questo:


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

void main()
{

int N,i,somma,addendo;
char c;

do
{
printf("Inserisci numero addendi compreso tra 2 e 10\n");
do
{
scanf("%d", &N);
}
while(N<2||N>10);
printf("Aggiungi addendi\n",N);
i=0, somma=0;
do
{scanf("%d", &addendo);
i=i+1;
somma=somma+addendo;
}
while(i<N);
printf("La somma dei %d addendi vale = %d\n", N, somma);
printf("Vuoi rieseguire il programma? s/n\n");
}
while(c=getch() =='s');
}

dunix87
06-12-2007, 15:43
dovresti aggiungere un if all'inizio del primo do while, se ho capito quello che vuoi fare, dovrebbe essere cosi:

if (c=='n') return;// o break per uscire dal ciclo

pero in questo caso devi modificare il ciclo while, che ti funzionerebbe al contrario...

Cioè ti esce con la pressione di n, ma continua con qualisiasi tasto.

Oppure stampi a video un messaggio di errore nel caso di pressione di tasti diversi usando un ciclo infinito ed una serie di if per ottenere i caratteri consentiti

LeleFT
06-12-2007, 15:59
Una piccola occhiata al regolamento: il titolo deve riassumere il problema, questo è troppo vago.
Il linguaggio va sempre specificato nel titolo della discussione.
Il codice va postato dentro ai tag [ CODE ] per renderlo più leggibile.

Correggo tutto io.


Ciao. :ciauz:

dukefg
06-12-2007, 16:02
grazie per la risp ma ho provato ad inserire la linea di comando ke mi hai detto ma non accade nulla(può anke darsi ke lo utilizzo in maniera sbagliata).....io vorrei che, una volta terminato il programma, questo venga terminato se io inserisco "n" mentre quando inserisco un altro carattere differente da "s" o "n" mi deve comparire nuovamente la scritta "Vuoi rieseguire il programma? s/n"......spero di essere stato più chiaro :zizi:
p.s.: per LeleFT.....grazie perl'avvertimento starò più attento!!

oregon
06-12-2007, 16:04
Scrivi

while(c=getch() !='n');

dunix87
06-12-2007, 16:08
ah, oh capito allora ti conviene fare così,

trasforma il tuo primo ciclo in un ciclo infinito(poni la condizione del while come 1)
alla fine al posto della printf con vuoi rieseguire il programma inserisci una cosa di questo tipo:


while(1){
printf("Vuoi rieseguire il programma? s/n\n");
if(c=getch() =='s') break;
else if(c=='n') return;
}


Cosi dovrebbe andare se non ho sbagliato a scrivere il codice...

dukefg
06-12-2007, 16:17
ok t ringrazio....stò cercando di modificarlo appena riesco a fare qualcosa t faccio sapere

oregon
06-12-2007, 16:20
Originariamente inviato da dukefg
ok t ringrazio....stò cercando di modificarlo appena riesco a fare qualcosa t faccio sapere

Hai provato la mia riga?

dukefg
06-12-2007, 16:23
si l'ho provata...ma quella riga mi fa continuare il programma se non premo "n" mentre se premo un qualsiasi altro tasto continua, interpretandoli come una "s"..

dukefg
06-12-2007, 16:29
per dunix87...scusami ma continua a segnalarmi errori, sicuramente sono io che inserisco le linee di comando in maniera errata perchè è la prima volta che sento parlare di "ciclo infinito","break" e "returne".....potresti farmi vedere come inserirli correttamente?

Loading