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

gfxmedia    0

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
wlodziu    1,201

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
wlodziu    1,201

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
wlodziu    1,201

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.

×