PASCAL Macierze

Zad1. Napisz program, który dodaje, odejmuje i mnoży dwie macierze podane przez użytkownika.

Zad2. Napisz program, w którym użytkownik wpisuje 10 liczb całkowitych i uzyskuje odpowiedź TAK, jeśli przynajmniej jedna z tych liczb się powtarza, a NIE w przeciwnym przypadku.

W pierwszym zadaniu nie wiem co zrobić żeby wyniki ładnie wyświetlały się w formie macierzy.

W drugim zadaniu mam problem następujący: Kiedy nie powtarza się żadna liczba NIE wyświetla się wiele razy, jak mam wyjść z pętli żeby wyświetlało się tylko raz?

Liczę na szybką odpowiedź bo muszę to ogarnąć do 24 :smiley:

AD 1. Macierz to tablica. Wyświetlaj więc w każdej linijce pojedynczy wiersz tej macierzy (to jest aplikacja konsolowa tak?)

AD 2. Przygotuj sobie zmienną pełniącą rolę flagi (typu boolean). Domyślnie ta zmienna będzie mieć wartość false. Jeśli nie zostanie znaleziona powtarzająca się liczba, to wartość tej zmiennej się nie zmieni. Jeśli zostanie znaleziona powtarzającą się liczba, to przypiszesz tej zmiennej wartość true. Po wyjściu z pętli w oparciu o wartość tej zmiennej zdecydujesz czy wypisać TAK czy NIE.

  1. Macierze masz na tablicy dwuwymiarowej, więc dwie pętle for i do przodu.

Zmienne wczytuję z klawiatury do tablicy, może lepiej było by wczytywać do jednej zmiennej a później jakoś je porównywać?

Mógłbyś podać jakby miała wyglądać ta pętla bo ja właśnie mam z tym problem :stuck_out_tongue:

Macierze już rozwaliłem, dzięki.

Ja bym to zrobił na dwóch pętlach, np tak:

bool c:=false;

for licznik_pierwszego:=1 to ilość_elementów-1 do

for licznik_drugiego:=licznik_pierwszego+1 to ilość_elementów do

  if(t[licznik_pierwszego]=t[licznik_drugiego])

  begin

    c:=true;

    break;

  end;

@pawcza7

Jeśli poradziłeś sobie z macierzami, to z tym także sobie poradzisz. Musisz mieć dwie pętle - jedna zagnieżdżona w drugiej. Przypisanie wartości flagi ma nastąpić w pętli zagnieżdżonej. Każda z pętli ma przechodzić po elementach tablicy, którymi są Twoje liczby wczytane z klawiatury.

przykładowo tak :

for i:=1 to ilew do 

   for j:=1 to ilek do

     Begin

      write(tab[i,j]);

      if j mod 10 = 0 then 

           writeln;

     End;

Do zadania nr 2 jest już przykład :slight_smile:

Pozdrawiam