Προς το περιεχόμενο

Fortran 90 AΣΚΗΣΗ


ganja21

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα, θα ήθελα να με βοηθήσετε με την επίλυση δυο ασκήσεων.

1)Να γραφεί πρόγραμμα το οποίο να εξετάζει έναν δεδομένο πίνακα Α διαστάσεων Ν´Μ και να βρίσκει αν είναι αραιός ή όχι, εμφανίζοντας σχετικό μήνυμα. Να θεωρήσετε ότι ένας πίνακας είναι αραιός αν περιέχει μηδενικά σε ποσοστό μεγαλύτερο από 80%.

2)Έστω Α μονοδιάστατος πίνακας ακεραίων με Ν στοιχεία. Να γραφεί πρόγραμμα το οποίο να κατασκευάζει έναν δεύτερο πίνακα Β που να περιέχει τα στοιχεία του πίνακα Α με την ίδια σειρά, έχοντας όμως τα μηδενικά μαζεμένα στο τέλος του. Π.χ. αν ο πίνακας Α είναι της μορφής: Α=[ 1 0 3 7 0 0 6 4 0 9 ] τότε ο πίνακας Β θα πρέπει να είναι της μορφής:

Β=[ 1 3 7 6 4 9 0 0 0 0 ].

Ευχαριστώ προκαταβολικά..

Δημοσ.
Καλησπέρα, θα ήθελα να με βοηθήσετε με την επίλυση δυο ασκήσεων.

1)Να γραφεί πρόγραμμα το οποίο να εξετάζει έναν δεδομένο πίνακα Α διαστάσεων Ν´Μ και να βρίσκει αν είναι αραιός ή όχι, εμφανίζοντας σχετικό μήνυμα. Να θεωρήσετε ότι ένας πίνακας είναι αραιός αν περιέχει μηδενικά σε ποσοστό μεγαλύτερο από 80%.

2)Έστω Α μονοδιάστατος πίνακας ακεραίων με Ν στοιχεία. Να γραφεί πρόγραμμα το οποίο να κατασκευάζει έναν δεύτερο πίνακα Β που να περιέχει τα στοιχεία του πίνακα Α με την ίδια σειρά, έχοντας όμως τα μηδενικά μαζεμένα στο τέλος του. Π.χ. αν ο πίνακας Α είναι της μορφής: Α=[ 1 0 3 7 0 0 6 4 0 9 ] τότε ο πίνακας Β θα πρέπει να είναι της μορφής:

Β=[ 1 3 7 6 4 9 0 0 0 0 ].

Ευχαριστώ προκαταβολικά..

 

ΚΑΙ οι 2 ασκησεις ειναι πανευκολες, και σιγουρα πιο ευκολες απο μια μελέτη στατικη, δυναμική ή τεσπα οτιδηποτε έχει να κανει με μηχανικους, γιατι υποθέτω μηχανικος (θα) είσαι. Οπότε, γιατί δε μας λες που δυσκολευεσαι να σε βοηθησουμε. Αν προσπαθησεις λίγο, θα προσπαθησουμε και μεις λιγο, αν δεν προσπαθησεις καθολου, και μεις δεκαρα τσακιστη δε θα δωσουμε.

Δημοσ.
ΚΑΙ οι 2 ασκησεις ειναι πανευκολες, και σιγουρα πιο ευκολες απο μια μελέτη στατικη, δυναμική ή τεσπα οτιδηποτε έχει να κανει με μηχανικους, γιατι υποθέτω μηχανικος (θα) είσαι. Οπότε, γιατί δε μας λες που δυσκολευεσαι να σε βοηθησουμε. Αν προσπαθησεις λίγο, θα προσπαθησουμε και μεις λιγο, αν δεν προσπαθησεις καθολου, και μεις δεκαρα τσακιστη δε θα δωσουμε.

Ρε φίλε κατοχυρωμένος είμαι και δε θυμάμαι και πολλά πράγματα, είναι επείγον και τις θέλω για αύριο, αν θέλεις να με βοηθήσεις τις θέλω ολόκληρες.

Δημοσ.

η πρωτη παει καπως ετσι?

PROGRAM ARAIOS

IMPLICIT NONE

REAL DIMENSION (N,M)::A

INTEGER:: i, j, MIDENIKA

REAL:: POSOSTO

MIDENIKA= 0

DO i =1, N

DO j=1, M

IF A[i,j]=0 THEN MIDENIKA=MIDENIKA +1

END IF

END DO

END DO

POSOSTO = (MIDENIKA / (N*M))*100

IF POSOSTO > 80 THEN

PRINT*, “O PINAKAS EINAI ARAIOS”

ELSE

PRINT*, “ O PINAKAS DEN EINAI ARAIOS”

END IF

END

 

---------- Προσθήκη στις 18:56 ---------- Προηγούμενο μήνυμα στις 18:31 ----------

 

ΚΑΙ οι 2 ασκησεις ειναι πανευκολες, και σιγουρα πιο ευκολες απο μια μελέτη στατικη, δυναμική ή τεσπα οτιδηποτε έχει να κανει με μηχανικους, γιατι υποθέτω μηχανικος (θα) είσαι. Οπότε, γιατί δε μας λες που δυσκολευεσαι να σε βοηθησουμε. Αν προσπαθησεις λίγο, θα προσπαθησουμε και μεις λιγο, αν δεν προσπαθησεις καθολου, και μεις δεκαρα τσακιστη δε θα δωσουμε.

