Czemu pętla się zapętla?

Odpowiedz Nowy wątek
2015-02-19 01:29
Krwawy Terrorysta
0

Ktoś mi może pomóc bo już nie mam sił,czemu pętla przy pobieraniu x'a i y'a się od razu zapętla przy podaniu litery,a nie czeka na wprowadzenie następnej?

Program ma dzielić bądź mnożyć podane liczby w zależności od wyboru.Pisany w C.
Za wszelkie wskazówki bardzo dziękuję.

Kod:

#include <stdio.h>
float div(float x,float y);
float mul(float x,float y);

int main()
{
float x,y,result;
char ch;

printf("Choose what to do:\n\na. division\nb.multiplication\n\nI want: ");
while ((ch=getchar())!='a' && ch!='b')
{
printf("Wrong choice.try again.\n\nI want: ");
fflush(stdin);
}

printf("Type your first number: ");
while(1!=scanf("%f",&x))
{
printf("\nIt is not a number! Try again.\n");

}

printf("Type your second number: ");

while((1!=scanf("%f",&y))||(y==0 && ch=='a'))
{
if(y==0) printf("You can't divide by 0.Try again.\n");
else printf("\nIt is not a number! Try again.\n");

}

switch(ch)
{
case 'a':
result=div(x,y);
break;

case 'b':
result=mul(x,y);
break;

default:
printf("\n\nError!\n\n");
result=0;   
}

printf("Your result: %.2f\n\n",result);

getchar();
return 0;   

}

float div(float x,float y)
{
    float result;
    result=x/y;
    return result;
}

float mul(float x,float y)
{
    float result;
    result=x*y;
    return result;
}

Pozostało 580 znaków

2015-02-19 01:41
0
#include <stdio.h>

int main(void){
    float a, b;
    char op;
    while(scanf("%f %c %f", &a, &op, &b)==3)
        printf("%f\n", op=='*' ? a*b : op=='/' ? a/b : 666.666);

    printf("Propably (not for sure) you just mc\'fkd up something.");
    return 0;
}

http://ideone.com/6vCQqG

edytowany 3x, ostatnio: spartanPAGE, 2015-02-19 09:09
shure? :D - Shalom 2015-02-19 08:49
@Shalom o 2 wszystko brzmi blisko wystarczająco - spartanPAGE 2015-02-19 09:09

Pozostało 580 znaków

2015-02-19 02:03
Krwawy Terrorysta
0

Wybacz ale nie o taką pomoc mi chodziło...
Potrzebuję podpowiedzi,a nie całkowicie inaczej zbudowanego,gotowego,programu który niby robi to samo a jednak nie.

Pozostało 580 znaków

2015-02-19 08:51
2

Zabezpieczenie przed wpisywaniem liter
W skrócie: jak podałeś literkę to ona magicznie nie zniknie z bufora, trzeba ją wczytać! A scanf z %f literki czytać nie chce więc się zapętlasz.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-02-19 09:42
Krwawy Terrorysta
0

Wszystko jasne! Dzięki za linka :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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