Tetragrammaton
Διάσημο μέλος
Ο Site Bot αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 35 ετών, επαγγέλεται Συνταξιούχος και μας γράφει απο Πειραιάς (Αττική). Έχει γράψει 2,671 μηνύματα.
31-08-08
15:34
Λοιπόν έκανα κάποιες νέες διορθώσεις, και το πρόγραμμα πλέον δεν κρασάρει. Έχει πλέον τη μορφή:
Το πρόβλημά μου είναι το εξής: Για κάποιο λόγο που αδυνατό να εξηγήσω, το μπολνταρισμένο forloop δίνει πάντα τιμή 1, με αποτέλεσμα όλα τα επόμενα να δίνουν τιμή 0. Μπορεί να καταλάβει κανείς wtf is going on?
Code:
program newton
implicit none
double precision::x(10),y(10),d1(10),d2(10),d3(10),d4(10),d5(10),d6(10),d7(10),g(10)
integer::i,j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,k,n,mode
write(*,*)'Grapse 1 an 8es na leitourgiseis me synartisi, i 2 an 8es na dwseis me ti seira ta zeygaria x,y'
read(*,*) mode
write(*,*)'Dwse ton ari8mo twn simeiwn'
read(*,*)n
if(mode==1) then
write(*,*)'Dwse tis tetmimenes twn simeiwn'
do i=1,n
read(*,*) x(i)
y(i)=x(i)**2
end do
else
write(*,*)'Dwse ta zeygi twn syntetagmenwn twn simeiwn'
do i=1,n
read(*,*) x(i),y(i)
end do
end if
write(*,*)'Exoume ta e3is simeia'
do i=1,n
write(*,*)x(i),y(i)
end do
do j1=1,n
d1(j1)=y(j1)
end do
g(1)=d1(1)
do j2=1,n-1
d2(j2)=(d1(j2+1)-d1(j2))/(x(j2+1)-x(j2))
end do
g(2)=d2(1)
[B]if(n>=2) then
do j3=1,n-2
d3(j3)=(d2(j3+1)-d2(j3))/(x(j3+2)-x(j3))
end do
g(3)=d3(1)
end if[/B]
if(n>=3) then
do j4=1,n-3
d4(j4)=(d3(j4+1)-d3(j4))/(x(j4+3)-x(j4))
end do
g(4)=d4(1)
end if
if(n>=4) then
do j5=1,n-4
d5(j5)=(d4(j5+1)-d4(j5))/(x(j5+4)-x(j5))
end do
g(5)=d5(1)
end if
if(n>=5) then
do j6=1,n-5
d6(j6)=(d5(j6+1)-d5(j6))/(x(j6+5)-x(j6))
end do
g(6)=d6(1)
end if
if(n>=6) then
do j7=1,n-6
d7(j7)=(d6(j7+1)-d6(j7))/(x(j7+6)-x(j7))
end do
g(7)=d7(1)
end if
write(*,*)'Oi syntelestes g toy polywnymou einai:'
do k=1,n
write(*,*)g(k)
end do
end
Το πρόβλημά μου είναι το εξής: Για κάποιο λόγο που αδυνατό να εξηγήσω, το μπολνταρισμένο forloop δίνει πάντα τιμή 1, με αποτέλεσμα όλα τα επόμενα να δίνουν τιμή 0. Μπορεί να καταλάβει κανείς wtf is going on?
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Tetragrammaton
Διάσημο μέλος
Ο Site Bot αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 35 ετών, επαγγέλεται Συνταξιούχος και μας γράφει απο Πειραιάς (Αττική). Έχει γράψει 2,671 μηνύματα.
29-08-08
22:18
Νοουπ, σειμ ολντ σιτ.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Tetragrammaton
Διάσημο μέλος
Ο Site Bot αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 35 ετών, επαγγέλεται Συνταξιούχος και μας γράφει απο Πειραιάς (Αττική). Έχει γράψει 2,671 μηνύματα.
29-08-08
21:59
Έχω το παρακάτω πρόγραμμα. Δεν υπάρχουν καθόλου συντακτικά λάθη, το compilation γίνεται κανονικά. Παρόλα αυτά, όταν πάω να το τρέξω, μόλις πάω να δηλώσω το πλήθος των σημείων που θα εισάγω, κρασάρει λέγοντας ότι κάποια arrays έκαναν overflow. Όμως κανένα array εν προκειμένω δεν έχει χρησιμοποιηθεί, πόσο μάλλον να υπερχειλήσει. Έχει κανείς καμιά ιδέα;
Σημείωση:
Τα μηνύματα 5 έως 10 προέρχονται από το συγχωνευμένο θέμα "Βοήθεια σε Visual Fortran".
Code:
program newton
implicit none
real::x(10),y(10),d1(10),d2(10,10),d3(10,10,10),d4(10,10,10,10),d5(10,10,10,10,10),d6(10,10,10,10,10,10),d7(10,10,10,10,10,10,10),g(10)
integer::i,j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,k,n,mode
write(*,*)'Grapse 1 an 8es na leitourgiseis me synartisi, i 2 an 8es na dwseis me ti seira ta zeygaria x,y'
read(*,*) mode
write(*,*)'Dwse ton ari8mo twn simeiwn'
read(*,*) n
if(mode==1) then
write(*,*)'Dwse tis tetmimenes twn simeiwn'
do i=0,n
read(*,*) x(i)
y(i)=x(i)**2
end do
else
write(*,*)'Dwse ta zeygi twn syntetagmenwn twn simeiwn'
do i=0,n
read(*,*) x(i),y(i)
end do
end if
write(*,*)'Exoume ta e3is simeia'
do i=0,n
write(*,*)x(i),y(i)
end do
do j1=0,n-1
d1(j1)=y(j1+1)
end do
do j2=0,n-1
d2(j2+1,j2)=(d1(j2+1)-d1(j2))/(x(j2+1)-x(j2))
end do
do j3=0,n-2
d3(j3+2,j3+1,j3)=(d2(j3+2,j3+1)-d2(j3+1,j3))/(x(j3+2)-x(j3))
end do
do j4=0,n-3
d4(j4+3,j4+2,j4+1,j4)=(d3(j4+3,j4+2,j4+1)-d3(j4+2,j4+1,j4))/(x(j4+3)-x(j4))
end do
do j5=0,n-4
d5(j5+4,j5+3,j5+2,j5+1,j5)=(d4(j5+4,j5+3,j5+2,j5+1)-d4(j5+3,j5+2,j5+1,j5))/(x(j5+4)-x(j5))
end do
do j6=0,n-5
d6(j6+5,j6+4,j6+3,j6+2,j6+1,j6)=(d5(j6+5,j6+4,j6+3,j6+2,j6+1)-d5(j6+4,j6+3,j6+2,j6+1,j6))/(x(j6+5)-x(j6))
end do
do j7=0,n-6
d7(j7+6,j7+5,j7+4,j7+3,j7+2,j7+1,j7)=(d6(j7+6,j7+5,j7+4,j7+3,j7+2,j7+1)-d6(j7+5,j7+4,j7+3,j7+2,j7+1,j7))/(x(j7+6)-x(j7))
end do
g(0)=d1(0)
g(1)=d2(1,0)
g(2)=d3(2,1,0)
g(3)=d4(3,2,1,0)
g(4)=d5(4,3,2,1,0)
g(5)=d6(5,4,3,2,1,0)
g(6)=d7(6,5,4,3,2,1,0)
do k=0,6
write(*,*)g(k)
end do
end
Σημείωση:
Τα μηνύματα 5 έως 10 προέρχονται από το συγχωνευμένο θέμα "Βοήθεια σε Visual Fortran".
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.