Skocz do zawartości
  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

gfxmedia

Programowanie ;)

Promowane odpowiedzi

Witam,

Nie wiedziałem gdzie to umieścić, więc daje tu.

Mianowicie, program (w Pascalu) ma sortować 4 liczby podane z klawiatury, od największej do najmniejszej.

Jak podam 12,11,10,9 to posortuje normalnie, a jak dam 6,8,9,12 to sortuje tak: 9,8,12,6.

Co jest źle w tym kodzie ? Kod musi być oparty właśnie na IF'ach.

program sort4;

uses crt;


var

l1,l2,l3,l4,p,p1:real;


begin

clrscr;


writeln('Podaj l1');

readln(l1);


writeln('Podaj l2');

readln(l2);


writeln('Podaj l3');

readln(l3);


writeln('Podaj l4');

readln(l4);



if l1

begin

p:=l1;

l1:=l2;

l2:=p;

end;


if l2

begin

p:=l2;

l2:=l3;

l3:=p;

end;


if l3

begin

p:=l3;

l3:=l4;

l4:=p;

end;


if l1

begin

p:=l1;

l1:=l2;

l2:=p;

end;


writeln;

writeln(l1:0:2);

writeln(l2:0:2);

writeln(l3:0:2);

writeln(l4:0:2);


readkey;

end.

za pomoc piwka.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Masz za mało warunków sprawdzających..

Np.

Jeżeli masz warunek 11>12 wtedy w nim sprawdzasz czy 11>13 i 11>14 i 11>12

wtedy dopiero możesz podać ze 11 jest największe

Użyłbym tutaj sortowania bąbelkowego

[ Dodano: 2011-10-30, 18:48 ]

PS. radziłbym nie używać zmiennych, które mają cyfry

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Czyli musisz rozpatrzyć każda sytuacje, czyli 4 główne warunki a w nich po 3 czyli razem gdzieś 12 warunków wraz z else, mam takie coś w C++, ale niestety pendrive nie mam to bym Ci pokazał a pisać mi się nie chce.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

masz tu na 3 liczby.

max - najwieksza

min - najmniejsza

sr - pomiedzy

program pierwszy;

uses crt;

var a,b,c,max,sr,min:integer;

begin

clrscr;

writeln ('Podaj a b c:');

readln (a,b,c);

     if a>b then

     begin

       if a>c then

       begin

            max:= a;

             if b>c then

             begin

             sr:=b;

             min:=c;

             end

             else

             begin

             min:=b;

             sr:=c;

             end;

       end

       else

       begin

           sr:=a;

           if b>c then

           begin

           max:=b;

           min:=c;

           end

           else

           begin

           max:=c;

           min:=b;

           end;

       end;



     end

     else

     {b wieksze od a}

     begin

          if b>c then

          begin

               max:=b;

                 if a>c then

                 begin

                 sr:=a;

                 min:=c;

                 end

                 else

                 begin

                 sr:=c;

                 min:=a;

                 end;



          end

          else

          begin

               sr:=b;

               if a>c then

               begin

               max:=a;

               min:=c;

               end

               else

               begin

               min:=a;

               max:=c;

               end;


          end;


     end;




     writeln ('Najwieksza: ',max,' Najmniejsza: ',min,' Pomiedzy: ',sr);

     readln;



end.

na cztery liczby będzie podobnie, musisz rozpatrzyć każdy sposób.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×