Analiza ankiety (pascal)

0

Witam wszystkich ma takie zadanie:

Wytwórnia fonograficzna organizuje ankietę w celu oceny powodzenia swoich produktów na rynku i zorganizowania parady przebojów. Osoby biorące udział w ankiecie mają być podzielone na cztery grupy w zależności od płci i wieku (np., osoby do 20 roku życia i powyżej). Każda osoba podaje pięć tytułów z listy przebojów. Przeboje na liście oznaczone są liczbami od 1 do P (załóżmy, że P =11).

  • określić strukturę danych reprezentującą jednego respondenta i zawierającą jego nazwisko, imię, płeć, wiek i pięć wybranych przebojów zgodnie z priorytetem.

  • opracować aplikację, która umożliwi przeprowadzenie analizy wyników badania ankietowego.

Dane: N – liczba osób biorących udział w badaniu ankietowym,

odpowiedzi kolejnych respondentów - wyniki ankiety.

Wyniki: Cztery oddzielne listy (dla każdej kategorii respondentów), którzy na pierwszym miejscu wymienili jeden z trzech najpopularniejszych przebojów.

Więc tak... zrobiłam program który wypisuje te cztery grupy , (rozróżnia płeć i wiek) i wypisuje 5 utworów które wybrała dana osoba. I teraz mam problem bo nie wiem w ogóle jak zrobić aby program zrobi analize tej ankiety i wyliczył które utwory są najpopularniejsze, męcze się z tym już od paru dni. Bardzo proszę was o pomoc.

oto mój kod


Program Osoby;

type
osoba=record
imie:string;
ostatnialitera:string[1]; 
plec:string;
wiek:integer;  
grupa:integer;    
wybor1,wybor2,wybor3,wybor4,wybor5:integer; 
utwor1,utwor2,utwor3,utwor4,utwor5:string;
end;

tab = array of osoba;

var
x:tab;
n,i,j,q,m,c1,c2,c3,c4,c5:integer;
biezacaGrupa:integer;
r,h,b1,b2,b3,b4,b5:string;

begin
writeln('Ile jest osob???');  readln(n);
SetLength(x,n);

for i:=1 to n do

begin
writeln;
writeln('Osoba nr ',i,': ');
write('Imie: ');  readln(x[i].imie);
write('wiek: ');  readln(x[i].wiek);

x[i].ostatnialitera := Copy(x[i].imie,Length(x[i].imie),1);  
   if ((x[i].ostatnialitera='a') or (x[i].ostatnialitera='A')) then
     x[i].plec:='kobieta'
         else
     x[i].plec:='mezczyzna';

   if ((x[i].plec='kobieta') and (x[i].wiek<=20)) then
     x[i].grupa:=1;
   if ((x[i].plec='kobieta') and (x[i].wiek>20)) then
     x[i].grupa:=2;
   if ((x[i].plec='mezczyzna') and (x[i].wiek<=20)) then
         x[i].grupa:=3;
   if ((x[i].plec='mezczyzna') and (x[i].wiek>20)) then
         x[i].grupa:=4;
 writeln;
 writeln('Podaj 5 najlepszych wedlug ciebie utworow (wedlug priorytetu)');
 writeln;
 writeln('1-  Peja - cicha noc');
 writeln('2-  Toto - hold the line');
 writeln('3-  John Lenon - imagine'); 
 writeln('4-  Cutting Crew - I Just Died in your arms tonight');
 writeln('5-  Tiesto - show me a way');
 writeln('6-  O.S.T.R - Kochana Polsko');
 writeln('7-  Murrray Head-One night in Bangkok');
 writeln('8-  Tupac - California Love'); 
 writeln('9-  Tupac - Geto gospel');
 writeln('10- ABBA - Knowing me knowing you');
 writeln('11- Metalica - Brothers in Army ');
 writeln;

 write('Wybor pierwszy: ');
 readln(x[i].wybor1);
 write('Wybor drugi: ');
 readln(x[i].wybor2);
 write('Wybor trzeci: ');
 readln(x[i].wybor3);
 write('Wybor czwarty: ');
 readln(x[i].wybor4);
 write('Wybor piaty: ');
 readln(x[i].wybor5);

