Forum

Macierze w Pascalu...

[+] Twoje konto

Subskrybuj kanał najnowszych wypowiedzi w tym temacie

RozwiązaneWątek zamknięty Forum > Porady > Programowanie > Macierze w Pascalu...

Rozwiązany: Macierze/tablice - posługiwanie się nimi w języku Pascal
Idź do strony:1
Ocena: (Ocen: 0)
Wypowiedzi 1 - 23 z 23
 Gość -Ł- Kopiuj nick (80.51.47.*)
Wypowiedź dodana: 25 kwietnia 2006, 12:17:16
« Opcje

Jestem na pierwszym roku matematyki. Mam do napisania na wstęp do programowania program. Za chiny nie wiem jak to zrobić. informatyke w ogóle mnie nie kręci :) Prowadząca ćwiczenia mówi, że to łatwe i z pewnością tak jest, ale nie dla mnie !!! Jest to program, który musze przedstawić całą grupą i troszeczke go omówić. Chodzi o to skąd co się bierze. A oto ten programik:

Wylosuj dwie macierze A[1..N, 1..M], B[1..N, 1..M]. Wypisz te macierze. Stwórz macierz C[1..N, 1..M] taką, że C=A+tB, gdzie t jest dowolnie wczytaną liczbą rzeczywistą. Wypisz nową macierz...

pozdrawiam....

 Gość REKLAMA Kopiuj nick (*->*)
Wypowiedź dodana: 25 kwietnia 2006, 12:17:17

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.15.146.*) |  
Wypowiedź dodana: 25 kwietnia 2006, 21:24:32 | Wypowiedź edytowana Ostatnio edytowana: 20 marca 2010, 13:44:32 po raz 1-wszy przez: Dżyszla
« Opcje

Jeśli rozmiary macierzy są ustalone odgórnie (nie w sposób dynamiczny zmieniane) to nie ma problemu - tworzymy trzy dwuwymiarowe tablice:

var A,B,C: array[1..N,1..M] of Integer

A następnie w pętli dokonujemy działania:

for x:=1 to N do
for y:=1 to M do
C[x,y]:=A[x,y]+t*B[x,y];

To wszystko. nie prosteŁ


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Gość -Ł- Kopiuj nick (80.51.47.*)
Wypowiedź dodana: 26 kwietnia 2006, 08:22:56
« Opcje

Dzięki. Tylko ja własnie nie wiem. Dzisiaj mam zajęcia i jej zapytam czy zmienne M i N mają się zmieniać (mają być losowane) Bo w końcu w zadaniu napisane jest, żeby wylosować macierze. A jakie to jest losowanie skoro macierze zawsze będą te same :Ł

Pozdrawiam i dzięki za zajęcie się moim problemem... pozdro

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.15.146.*) |  
Wypowiedź dodana: 26 kwietnia 2006, 18:14:38
« Opcje

Chodzi o zawartość macierzy. Trzeba po prostu funkcją random wypełnić kolejne ich pozycje.


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Gość Naruto Kopiuj nick (0.0.0.*)
Wypowiedź dodana: 1 listopada 2006, 23:05:38
« Opcje

Mam problem w tym zadaniu. Mam tak zrobić Macierz o wzoru Cramera i nie wiem jak się to robi :/ Niech ktoś mi podaje przykłady, bo chcę wiedzieć jak to wygląda :p <prosi>

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.15.146.*) |  
Wypowiedź dodana: 2 listopada 2006, 12:57:05
« Opcje

Jak się macierz robi?To po prostu tablica o określonej liczbie wymiarów.


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Gość ageska Kopiuj nick (83.13.110.*)
Wypowiedź dodana: 25 marca 2007, 14:41:07
« Opcje

W pierwszych dziesięciu wierszach należy zapisać wyrazy macierzy, w kolejnym wierszu obliczone sumy elementów na głównej i odwrotnej przekątnej.
Jak to zrobić?

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.15.146.*) |  
Wypowiedź dodana: 25 marca 2007, 17:44:30
« Opcje

W pierwszych dziesięciu wierszach należy zapisać wyrazy macierzy, w kolejnym wierszu obliczone sumy elementów na głównej i odwrotnej przekątnej.
Jak to zrobić?
Pętle + tablice. Macież to nic innego w programowaniu, jak dwuwymiarowa tablica T[x,y], definiowana jako T: array [1..M,1..N] of integer.


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Gość kuba Kopiuj nick (83.14.143.*)
Wypowiedź dodana: 27 marca 2007, 18:32:22
« Opcje

