Program na informatyke.

roczniak
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 10 lut 2011, o 10:52
Płeć: Mężczyzna
Lokalizacja: Polska

Program na informatyke.

Post autor: roczniak »

W macierzy kwadratowej o rozmiarze podanym przez użytkownika znaleźć element o naj­większej wartości bezwzględnej, a następnie utworzyć macierz o rozmiarze o jeden mniejszym, przez usunięcie wiersza i kolumny, na przecięciu których znajduje się znaleziony element. Wyświetlić macierz przed i po wykonaniu zadania.
Macierz powinna być wypełniona liczbami losowymi z zakresu <-50,50>.

Proszę o pomoc w tym zadaniu. Początek napisałem ale nie wiem czy dobrze więc tez wrzucam:

Kod: Zaznacz cały

program macierz;
 uses crt;
 var a,b,c:ShortInt;
     maci:array [1..10, 1..5] of ShortInt;
begin
 clrscr;
 randomize;
 for a:=1 to 10 do
 for b:=1 to 5 do begin 
 maci[a,b]:=random(100)+1-50;
 end;
Proszę o pomoc w dalszej części zadania.
Ostatnio zmieniony 10 lut 2011, o 11:04 przez scyth, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Awatar użytkownika
rtuszyns
Użytkownik
Użytkownik
Posty: 2042
Rejestracja: 29 gru 2006, o 23:24
Płeć: Mężczyzna
Lokalizacja: Zamość
Podziękował: 1 raz
Pomógł: 229 razy

Program na informatyke.

Post autor: rtuszyns »

Można teraz szukać największego elementu przez porównywanie. Spróbuj zapisać kod programu na takie porównywanie...
roczniak
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 10 lut 2011, o 10:52
Płeć: Mężczyzna
Lokalizacja: Polska

Program na informatyke.

Post autor: roczniak »

A mógłbyś mi objaśnić w jaki sposób bo zbytnio nie mam pojęcia...
x9ro
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 11 lut 2011, o 15:06
Płeć: Mężczyzna
Lokalizacja: Poland

Program na informatyke.

Post autor: x9ro »

Tutaj widze pascala? jesli sie nie myle, hmm niestety programuje w dwóch innych jezykach ale algorytm bedzie wygladal nastpujaca wg niego zrob.

Przede wszystkim lecisz po dwoch petlach zagniezdzonych w sobie nadaj sobie 3 zmienne pomocnicze(nie wiem czy nie za duzo ale narazie nie myslmy o optymalizacji) do jednej bedziesz zapisywal liczbe z porównania do dwóch pozostałych zapiszesz nr kolumny i wiersza w której się znajdują.

zapisze to algorytmem:

Kod: Zaznacz cały