if x[i].wybor1 = 1 then x[i].utwor1:='Peja - cicha noc';
if x[i].wybor1 = 2 then x[i].utwor1:='Toto - hold the line';
if x[i].wybor1 = 3 then x[i].utwor1:='John Lenon - imagine';
if x[i].wybor1 = 4 then x[i].utwor1:='Cutting Crew - I Just Died in your arms tonight';
if x[i].wybor1 = 5 then x[i].utwor1:='Tiesto - show me a way';
if x[i].wybor1 = 6 then x[i].utwor1:='O.S.T.R - Kochana Polsko';
if x[i].wybor1 = 7 then x[i].utwor1:='Murrray Head-One night in Bangkok';
if x[i].wybor1 = 8 then x[i].utwor1:='Tupac - California Love';
if x[i].wybor1 = 9 then x[i].utwor1:='Tupac - Geto gospel';
if x[i].wybor1 = 10 then x[i].utwor1:='ABBA - Knowing me knowing you';
if x[i].wybor1 = 11 then x[i].utwor1:='Metalica - Brothers in Army';

if x[i].wybor2 = 1 then x[i].utwor2:='Peja - cicha noc';
if x[i].wybor2 = 2 then x[i].utwor2:='Toto - hold the line';
if x[i].wybor2 = 3 then x[i].utwor2:='John Lenon - imagine';
if x[i].wybor2 = 4 then x[i].utwor2:='Cutting Crew - I Just Died in your arms tonight';
if x[i].wybor2 = 5 then x[i].utwor2:='Tiesto - show me a way';
if x[i].wybor2 = 6 then x[i].utwor2:='O.S.T.R - Kochana Polsko';
if x[i].wybor2 = 7 then x[i].utwor2:='Murrray Head-One night in Bangkok';
if x[i].wybor2 = 8 then x[i].utwor2:='Tupac - California Love';
if x[i].wybor2 = 9 then x[i].utwor2:='Tupac - Geto gospel';
if x[i].wybor2 = 10 then x[i].utwor2:='ABBA - Knowing me knowing you';
if x[i].wybor2 = 11 then x[i].utwor2:='Metalica - Brothers in Army';

if x[i].wybor3 = 1 then x[i].utwor3:='Peja - cicha noc';
if x[i].wybor3 = 2 then x[i].utwor3:='Toto - hold the line';
if x[i].wybor3 = 3 then x[i].utwor3:='John Lenon - imagine';
if x[i].wybor3 = 4 then x[i].utwor3:='Cutting Crew - I Just Died in your arms tonight';
if x[i].wybor3 = 5 then x[i].utwor3:='Tiesto - show me a way';
if x[i].wybor3 = 6 then x[i].utwor3:='O.S.T.R - Kochana Polsko';
if x[i].wybor3 = 7 then x[i].utwor3:='Murrray Head-One night in Bangkok';
if x[i].wybor3 = 8 then x[i].utwor3:='Tupac - California Love';
if x[i].wybor3 = 9 then x[i].utwor3:='Tupac - Geto gospel';
if x[i].wybor3 = 10 then x[i].utwor3:='ABBA - Knowing me knowing you';
if x[i].wybor3 = 11 then x[i].utwor3:='Metalica - Brothers in Army';

if x[i].wybor4 = 1 then x[i].utwor4:='Peja - cicha noc';
if x[i].wybor4 = 2 then x[i].utwor4:='Toto - hold the line';
if x[i].wybor4 = 3 then x[i].utwor4:='John Lenon - imagine';
if x[i].wybor4 = 4 then x[i].utwor4:='Cutting Crew - I Just Died in your arms tonight';
if x[i].wybor4 = 5 then x[i].utwor4:='Tiesto - show me a way';
if x[i].wybor4 = 6 then x[i].utwor4:='O.S.T.R - Kochana Polsko';
if x[i].wybor4 = 7 then x[i].utwor4:='Murrray Head-One night in Bangkok';
if x[i].wybor4 = 8 then x[i].utwor4:='Tupac - California Love';
if x[i].wybor4 = 9 then x[i].utwor4:='Tupac - Geto gospel';
if x[i].wybor4 = 10 then x[i].utwor4:='ABBA - Knowing me knowing you';
if x[i].wybor4 = 11 then x[i].utwor4:='Metalica - Brothers in Army';