jeśli ktos może to niech poda link do dobrej strony na której są wytumaczone macierze w pascalu ,ale tak od serca a nie w wersji okrojonej z góry dziekuje

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.15.146.*) |  
Wypowiedź dodana: 28 marca 2007, 08:50:16 | Wypowiedź edytowana Ostatnio edytowana: 28 marca 2007, 09:31:12 po raz 1-wszy przez: Dżyszla
« Opcje

Ale co byś chciał wiedzieć? Macierz to nic innego, jak tablica o określonej liczbie wymiarów.
Możemy odnieść to do mapy podzielonej na kwadratowe sektory:

+-----+-----+-----+-----+-----+
| | A | B | C | D |
+=====+=====+=====+=====+=====+
| | | | | |
| 1 | A 1 | B 1 | C 1 | D 1 |
| | | | | |
+-----+-----+-----+-----+-----+
| | | | | |
| 2 | A 2 | B 2 | C 2 | D 2 |
| | | | | |
+-----+-----+-----+-----+-----+
| | | | | |
| 3 | A 3 | B 3 | C 3 | D 3 |
| | | | | |
+-----+-----+-----+-----+-----+

Każdy kwadrat zatem ma swój numer, będący połączeniem numeru wiersza i kolumny. Dlatego wskazujac np. sektor "C2" wiemy dokładnie, który to obszar.
Identycznie działają tablice (macierze) w językach programowaniu. Powyższą tablicę można w Pascalu zamodelować jako:

Mapa: array['A'..'D',1..3] of ...

Teraz każdy "sektor" czyli element tablicy może przechowywać jakiś typ danych. Niech będzie to liczba całkowita:

Mapa: array['A'..'D',1..3] of Integer;

Do elementów tablicy odwołujemy się poprzed nazwę tablicy i pozycję (współrzędne) elementu:

Mapa['C',2];

I traktujemy takie coś jaka każdą inną zmienną typu Integer.

Tak więc - nazwa tablicy i w nawiasach kwadratowych współrzędne.
Tablice mogą być jednowymiarowe, dwuwymiarowe (jak w przykładzie) i dowolnie (teoretycznie) większych rozmiarów (np. trójwymiarowe określanie za pomocą 3 współrzędnych elementu w przestrzeni).

Nie ma większej filozofii.

Wygoda w używaniu tablic polega na:
1. Krótkiej deklaracji dużej ilości zmiennych o jednakowym typie
2. Możliwości prostej reprezentacji geometrycznej (jak przedstawiono na rysunku)
3. Używaniu do określania współrzędnych zmiennych.

W Pascalu mamy tą wygodę, że możemy indeksować (adresy współrzędnych nazywa się indeksami) za pomocą dowolnego typu wyliczeniowego, a więc litery, cyfry czy typy wyliczeniowe.

Dlatego tak prosto wyświetlić np zawartość tablicy:

var
x: Char;
y: Integer;
Mapa: array['A'..'D',1..3] of Integer;
Sumy: array['A'..'D'] of Integer;
begin
{Zerowanie sum:}
for x:='A' to 'D' do Sumy[x]:=0;

writeln('Oto tablica:');
for y:=1 to 3 do begin
for x:='A' to 'D' do begin
write(Mapa[x,y],' ');
Sumy[x]:=Sumy[x]+Mapa[x,y];
end;
writeln;
end;
writeln('Sumy wszystkich kolumn:');
for x:='A' to 'D' do
write(Sumy[x],' ');
end;

Powyżej prosty przykład, jak wyświetlić elementy macierzy i jak zsumować elementy we wszystkich kolumnach, zapisać je w tablicy a na końcu wyświetlić.

Nie sądzę, aby gdziekolwiek indziej było to wytłumaczone inaczej.


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Gość kuba Kopiuj nick (83.14.143.*)
Wypowiedź dodana: 28 marca 2007, 17:52:03
« Opcje

chodzi mi o operacje na macierzach takie jak obliczanie przekątnych ,sprawdzanie czy macierz jest "trójkątna"(nie jestem pewny czy tak się to nazywa),i takie sprawy bo podstawy to jeszcze rozumiem

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.15.146.*) |  
Wypowiedź dodana: 28 marca 2007, 21:36:04 | Wypowiedź edytowana Ostatnio edytowana: 29 marca 2007, 08:24:58 po raz 1-wszy przez: Dżyszla
« Opcje

