Šta je novo?

algoritam pomoc

set

Čuven
Učlanjen(a)
14.06.2003
Poruke
385
Poena
619
spremam ispit iz metoda programiranja pa sam naisao na jedan zadatak koji mi bas nije jasan, ako neko moze da mi nacrta algoritam posto me bas zbunjuje ovaj deo sa ostalim elementima

Kod:
Data je matrica Anxn . Formirati matricu Bnxn koja se dobija kada se svi 
elementi sa glavne dijagonale matrice A zamene sumom preostalih 
elemenata u toj vrsti .

hvala unapred.
 
Poslednja izmena:
For I= 1 To N Do
For J= 1 To N Do
Suma = 1
If I<>J Then Suma = Suma * A[i,j]
End
B[I,I] = Suma
End

Znam da si trazio algoritam, ali ja stvarno lose crtam. :d
(zurio sam, boli me glava, imam sutra ispit,
= sacekaj da neko proveri ovo, za svaki slucaj)

Ako ti nesto nije jasno, slobodno pitaj.
Moze i na mail.
Pozdrav
 
Meni nista nije jasno sta je Sasha napisao pa posto mi je malo dosadno evo i ja cu da pametujem
For I=1 to N Do
Suma=0
For J=1 to N do
If I<>J then
Suma=Suma+A[I,J]
end
B[I,I]=Suma
End
Evo sad kad sam zavrsio vidim da je jako slican kao Sashin samo sto je on pobrkao pojam sume i proizvoda:) A posto kaze suma preostalih elemenata, onda treba prekociti onaj kada je I=J. Sto se vandijagonalnih clanova tice, znas i sam, ddaj jos koji red u algoritam.
 
Poslednja izmena:
Čini mi se da je ovako:
Kod:
[FONT=Courier New]FOR I = 1 TO N
   Suma = 0
   FOR J = 1 TO N
      Suma = Suma + A[I,J]
      B[I,J] = A[I,J]
      B[I,I] = Suma
   NEXT
NEXT
[/FONT]
EDIT: Ih, bre Lazo, morao si da me pretekneš :D
Ova algoritam ujedno zamenjuje ostele elemente (van diagonale) sa onim što se nalazilo u prvoj matrici (ako uztreba).

EDIT 2: U gornjem editu sam izgrešio u kucanju, za trojicu! :d
 
Poslednja izmena:
Galeon, imas gresku jer tvoj sumira celu vrstu pa i taj dijagonalni element, pise PREOSTALIH clanova. Stigo bi ti pre mene da nije poceo rukomet na TV pa sam morao expres brzo da kucam. Sad su nasi expres brzo zasrali stvar pa sam se vratio:)
 
Aaaa ... yes, yes. Fali mi onaj IF.
offtopic
ja tebi proguta NS ali nisi zbog toga morao da mi menjas nick :D ;)
/offtopic
 
Upsss, izvinjavamo se, mnogo se izvinjavamo:) To je sve zbog onih spanaca, danaca, svedjana, posle nasih komentatora ne znam vise ni sa kime smo igrali:)
 
I ja se izvinjavam zbog greske.
Procitao sam suma, i krenuo da radim proizvod. :)
Posle uopste nisam citao tekst zadatka.
Nije mi prvi put. :(
LazaNS je dao ok kod za sumu, a ja za proizvod.
 
Sasha je napisao(la):
Procitao sam suma, i krenuo da radim proizvod. :)
Posle uopste nisam citao tekst zadatka.
Nije mi prvi put. :(

ne valja to za ispite :)

inace hvala vam svima, ako padne takav zadatak da znam sta da radim
 
pogledao sam sad ovaj zadatak, posto mi se sinoc spavalo nisam mogao da mislim, i jel moze da se ovaj uslovni korak stavi kao i=j, pa ako nije da radi sumu, nekako mi lepse izgleda nego i<>j, i zasto je na kraju B[i,i]=S, a ne B[i,j]

edit: shvatio sam sto je B[i,i] ali ne zasto je kod LazeNS B[I,I]=Suma izvan drugog for-a, a kod ganelon-a unutar njega, i kako ide korak za zamenu vandijagonalnih elemenata tj, za njihovo prepisivanje u matricu B
 
Poslednja izmena:
set je napisao(la):
pogledao sam sad ovaj zadatak, posto mi se sinoc spavalo nisam mogao da mislim, i jel moze da se ovaj uslovni korak stavi kao i=j, pa ako nije da radi sumu, nekako mi lepse izgleda nego i<>j, i zasto je na kraju B[i,i]=S, a ne B[i,j]

Ovako, ako stavis B[i,j] umesto B[i,i] ovo se desava.