if x[i].wybor5 = 1 then x[i].utwor5:='Peja - cicha noc';
if x[i].wybor5 = 2 then x[i].utwor5:='Toto - hold the line';
if x[i].wybor5 = 3 then x[i].utwor5:='John Lenon - imagine';
if x[i].wybor5 = 4 then x[i].utwor5:='Cutting Crew - I Just Died in your arms tonight';
if x[i].wybor5 = 5 then x[i].utwor5:='Tiesto - show me a way';
if x[i].wybor5 = 6 then x[i].utwor5:='O.S.T.R - Kochana Polsko';
if x[i].wybor5 = 7 then x[i].utwor5:='Murrray Head-One night in Bangkok';
if x[i].wybor5 = 8 then x[i].utwor5:='Tupac - California Love';
if x[i].wybor5 = 9 then x[i].utwor5:='Tupac - Geto gospel';
if x[i].wybor5 = 10 then x[i].utwor5:='ABBA - Knowing me knowing you';
if x[i].wybor5 = 11 then x[i].utwor5:='Metalica - Brothers in Army';

writeln;
writeln('Twoj wybor: ');

writeln('Utwor Pierwszy: ',x[i].utwor1);    
writeln('Utwor Drugi: ',x[i].utwor2);
writeln('Utwor trzec: ',x[i].utwor3);
writeln('Utwor czwarty: ',x[i].utwor4);
writeln('Utwor piaty: ',x[i].utwor5); 
end;

{sortownie babelkowe}
 for i:=2 to n do begin
    for j:=n downto i do begin
        if x[j-1].grupa > x[j].grupa then begin

      h:=x[j-1].imie; 
      x[j-1].imie:=x[j].imie; 
      x[j].imie:=h; 

      m:=x[j-1].wiek;
      x[j-1].wiek:=x[j].wiek;
      x[j].wiek:=m;   

      r:=x[j-1].plec; 
      x[j-1].plec:=x[j].plec; 
      x[j].plec:=r; 

      c1:=x[j-1].wybor1;
      x[j-1].wybor1:=x[j].wybor1;
      x[j].wybor1:=c1;

      c2:=x[j-1].wybor2;
      x[j-1].wybor2:=x[j].wybor2;
      x[j].wybor2:=c2;

      c3:=x[j-1].wybor3;
      x[j-1].wybor3:=x[j].wybor3;
      x[j].wybor3:=c3;

      c4:=x[j-1].wybor4;
      x[j-1].wybor4:=x[j].wybor4;
      x[j].wybor4:=c4;

      c5:=x[j-1].wybor5;
      x[j-1].wybor5:=x[j].wybor5;
      x[j].wybor5:=c5;

      b1:=x[j-1].utwor1;
      x[j-1].utwor1:=x[j].utwor1;
      x[j].utwor1:=b1;

      b2:=x[j-1].utwor2;
      x[j-1].utwor2:=x[j].utwor2;
      x[j].utwor2:=b2;

      b3:=x[j-1].utwor3;
      x[j-1].utwor3:=x[j].utwor3;
      x[j].utwor3:=b3;

      b4:=x[j-1].utwor4;
      x[j-1].utwor4:=x[j].utwor4;
      x[j].utwor4:=b4;

      b5:=x[j-1].utwor5;
      x[j-1].utwor5:=x[j].utwor5;
      x[j].utwor5:=b5;

      q := x[j-1].grupa;
      x[j-1].grupa := x[j].grupa;
      x[j].grupa := q;
                     end;
                                       end;
writeln;

end;
{koniec sortowania}

  writeln('Grupa ',x[1].grupa);
  writeln;
  biezacaGrupa := x[1].grupa;

  for i := 1 to High(x)+1 do
  begin

    if biezacaGrupa <> x[i].grupa then
      begin
        biezacaGrupa := x[i].grupa;
        writeln;
        writeln('Grupa ',x[i].grupa);
        writeln;
      end;
      writeln('Osoba : ');
      writeln('imie: ',x[i].imie);
      writeln('wiek: ',x[i].wiek);
      writeln('plec: ',x[i].plec);
      writeln('Utwor Pierwszy: ',x[i].utwor1);    
      writeln('Utwor Drugi: ',x[i].utwor2);
      writeln('Utwor trzec: ',x[i].utwor3);
      writeln('Utwor czwarty: ',x[i].utwor4);
      writeln('Utwor piaty: ',x[i].utwor5); 
      writeln;
  end;

 end.
