Podwojne wyświetlenie wartośći

0

Hej, chyba tutaj nadaje się ten temat :P
Naklepałem sobie banalny program, taka "pomoc naukowa" na matmę, bo nie zawsze chce mi się grzebać w plecaku i wyciągać kalkulator żeby coś sprawdzić ;)
PRoblem polega na dwukrotnym wyświetleniu tekstu z funkcji main.
Tutaj przykładowe działanie: http://www.bankfotek.pl/image/1432670.jpeg
A tu kod:

#include <stdio.h>
#include <math.h>

#define PIERWIASTEK 1.41

void a(void);
void c(void);
void ab(void);

int main (void){
	char ktory;
	short x = 1;
	while (x < 2){
		printf("Co chcesz obliczyć?\nA - przekatna kwadratu o boku a\nB - bok kwadratu o przekatnej c\nC - przekątną prostokata o boku a i b\n\n");
		scanf("%c", &ktory);
		printf("\n");
		if (ktory == 'A'){
			a();
		}
		if (ktory == 'B'){
			c();
		}
		if (ktory == 'C'){
			ab();
		}
	}
	return 0;
}

void a(void){
	float a, c;
	printf("Podaj dlugosc boku kwadratu: ");
	scanf("%f", &a);
	c = a * PIERWIASTEK;
	printf("\nPrzekatna tego kwadratu wynosi: %f\n\n", c);
}

void c(void){
	float a, c;
	printf("Podaj dlugosc przekatnej kwadratu: ");
	scanf("%f", &c);
	a = c * PIERWIASTEK;
	a = a * 0.5;
	printf("\nDlugosc boku wynosi %f\n\n", a);
}

void ab(void){
	float a, b, c;
	printf("Podaj bok a prostokata: ");
	scanf("%f", &a);
	printf("\nPodaj bok b prostokata: ");
	scanf("%f", &b);
	a = pow(a, 2);
	b = pow(b, 3);
	c = a + b;
	c = sqrt(c);
	printf("\nDlugosc przekatnej tego prostokata wynosi %f\n\n", c);
}

Z góry dzięki za pomoc i pozdrawiam ;)

0

Zostawiasz znak nowej linii w buforze.

0

Rozwiązanie:

...
                }
         while(getchar()!='\n') {}
        }
        return 0;
...

przyczynę podał @n0name_l wyżej.

0

bufor można oczyścić poprzez fflush(stdin)

0

Okok wielkie dzięki wszystkim :) Co prawda jeszcze nie ogarniam buforów, ale działa :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1