Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kad se parametri promene tamo gde ne bi trebalo!!!!!

[es] :: C/C++ programiranje :: Kad se parametri promene tamo gde ne bi trebalo!!!!!

[ Pregleda: 1260 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ZastoZasto

Član broj: 56262
Poruke: 12
..ingenieure.uni-stuttgart.de.



Profil

icon Kad se parametri promene tamo gde ne bi trebalo!!!!!23.05.2005. u 14:01 - pre 230 meseci
Imam ogroman problem-fortran program. Pozivajuci subroutine, program menja sve parametre u neke slucajne brojeve, cak i one koji se ne pozivaju u toj subroutine. Npr. jedan parametar je KENN=1 pre neke subroutine, taj parametar se ni ne pozove u njoj, a cim izvrsi subroutine KENN=1134624768 (znaci neki bilionski slucajan broj). To se ne desava samo sa ovim parametrom, vec i sa mnogim drugim. Jel zna neko u cemu bi mogao da bude problem?
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Kad se parametri promene tamo gde ne bi trebalo!!!!!23.05.2005. u 15:05 - pre 230 meseci
Verovatno imas neki niz u toj subrutini, i pises preko granica niza.
 
Odgovor na temu

ZastoZasto

Član broj: 56262
Poruke: 12
..ingenieure.uni-stuttgart.de.



Profil

icon Re: Kad se parametri promene tamo gde ne bi trebalo!!!!!23.05.2005. u 15:19 - pre 230 meseci
Pa ne bi trebalo. U ovom delu se javlja greska:
........
DO 80 L=1,mst
RLPRO(L)=(REAL(PROF(1)-PROF(L)))*1000.
RLQUK(L)=real(Q(L))
RLH(L)=REAL(H(L))
RLDX(L)=REAL(DELX(L))
RLQL(L)=REAL(QL(L))
IF(L.EQ.1)RLQL(L)=REAL(Q(L))
write(*,*)L,mst,n
80 continue
..........
Znaci u tom delu on samo pamti brojeve koje je tacno izracunao, kad odstampam L, mst i n vidim da se menja mst(=250) posle L=138 postaje taj cudan veliki broj, a n(=1) postaje taj broj posle 159 i tako dalje. Inace mst i n su parametri, definisani:
....
parameter mst=250
parameter n=1
.....
Zato i ne kapiram sta je problem. A sve promenljive u loop-u su definisane kao nizovi, veci nego sto je definisano u subroutine, npr.
....
dimension rlpro(3000)
.....
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Kad se parametri promene tamo gde ne bi trebalo!!!!!24.05.2005. u 08:49 - pre 230 meseci
Sta su PROF, Q, H, DELX, QL, nizovi ili funkcije? Ovaj kod, je li to ta

subrutina? Kazes da su nizovi u petlji veci nego nizovi u subrutini, ne

razumem. Mozda koristis COMMON na pogresan nacin?
 
Odgovor na temu

ZastoZasto

Član broj: 56262
Poruke: 12
..ingenieure.uni-stuttgart.de.



Profil

icon Re: Kad se parametri promene tamo gde ne bi trebalo!!!!!24.05.2005. u 14:41 - pre 230 meseci
To su sve nizovi.
Da to je ta subroutine koja menja parametre.
Nizovi su definisani u glavnom programu u zavisnosti od nekog max. broja, npr. Q(3000), znaci max broj u nizu je 3000. U subroutine je taj broj manji, jer je definisano za tacan broj podataka npr. podataka ima 500, znaci definisano u subroutine je: Q(500).
Sad sam valjda objasnila. Ne verujem da je to problem, jer sam probala da definisem na isti broj i dalje javlja isti problem.....
 
Odgovor na temu

ZastoZasto

Član broj: 56262
Poruke: 12
..ingenieure.uni-stuttgart.de.



Profil

icon Re: Kad se parametri promene tamo gde ne bi trebalo!!!!!24.05.2005. u 14:45 - pre 230 meseci
To su sve nizovi.
Da to je ta subroutine koja menja parametre.
Nizovi su definisani u glavnom programu u zavisnosti od nekog max. broja, npr. Q(3000), znaci max broj u nizu je 3000. U subroutine je taj broj manji, jer je definisano za tacan broj podataka npr. podataka ima 500, znaci definisano u subroutine je: Q(500).
Sad sam valjda objasnila. Ne verujem da je to problem, jer sam probala da definisem na isti broj i dalje javlja isti problem.....
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Kad se parametri promene tamo gde ne bi trebalo!!!!!25.05.2005. u 09:18 - pre 230 meseci
Da li su bas svi nizovi (RLPRO, RLQUK, RLH, RLDX, RLQL) dimenzionisani

na 3000 elemenata? Da nisi mozda deklarisala neki od tih nizova u samoj

subrutini? Da bi pronasla problem probaj da pregledas cak i sadrzaj svih

nizova (ili bar prve elemente u svakom nizu), a ne samo pojedinacne

promenljive. Da li mozes da debagujes kod korak po korak, i vidis

sadrzaj memorije u svakom koraku?


Mora da je pisanje preko granica niza, nema sta drugo da bude...
 
Odgovor na temu

[es] :: C/C++ programiranje :: Kad se parametri promene tamo gde ne bi trebalo!!!!!

[ Pregleda: 1260 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.