• Nie Znaleziono Wyników

A[k][i] = max j=i,...,n−1

N/A
N/A
Protected

Academic year: 2021

Share "A[k][i] = max j=i,...,n−1"

Copied!
3
0
0

Pełen tekst

(1)

wskazówki do zada« do samodzielnegorozwi¡zania, 13.03.2020

Zadania59zlistyIdoty z¡u»y iatabli jakoparametrówfunk ji.Ró»ni awstosunkudozwykªy hzmien-

ny h polega natym, »e zmienne tabli owes¡ wgrun ie rze zywska¹nikami i tak te» s¡ przekazywanejako

parametryfunk ji. Deklara je

int T[10℄;

double X[20℄;

rezerwuj¡zmienneTiXtypu wska¹nikanaintidouble,nadaj¡ imwarto±¢po z¡tkowegoadresuprzydzie-

lonegodlani hspójnegoobszarupami iorozmiarze10- iu zterobajtowy hli zb aªkowity hiodpowiednio

20-tuo±miobajtowy hli zbzmiennopozy yjny hpodwójnejpre yzji.

Deklara je

int *T;

double *X;

rezerwuj¡dokªadnietakiesamezmienneTiXzt¡ró»ni ¡,»enienadaj¡im»adnejwarto± i.Poznamypó¹niej

metodydynami znej rezerwa jitabli ,gdyadresy iwielko± i potrzebny h obszarówobli zanes¡ inadawane

zmiennym T i X ju» w trak ie dziaªania programu, a ponadto wielko± i tabli mog¡ by¢w dowolnej hwili

zmieniane.

Odwoªaniadoelementówtabli T[0℄, T[2℄, X[2℄, X[k+1℄ itp.s¡ równowa»neopera jom wyªuskania

wska¹nika(odpowiedniopokolei) *T, *(T+2), *(X+2)i*(X+k+1).Wartozauwa»y¢,»epro esprzesuwania

wska¹nikanp.o2miejs a*(T+2)i*(X+2)uwzgldniaautomaty znierozmiarelementutabli y.Wpierwszym

przypadku wska¹nik T przesuwany jest o 2*4 bajty dalej, w drugim X przesuwany jest o 2*8 bajtów do

wªa± iwegoelementutabli y.

U»y ie tabli jednowymiarowy h jakoparametrów funk ji

Wdeklara jinagªówkafunk ji mo»emyrównowa»nienapisa¢

int F(int S[10℄, double Y[20℄, ...)

int F(int S[℄, double Y[℄, ...) lub

int F(int *S, double *X, ...).

Wka»dymzty hprzypadkówpod zaswywoªaniafunk jiFprzekazywanyjestdoniejadres tabli y,dlaktórej

Fjestwywoªywana,np.F(T,X,...):

Wtre± i funk ji odwoªujemysidoelementówtabli przez S[i℄lubrównowa»nieprzez *(S+i).Niezale»nie

(2)

niaprogramu.Funk janie znarozmiarutabli y,którajestjejparametrem.Je±limaonaprzetwarza¢tabli e

ró»ny hrozmiarów,rozs¡dnysposóboperowaniaparametramitabli owymijestnastpuj¡ y:

int F(int S[℄, double Y[℄, int m, int n, ...),

gdzie m, n s¡parametramiprzekazuj¡ ymiwielko± i odpowiedni h tabli . Wywoªanie dlatej funk ji wygl¡-

daªobynp.tak: F(T, X, 10, 20,...)

Tabli e odwó h(lub wi ej)wska¹nika h

Deklara jatabli y

int C[10℄[15℄

jestrealizowanajako10- ioelementowatabli awska¹nikówna15-toelementowewiersze zylijakotabli a

tabli .Równowa»niemo»na napisa¢

int *C[10℄,

przy zymtuka»demuwska¹nikowiC[i℄trzebabyªobydopieror znienada¢warto±¢adresu15-toelemen-

towegoblokuli zb alkowity h

U»y ietakiejtabli y wfunk ji jakoparametruozale»ny hodwywoªaniarozmiara hmo»nazrealizowa¢tak:

int F(int m, int n, int A[℄[n℄, ...)

przy zymparametrnmusipoprzedza¢wnagªówkuFodwoªaniedoniegowint A[℄[n℄.Wywoªanietejfun ji

tonp. F(10, 15, C, ...).

Wskazówki

Wzad.8mamytabli zadeklarowan¡np.jako

int A[1000℄,

wktórejelementyA[1℄, ... A[n℄zawieraj¡danedoposortowania.Li zbaty hdany hnniejestzgóryznana

(jestokre±lanawtrak iedziaªaniaprogramu,np.pod zas zytaniaty hdany h)ipoustaleniuprze howywana

jestwsamejtabli y jakoA[0℄.W tensposób wystar zyprzekaza¢ samparametrAdofunk ji sortuj¡ ejbez

konie zno± ipodawaniajejosobnegoparametruzaktualnymrozmiaremsortowany hdany h.

Zad. 9jesttro h bardziej zaso hªonne. Nale»yzaprogramowa¢je tak, byfunk jedziaªaªy dlaukªadów

ró»nejwielko± in.Ma ierzzewspóª zynnikamiukªadudeklarujemynawyrost jakonp.

float A[30℄[31℄

iwykorzystujemytylkopewn¡ jej z±¢A[n℄[n+1℄zale»nieodwielko± irozwi¡zywanegoukªadu.A[i℄[j℄to

wspóª zynnik stoj¡ yprzy zmiennej

x j

w i-tym równaniu (j=0,1,..., n-1),ali zba zostatniej kolumny A[i℄[n℄toprawastronarównania.

Musi iePa«stwoprzypomnie¢sobiemetodelimina jiGaussazwykªaduzalgebry.Mo»nate»znale¹¢wiele

materiaªównatentematwsie i,np.https://e.kul.pl/files/10382/publi /aan_w6_1819_1.pdf.W za-

daniu hodziozastosowaniemodyka jiogólnejmetodyGaussanazywanej z± iowym wyboremelementu

gªównego  której elemjest unikanie dzieleniaprzez maªeli zby, botakie dziaªania wprowadzaj¡na ogóª

(3)

ta polega na tym, »ebydoelimina ji zmiennej

x i

z kolejny h równa«o numera hi+1,...,n-1u»y¢tegoz ni h,wktórym

x i

manajwikszy odowarto± ibezwzgldnejwspóª zynnik

A[k][i] = max j=i,...,n−1

A[j][i]

.

To jest wªa±nie ten element gªówny. Zamieniamy wów zas miejs ami równanie i-te z k-tym ( o o zywi± ie

niewpªywanarozwi¡zanieukªadu!) zamieniaj¡ wma ierzyA wierszeiorazk.Teraz,eliminuj¡ zrówna«

i+1,...,n-1zmienn¡

x i

,dodajemydoni h stosownewielokrotno± irównaniai-tego,aprzyi hobli zaniu wykonujemydzieleniaprzezA[i℄[i℄,którepowykonanejprzed hwil¡zamianiemaju» najwiksz¡dostpn¡

wnaszymukªadziewarto±¢.

Wybórelementugªównegojesttu z± iowy,bomaksymalnegoA[k℄[i℄szukamyjedyniewi-tejkolumnie

w±ród li zb A[i℄[i℄, A[i+1℄[i℄,..., A[n-1℄[i℄. Peªny wybór polega na szukaniu maksymalnego o

do moduªu wspóª zynnika A[k℄[m℄ w aªej podma ierzy k,m=i,i+1,...,n-1i modykuje A zamieniaj¡

tak»e kolumn i-t¡ z m-t¡, tak by nowym elementem A[i℄[i℄ staª si wªa±nie element gªówny A[k℄[m℄.

Zamianakolumn dziaªatak jakgdyb±my zamienilirolamizmienne

x i

i

x m

,a wi przystosowaniu peªnego

wyborutrzebarejestrowa¢wszystkiezamianykolumn,bynako« uprzywró i¢pierwotn¡numera jzmienny h

x 0 , ..., x n−1

.Naszezadanierealizowa¢majednaktylko z± iowywybór.

Rozwi¡zanie bdzie zna znie ªatwiejsze, je±li zastosuje ie Pa«stwo strategi programowania strukturalnego,

dziel¡ algorytmnafunk jewykonuj¡ eposz zególnekrokiobli zeniowe.Mo»nanaprzykªadzaprogramowa¢

kolejnonastpuj¡ efunk je:

void zytaj(int n, float A[℄[n+1℄) w zytuj¡ ¡wspóª zynnikiukªadu(nmo»napobra¢zwej± iaw ze-

±niej)

int glowny(int n, int i, float A[℄[n+1℄) zwra aj¡ ¡jakowarto±¢nrrównaniak,wktórymznaleziono

elementgªównyA[k℄[i℄

void zamien(int n, int i, int k, float A[℄[n+1℄) zamieniaj¡ ¡miejs amielementywierszyiorazk

void eliminuj(int n, int i, float A[℄[n+1℄) dokonuj¡ ¡elimina jizmiennej

x i

zrówna«i+1,...n-1, zyliprzeksztaª aj¡ ¡ma ierzAtak,abyA[i+1℄[i℄=A[i+2℄[i℄=...=A[n-1℄[i℄=0.Wartoprzyokazjispraw-

dza¢ pod zas wyzna zania nowy h warto± i wspóª zynników A[k℄[m℄ zy który± z ni h nie staª si bardzo

maªy (por. pole enie w zad. 9), np.

A[k][m]

< 10 6

, a wi porównywalnyz naturalnym poziomem bªdu zaokr¡gleniawarytmety eli zbfloat.Wów zasmo»na nada¢muwarto±¢0.

int rozwiazanie(int n, float A[℄[n+1℄, float x[n℄) wyzna zaj¡ ¡rozwi¡zaniex[0℄,...,x[n-1℄na podstawiedany hwma ierzyukªaduAdoprowadzonejdoposta itrójk¡tnej.Dodatkowowarto±¢intzwra ana

przezt¡funk jmo»esygnalizowa¢ zyukªadjestniezale»ny(wó zasx[i℄zawierarozwi¡zanie),zale»ny, zy

Cytaty

Powiązane dokumenty

o utworzeniu Polskiej Agencji Rozwoju Przedsiębiorczości (Dz. Jeżeli wadium jest wnoszone w innej formie niż w pieniądzu, dokument stwierdzający spełnienie warunku

Nazwy niebezpiecznych komponentów wymienione na etykiecie Zawiera: dekan-1-ol, etoksylowany. Zwroty wskazujące rodzaj zagrożenia H226 Łatwopalna ciecz i pary. H318

- laboratorium – należy przez to rozumieć laboratorium jednostki naukowej, zamawiającego, wykonawcy lub inne laboratorium badawcze zaakceptowane przez

Należy zastosować procedury monitorowania stężeń niebezpiecznych komponentów w powietrzu oraz procedury kontroli czystości powietrza w miejscu pracy - o ile są

Przedmiotem niniejszej specyfikacji technicznej (ST) są wymagania dotyczące wykonania i odbioru robót związanych z układaniem i montaŜem elementów

5) który naruszył obowiązki dotyczące płatności podatków, opłat lub składek na ubezpieczenia społeczne lub zdrowotne, co zamawiający jest w stanie wykazać za pomocą stosownych

3) Wykonawcach, którzy zostali wykluczeni z postępowania o udzielenie zamówienia, podając uzasadnienie faktyczne i prawne.. Umowa może zostać zawarta po upływie

1. Niezwłocznie po wyborze najkorzystniejszej oferty Zamawiający zawiadomi Wykonawców, którzy złożyli oferty o wyborze najkorzystniejszej oferty, podając firmę