Και οσο για σενα πανεξυπνε, δε σου ζητησα λεφτα, τη βοηθεια σου ηθελα..

Δημοσ.

Εχω χρόνια να γράψω fortran οπότε όσον αφορά σύνταξη δε μπορώ να σχολιάσω, αλλά αλγοριθμικά σωστό δείχνει.

 

Βοηθά (για όσους το διαβάζουν) να βάζεις τον κώδικά σου σε code brackets

 

 

Και οσο για σενα πανεξυπνε, δε σου ζητησα λεφτα, τη βοηθεια σου ηθελα..

 

Ο χρόνος είναι χρήμα :)

Δημοσ.

Με τις δυνατότητες που έχει η Fortran στον χειρισμό πινάκων λύνονται σε δυο γραμμές.

Δεν χρειάζονται καν βρόχοι.

 

Π.χ. με την εντολή count γράφεις

num_zeros = count(A==0.)

και βρίσκει αμέσως πόσα μηδενικά έχει o πίνακας A και τα επιστρέφει στη μεταβλητή num_zeros.

 

Η δεύτερη μπορεί να λυθεί εξίσου σύντομα με την εντολή pack.

Π.χ. μηδενίζεις αρχικά τον Β γράφοντας Β=0. και μετά με

Β=pack(A/=0.)

μεταφέρονται στον B όλα τα μη μηδενικά στοιχεία του A.

 

Σχεδόν για οποιαδήπoτε εργασία με αριθμητικούς (και όχι μόνο) πίνακες η Fortran είναι εξαιρετικά εύχρηστη και βολική.

Aλλά ο κόσμος δεν το ξέρει δυστυχώς και παιδεύεται με την C/C++...

Δημοσ.

@ganza21

 

Και γω "πανέξυπνε" να σε βοηθησω ήθελα, αλλά άλλο να βοηθάς κάποιον που δεν προσπαθεί καθόλου, και άλλο να βοηθάς κάποιον που προσπαθεί. Αυτό σου είπα πριν, προσπάθησε εσυ, να προσπαθήσουμε και εμεις. Δεν ειμαστε υποχρεωμένοι να ασχοληθούμε. Οταν δούμε πως κάποιος προσπαθεί και κολλάει, και μπορούμε να τον βοηθήσουμε, τότε το κάνουμε.

 

Για την πρώτη άσκηση, καλά το πας το πράγμα, πρόσεχε στη γραμμή

 

POSOSTO = (MIDENIKA / (N*M))*100

 

Τσέκαρε εδω τί τιμή θα σου βγάλει, γιατί νομίζω πως τα MIDENIKA/(N*M) τα έχεις ορισμένα ως ακέραιους όλα, και μπορεί να σου δώσει 0.

 

Για τη δεύτερη άσκηση, φτιάξε έναν πίνακα Β με μέγεθος ίδιο με του Α, και γέμισέ τον μηδενικά. Μετά κάνε ένα απλό loop στα στοιχεία του A, και αν το στοιχειο είναι μή-μηδενικό, βάλτο στον πίνακα Β. Για να βρεις που θα το βάλεις (σε ποιο index), πρέπει να κρατήσεις μια extra μεταβλητή.

 

Η λύση που έδωσε ο Smirnov είναι η καλύτερη, αλλά δε νομίζω πως αυτό θέλει να δει ο professor.

Υ.Γ:

Και λεφτά να μου έδινες, πάλι δε θα σε βοηθούσα αν δεν προσπαθουσες. Αυτά πρέπει να τα κάνεις μόνος σου. Κατάλαβες; Αν δε σου αρέσει κει που εισαι, φύγε, να παει καποιος αλλος.

Δημοσ.

@jstark

 

Όπως είδες εγώ του είπα την ιδέα αλλά δεν έδωσα κώδικα.

 

Στα υπόλοιπα που γράφεις, γενικά συμφωνώ. Έχει παραγίνει το κακό με τα forums.

Πολλοί γράφονται για να τους λύσουν τις ασκήσεις με ελάχιστη ατομική προσπάθεια.

Posts με τέτοιο χαρακτήρα πρέπει να κλειδώνονται.

Δημοσ.
@jstark

Έχει παραγίνει το κακό με τα forums.

Πολλοί γράφονται για να τους λύσουν τις ασκήσεις με ελάχιστη ατομική προσπάθεια.

Posts με τέτοιο χαρακτήρα πρέπει να κλειδώνονται.

 

Συμφωνώ απόλυτα! :-)

Δημοσ.

αν δεν προσπαθούν όντως έχετε δίκιο..

αλλά εγώ π.χ που δεν είμαι σε κάποια σχολή, δεν παίρνω ασκήσεις από κάποιους καθηγητές και προσπαθώ να μάθω μόνος 5 πράγματα για εμένα..

φόρουμ σαν κ αυτά με στηρίζουν κ με βοηθάνε,δεν παίζει να τα καταφέρω μόνος

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...