0

Bardzo proszę o pomoc naprawdę nie wiem co dalej z tym zadaniem...

0

Ola21, niestety program nie działa dobrze, chociaż się kompiluje.

Najpoważniejszy błąd popełniłaś tutaj:

writeln('Ile jest osob???');
readln(n);
SetLength(x,n);
for i:=1 to n do

Tablice dynamiczne są indeksowane od zera, więc pętla musi przebiegać od 0 do n-1
Prawdopodobnie będziesz także musiała zmienić indeksy pętli w sortowaniu bąbelkowym. Nie analizowałem algorytmu sortującego, bo jak widzę w kodzie dziesiątki zmiennych nazwanych jedną literą, to mi się odechciewa (zresztą ja i tak nie lubię analizować czyichś kodów).

Jeszcze odniosę się do faktu, ze w kodzie powtarzasz nazwę każdego utworu aż 6 razy... a przecież nożna tak:

const
  Utwory: array[1..11] of string =
   ('Peja - cicha noc',
    'Toto - hold the line',
    'John Lenon - imagine',
    'Cutting Crew - I Just Died in your arms tonight',
    'Tiesto - show me a way',
    'O.S.T.R - Kochana Polsko',
    'Murrray Head - One night in Bangkok',
    'Tupac - California Love',
    'Tupac - Geto gospel',
    'ABBA - Knowing me knowing you',
    'Metalica - Brothers in Army');
{ ... }
writeln('Podaj 5 najlepszych wedlug ciebie utworow (wedlug priorytetu)');
for i:= 1 to 11 do writeln(i, ' - ', Utwory[i]);
{ ... }
x[i].utwor1:= Utwory[x[i].wybor1];
x[i].utwor2:= Utwory[x[i].wybor2];
x[i].utwor3:= Utwory[x[i].wybor3];
x[i].utwor4:= Utwory[x[i].wybor4];
x[i].utwor5:= Utwory[x[i].wybor5];

Zamiast 55 linijek z warunkiem if zostało tylko 5, a i te można skrócić do jednej linijki, gdyby zastosować tablicę

To na razie tyle, dalej próbuj sama i ew. pytaj

0

ok to wszędzie będzie n-1 to czaje no i rzeczywiscie można skrócić kod ale ja się pytam jak to zrobić żeby mi zrobiło tą analize... napisało który utwór jest najbardziej popularny...

0

Proszę tu jest skrócony kod oraz oblicza on ilosc głosów utworu oraz pisze 3 utwory które mają najwięcej głosów. Ale jak zrobić jezeli kilka utworów ma największą liczbe głosów(taką samą)??? (chce aby program napisał : 1 miejsce {lista utworów które mają największą taką samą ilość głosów } 2 miejsce {lista utworów które mają na 2 miejscu największą taką samą ilość głosów} 3 miejsce {lista utworów które mają na 3 miejscu największą taką samą ilość głosów } )

proszę o pomoc oto kodzik:


program osopy;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TPopular = record
    Glosy : Integer;
    Index : Integer;
  end;

  type
  TPerson = record
    Imie, Plec     : String;
    OstatniaLitera : Char;
    Wiek, Grupa    : Integer;

    Wybory         : array [1..5] of Integer;
    Utwory         : array [1..5] of String;
  end;

var
  Osoby : array of TPerson;
  IloscOsob, I, J, K,f,g,h,KA,q,w,t,AktualnaGrupa :Integer;
   Max : array [1..3] of TPopular;
      IloscGlosow : array [1..11] of Integer;

  Tytuly : array [1..11] of String =
  (
    ('Peja - Cicha Noc'),
    ('Toto - Hold The Line'),
    ('John Lenon - Imagine'),
    ('Cutting Crew - I Just Died in your arms tonight'),
    ('Tiesto - Show Me A Way'),
    ('O.S.T.R - Kochana Polsko'),
    ('Murrray Head - One Night in Bangkok'),
    ('Tupac - California Love'),
    ('Tupac - Geto gospel'),
    ('ABBA - Knowing Me Knowing You'),
    ('Metalica - Brothers in Army ')
  );

