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

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

Κλειδωμένο
MakisH
Οικονομική ενίσχυση στο MQN.gr
Οικονομική ενίσχυση στο MQN.gr
Δημοσιεύσεις: 307
Εγγραφή: Δευτ, 03 Μάιος 2010 10:57 pm
Έτος εισαγωγής: 2008
Τοποθεσία: Στους Χημικούς μηχ.
Contact:

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

Δημοσίευση από 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 κτλ). :)
Ζητούνται βιβλία στο Αναγνωστήριο Χημικών Μηχανικών! Στείλτε μου αν θέλετε να δώσετε.
harakon
Δημοσιεύσεις: 42
Εγγραφή: Τετ, 01 Απρ 2009 8:45 pm
Έτος εισαγωγής: 2004

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

Δημοσίευση από harakon »

οχι αφου το αποσυμπιεσω εχω το προβλημα..τι αρχεια ειναι?ευχαριστω παντως!!
Άβαταρ μέλους
Jimmis
Σημαντική βοήθεια στο MQN.gr
Σημαντική βοήθεια στο MQN.gr
Δημοσιεύσεις: 474
Εγγραφή: Τρί, 30 Νοέμ 2010 10:41 pm
Έτος εισαγωγής: 2010

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

Δημοσίευση από Jimmis »

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)
MakisH
Οικονομική ενίσχυση στο MQN.gr
Οικονομική ενίσχυση στο MQN.gr
Δημοσιεύσεις: 307
Εγγραφή: Δευτ, 03 Μάιος 2010 10:57 pm
Έτος εισαγωγής: 2008
Τοποθεσία: Στους Χημικούς μηχ.
Contact:

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

Δημοσίευση από MakisH »

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

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

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

(αναρωτιέμαι πάντως γιατί κάνετε ακόμα 77... Δεν πρέπει να είναι και πολύ ευχάριστη εμπειρία...)
Ζητούνται βιβλία στο Αναγνωστήριο Χημικών Μηχανικών! Στείλτε μου αν θέλετε να δώσετε.
harakon
Δημοσιεύσεις: 42
Εγγραφή: Τετ, 01 Απρ 2009 8:45 pm
Έτος εισαγωγής: 2004

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

Δημοσίευση από harakon »

ευχαριστω πολυ!!!(ειδα οτι ελεγες για την αποσυμπιεση και δεν διαβασα τα υπολοιπα...σορρυ..)
Άβαταρ μέλους
Jimmis
Σημαντική βοήθεια στο MQN.gr
Σημαντική βοήθεια στο MQN.gr
Δημοσιεύσεις: 474
Εγγραφή: Τρί, 30 Νοέμ 2010 10:41 pm
Έτος εισαγωγής: 2010

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

Δημοσίευση από Jimmis »

Ανεβαζω τη λυση του 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)
MakisH
Οικονομική ενίσχυση στο MQN.gr
Οικονομική ενίσχυση στο MQN.gr
Δημοσιεύσεις: 307
Εγγραφή: Δευτ, 03 Μάιος 2010 10:57 pm
Έτος εισαγωγής: 2008
Τοποθεσία: Στους Χημικούς μηχ.
Contact:

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

Δημοσίευση από MakisH »

Το "double precision" αναφέρεται σε μεταβλητές οι οποίες, λόγω του τρόπου με τον οποίο αποθηκεύονται, μπορούν πρακτικά να πάρουν πολύ μεγαλύτερες (ή πολύ μικρότερες, όταν μιλάμε για δεκαδικούς) τιμές. Φτιάξε π.χ. ένα πρόγραμμα που να υπολογίζει το παραγοντικό ενός αριθμού και δες σε ποιο νούμερο θα αρχίσει να δείχνει άκυρα (ή NaN) και κάνε το ίδιο έχοντας ορίσει το n! ως double precision. ;)
cant_sleep.png
(Hint για τη γελοιογραφία. Η εικόνα είναι από το xkcd comics.)
Δεν έχετε τα απαραίτητα δικαιώματα για να δείτε τα συνημμένα αρχεία σε αυτή την δημοσίευση.
Ζητούνται βιβλία στο Αναγνωστήριο Χημικών Μηχανικών! Στείλτε μου αν θέλετε να δώσετε.
vasilissgr7
Δημοσιεύσεις: 46
Εγγραφή: Παρ, 28 Αύγ 2009 4:39 pm
Έτος εισαγωγής: 2005

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

Δημοσίευση από vasilissgr7 »

Κώδικας: Επιλογή όλων

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.
Άβαταρ μέλους
cwk-john
Δημοσιεύσεις: 119
Εγγραφή: Παρ, 10 Δεκ 2010 11:29 pm
Έτος εισαγωγής: 2010

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

Δημοσίευση από cwk-john »

παιδια εχω μια λυση για το θέμα 1ο αλλα την εχω σε εικονα απο scanner και δεν χερω πως να την ποσταρω καμια ιδεα?
Δεν έχετε τα απαραίτητα δικαιώματα για να δείτε τα συνημμένα αρχεία σε αυτή την δημοσίευση.
Άβαταρ μέλους
Dust
Δημοσιεύσεις: 911
Εγγραφή: Σάβ, 31 Οκτ 2009 2:29 am
Έτος εισαγωγής: 2009

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

Δημοσίευση από Dust »

Μουμπλεμουμπλεμουμπλε....θαρρώ jpeg ανεβαίνουν στο φορουμ οπότε μπορείς να την ανοίξεις με τη ζωγραφική και save as jpeg.
Αν κ αυτό δεν δουλέψει πέρασέ τη μόνη της σε ένα αρχείο word και save as pdf.
What if I fall?
But imagine, what if you fly?
Κλειδωμένο

Επιστροφή στο