Προγραμματισμός Η/Υ (2010-11)

Συντονιστής: University Editors

Re: Προγραμματισμός Η/Υ (2010-11)

Δημοσίευσηαπό MakisH » Κυρ, 10 Ιούλ 2011 8:50 am

@Jimmis: Το πρόγραμμα έχει δυο λάθη στο σημείο

Κώδικας: Επιλογή όλων
      IF (NB.LT.NBMAX(I)) NBMAX(I)=NB
      IF (NB.LT.NBMAX(I)) ITEMP=J+1


Καταρχάς, θέλεις να μεγιστοποιήσεις το n*b, οπότε στον έλεγχο θα πρέπει να αναζητάς τα μεγαλύτερα από την αρχική σου υπόθεση. Δηλαδή όπου ".LT." πρέπει να μπει ".GT.".

Το δεύτερο λάθος βρίσκεται στο πώς έχεις γράψει τον έλεγχο που δίνει τιμή στο "ITEMP". Αρχικά κάνεις τον έλεγχο και βρίσκεις ότι π.χ. το NB για το 1.40m είναι μεγαλύτερο από το NBMAX εκείνη τη στιγμή. Βάζεις νέα τιμή στο NBMAX. Έπειτα, ελέγχεις ξανά αν το NB είναι μεγαλύτερο από το NBMAX, το οποίο όμως τώρα έχει αποκτήσει νέα τιμή και προφανώς ο έλεγχος δεν βγαίνει αληθής. Συνεπώς, έχεις δυο λύσεις:
  • Είτε κάνεις μια φορά τον έλεγχο και εκτελείς όσες εντολές πρέπει να εκτελεσθούν (το ορθότερο προγραμματιστικά)
  • Είτε ο δεύτερος έλεγχος που θα κάνεις δεν θα είναι για "μεγαλύτερο" αλλά για "ίσο" ή "μεγαλύτερο ή ίσο" (πλεονασμός το δεύτερο).

Συνεπώς, το σημείο αυτό πιστεύω οτι πρέπει να αλλαχθεί με το παρακάτω. Δεν γνωρίζω τι σας επιτρέπουν να χρησιμοποιείτε (έχω ακούσει οτι σας βασανίζουν με πολλούς περίεργους/ανεξήγητους περιορισμούς) αλλά μια δομή που θα σου έλυνε το πρόβλημα είναι η εξής:

Κώδικας: Επιλογή όλων
      IF (NB.GT.NBMAX(I)) then
      NBMAX(I)=NB
      ITEMP=J+1
      endif


Ελπίζω να βοήθησα. :)

@harakon: Χρειάζεσαι ένα πρόγραμμα που να αποσυμπιέζει .zip αρχεία. Ένα γνωστό ελεύθερο λογισμικό για αυτή τη δουλειά είναι το 7-Zip. Από εκεί και πέρα, μέσα υπάρχουν δυο .f αρχεία, τα οποία ανοίγουν με συμβατό Fortran compiler ή με οποιονδήποτε text editor (π.χ. windows notepad, notepad2 κτλ). :)
Ζητούνται βιβλία στο Αναγνωστήριο Χημικών Μηχανικών! Στείλτε μου αν θέλετε να δώσετε.
MakisH Οικονομική ενίσχυση στο MQN.gr
 
Δημοσιεύσεις: 306
Εγγραφή: Δευτ, 03 Μάιος 2010 10:57 pm
Τοποθεσία: Στους Χημικούς μηχ.
Έτος εισαγωγής: 2008

Re: Προγραμματισμός Η/Υ (2010-11)

Δημοσίευσηαπό harakon » Κυρ, 10 Ιούλ 2011 10:31 am

οχι αφου το αποσυμπιεσω εχω το προβλημα..τι αρχεια ειναι?ευχαριστω παντως!!
harakon
 
Δημοσιεύσεις: 42
Εγγραφή: Τετ, 01 Απρ 2009 8:45 pm
Έτος εισαγωγής: 2004

Re: Προγραμματισμός Η/Υ (2010-11)

Δημοσίευσηαπό Jimmis » Κυρ, 10 Ιούλ 2011 10:49 am

MakisH έγραψε:@Jimmis: Το πρόγραμμα έχει δυο λάθη στο σημείο

