The Stand
Πολύ δραστήριο μέλος


Να γραφεί πρόγραμμα το οποίο θα διαβάζει έναν ακέραιο αριθμό Ν>2 και στη συνέχεια θα εμφανίζει αν ο συγκεκριμένος αριθμός είναι πρώτος ή όχι.Στη συνέχεια να χρησιμοποιήσετε το πρόγραμμα αυτό για μα εκτυπώσει όλους τους πρώτους αριθμούς που βρίσκονται στο διάστημα 1-100
Ευχαριστώ πολύ!

Σημείωση:
Τα μηνύματα 1 έως 4 και 11 έως 15 προέρχονται από το συγχωνευμένο θέμα "Απορίες για Fortran".
Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος


Σε Pascal σου κάνει;Καλησπέρα παιδιά θα ήθελα μια βοήθεια για μια άσκηση στην fortran 90/95
Να γραφεί πρόγραμμα το οποίο θα διαβάζει έναν ακέραιο αριθμό Ν>2 και στη συνέχεια θα εμφανίζει αν ο συγκεκριμένος αριθμός είναι πρώτος ή όχι.Στη συνέχεια να χρησιμοποιήσετε το πρόγραμμα αυτό για μα εκτυπώσει όλους τους πρώτους αριθμούς που βρίσκονται στο διάστημα 1-100
Ευχαριστώ πολύ!![]()

Κι όταν λες "βοήθεια" τι ακριβώς θες;

Πού έχεις κολλήσει;

Γιατί αν τη θες έτοιμη.... τσου.

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
adespoto
Περιβόητο μέλος



Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
fandago
Διακεκριμένο μέλος


- Ζητάς και δέχεσαι έναν αριθμό, με έλεγχο να είναι μεγαλύτερος του 2
- Μετά πρέπει να σκεφτείς ότι για να ΜΗΝ είναι κάποιος πρώτος αριθμός πρέπει να διαιρείται κανονικά με οποιονδήποτε αριθμό μεταξύ [ 2, ν ) όπου ν ο αριθμός που ελέγχεις. Άρα ουσιαστικά έχεις έναν επαναληπτικό βρόγχο που ελέγχει αν το modulo (το υπόλοιπο της διαίρεσης) του ν με τους αριθμούς 2,3,4,5,...,ν-1 είναι ίσο με 0.
- Αν είναι ίσο με 0 τότε διαιρείται και με έναν ακόμα αριθμό εκτός από το 1 και τον εαυτό του, άρα δεν είναι πρώτος, άρα βγαίνεις από τον βρόγχο και η συνάρτηση σου επιστρέφει FALSE.
- Αν τελειώσει ο βρόγχος και δεν έχει βρεθεί δλδ αριθμός που να διαιρεί το ν ακριβώς τότε επιστρέφεις TRUE.
Για το δεύτερο σκέλος τα πράγματα είναι πιο απλά:
- Ξεκινάς με έναν επαναληπτικό βρόγχο από το 1 μέχρι το 100 όπου δίνεις στην προηγούμενη συνάρτηση τον αύξων αριθμό του βρόγχου για είσοδο και όποτε αυτή σου επιστρέφει TRUE εσύ εκτυπώνεις τον αύξων αριθμό (μαζί με ένα κόμμα και ένα κενό) της επανάληψης ο οποίος θα είναι και πρώτος αριθμός.
- Το αποτέλεσμα θα είναι στην οθόνη σου να έχεις όλους τους πρώτους αριθμούς μεταξύ 1-100.
Δεν μπορώ να σου δώσω κώδικα, γιατί πρώτων είναι αντιπαιδαγωγικό και δεύτερον δεν έχω κάνει FORTRAN και ούτε πρόκειται.

Σημείωση: Το μήνυμα αυτό γράφτηκε 17 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Tetragrammaton
Διάσημο μέλος



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".
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Δανάη
Πολύ δραστήριο μέλος


Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Tetragrammaton
Διάσημο μέλος



Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
kalypso
Περιβόητο μέλος



