Algorytm " Flaga Polska"

2011-10-24 17:39

Rejestracja: 8 lat temu

Ostatnio: 6 lat temu

0

Witam mam zadanie :
Dana jest tablica n (n>1) rekordów postaci:
Imie – zawiera imię studenta,
Nazwisko – nazwisko studenta
Nagroda – informacja o przyznanej nagrodzie (1 – tak, 0- brak)
Napisać algorytm, w którym tablica zostanie posortowana w ten sposób, że na początku znajdą się
studenci, którzy nie otrzymali nagrody a następnie studenci, którzy nagrodę otrzymali.
Na ekranie powinny być wyświetlone imiona i nazwiska studentów którzy nie otrzymali nagrody,
a następnie informacje o osobach, które otrzymały nagrodę.
Wskazówka. Zastosować sortowanie „flagą polską”.

i nie wiem co dalej co z tą flagą polską bardzo proszę o napisanie programu


type 
student = record
imie:string[20];
nazwisko:string[20];
nagroda:byte;
end;

tab=array[1..50] of student;

var
n:integer;
x:tab;
s:student;

begin
repeat
writeln('Podaj liczbe studentow:');  readln(n);

for z:=1 to n do

begin
write('imie: ');                     readln(x[z].imie);
write('nazwisko: ');              readln(x[z].nazwisko);
write('nagroda: ');               readln(x[z].nagroda);
end;       
edytowany 2x, ostatnio: madmike, 2011-10-24 23:17

Pozostało 580 znaków

2011-10-24 17:58
Moderator

Rejestracja: 12 lat temu

Ostatnio: 1 godzina temu

Lokalizacja: Wrocław

0

bardzo proszę o napisanie programu

Z takim tekstem, to do działu Praca.
My możemy co najwyżej pomóc.


Pozostało 580 znaków

2011-10-24 18:06

Rejestracja: 8 lat temu

Ostatnio: 6 lat temu

0

proszę o pomoc:) w napisaniu programu

Pozostało 580 znaków

2011-10-24 20:00
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Tuchów

0
hiob21 napisał(a)

Zastosować sortowanie „flagą polską”.

Co to w ogóle za sortowanie? To jakiś slang programistyczny czy co? Nawet google nie bardzo wie, co to;

Jedyne co znalazłem odnośnie sortowania flagą polską to taki kawałek kodu:

writeln; 

for i:=1 to nn do 
writeln (' student ', tab[i].nazwisko , ' status to ', 
tab[i].spelnilo); 
writeln; 
writeln ('To samo - tylko sortowanie flaga polska'); 
writeln;
i:=1; 
j:=nn; 
while i<j do 
begin 

  while (tab[i].spelnilo='n') and (i<nn) do i:=i+1; 

 while (tab[i].spelnilo='t') and (j>1) do   j:=j-1; 

 if j>i then 
  begin 
  c:=tab[i]; 
  tab[i]:=tab[j]; 
  tab[j]:=c; 
 end; 
  i:=i+1; 
  j:=j-1; 

  end; 

for i:=1 to nn do 
writeln (tab [i].nazwisko, ' (dostanie / niedostanie) ', ' (', 
tab[i].spelnilo,')');

Źródło: www.pastie.org/1478829/wrap

Obejrzyj.


edytowany 5x, ostatnio: furious programming, 2017-02-14 19:21
To jest polski slang programistyczny - po angielsku się to nazywa problemem holenderskiej flagi (Dutch national flag problem), ale w Polsce głównie słyszałem o fladze francuskiej i jej specjalnej odmianie, fladze polskiej (2 "kolory" zamiast 3). - Ktos 2011-10-26 10:10

Pozostało 580 znaków

2011-10-24 20:05

Rejestracja: 10 lat temu

Ostatnio: 6 godzin temu

Lokalizacja: Redmond, WA

0

http://www.mimuw.edu.pl/~skola/wdi2008/flaga-polska.pas


░█░█░█░█░█░█░█░█░█░█░█░
a teraz prosze o przetlumaczenie tego na (a) polski lub (b) jakis ludzki (eg. python albo ruby) jezyk programowania. - Kwpolska 2011-10-24 20:17
proszę w Haskellu filter (==0) list ++ filter (==1) list - hauleth 2011-10-25 00:17

Pozostało 580 znaków

2011-10-24 20:30

Rejestracja: 14 lat temu

Ostatnio: 5 miesięcy temu

0
hiob21 napisał(a)

i nie wiem co dalej co z tą flagą polską bardzo proszę o napisanie programu

hiob21 napisał(a)

proszę o pomoc:) w napisaniu programu

REGULAMIN napisał(a)

Zabronione jest umieszczanie w postach prośby o rozwiązanie zadań domowych, zadań zaliczeniowych. Lenistwo nie jest tolerowane. Można poprosić o rozwiązanie konkretnego problemu, a nie całego zadania, paru zadań.