Κώδικας: Επιλογή όλων
      IF (NB.LT.NBMAX(I)) NBMAX(I)=NB
      IF (NB.LT.NBMAX(I)) ITEMP=J+1


Καταρχάς, θέλεις να μεγιστοποιήσεις το n*b, οπότε στον έλεγχο θα πρέπει να αναζητάς τα μεγαλύτερα από την αρχική σου υπόθεση. Δηλαδή όπου ".LT." πρέπει να μπει ".GT.".

Το δεύτερο λάθος βρίσκεται στο πώς έχεις γράψει τον έλεγχο που δίνει τιμή στο "ITEMP". Αρχικά κάνεις τον έλεγχο και βρίσκεις ότι π.χ. το NB για το 1.40m είναι μεγαλύτερο από το NBMAX εκείνη τη στιγμή. Βάζεις νέα τιμή στο NBMAX. Έπειτα, ελέγχεις ξανά αν το NB είναι μεγαλύτερο από το NBMAX, το οποίο όμως τώρα έχει αποκτήσει νέα τιμή και προφανώς ο έλεγχος δεν βγαίνει αληθής. Συνεπώς, έχεις δυο λύσεις:
  • Είτε κάνεις μια φορά τον έλεγχο και εκτελείς όσες εντολές πρέπει να εκτελεσθούν (το ορθότερο προγραμματιστικά)
  • Είτε ο δεύτερος έλεγχος που θα κάνεις δεν θα είναι για "μεγαλύτερο" αλλά για "ίσο" ή "μεγαλύτερο ή ίσο" (πλεονασμός το δεύτερο).

Συνεπώς, το σημείο αυτό πιστεύω οτι πρέπει να αλλαχθεί με το παρακάτω. Δεν γνωρίζω τι σας επιτρέπουν να χρησιμοποιείτε (έχω ακούσει οτι σας βασανίζουν με πολλούς περίεργους/ανεξήγητους περιορισμούς) αλλά μια δομή που θα σου έλυνε το πρόβλημα είναι η εξής:

Κώδικας: Επιλογή όλων
      IF (NB.GT.NBMAX(I)) then
      NBMAX(I)=NB
      ITEMP=J+1
      endif


Ελπίζω να βοήθησα. :)

@harakon: Χρειάζεσαι ένα πρόγραμμα που να αποσυμπιέζει .zip αρχεία. Ένα γνωστό ελεύθερο λογισμικό για αυτή τη δουλειά είναι το 7-Zip. Από εκεί και πέρα, μέσα υπάρχουν δυο .f αρχεία, τα οποία ανοίγουν με συμβατό Fortran compiler ή με οποιονδήποτε text editor (π.χ. windows notepad, notepad2 κτλ). :)


Φιλε ευχαριστω πολυ.Το .Lt. επρεπε να το δω και εγω βλακεια μου.Παντως κακως στο βιβλιο που δεν εχει για το if πως να γραπψουμε παραπανω εντολες.Το ενα κανει fortran 90/95 και οι σημειωσεις 77. :ellinofreneia:
Your gonna eat lightning, and your gonna crap thunder!
Mickey Goldmill
Rocky (1976)
Άβαταρ μέλους
Jimmis Σημαντική βοήθεια στο MQN.gr
 
Δημοσιεύσεις: 474
Εγγραφή: Τρί, 30 Νοέμ 2010 10:41 pm
Έτος εισαγωγής: 2010

Re: Προγραμματισμός Η/Υ (2010-11)

Δημοσίευσηαπό MakisH » Κυρ, 10 Ιούλ 2011 11:00 am

@harakon: Είπα, είναι αρχεία .f, τα οποία τα ανοίγεις με κάποιον fortran compiler όπως το Force.
Αν ο compiler σου δεν το αντιμετωπίζει σαν αρχείο fortran, μετωνόμασέ το, αλλάζοντας την κατάληξη από .f σε ό,τι αναγνωρίζει ο compiler που έχεις και θα το ανοίξει κανονικά. Π.χ. .for ή .f90. Δεν έχει ιδιαίτερη σημασία τι κατάληξη θα δώσεις, δεν έχουν κάποια περίεργη εντολή οι κώδικες αυτοί μέσα. :)

Αν θέλεις απλώς να δεις τον κώδικα, επαναλαμβάνω οτι μπορείς να το ανοίξεις και με έναν text editor (π.χ. notepad. Απέφυγε τα πιο περίπλοκα του τύπου Word γιατί ίσως στο εμφανίσουν λίγο περίεργα)