Σου κολλάει όταν πας να δώσεις το n- στην αρχή αρχή; Τι σου γράφει;
Γράψε και το end do --->enddo
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Tetragrammaton
Διάσημο μέλος


Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Tetragrammaton
Διάσημο μέλος


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?

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mi3s
Εκκολαπτόμενο μέλος


Προσπαθώ να κάνω κάτι ασκήσεις στην fortran και ενώ θέτω μια εντολή dimension p(50) ας πούμε μου βγάζει Error Incorrect sequence of statements Τι μπορεί να γράφω λάθος?Έτσι δεν είναι η εντολή?
thanks in advance!
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος


Επίσης δεν χρειάζεται νομιζω να δηλώνεις ως dimension p(50). Αν οι αριθμοί του array σου είναι πχ real, τότε μπορείς να το κάνεις το ίδιο πράγμα ως real p(50).
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mi3s
Εκκολαπτόμενο μέλος


Oρίστε όλο το πρόγραμμα
open(unit=1,file='dedomena.txt')
open (unit=2,file='apotelesmata.txt')
read(1,*)n,v
dimension p(50)
call pinakas(p,n,v,r)
write(2,3)(p(i),i=1,n)
3 format (3f4.1)
write(2,4)r
4 format (E4.2)
stop
close(1)
close(2)
end
subroutine pinakas(p,n,v,r)
dimension p(50)
p1=0
do i=2,n
p(i)=p(i-1)+v
end do
r=0
do i=1,n
r=r+(p(i)**2)
end do
return
end
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος


Βάλε ένα real p πριν το dimension.
Κάντο με όλες τις μεταβλητές στο subroutine βασικά.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
mi3s
Εκκολαπτόμενο μέλος


Βασικά το δοκίμασα και αυτό που είπες τώρα τα έβαλα όλα real αλλά πάλι βγάζει το ίδιο error.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
kikidimitris
Νεοφερμένο μέλος


Θα ήθελα τη βοηθειά σας στο παρακάτω. Είστε η τελευταία μου ελπίδα
program test
integer: a,b,x,y,z,i
real c,m,sum
open(1,file="αρχείο.txt",status="old")
i=0
sum=0
do
read(1,10,end=500)a,b,c
10 format(i3,2x,i2,2x,f4.1)
m=a+b
sum=sum+c
print*, m,c
read(1,*)x,y,z
if(x+y>z) then
print*,x,y,z
else
print*,z
endif
i=i+1
enddo
500 print*, "plithos", i
print*,"athroimsa", sum
close(1)
end program
Να γράψετε τις τιμές που εμφανίζει(print) το πρόγραμμα κατά την εκτελεσή του λαμβάνοντας υπόψη
ότι το αρχείο περιέχει δεδομένα που εμφανίζονται στο πλαίσιο δίπλα στο πρόγραμμα.
1512151810291234567
50 30 90
3512151890765490123
50 60 70
Οι ερωτήσεις μου είναι:
1)Η εντολή επανάληψης πρέπει να γίνει μέχρι το sum να γίνει 500?
2)Με βἀση το format έχουμε το a=151 αφού i3, το b=51 αφού αφήνουμε 2ψηφία κενά(2χ) και είναι i2
και αφήνουμε πάλι 2ψηφία κενά(2χ). Το πρόβλημα μου είναι το c. Απ'ότι έχω καταλάβει βάση του format f4.1 πρέπει να ειναι 4ψηφία συνολικά (συμπεριλαμβανομένης της υποδιαστολής) και 1ψηφίο μετά την υποδιαστολή. Αρα 029.1? Και τα υπόλοιπα ψηφία τα αγνοούμε?
Please help!!!!!!!!
Σας ευχαριστώ πολύ για τη βοήθεια.
Σημείωση:
Το παρόν μήνυμα προέρχεται από το συγχωνευμένο θέμα "Θέμα FORTRAN 90".
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
aglaia.kd
Νεοφερμένο μέλος



Σημείωση:
Το παρόν μήνυμα προέρχεται από το συγχωνευμένο θέμα "Fortran".
Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Χρήστες Βρείτε παρόμοια
-
Τα παρακάτω 0 μέλη και 1 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:Tα παρακάτω 1 μέλη διάβασαν αυτό το θέμα:
-
Φορτώνει...
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.