Izadjes iz unutrasnje petlje, J ima vrednost N,
pa bi umesto menjanja vrednosti elemenata na glav. dijagonali, menjao vrednost elementima zadnje kolone.
A to se u zadatku ne trazi. :)

A sto se tice = umesto != ili <> (zaboravio sam vise
kako se sve oznacava razlicito/nejednako u raznim jezicima) verovatno moze i tako, ali sam poprilicno
siguran da je komplikovanije, a mozda i neefikasnije,
od vec napisanog resenja.

Ako budem imao vremena, pokusacu sa "="
pa cu okaciti rezultate.

Pozdrav.
 
set je napisao(la):
edit: shvatio sam sto je B[i,i] ali ne zasto je kod LazeNS B[I,I]=Suma izvan drugog for-a, a kod ganelon-a unutar njega, i kako ide korak za zamenu vandijagonalnih elemenata tj, za njihovo prepisivanje u matricu B

Nisam video edit. :S:

Nema tu prvi, drugi for ako je jedan for unutar drugog.
Ima unutrasnji i spoljasnji. :d ;)

Po meni B[i,i]= suma treba da stoji van unutrasnje petlje.
Ako je B[i,i]= suma unutar obe petlje,
mislim da tom slucaju nema stete, ali nisam siguran,
verovatno ce samo umesto n puta, B[i,i]=suma biti radjeno n*n puta, ovo samo nagadjam jer ima grescica
u kodu, a malo mi je cudno da ispravljam tudje greske,
jer mozda je covek imao neku drugu ideju.

A sto se tice vandijagonalnih elemenata

(evo lazinog koda, ipak je on prvi tacno odradio :p :wave: )

For I=1 to N Do
Suma=0
For J=1 to N do
If I<>J then
Suma=Suma+A[I,J]
else
B[i,j] = A[i,j]
end
B[I,I]=Suma
End
 
Ovo gore je kompletan zadatak, ja namerno nisam hteo da dodam ta dva reda, reko kad provalis gde treba da ih stavis, tad ce ti zadatak stvarno biti jasan, iz licnog iskustva. Moze da se uradi i sa I=J ali bi bilo komplikovanije i konfuznije. B[I,I] moze da bude i unutar druge petlje, ali ti tako racunar radi n-1 operaciju dodeljivanja vrednosti viska, sto bi ti neki profesori ozbiljno zamerili. Ih ispade cela komplikacija od ovog prostog "logaritma", sta bi bilo da si trazio neki komplikovaniji:)
 
B[I,I] sam stavio u unutrašnjoj petlji samo radi isticanja razlike, odnosno šta se postiže sa b(i,j) a šta sa b(i,i). Ako se u ciljnoj (B) matrici popunjava samo dijagonala, linija koda:
"B[I,J] = A[I,J]"
je potpuno suvišna i može čak značiti i netačno rešenje.
Znači samo to mi je bila ideja, da bi ti bilo jasno zašto B[I,I]. Naravno:
"B[I,I] = Suma"
je bolje staviti van unutrašnje petlje kako bi se upis vršio samo jedanput, a ne n puta.
 
Poslednja izmena:
evo jos jednog zadatka da vas namucim :) buni me samo sta da stavim kao indeks niza, posto ako stavim i ne valja, ako stavim j opet ne valja, probao sam i sa i*j i opet ne valja

Kod:
Data je matrica Anxm. Formirati niz X ciji su
clanovi po kolonama , a zatim odrediti 
njegovu aritmeticku sredinu.

znaci samo mi treba indeks niza, aritmeticka sredina nije problem, stavio sam sliku u atach cisto da vidite dokle sam dosao i sta je problem,

ps: hitno je posto imam ispit ujutru pa ako moze neko veceras da mi razresi problem
 

Prilozi

  • sema.jpg
    sema.jpg
    6.8 KB · Pregleda: 62
Poslednja izmena:
FOR J= 1 TO M DO
FOR I = 1 TO N DO
B[(I-1)*M+J] = A[I,J]

To je to. :)
Srecno na ispitu.

dopuna :
poznavajuci moje "pazljivo" citanje teksta zadatka,
sacekaj da jos neko potvrdi da je resenje dobro,
mada sam ja 100% siguran da je ovo bas to sto si trazio.

Ako ti nesto nije jasno u vezi ovog koda ili nekog drugog,
pitaj dok jos nije kasno. :smoke:
 
Poslednja izmena:
B[(J-1)*N+I] = A[I,J]

Bas sam *****
Umesto da lepo sednem i uzmem papir i olovku,
ja gledam evrogolove, slusam techno/trance
i konvertujem matrice u nizove.
Dobro sam potrefio FOR petlje.
 
Nazad
Vrh Dno