Wątek przeniesiony 2016-12-05 16:12 z Delphi i Pascal przez furious programming.

Wypełnianie tablic rekordami

0

Witam,potrzebuje napisać dwa programy -

Zdefiniuj typ rekordowy

type tosoba = record
imie: string[20]; 
nazwisko: string[20]; 
wiek: byte;
id: word;

end;

Napisz program, który wypełnia zdefiniowaną 5 elementową tablicę jednowymiarową elementami typu rekordowego. Po podaniu wszystkich elementów tablicy program ma wypisywać na ekranie rekordy, których imie zgadza się ze wzorcem podanym przez użytkownika.

oraz

Wypełnij wartościami losowymi z zakresu <-100,100> wcześniej zdefiniowaną 100 elementową, jednowymiarową tablicę liczb całkowitych. Napisz program sortujący rosnąco (sortowanie bąbelkowe) elementy tej tablicy. Program ma wypisywać tablicę przed i po sortowaniu.

Bedę wdzięczny za kod,albo chociaż podpowiedz jak mogę tego dokonać.Chciałbym przeanalizować i przećwiczyć takie wypełnianie tablic w gotowym zadaniu.

0

Dodam,że 1 program napisałem tak,nie wiem czy dobrze zrozumiałem to zadanie :

type tosoba = record

imie: string[20];
nazwisko: string[20];
wiek: byte;
id: word;

end;

var
 tab: array[1..5] of tosoba;
 i: byte;
begin
 for i:=1 to 5 do
 begin
 write('Podaj imie: ');
 readln(tab[i].imie);
 write('Podaj nazwisko: ');
 readln(tab[i].nazwisko);
 write('Podaj wiek: ');
 readln(tab[i].wiek);
 end;
 writeln;
 for i:=1 to 5 do
 writeln(tab[i].imie);
 readln;
end.
0

Pierwszy program prawie dobry (z tego, co ja rozumiem), tyle, że dodaj zmienną

Wzorzec :string[20];

i wypisać masz tylko zgodne ze wzorcem, tzn.:

for i:=1 to 5 do
begin
 If (Wzorzec = Tab[i].Imie) then
 begin
  writeln(tab[i].imie);
  writeln(tab[i].Nazwisko);
  writeln(tab[i].wiek);
 end;
end;

Co do zad 2:
Definiujesz tablicę:

Liczby : array[1..100] of Integer;

następnie losujesz:

randomize;
for i := 1 to 100 do
 Liczby[i] := Random(200) -100;

A sortowanie bąbelkowe znajdziesz na google.

0
type
    TabDyn = array[0..99] of Integer;

procedure bomble (var Tablica : TabDyn);
var
  i,j,x : integer;
begin
  for j := High(Tablica) -1  downto 0 do
    for i := 0 to j do
      if Tablica[i] > Tablica[i+1] then
      begin
        x := Tablica[i];
        Tablica[i] := Tablica[i+1];
        Tablica[i+1] := x;
      end;
end;
1

Uczepmy się tego zadania:

Napisz program, który wypełnia zdefiniowaną 5 elementową tablicę jednowymiarową elementami typu rekordowego. Po podaniu wszystkich elementów tablicy program ma wypisywać na ekranie rekordy, których imie zgadza się ze wzorcem podanym przez użytkownika.

Treść zadania niejednoznaczna - nie wiadomo kto ma wypełnić tablicę danymi, czy użytkownik, czy dane te mają być zdefiniowane na sztywno (w miejscu deklaracji); Druga część zdania sugeruje, że program ma oczekiwać na pobranie od użytkownika imienia, według którego nastąpi wypisanie rekordów, których pole Imie zawiera podaną wartość;

Drugie zadanie:

Wypełnij wartościami losowymi z zakresu <-100,100> wcześniej zdefiniowaną 100 elementową, jednowymiarową tablicę liczb całkowitych. Napisz program sortujący rosnąco (sortowanie bąbelkowe) elementy tej tablicy. Program ma wypisywać tablicę przed i po sortowaniu.

Nic w tym nadzwyczajnego, prócz tego, co napisał poprzednik; @woolfik - trzy faile związane z Twoim kodem:

  • macierz ma być stałego rozmiaru (100 elementów), a Ty użyłeś macierzy dynamicznej,
  • przekazujesz macierz przez wartość, więc modyfikacja zawartości nie będzie widoczna na zewnątrz,
  • elementy macierzy mają być liczbami całkowitymi, nie rzeczywistymi.
1

@furious programming

'elementy macierzy mają być liczbami całkowitymi, nie rzeczywistym'

elementy macierzy są liczbami całkowitymi a tylko zmienna pomocnicza 'x' jest typu Double i z tego powodu kod @woolfik'a wyrzuci błąd już przy kompilacji

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