@Jimmis: Αν θες να μάθεις εύκολα κάποια βασικά πράγματα στην 90/95 (όπως π.χ. πώς να συντάξεις ένα τέτοιο IF) ρίξε μια ματιά στο αντίστοιχο site του μαθήματος στη σχολή μου (Χημικών μηχανικών). Έχει κάποιες αρκετά απλές αλλά και περιεκτικές σημειώσεις και παρουσιάσεις. :)

(αναρωτιέμαι πάντως γιατί κάνετε ακόμα 77... Δεν πρέπει να είναι και πολύ ευχάριστη εμπειρία...)
Ζητούνται βιβλία στο Αναγνωστήριο Χημικών Μηχανικών! Στείλτε μου αν θέλετε να δώσετε.
MakisH Οικονομική ενίσχυση στο MQN.gr
 
Δημοσιεύσεις: 306
Εγγραφή: Δευτ, 03 Μάιος 2010 10:57 pm
Τοποθεσία: Στους Χημικούς μηχ.
Έτος εισαγωγής: 2008

Re: Προγραμματισμός Η/Υ (2010-11)

Δημοσίευσηαπό harakon » Κυρ, 10 Ιούλ 2011 11:12 am

ευχαριστω πολυ!!!(ειδα οτι ελεγες για την αποσυμπιεση και δεν διαβασα τα υπολοιπα...σορρυ..)
harakon
 
Δημοσιεύσεις: 42
Εγγραφή: Τετ, 01 Απρ 2009 8:45 pm
Έτος εισαγωγής: 2004

Re: Προγραμματισμός Η/Υ (2010-11)

Δημοσίευσηαπό Jimmis » Κυρ, 10 Ιούλ 2011 11:35 am

Ανεβαζω τη λυση του 1ου θεματος 2010 κανονικη.Μην φοβαστε δεν υπαρχουν 'παρεξηγησιμες' εντολες.ολο 77! :D

Κώδικας: Επιλογή όλων
PROGRAM KOUFWM
      DIMENSION DIME(6),ENGTH(3),ZBMAX(3)
      C=0.5
      DIME(1)=1.20
      DIME(2)=1.40
      DIME(3)=1.50
      DIME(4)=1.70
      DIME(5)=2.00
      DIME(6)=2.20
      ENGTH(1)=10.0
      ENGTH(2)=8.0
      ENGTH(3)=15.0
      ITEMP=1
      DO 100 I=1,3,1
      ZBMAX(I)=((ENGTH(I)-C)/(DIME(1)+C)*DIME(1))
     
      DO 200 J=1,5,1
      ZB=((ENGTH(I)-C)/(DIME(J)+C)*DIME(J))
      IF (ZB.GT.ZBMAX(I)) THEN
      ZBMAX(I)=ZB
      ITEMP=J+1
      ENDIF
     
     
  200 CONTINUE
       
      WRITE(*,1000) ENGTH(I),DIME(ITEMP)
1000 FORMAT(1X,'MAX LIGHT',1X,'FOR',1X,
     1 'WALL LENGTH',1X,'L=',1X,F5.1,'M',1X,'WE NEED',1X,
     2 'WINDOW OF',1X,F5.2,'M')
  100 CONTINUE
     
      STOP
      END   


εκανα και καποιες διορθωσεις γιατι υπηρχε μικτες εκφρασεις την οποια ο compiler της 77 το δεχτηκε αλλα στο βιβλιο λεει ΟΧΙ.Βεβαια λογικο μου φαινεται να μην μπλεκεις πραγματικες με ακεραιες.Επισης ερωτηση το double precision τι ακριβως ειναι?το εχει μια απο τις λυσεις του site.
Your gonna eat lightning, and your gonna crap thunder!
Mickey Goldmill
Rocky (1976)
Άβαταρ μέλους
Jimmis Σημαντική βοήθεια στο MQN.gr
 
Δημοσιεύσεις: 474
Εγγραφή: Τρί, 30 Νοέμ 2010 10:41 pm
Έτος εισαγωγής: 2010

Re: Προγραμματισμός Η/Υ (2010-11)

Δημοσίευσηαπό MakisH » Κυρ, 10 Ιούλ 2011 12:20 pm