procedure ReplaceStrings(var S1, S2: String);
var Temp: String;
begin
  Temp := S1;
  S1 := S2;
  S2 := Temp;
end;

procedure ReplaceIntegers(var I1, I2: Integer);
var Temp: Integer;
begin
  Temp := I1;
  I1 := I2;
  I2 := Temp;
end;

begin
  Writeln('Ile jest osob???');
  Readln(IloscOsob);

  SetLength(Osoby, IloscOsob);

  for I := 0 to IloscOsob-1  do
    begin
      Writeln;
      Writeln('Osoba nr ', I+1, ': ');

      Write('Imie: ');
      Readln(Osoby[I].Imie);

      Write('Wiek: ');
      Readln(Osoby[I].Wiek);

      Osoby[I].OstatniaLitera := Osoby[I].Imie[  Length(Osoby[I].Imie)  ];

      if LowerCase(Osoby[I].OstatniaLitera) = 'a' then
         Osoby[I].Plec := 'Kobieta'
      else
         Osoby[I].Plec := 'Mezczyzna';

      if Osoby[I].Plec = 'Kobieta' then
        begin
          if Osoby[I].Wiek <= 20 then
             Osoby[I].Grupa := 0
          else
             Osoby[I].Grupa := 1;
        end
      else
        begin
          if Osoby[I].Wiek <= 20 then
             Osoby[I].Grupa := 2
          else
             Osoby[I].Grupa := 3;
        end;

      writeln;
      writeln('Podaj 5 najlepszych wedlug ciebie utworow (wedlug priorytetu)', #13);

      for K := Low(Tytuly) to High(Tytuly) do
        Writeln(K, '  --  ', Tytuly[K]);

      for K := 1 to 5 do
        begin
          Write('Wybor ', K, ': ');
          Readln(Osoby[I].Wybory[K]);
        end;

      for K := 1 to 5 do
        Osoby[I].utwory[K] := Tytuly[Osoby[I].Wybory[K]];

      Writeln;
      Writeln('Twoj wybor: ');
      Writeln('Utwor Pierwszy: ', Osoby[I].Utwory[1]);
      Writeln('Utwor Drugi: ',    Osoby[I].Utwory[2]);
      Writeln('Utwor trzeci: ',   Osoby[I].Utwory[3]);
      Writeln('Utwor czwarty: ',  Osoby[I].Utwory[4]);
      Writeln('Utwor piaty: ',    Osoby[I].Utwory[5]);
    end;

{sortownie babelkowe}
  for I := 1 to IloscOsob-1 do
    begin
      for J := IloscOsob downto I do
        begin

          if Osoby[J - 1].Grupa > Osoby[J].grupa then
            begin
              ReplaceStrings(Osoby[J - 1].Imie,  Osoby[J].Imie);
              ReplaceStrings(Osoby[J - 1].Plec,  Osoby[J].Plec);

              ReplaceIntegers(Osoby[J - 1].Wiek,  Osoby[J].Wiek);
              ReplaceIntegers(Osoby[J - 1].Grupa, Osoby[j].Grupa);

              for K := 1 to 5 do
                ReplaceIntegers(Osoby[J - 1].Wybory[K], Osoby[J].Wybory[K]);

              for K := 1 to 5 do
                ReplaceStrings(Osoby[J - 1].Utwory[K], Osoby[J].Utwory[K]);
            end;

        end;
      Writeln;
    end;
{koniec sortowania}
 writeln;
Writeln('Grupa ', Osoby[0].Grupa+1);
writeln('-------------------------------------------------');

  AktualnaGrupa := Osoby[0].Grupa;

  for I := 0 to High(Osoby)  do
    begin

      if AktualnaGrupa <> Osoby[i].Grupa then
        begin
          AktualnaGrupa := Osoby[i].Grupa;
          writeln('---------------------------------------');
          writeln;
          Writeln('Grupa ', Osoby[i].Grupa+1);
          writeln('---------------------------------------');
          Writeln;
        end;
      Writeln('Osoba : ');
      Writeln('Imie: ',           Osoby[I].Imie);
      Writeln('Wiek: ',           Osoby[I].Wiek);
      writeln('Plec: ',           Osoby[I].Plec);

      writeln('Utwor Pierwszy: ', Osoby[I].utwory[1]);
      writeln('Utwor Drugi: ',    Osoby[I].utwory[2]);
      writeln('Utwor trzec: ',    Osoby[I].utwory[3]);
      writeln('Utwor czwarty: ',  Osoby[I].utwory[4]);
      writeln('Utwor piaty: ',    Osoby[I].utwory[5]);
      writeln;

    end;

    begin
 for f := Low(Osoby) to High(Osoby) do
    for g := 1 to 5 do
      begin
        K := Osoby[f].Wybory[g];
        IloscGlosow[K] := IloscGlosow[K] + 1;
      end;

    for t:=1 to 11 do
 writeln(Tytuly[t],' Ilosc glosow: ',IloscGlosow[t]);
 writeln

end;

begin

  for q := 1 to 3 do
    begin
      for w := 1 to 11 do
        if IloscGlosow[w] > Max[q].Glosy then
          begin
            Max[q].Glosy := IloscGlosow[w];
            IloscGlosow[w] := 0;
          end;
    end;

  for I := 1 to 3 do
    Writeln(I, ' miejsce:    ',tytuly[I],' Liczba Glosow: ',Tytuly[Max[I].Index], ' ', Max[I].Glosy);

end;

{ TODO -oUser -cConsole Main : Insert code here }
readln;
end.
0

Z tablicy, w której masz informację o ilości głosów na dany utwór, wyznaczasz 3 największe liczby.
Czyli:

Utwór  1  2  3  4  5  6  7  8  9 10 11
Głosy  5  2  1  0  0  3  6  4  2  3  5

Max[0] = 6 (1)
Max[1] = 5 (2)
Max[2] = 4 (1)

Szukając Max[0], szukasz Max z tych głosów. Gdy to będzie Max[1], szukasz Max < Max[0] itd.
A potem już z górki pętelka z if-em lub case-m.

0

Acha jeszcze i jak zrobić aby wyswietlały mi się tytuł trzech najbardziej popularnych?????(w kodzie który wkleiłam wyżej nie pokazują mi się)

Proszę o pomoc jak zrobić aby wyswietliło mi tytuły 3 najpopularniejszych piosenek bo jak ja robie to albo wyswietla wszystkie takie same albo się nie kompiluje:(

0

Dobrze juz zrobiłam al dzięki wam. Ale mam jeszcze jeden mały bład więc prosszę o pmoc. Jezeli Zrobię dane np: dla 4 osób w ten sposób:
osoba1) utwory: 1,2,3,4,5
osoba2) utwory: 4,5,6,7,8
osoba3) utwory 5,8,9,11,10
osoba4) utwory 5,4,8,1,10

