ďťż

Ładny brzuch

Mam napisać program, który wypisuje największą liczbę, ale za chiny ludowe nie wiem, czemu on wypisuje liczbę zawsze tą po środku. Jak mu podaję np. 6, 11, 45, to on wypisuje 11. Co jest w nim nie tak?

#include<stdio.h> int main(void) { float a, b, c; printf("Podaj zmienna a: "); scanf("%f", &a); printf("\nPodaj zmienna b: "); scanf("%f", &b); printf("\nPodaj zmienna c: "); scanf("%f", &c); if(a>b) { printf("\nNajwieksza liczba jest: %.2f", a); return 0; } else { printf("\nNajwieksza liczba jest: %.2f", b); return 0; } if(c>b) { printf("\nNajwieksza liczba jest: %.2f", c); return 0; } else { printf("\nNajwieksza liczba jest: %.2f", b); return 0; } if(c>a) { printf("\nNajwieksza liczba jest: %.2f", c); return 0; } else { printf("\nNajwieksza liczba jest: %.2f", a); return 0; } }

Pisałem to w Dev-C++, czy z tym programem jest coś nie tak?
Użytkownik Nitrox edytował ten post 05 listopad 2007, 15:02


program jest zle napisany
zwrocmy uwage na jedno z warunkow (bo od tego trzeba zaczac):

if(a>b) { printf("\nNajwieksza liczba jest: %.2f", a); return 0; } else { printf("\nNajwieksza liczba jest: %.2f", b); return 0; }

sprawdzasz czy a>b, ale juz potem nie sprawdzasz czy czasem c nie jest wieksze od ktoregos z nich..
wywal te returny to zobaczysz jakie dziwne rzeczy zaczna sie dziac :P

jesli nie chcesz tego robic na tablicach, to musisz zagniezdzic instrukcje warunkowe lub wyszczegolnic warunki
jak?? podalem 2 linijki wyzej ;)

ps. specjalnie nie daje Ci gotowego kodu, bo to jest na prawde proste, a jak tego nie pojmiesz to potem mozesz miec ciezko..

edit:
nic nie szkodzi bryn, na pewno bardziej to wyjasniles ;)
Użytkownik fernandez edytował ten post 05 listopad 2007, 16:17
po prostu przetłumacz sobie to co napisałeś w C na polski:

1. Wczytaj liczby
2. Jeżeli a>b, to napisz, że a jest największe; w przeciwnym przypadku napisz, że b jest największe
3. Jeżeli c>b, to napisz, że c jest największe; w przeciwnym przypadku napisz, że b jest największe
4. Jeżeli c>a, to napisz, że c jest największe; w przeciwnym przypadku napisz, że a jest największe

I teraz zachowuj się jak komputer. Ktoś ci mówi liczby: a=20, b=10, c=30 (pkt 1). Ty przechodzisz do pkt 2: sprawdzasz, czy a>b - w tym przypadku 20>10 - to prawda, więc w radosnym pląsie biegniesz mu oznajmić, że największa jest 20. I kończysz działanie, bo masz "return". Gdyby nie return - co tam, przechodzisz do trzeciego punktu, jak kazał twój programista - tutaj sprawdzasz czy c>b - dla ciebie 30>10 - też prawda, więc lecisz do człowieka i mówisz mu, że największe jest 30 - i wychodzisz na idiotę, bo wcześniej wmawiałeś mu, że największe jest 20. Mało tego, wracając, zauważasz, że programista dał ci jeszcze czwarty punkt - sprawdzasz więc czy c>a - 30>20 - więc to prawda - i niczym rączy gołąb pocztowy lecisz ponownie do człowieczka, po raz kolejny komunikując mu, że największa była trzydziestka.

Coś nie tak, prawda? ;)

edit: cholibka, zanim to wyprodukowałem to fernandez mnie uprzedził, a tak się starałem :(
Użytkownik bryn edytował ten post 05 listopad 2007, 15:39
Już sobie poradziłem. Nie wiem czy to jest napisane poprawnie, ale działa i tak ma być :P
#include<stdio.h> int main (void) { float a, b, c; printf("Wpisz pierwsza liczbe: "); scanf("%f", &a); printf("\nWpisz druga liczbe: "); scanf("%f", &b); printf("\nWpisz trzecia liczbe: "); scanf("%f", &c); if(a>b) { if(a>c) { printf("\nNajwieksza liczba to: %.2f", a); } } if(b>a) { if(b>c) { printf("\nNajwieksza liczba to: %.2f", b); } } if(c>a) { if(c>b) { printf("\nNajwieksza liczba to: %.2f\n", c); } } printf("\n"); system("Pause"); return 0; }
Użytkownik Nitrox edytował ten post 05 listopad 2007, 16:50


w brzydkim stylu, ale teraz przynajmniej poprawnie ;)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •