Pagina 1 di 1

[Risolto] [C] ciclo non funzionante

Inviato: mercoledì 26 novembre 2008, 12:42
da Software-Bloat
ciao ragazzi,
premesso che sto ancora imparando...
ho fatto questo programmino che dovrebbe risolvere un sistema di due equazioni di primo grado...

quando chiedo se si vuole ripetere l'operazione,non funziona e si chiude il programma.

il sorgente è questo:

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>

int main()
{
int a,b,c,a2,b2,c2,num_x,num_y,delta;
float x,y;
char scelta;

do {
        printf ("Spiegazione programma: \n");
        printf ("ax + by = c \na2x + b2y = c2\n");
        printf ("Inserisci i valori:\n");

        //prima parte aquisizione valori
        printf ("a = \t");
        scanf ("%d", &a);

        printf ("b = \t");
        scanf ("%d", &b);

        printf ("c = \t");
        scanf ("%d", &c);

        //seconda parte aquisizione valori
        printf ("a2 = \t");
        scanf ("%d", &a2);

        printf ("b2 = \t");
        scanf ("%d", &b2);

        printf ("c2 = \t");
        scanf ("%d", &c2);

        //calcoli
        delta = (a*b2) - (a2*b2);
        num_x = (c*b2) - (c2*b);
        num_y = (a*c2) - (a2*c);

        x = num_x/delta;
        y = num_y/delta;

        //printa risultati
        printf ("il valore della x è : %.1f\n", x);
        printf ("il valore della y è : %.1f\n", y);

        printf ("vuoi continuare? <s/n>\n");
        scanf ("%c", &scelta);
    } while (scelta == 's');

return 0;
}
cos'ho sbagliato ??? O_O

Re: [C] ciclo non funzionante

Inviato: mercoledì 26 novembre 2008, 13:12
da menelicte
mi sa che ti rimane un invio nel buffer di tastiera e quindi cattura quello invece di aspettare il tuo input.

per svuotare il buffer, inserisci

Codice: Seleziona tutto

fflush(stdin);
prima dell'ultima scanf

Re: [C] ciclo non funzionante

Inviato: mercoledì 26 novembre 2008, 14:38
da Super Cicco
usa:
int getchar(void)
al posto di scanf, poi svuota il buffer con fflush(stdin)

Re: [C] ciclo non funzionante

Inviato: mercoledì 26 novembre 2008, 14:39
da hds619
menelicte ha scritto: mi sa che ti rimane un invio nel buffer di tastiera e quindi cattura quello invece di aspettare il tuo input.

per svuotare il buffer, inserisci

Codice: Seleziona tutto

fflush(stdin);
prima dell'ultima scanf
oppure

Codice: Seleziona tutto

while (getc (stdin) != 0x0A);

Re: [C] ciclo non funzionante

Inviato: mercoledì 26 novembre 2008, 17:05
da preben
Oppure togli "\n" dall'ultima printf.
Ciao!

Re: [C] ciclo non funzionante

Inviato: mercoledì 26 novembre 2008, 19:23
da Super Cicco
preben ha scritto: Oppure togli "\n" dall'ultima printf.
Ciao!
??? che centra?

Re: [C] ciclo non funzionante

Inviato: mercoledì 26 novembre 2008, 21:43
da kelev
Credo non sia quello il problema

Re: [C] ciclo non funzionante

Inviato: mercoledì 26 novembre 2008, 22:24
da preben
Perché non provate?

Re: [C] ciclo non funzionante

Inviato: giovedì 27 novembre 2008, 11:44
da Software-Bloat
scusa eh...ma il problema non è quello...lo capisci anche se non provi...
comunque la soluzione era questa per svuotare il buffer

Codice: Seleziona tutto

while ( getchar() != '\n' );
e fila tutto liscio :P

grazie a tutti  (b2b)

Re: [C] ciclo non funzionante

Inviato: giovedì 27 novembre 2008, 11:45
da preben
Software-Bloat ha scritto: scusa eh...ma il problema non è quello...lo capisci anche se non provi...
comunque la soluzione era questa per svuotare il buffer

Codice: Seleziona tutto

while ( getchar() != '\n' );
e fila tutto liscio :P

grazie a tutti  (b2b)
Ma tu hai provato?

Re: [C] ciclo non funzionante

Inviato: giovedì 27 novembre 2008, 11:53
da Software-Bloat
certo...e come sospettavo....

Re: [C] ciclo non funzionante

Inviato: giovedì 27 novembre 2008, 15:34
da kelev
Metti risolto nel topic