Ale to są zagadnienia matematyczne, a nie programistyczne. Jeśli będziesz wiedział, jak w matematyce to wygląda, to co za problem zrealizować to na komputerze?

no zdefiniuj sam, czym jest macierz trójkątna, wskaż na zależności pomiędzy współrzędnymi a zawartością pozycji i tylko przełóż to na programowanie.


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Gość Wioletta Kopiuj nick (91.149.195.*)
Wypowiedź dodana: 23 czerwca 2007, 20:02:15 | Wypowiedź edytowana Ostatnio edytowana: 23 czerwca 2007, 21:04:52 po raz 1-wszy przez: Dżyszla
« Opcje

ok mam pytanko jak napisac macierz transponowana? cos mi nie wychodzi gdzie jest bład?

program macierze;
uses crt;

type mat=array[1..10,1..10] of integer;

var A,B:mat;

Procedure losuj_macierz (var x:mat);
var i,j : integer ;
begin
for i:=1 to 10 do
for j:=1 to 10 do
A[i,j] :=random(5);
writeln;
end;

Procedure wypisz_macierz (var x:mat);
var i,j: integer;

begin
writeln ('To jest wylosowana macierz: ');
for i :=10 to 1 do
begin
for j:= 10 to 1 do
write (x [i,j]:5);
writeln;
end;

end;


Procedure mod3 (x:mat);
var e,i,j: integer;

begin
e:=1;
for i:=1 to 10 do
for j:=1 to 10 do
if (A[i,j] mod 3=0) then e:= e+1 ;
end;

Procedure zmien_macierz (x:mat);
var e,i,j:integer;
begin
writeln ('To jest zmieniona macierz: ');
for i:=1 to 10 do
for i:= 1 to 10 do
begin
for j:= 1 to 10 do
write (a [i,j]: 5);
writeln;
end;


end;

begin
clrscr;
randomize;

losuj_macierz(A);
wypisz_macierz(A);
readln;
mod3(A);
zmien_macierz(B);

readln;

end.

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.15.146.*) |  
Wypowiedź dodana: 23 czerwca 2007, 20:30:28
« Opcje

A tak dokładniej, to co jest nie tak, bo nie wiem czego szukać ergo - gdzie. A kopiowanie, kompilowanie i szukanie jest czasochłonne.


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Gość Wioletta Kopiuj nick (91.149.195.*)
Wypowiedź dodana: 23 czerwca 2007, 21:04:27
« Opcje

*** Dodano o 20:57:45: *** (Autoscalanie)

Gdybym wiedziała gdzie jest bład nie szukałabym pomocy. Macierz transponuje tylko jedna kolumne (2) jest zadeklarowana hmm a ma przeprowadzic transpozycje wszystkich kolumn :-) prosze pomóz.

*** Dodano o 21:04:27: *** (Autoscalanie)

Napisałam ta macierz kurcze ale jak zadeklarowac zeby wykonywał transpozycje wszystkich kolumn? hmm ponownie zapetlic?

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.15.146.*) |  
Wypowiedź dodana: 23 czerwca 2007, 21:12:08
Za tą wypowiedź przyznano użytkownikowi punkt pożyteczności
« Opcje

A co ma robić procedura mod3 bo wg mnie to nic nie robi?
Ale ad meritum - masz w procedurze zmien_macierz dwukrotnie zagnieżdżoną pętlę i to operującą na tej samej zmiennej i - takich rzeczy się nie robi, bo program się zgubi. Druga rzecz - ma przekazywany parametr x a operuje na zmiennej a. Jeśli już tak wykonujemy i chcemy mieć wyniki w macierzy przekazanej, to przekazujemy ją przez referencję (a więc słowo kluczowe var przed nazwą parametru procedury; to samo się tyczy poprzedniej procedury oraz procedury losuj_macierz).
Transpozycja to zamiana kolumn i wierszy o ile dobrze pamiętam. Tutaj w ogóle tego nie widzę, żeby gdzieś się to odbywało.
A na koniec - przekazujesz tam tablicę B, która wcale nie ma wartości.


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Gość Wioletta Kopiuj nick (91.149.195.*)
Wypowiedź dodana: 23 czerwca 2007, 21:15:47
« Opcje