to wtedy program wypisuje trzy najpopularniejsze utwory w ten sposób:

1 utwór .... głosy:4
2 utwór .... głosy:3
3 utwór .... głosy:2

a przeciez dwa utwory mają 3 glosy więc powinien napisac:

1 utwór .... głosy:4
2 utwór .... głosy:3
3 utwór .... głosy:3

Gdzie tu jest błąd co jest nie tak proszę pomocy

kod:


program jakis;

{$APPTYPE CONSOLE} 

uses
  SysUtils;

type
  Popularnosc = record
    Glosy : Integer;
    Index : Integer;
  end; 

  type 
  Osobowosc = record 
    Imie,nazwisko, Plec: String;
    OstatniaLitera : Char; 
    Wiek, Grupa    : Integer; 

    Wybory         : array [1..5] of Integer; 
    Utwory         : array [1..5] of String; 
  end; 

var 
  Osoby : array of Osobowosc;
  IloscOsob, I, J, K,f,g,h,KA,q,w,t,AktualnaGrupa,U :Integer; 
   Max : array [1..3] of Popularnosc; 
      IloscGlosow : array [1..20] of Integer;

  Tytuly : array [1..20] of String =
  (
    ('Peja - Cicha Noc'),
    ('Toto - Hold The Line'),
    ('John Lenon - Imagine'),
    ('Cutting Crew - I Just Died in your arms tonight'),
    ('Tiesto - Show Me A Way'),
    ('O.S.T.R - Kochana Polsko'),
    ('Murrray Head - One Night in Bangkok'),
    ('Tupac - California Love'),
    ('Tupac - Geto gospel'),
    ('ABBA - Knowing Me Knowing You'),
    ('Bob Marley - Buffalo soliders '),
    ('Metalica - Brothers in Army '),
    ('Karamba - Jedziemy po ziolo '),
    ('Lzy - Wiem ze jestes tam '),
    ('Mieczyslaw Fogg - Ta ostatnia Niedziela '),
    ('Boys - Jestes szalona '),
    ('Doda - Szansa '),
    ('Oddzial zamkniety - Gandzia '),
    ('Eminem - you dont now '),
    ('Ryszard Rynkowski - Szczesliwej Drogi Juz Czas ')

  );