int a;
int b,c;
a = macierz[1,1] ; <-- 1 element mozesz przyjac jako uporzadkowany
// nie wiem od jakis indeksow zaczynaly sie w paskalu macierze  (zaczne od 1)
for i=1 to (tutaj mozesz przyjac zmienna podana przy tworzeniu macierzy) do
  for j =1 to (tutaj to samo) do
    if (macierz[i,j] < 0 ) <-- sprawdzam tutaj czy jest dodatnia czy ujemna bo mowa o bezwzglednych 
      {
           if(a<(macierz[i,j]*(-1))
               a=macierz[i,j];
               b=i; c=j;
      }
   else if (a<macierz[i,j])
         a=macierz[i,j];
         b=i; c=j;
zalozylem ze zawsze znajdzie sie element wiekszy od zero (bezwzgledny)( choc chyba w elsie i tak robie dla zera

to by bylo wyszukiwanie maksa. przepraszam za zmieszany algorytm ale widze ze robisz pascalem a ja preferuje c/c++ badz c# ale powinienies sie skapnac.

Metoda ktora kasuje hmm nie wiem jak to zrobic w pascalu, ale moze da sie apisac metode(nie wiem jak to w pascalu procedure?) ktora zwraca ci taka macierz.
Ostatnio zmieniony 17 lut 2011, o 22:22 przez Crizz, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości. Kod programu, pseudokod itp. proszę umieszczać wewnątrz klamer [code][/code].
roczniak
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 10 lut 2011, o 10:52
Płeć: Mężczyzna
Lokalizacja: Polska

Program na informatyke.

Post autor: roczniak »

Ok. A mógłby mi ktoś napisać to jakoś w programie turbo pascal?? Przepraszam ale nie jestem zbytnio dobrym programistą, a zależy mi na dobrej ocenie z tego i chciałbym oddać cały program. Siedze i nic mi nie wychodzi;/.
Awatar użytkownika
rtuszyns
Użytkownik
Użytkownik
Posty: 2042
Rejestracja: 29 gru 2006, o 23:24
Płeć: Mężczyzna
Lokalizacja: Zamość
Podziękował: 1 raz
Pomógł: 229 razy

Program na informatyke.

Post autor: rtuszyns »

Może zacznij od tego, że napisz sobie algorytm, schemat postępowania a potem staraj się przełożyć to na język programowania. I masz 2 zalety tego: robisz coś sam, uczysz się...

A tak a propos wspomnianego przeze mnie porównywania, to bierzesz moduł elementu \(\displaystyle{ a_{11}}\) i porównujesz z modułem elementu \(\displaystyle{ a_{12}}\). Zapisujesz większy pod zmienną jakaś np. \(\displaystyle{ z}\) i sprawdzasz dalej...

Tak mi przyszło na myśl, że można też użyć metody sortowania ale to chyba nie jest zbyt optymalna metoda tutaj...
x9ro
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 11 lut 2011, o 15:06
Płeć: Mężczyzna
Lokalizacja: Poland

Program na informatyke.

Post autor: x9ro »

w sortowaniach i tak bierzemy jako operacje dominujaca porównanie, wiec tak czy sial złożoności wychodziły by podobne. Tylko tutaj średnia pewnie była by inna ze wzgledu na jakies wystapienia wyboru jak "else if".

ps. tak jak uzytkownik wyzej próbuj sam zaimplementować algorytm. Chcesz dobrą ocene za coś czego nie umiesz?
roczniak
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 10 lut 2011, o 10:52
Płeć: Mężczyzna
Lokalizacja: Polska

Program na informatyke.

Post autor: roczniak »

Ok. A podpowiedzcie jak użyć formuły aby uzyskać wartość bezwzględną tylko to polecenie w turbo pascalu i będę bardzo wdzięczny.
Awatar użytkownika
rtuszyns
Użytkownik
Użytkownik
Posty: 2042
Rejestracja: 29 gru 2006, o 23:24
Płeć: Mężczyzna
Lokalizacja: Zamość
Podziękował: 1 raz
Pomógł: 229 razy

Program na informatyke.

Post autor: rtuszyns »

Możesz skorzystać z wbudowanej funkcji (bodajże abs(x)) lub napisać sam
roczniak
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 10 lut 2011, o 10:52
Płeć: Mężczyzna
Lokalizacja: Polska

Program na informatyke.

Post autor: roczniak »

Ok. Zabieram się do pracy.

-- 12 lut 2011, o 13:54 --

Mam jeszcze jedno pytanko. Co mam podstawić za wartość do obliczenia wartości bezwzględnej w macierzy?? Mianowicie abs(x) ---> co za x???

-- 12 lut 2011, o 14:02 --

Ok. Już wiem. Sorki, za głupie pytanie.-- 13 lut 2011, o 13:04 --Mam jeszcze tylko jeden problem;/ Oblicza mi wszystko i w ogolę ale wartość bezwzględną tylko dla ostatniej liczby w całej tabeli czyli tej w dolnym prawym rogu. Wiecie jak zrobić dla całej??
x9ro
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 11 lut 2011, o 15:06
Płeć: Mężczyzna
Lokalizacja: Poland

Program na informatyke.

Post autor: x9ro »

Wklej kod, być może w złym miejscu masz wstawiona metode. Bądz źle podajesz argument metody.
roczniak
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 10 lut 2011, o 10:52
Płeć: Mężczyzna
Lokalizacja: Polska

Program na informatyke.

Post autor: roczniak »

Pisałem, pisałem i napisałem. Mam tylko problem z wartością największą. Wiecie jak ją wyszukać z tych wartości bezwzględnych i usunąć wiersz i kolumnę w której się znajduje????
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

Program na informatyke.

Post autor: Afish »

Wiemy, ale powiemy, gdy pokażesz kod. Umiesz znaleźć wartość największą w jednowymiarowej tablicy?
roczniak
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 10 lut 2011, o 10:52
Płeć: Mężczyzna
Lokalizacja: Polska

Program na informatyke.

Post autor: roczniak »

Dzięki wszystkim za pomoc. Napisałem sam. Wszystko działa. rtuszyns dzięki za mobilizację.-- 17 lut 2011, o 22:36 --Wszystko przyszło z czasem ;d dostałem 4+ z tego. Zapomniałem się pochwalić:)
ODPOWIEDZ