#include <stdio.h>
#include <ctype.h>
#define ARBUZY 1.25 //cena arbuzów za kg
#define BURAKI 0.65 //cena buraków za kg
#define CEBULE 0.89 //cena cebuli za kg
#define RABAT 0.05 //rabat dla zamówienia powyżej 100 zł
#define KOSZT1 3.5 //koszt przesyłki do 5 kg
#define KOSZT2 10 //koszt przesyłki od 5 do 20 kg
#define KOSZT3 8 //koszt przesyłki powyżej 20kg
#define KOSZT3_3 0.1 // + 0.1 za dodatkowy kg
int wybor(void); //wybór zamowienia
int pobierz_wybor(void); //
int pobierz_pierwszy(void); // omiń \n z bufora
int pobierz_ilosc(void); // omiń \n z bufora
int main(void)
{
int warzywa;
warzywa = wybor();
}
int wybor(void) // wybór zamowienia
{
int wybor;
int arbuzy, cebule, buraki, masa, masa_a, masa_b, masa_c;
float zamowienie, arbuzy_c, cebule_c, buraki_c, cena;
while( (wybor = pobierz_wybor() ) != 'k')
switch (wybor)
{
case 'a' : printf("Podaj ilosc:\n");
arbuzy = pobierz_ilosc();
masa_a += arbuzy;
arbuzy_c = arbuzy * ARBUZY;
break;
case 'b' : printf("Podaj ilosc:\n");
buraki = pobierz_ilosc();
masa_b += buraki;
buraki_c = buraki * BURAKI;
break;
case 'c' : printf("Podaj ilosc:\n");
cebule = pobierz_ilosc();
masa_c += cebule;
cebule_c = cebule * CEBULE;
break;
default : printf("Pierdol sie\n");
break;
}
cena = arbuzy_c + buraki_c + cebule_c;
masa = masa_a + masa_b + masa_c;
printf("Wybrano łącznie %d kg warzyw za %.2f zł\n", masa, cena);
}
int pobierz_wybor(void)
{
int ch;
printf("**********************************************\n");
printf("Wprowadź zamowienie (kilogramy)\n");
printf("a. arbuzy b. buraki c.cebule k.koniec\n");
printf("**********************************************\n");
ch = pobierz_pierwszy();
while ( (ch < 'a' || ch > 'c') && ch != 'k')
{
printf("Wpisz a, b, c lub k.\n");
ch = pobierz_pierwszy();
}
return ch;
}
int pobierz_pierwszy(void) // omiń \n z bufora w tej fukcji tkwi problem wg mnie
{ //ale nie umiem sobie z tym poradzić
int ch;
ch = getchar();
while (getchar() != '\n')
continue;
return ch;
}
int pobierz_ilosc(void)
{
char ch;
int liczba;
while (scanf("%d", &liczba) != 1)
{
while( (ch = getchar() ) != '\n')
putchar(ch); //pomija bledne dane
printf(" nie jest liczba calkowita\n");
}
return liczba;
}
```c
Przy pierwszym powtórzeniu pętli wszystko jest ok. dopiero przy drugim muszę 2 razy wpisać literę
bardzo proszę o pomoc.
0
0
while (ch=getchar() == '\n');?
albo
while (ch=getchar() == '\n')
continue;//<???>
lub:
while(true)
{
ch = getchar();
if(ch!='\n') break;
}
0
int pobierz_pierwszy(void) // omiń \n z bufora
{
int ch;
bool flaga = true;
while(flaga == true)
{
ch = getchar();
if(ch != '\n')
break;
flaga == false;
}
return ch;
}
Wielkie dzięki pomogło !! :) Męczyłem to od kilku godzin
0
int pobierz_pierwszy(void)
{
char ch = 27;
scanf("%c ", &ch); // spacja na końcu format stringa!
return ch;
}