Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C/C++] Jakie to działanie?

Ostatnio zmodyfikowano 2014-10-23 08:37
Autor Wiadomość
outlet52
Temat założony przez niniejszego użytkownika
[C/C++] Jakie to działanie?
» 2014-10-22 23:36:51
Pomogliście mi ostatnio więc mam nadzieje, że teraz też dacie rade :D

Zadanie pochodzi ze strony main.edu.pl (http://main.edu.pl/pl/user.phtml?op=showtask&task=jak&con=CPP)
Myślałem, żeby zrobić to 6 krótkimi warunkami, efekt jest prawidłowy ale od razu wyświetla się "Program nie odpowiada".

#include <cstdio>

int main()
{
unsigned int a,b,c;

scanf("%u %u %u", &a,&b,&c);

if(a+b==c)
{
printf("\n%u + %u == %u", a,b,c);
}

if(a-b==c)
{
printf("\n%u - %u == %u", a,b,c);
}

if(a*b==c)
{
printf("\n%u * %u == %u", a,b,c);
}

if(a/b==c && b>0)
{
printf("\n%u / %u == %u", a,b,c);
}

if(a%b==c && b>0)
{
printf("\n%u r. %u == %u", a,b,c);
}

return 0;
}

Wie ktoś gdzie robię błąd? Albo może to zadanie można zrobić zupełnie inaczej? :D
Proszę pisać własne propozycje.
Pozdrawiam.
P-119239
Rashmistrz
» 2014-10-23 00:01:08
Jak dobrze rozumiem, program ma zgadnąć
jakie obliczenie stało się z A i B dając C?

Problem jest tu:
if( a / b == c && b > 0 )
 i tu:
if( a % b == c && b > 0 )


Zagnieźdź te sprawdzanie działania w if'ie:
C/C++
if( b > 0 )
     if( //...

,bo inaczej zawsze Ci się wykona
te dzielenie i modulo...

EDIT:
Nie zapomnij zamienić:
if( b > 0 )
 na
if( b != )
.
Chociaż żadnej różnicy to nie da, bo
:/
P-119242
outlet52
Temat założony przez niniejszego użytkownika
» 2014-10-23 08:17:21
Wow, rzeczywiście pomogło, możesz mi powiedzieć dlaczego tak się stało? :O
Myślałem, że taka forma jaką ty mi podałeś jest dokładnie tym samym co wpisałem wcześniej, tylko, że użyłem operatora &&. Ktoś mógłby wyjaśnić dlaczego przy moim był błąd? :P
P-119244
Rashmistrz
» 2014-10-23 08:37:21
dlaczego tak się stało?

,bo inaczej zawsze Ci się wykona
te dzielenie i modulo..
w tamtym miejscu...
Użyłeś wtedy koniunkcji zdań logicznych.

Nie miały te warunki żadnych ograniczeń i
zawsze się wykonywały te obliczenia.
np.
5 % 0 == 5 && 0 > 0

Ale oczywiście koniunkcja nie pozwoli na
wypisanie bo drugie zdanie logiczne jest
fałszywe...

» Kurs C++ » Poziom 1Operacje logiczne lekcja

Dlatego zagnieździłem "if" w "ifie"...

//Przepraszam za skromność, ale szkoła woła.
P-119245
« 1 »
  Strona 1 z 1