Το "double precision" αναφέρεται σε μεταβλητές οι οποίες, λόγω του τρόπου με τον οποίο αποθηκεύονται, μπορούν πρακτικά να πάρουν πολύ μεγαλύτερες (ή πολύ μικρότερες, όταν μιλάμε για δεκαδικούς) τιμές. Φτιάξε π.χ. ένα πρόγραμμα που να υπολογίζει το παραγοντικό ενός αριθμού και δες σε ποιο νούμερο θα αρχίσει να δείχνει άκυρα (ή NaN) και κάνε το ίδιο έχοντας ορίσει το n! ως double precision. ;)

cant_sleep.png


(Hint για τη γελοιογραφία. Η εικόνα είναι από το xkcd comics.)
Ζητούνται βιβλία στο Αναγνωστήριο Χημικών Μηχανικών! Στείλτε μου αν θέλετε να δώσετε.
MakisH Οικονομική ενίσχυση στο MQN.gr
 
Δημοσιεύσεις: 306
Εγγραφή: Δευτ, 03 Μάιος 2010 10:57 pm
Τοποθεσία: Στους Χημικούς μηχ.
Έτος εισαγωγής: 2008

Re: Προγραμματισμός Η/Υ (2010-11)

Δημοσίευσηαπό vasilissgr7 » Κυρ, 10 Ιούλ 2011 1:14 pm

Κώδικας: Επιλογή όλων
PROGRAM THEMA1
    DIMENSION B(6) , L(3) , NB(3,6)
    C=0.5
    B(1)=1.20
    B(2)=1.50
    B(3)=...
    B(4)=...
    B(5)=...
    B(6)=...
    L(1)=8.0
    L(2)=10.0
    L(3)=15.0
   
    DO 50 I=1,3
    DO 100 J=1,6
    NB(I,J)= (L(I)-C)/(B(J)+C)*B(J)
100 CONTINUE
50 CONTINUE
   
    MAX=0.
    DO 150 I=1,3
    DO 200 J=1,6
    IF(NB(I,J).LT.MAX) GOTO 200
    MAX=NB(I,J)
    PLAT=B(J)
200 CONTINUE
    WRITE(*,5) MAX , PLAT , L(I)
5  FORMAT(5X,'MEGISTOS FOTISMOS=',F5.1,2X,'THELEI APAITOUMENO PLATOS=',F5.1,2X,'GIA MHKOS TOIXOU=',F5.1)
    MAX=0.
150 CONTINUE

    STOP
    END



Μία πρόχειρη λύση του θέματος με τα κουφώματα,περιμένω διορθώσεις...
Εικόνα
Success is the ability to go from one failure to another with no loss of enthusiasm.
vasilissgr7
 
Δημοσιεύσεις: 46
Εγγραφή: Παρ, 28 Αύγ 2009 4:39 pm
Έτος εισαγωγής: 2005

Re: Προγραμματισμός Η/Υ (2010-11)

Δημοσίευσηαπό cwk-john » Κυρ, 10 Ιούλ 2011 1:34 pm

παιδια εχω μια λυση για το θέμα 1ο αλλα την εχω σε εικονα απο scanner και δεν χερω πως να την ποσταρω καμια ιδεα?
Συνημμένα
2009-2010 thema  1o 001.jpg
Άβαταρ μέλους
cwk-john
 
Δημοσιεύσεις: 119
Εγγραφή: Παρ, 10 Δεκ 2010 11:29 pm
Έτος εισαγωγής: 2010

Re: Προγραμματισμός Η/Υ (2010-11)

Δημοσίευσηαπό Dust » Κυρ, 10 Ιούλ 2011 2:27 pm

Μουμπλεμουμπλεμουμπλε....θαρρώ jpeg ανεβαίνουν στο φορουμ οπότε μπορείς να την ανοίξεις με τη ζωγραφική και save as jpeg.
Αν κ αυτό δεν δουλέψει πέρασέ τη μόνη της σε ένα αρχείο word και save as pdf.
What if I fall?
But imagine, what if you fly?
Άβαταρ μέλους
Dust
 
Δημοσιεύσεις: 911
Εγγραφή: Σάβ, 31 Οκτ 2009 2:29 am
Έτος εισαγωγής: 2009

ΠροηγούμενηΕπόμενο

Επιστροφή στο 1ο Έτος

Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση : Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης