Prosty program - niepotrzebny enter w buforze

Prosty program - niepotrzebny enter w buforze
KA
  • Rejestracja:około 12 lat
  • Ostatnio:11 miesięcy
  • Postów:72
0

Witam, mam tu taki prosty program: wszystko działa ok oprócz jednej rzeczy - po wykonaniu funkcji trójkąt, w buforze jest nadal [enter], więc cokolwiekby po jej wykonaniu nie wpisać to wyskoczy błąd. Pytanie - w jaki sposób pozbyć się tego entera po wpisaniu wartości dla boku c (dla liter robi to funkcja wpiszlitere(), ale ona po wpisaniu 1 znaku przestaje czytać resztę - w przypadku liczb tak być nie może)

Kopiuj
 static zmienna=0;
// Nalicza wywolania programu

void trojkat()
{
    float a, b, c;
    printf("Podaj dlugosci wszystkich bokow:\n");
    scanf("%f %f %f", &a, &b, &c);
    if(a+b<c || a+c<b || b+c<a)
        printf("To nie jest trojkat!\n");
    else{
        if(a*a+b*b==c*c ||a*a+c*c==b*b || b*b+c*c==a*a)
            printf("To jest trojkat prostokatny!\n");
        else
            printf("To nie jest trojkat prostokatny!\n");
    }
}

int wpiszlitere()
{
    char ch;
    ch=getchar();
    while(getchar()!='\n')
        continue;
    return ch;
}

void funkcja()
{
    printf("a. Porada\t\t\tc.Liczba wywolan\nb. Trojkat prostokatny\t\tq. Koniec\nWpisz litere:\n");
        switch(wpiszlitere()){
        case 'a' : printf("\nPorada: Kuj zelazo poki gorace\n\n");
            ++zmienna;
            funkcja();
            break;
        case 'b' : ++zmienna;
            trojkat();
            funkcja();
            break;
        case 'c' : ++zmienna;
            printf("\nWybrales juz %d opcji\n\n", zmienna);
            funkcja();
        case 'q' : break;
        default : printf("Blad! Podaj poprawna litere!\n\n");
            funkcja();
            break;

    }
}

int main()
{
    funkcja();
    return 0;
}
n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 5 lat
  • Postów:2412
0

Dokladnie tak samo albo dodac spacje po %f.

_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:19 dni
0

Może lepiej zapoznaj się z pętlami zamiast zapełniać bezsensu stos.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
KA
  • Rejestracja:około 12 lat
  • Ostatnio:11 miesięcy
  • Postów:72
0

_13th_Dragon, mógłbyś powiedzieć co tu jest nie tak z pętlami?
a co do spacji po %f, to już nie ma problemu co pisałem, ale teraz trzeba jeszcze coś dopisać, tj. trzeba wpisać 4 wartości żeby funkcja się wykonała (wynik da dobry, 4 wpis zignoruje)

_13th_Dragon
Tu brak pętli, zamiast pętli stosujesz nieskończone zapełnienie stosu!
KA
  • Rejestracja:około 12 lat
  • Ostatnio:11 miesięcy
  • Postów:72
0

sorry ale ja jeszcze nie wiem co to jest stos, możesz powiedzieć w którym miejscu stosuje "nieskończone zapełnienie stosu"

_13th_Dragon
Tam gdzie funkcja() wywołuje funkcja() czyli w 4-ch miejscach.
KA
ok, już rozumiem. Dzięki za pomoc

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.