Dziekuję za naprowadzenie mnie gdzie mam błędy zaraz spróbuje zmienic macierz jeśli pozowolisz gdybym miała jednak nadal problem czy moge napisac do Ciebie jeszcze czy jednak wolałbys uniknac dalszej debaty na temat tej macierzy ? :-)

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.15.146.*) |  
Wypowiedź dodana: 23 czerwca 2007, 21:18:42
« Opcje

pisz tutaj, tylko proponuję się zarejestrować - bedzie łatwiej. No chyba, że już nie zamierzasz nigdy więcej się pojawiać :-)


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Zarejestrowany, zwieszony Wioletta Kopiuj nick (91.149.195.*) |  
Wypowiedź dodana: 23 czerwca 2007, 21:25:22
« Opcje

Ok dziekuje zarajestrowałam się wracam do cudownego swiata informatyki tymczasem pozdrawiam :-)

 Zarejestrowany, zwieszony Wioletta Kopiuj nick (91.149.195.*) |  
Wypowiedź dodana: 23 czerwca 2007, 22:04:42
« Opcje

Bardzo dziekuję jeszcze raz za pomoc macierz działa juz bezbłędnie :-) :zawstydzony: niestety jak widzisz wiem zbyt mało ale mam nadzieję ze naucze sie tego. Pozdrawiam pa

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.15.146.*) |  
Wypowiedź dodana: 23 czerwca 2007, 22:06:22
« Opcje

Nie ma za co. Wpadaj częściej! :-)


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 Gość Nick Kopiuj nick (87.204.222.*)
Wypowiedź dodana: 19 marca 2009, 12:21:49
« Opcje

Jak przejść z tablicy typu wektorowego na tablicę dwuwymiarową ?
np. "tablica = array[1 ..16] of integer" zamienić na
"tablica = array[1..4,1..4] of integer".Prosze o pomoc.

AvatarAdministrator Dżyszla Mężczyzna Kopiuj nick (83.2.108.*) |  
Wypowiedź dodana: 19 marca 2009, 12:35:47
« Opcje

Cześć całkowita z dzielenia (div), reszta z dzielenia (mod) i pętlą. Pierwszy wymiar będzie częścią całkowitą z dzielenia+1 przez szerokość, a drugi resztą z dzielenia przez szerokość, lecz dla reszty wynoszącej 0, należy przyjąć wartość 4.


mgr inż. Dżyszla

Nie odpisuję na problemy zgłaszane na e-mail lub PW!

Także dzięki firmie Netlook.pl możesz za darmo korzystać z tej strony!

 
Idź do strony:1

[+] Pokaż/odśwież listę czytających i monitorujących ten wątek

Podobne tematy:
Tytuł wątkuDziałWypowiedziWyświetleńOcenaOstatnia wypowiedź
Wątek zamknięty[Pascal] Macierze i zamiana miejscami wierszy (kolumn)
Macierze w Turbo Pascalu - zamiana miejscami wartości maksymalnych i minimalnych
Porady / Programowanie9900 30.11.2008 10:59:11
Wątektablice w delphiPorady / Programowanie2129 15.10.2008 19:08:05
WątekKody źródłowe kilku programów Pascal
Komentarze do zasobu Kody źródłowe kilku programów Pascal
Komentarze / Moje programy i teksty2244 9.06.2010 17:30:49
Wątek[Delphi] Kopiowanie macierzy i manipulacja nimi
Jak skopiować macierz zamieiając wiersze
Porady / Programowanie2170 28.01.2011 17:35:06
WątekRysowanie w dwóch programach - jak połączyć?
Pascal - programy graficzne
Porady / Programowanie295 6.06.2009 21:47:15

Wątek zamknięty - nie można już do niego dodawać nowych wypowiedzi

Subskrybuj kanał najnowszych wypowiedzi w tym temacie


Chcesz mieć też takie forum na swojej stronie? Napisz!

Strona istnieje od 25.01.2001
Ta strona używa plików Cookie
Helion.pl  
archive To tylko kopia strony wykonana przez robota internetowego! Aby wyświetlić aktualną zawartość przejdź do strony.
Ładowanie...

Optymalizowane dla przeglądarki Firefox
© Copyright 2001-2017 Dawid Najgiebauer. Wszelkie prawa zastrzeżone.
Ostatnia aktualizacja podstrony: 22.09.2014 12:12
Wszystkie czasy dla strefy czasowej: Europe/Warsaw