Jak zakończyć pętlę w programie konsolowym po wybraniu "1"?

0

Pętla wchile kończy działanie po jednym wykonaniu

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

int main()
{
    float podstawa;
    float promien;
    float wysokosc;
    float bok;
    float pole;
    char i="1";
    int k=1;

    while(k==1)
    {
        printf("zaczynamy\n");
        puts("wpisz 1 żeby policzyć pole koła: ");
        puts("wpisz 2 żeby policzyć pole kwadratu: ");
        puts("wpisz 3 żeby policzyć pole trapezu: ");
        puts("wpisz 4 żeby policzyć pole trójkąta: ");
        scanf("%c", &i);
    
        switch(i)
        {
            case '1':
            puts("wpisz promień koła koła: ");
            scanf("%f", &promien);
            pole= M_PI*promien*promien;
            printf("Pole koła wynosi:  %f\n",pole);
            break;
            case '2':
            puts("wpisz długość boku: ");
            scanf("%f", &bok);
            pole = bok*bok;
            printf("Pole kwadratu wynosi:  %f\n",pole);
            break;
            case '3':
            puts("wpisz długość dłuższej podstawy: ");
            scanf("%f", &podstawa);
            puts("wpisz długość krótszej podstawy: ");
            scanf("%f", &bok);
            puts("wpisz wysokość: ");
            scanf("%f", &wysokosc);
            pole = .5*(podstawa+bok)*wysokosc;;
            printf("Pole trapezu wynosi:  %f\n",pole);
            break;
            case '4':
            puts("wpisz długość podstawy: ");
            scanf("%f", &podstawa);
            puts("wpisz wysokość: ");
            scanf("%f", &wysokosc);
            pole = .5*podstawa*wysokosc;;
            printf("Pole trójkąta wynosi:  %f\n",pole);
            break;
            default:
            puts("Podałeś znak inny niż cyfry 1 - 4\n");
        }
        printf("Wpisz 1 lub 0 jeśli chcesz powtórzyć oblicenia lub zakończyć\n");

        k=scanf("%d", &k);
        printf("k wynosi:%d\n", k);
    }

    return 0;
}
1

Przeczytaj dokumentację funkcji scanf(): https://pl.wikibooks.org/wiki/C/scanf

Linijka k=scanf("%d", &k);. Jednocześnie populujesz argument przez &k, a potem go nadpisujesz zwracanym wynikiem z funkcji. scanf() zwraca EOF lub kod błędu.

Zamień linijkę po prostu na scanf("%d", &k) (bez k=).

0

To się nawet nie kompiluje. Chyba jest jakiś granica lenistwa.

Przeklej to sobie na ideone albo cc -Wall -Wextra -pedantic. I napisz KTÓRYCH warnów i błędów nie rozumiesz.

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