Brak samodzielnej pracy, jak na razie temat się nadaje do kosza...


Pozostało 580 znaków

2011-10-25 00:05

Rejestracja: 8 lat temu

Ostatnio: 6 lat temu

0

Dobra cały dzien siedziałem i prawie doszedłem wreszcie: Program ma posortować w taki sposób że najpierw będą zera(brak nagrody) a potem jedynki(jest nagroda). Mój program to robi to znaczy sortuje ale tylko tyczy sie to nagród pozostałe dane studenta nie sortują się(imie i nazwisko pozostaje tak jak było :( ) prosze o rozwiązanie tego problemu aby
wraz z nagrodami sortował sie cały record .
tu jest kod:

type 
student = record
imie:string[20];
nazwisko:string[20]; 
nagroda:byte;
end;

tab=array[1..50] of student;

var
z,n,i,j,p:integer;
x:tab;

begin
repeat
writeln('Podaj liczbe studentow:');  readln(n);
 until (n>1);
for z:=1 to n do

begin
write('imie: ');                                                           readln(x[z].imie);
write('nazwisko: ');                                                       readln(x[z].nazwisko);
write('Czy otrzymal nagrode??? 0-nie  1-tak: ');  readln(x[z].nagroda);
end;

i:=1;
j:=n;
while(i<j) do begin

      while ((x[i].nagroda=0) and (i<n)) do begin
      i:=i+1;
      end;

      while ((x[j].nagroda=1) and (j>1)) do begin
      j:=j-1;
      end;

      if (j>i) then
      begin
      p:=x[i].nagroda;
      x[i].nagroda:=x[j].nagroda;
      x[j].nagroda:=p;
      end;

      i:=i+1;
      j:=j-1;
end;

writeln;
for z:=1 to n do begin
writeln(x[z].nagroda,',',x[z].imie,',',x[z].nazwisko);
end;
end.      
edytowany 2x, ostatnio: hiob21, 2011-10-25 00:27

Pozostało 580 znaków

2011-10-25 09:38
Moderator

Rejestracja: 17 lat temu

Ostatnio: 4 godziny temu

0

Wykonujesz zamianę elementów x[i].nagroda i x[j].nagroda, a powinieneś zamieniać ze sobą całe rekordy x[i] oraz x[j].

Pozostało 580 znaków

2011-10-25 17:28

Rejestracja: 8 lat temu

Ostatnio: 6 lat temu

0

ale gdy robię:


 x[i].student i x[j].student

to wyskakuje mi błąd kompilacji

Pozostało 580 znaków

2011-10-25 19:32
Moderator

Rejestracja: 17 lat temu

Ostatnio: 4 godziny temu

0

Wyskakuje, bo takie coś nie istnieje.
Rób zamianę pomiędzy x[i] i x[j], a nie żadnych ich elementów potomnych. Zmienna tymczasowa tez musi być typu student.

p := x[i];
x[i] := x[j];
x[j] := p;

Pozostało 580 znaków

2011-10-26 10:08
Moderator

Rejestracja: 17 lat temu

Ostatnio: 4 godziny temu

0

Ustaw zmienną (jakąś nową, typu int) na 0. Przejdź pętlą po wszystkich studentach i dla każdego studenta dla którego x[i].nagroda jest równe 1 zwiększ o 1 wartość tej zmiennej, wcześniej na 0 ustawionej.

Cholera, usunięty został post powyżej na który odpowiadam, przez co wygląda to idiotycznie. Stop usuwaniu własnych postów na które już ktoś odpowiedział! - Ktos 2011-10-26 19:15
Sory nie wiedziałem że to takie ważne ale usunołem kod aby pewna osba nie dostała go w swoje łapy ponieważ mi kiedys nie chciała pomóc(i nie chce żeby przypadkiem znalazła ten kod programu) - hiob21 2011-10-26 22:29
Skoro nie chcesz, by go dostała to musisz mieć powód; Jeżeli będzie chciała go posiąść to na pewno nie umie programować na tyle, by go samemu napisać; Jeżeli tak faktycznie jest, to pewnie i tak by Ci nie pomogła; - furious programming 2011-10-26 22:44
Nie o to chodzi ta osoba jest z mojej klasy a nie bardzo się z nią lubie... a to jest nasza praca domowa i wiem że ta osoba tez jest zalogowana na tym portalu - hiob21 2011-10-26 23:15
Skoro też przebywa na tym portalu to pewnie śledzi ten wątek; Jeśli tak jest, to i tak można przeczytać wcześniejsze posty - czyli dowiedzieć się w jaki sposób rozwiązać ten problem; A jeśli czytała temat to nawet kawałek kodu będzie mieć; - furious programming 2011-10-26 23:42

Pozostało 580 znaków

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