procedure Przypisanie(var S1, S2: String);
var Temp: String;
begin
  Temp := S1;
  S1 := S2;
  S2 := Temp;
end; 

procedure Przypisanie2(var I1, I2: Integer);
var Temp: Integer;
begin
  Temp := I1;
  I1 := I2;
  I2 := Temp;
end;

begin
  Writeln('Ile jest osob???');
  Readln(IloscOsob);

  SetLength(Osoby, IloscOsob);

  for I := 0 to IloscOsob-1  do
    begin
      Writeln;
      Writeln('Osoba nr ', I+1, ': ');

        Write('Nazwisko: ');
      Readln(Osoby[I].nazwisko);

      Write('Imie: ');
      Readln(Osoby[I].Imie);

      Write('Wiek: ');
      Readln(Osoby[I].Wiek);

      Osoby[I].OstatniaLitera := Osoby[I].Imie[  Length(Osoby[I].Imie)  ];

      if LowerCase(Osoby[I].OstatniaLitera) = 'a' then
         Osoby[I].Plec := 'Kobieta'
      else
         Osoby[I].Plec := 'Mezczyzna';

      if Osoby[I].Plec = 'Kobieta' then
        begin
          if Osoby[I].Wiek <= 20 then
             Osoby[I].Grupa := 0
          else
             Osoby[I].Grupa := 1;
        end
      else
        begin
          if Osoby[I].Wiek <= 20 then
             Osoby[I].Grupa := 2
          else
             Osoby[I].Grupa := 3;
        end;

      writeln;
      writeln('Podaj 5 najlepszych wedlug ciebie utworow (wedlug priorytetu)', #13);

      for K := 1 to 20 do
        Writeln(K, '  --  ', Tytuly[K]);

      for K := 1 to 5 do 
        begin 
          Write('Wybor ', K, ': '); 
          Readln(Osoby[I].Wybory[K]); 
        end; 

      for K := 1 to 5 do 
        Osoby[I].utwory[K] := Tytuly[Osoby[I].Wybory[K]]; 

      Writeln; 
      Writeln('Twoj wybor: '); 
      Writeln('Utwor Pierwszy: ', Osoby[I].Utwory[1]);
      Writeln('Utwor Drugi: ',    Osoby[I].Utwory[2]); 
      Writeln('Utwor trzeci: ',   Osoby[I].Utwory[3]); 
      Writeln('Utwor czwarty: ',  Osoby[I].Utwory[4]); 
      Writeln('Utwor piaty: ',    Osoby[I].Utwory[5]); 
    end; 

{sortownie babelkowe} 
  for I := 1 to IloscOsob-1 do 
    begin 
      for J := IloscOsob downto I do 
        begin 

          if Osoby[J - 1].Grupa > Osoby[J].grupa then 
            begin 

               przypisanie(Osoby[J - 1].nazwisko,  Osoby[J].nazwisko);
               przypisanie(Osoby[J - 1].Imie,  Osoby[J].Imie);
               przypisanie(Osoby[J - 1].Plec,  Osoby[J].Plec);

              przypisanie2(Osoby[J - 1].Wiek,  Osoby[J].Wiek);
              przypisanie2(Osoby[J - 1].Grupa, Osoby[j].Grupa);

              for K := 1 to 5 do 
                przypisanie2(Osoby[J - 1].Wybory[K], Osoby[J].Wybory[K]);

              for K := 1 to 5 do 
                przypisanie(Osoby[J - 1].Utwory[K], Osoby[J].Utwory[K]);
            end; 

        end; 
      Writeln; 
    end; 
{koniec sortowania} 
 writeln; 
Writeln('Grupa ', Osoby[0].Grupa+1); 
writeln('-------------------------------------------------'); 

  AktualnaGrupa := Osoby[0].Grupa; 

  for I := 0 to IloscOsob-1  do
    begin 

      if AktualnaGrupa <> Osoby[i].Grupa then 
        begin 
          AktualnaGrupa := Osoby[i].Grupa; 
          writeln('---------------------------------------'); 
          writeln; 
          Writeln('Grupa ', Osoby[i].Grupa+1);
          writeln('---------------------------------------'); 
          Writeln; 
        end; 
      Writeln('Osoba : ');
      Writeln('Nazwisko: ',       Osoby[I].Nazwisko);
      Writeln('Imie: ',           Osoby[I].Imie);
      Writeln('Wiek: ',           Osoby[I].Wiek);
      writeln('Plec: ',           Osoby[I].Plec); 

      writeln('Utwor Pierwszy: ', Osoby[I].utwory[1]); 
      writeln('Utwor Drugi: ',    Osoby[I].utwory[2]); 
      writeln('Utwor trzec: ',    Osoby[I].utwory[3]);
      writeln('Utwor czwarty: ',  Osoby[I].utwory[4]); 
      writeln('Utwor piaty: ',    Osoby[I].utwory[5]);
      writeln;

    end;

    begin
 for f := 0 to IloscOsob-1 do
    for g := 1 to 5 do
      begin
        K := Osoby[f].Wybory[g];
        IloscGlosow[K] := IloscGlosow[K] + 1;
      end;

  writeln('..............................................');
  writeln('Utwory i ich liczba glosow:');
  writeln('..............................................');
  writeln;
    for t:=1 to 20 do
          writeln(Tytuly[t],' Ilosc glosow: ',IloscGlosow[t]);
          writeln

end;

  for Q := 1 to 3 do
    begin
      for W := 1 to 20 do
        if IloscGlosow[w] > Max[q].Glosy then
          begin
            Max[q].Glosy := IloscGlosow[W];
            Max[q].Index := W;
            IloscGlosow[w] := 0;
          end;
    end;

    writeln;
    writeln('..............................................');
    writeln('Trzy najpopularniejsze Utwory:');
    writeln('..............................................');
    writeln;

   for I := 1 to 3 do
    Writeln(I, ' Utwor: ',Tytuly[Max[I].Index], ' Liczba Glosow: ', Max[I].Glosy);

    writeln;
    writeln('.................................................................................');
    writeln('Osoby ktore na pierwszym miejscu podaly jeden z trzech najpopularniejszych utworow: ');
    writeln('.................................................................................');
    writeln;

        for i:= 0 to IloscOsob-1 do

         if ((Osoby[i].Utwory[1] = Tytuly[Max[1].Index])
         or (Osoby[i].Utwory[1] = Tytuly[Max[2].Index])
         or (Osoby[i].Utwory[1] = Tytuly[Max[3].Index]))
         then
   begin
   Writeln('Grupa ', Osoby[i].Grupa+1);
   writeln('Nazwisko: ',osoby[i].Nazwisko);
   writeln('Imie: ',osoby[i].imie);
   writeln('Wiek: ',osoby[i].wiek);
   writeln('Plec: ',osoby[i].plec);
   writeln('Utwor: ',osoby[i].Utwory[1]);
   writeln;
      end;

    Readln;
end.
0

Tutaj jest błąd:

   for I := 1 to 3 do
    Writeln(I, ' Utwor: ',Tytuly[Max[I].Index], ' Liczba Glosow: ', Max[I].Glosy);
  • dwie pętle i, j
  • warunek dla Max.Glosy, IloscGlosow
  • odpowiedź z Tytuly, Max.Glosy
    Twoja tablica Max powinna mieć inną nazwę. Wiele zmiennych typu Integer nie jest wcale potrzebnych.
    Ciekawy artykuł: Formatowanie kodu w Delphi
0

czyli ma być tak????

for i :=1 to 3 do
   for j:=1 to 3 do
             if  Max.Glosy= IloscGlosow   then
Writeln(I, ' Utwor: ',Tytuly[Max[I].Index], ' Liczba Glosow: ', Max[I].Glosy);

sory jeżeli nie ale no naprawde nie wiem...

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