bikyz Δημοσ. 5 Φεβρουαρίου 2014 Δημοσ. 5 Φεβρουαρίου 2014 καλησπερα παιδια και γω θα ηθελα εαν γινεται μια μικρη βοηθεια στην παρακατω ασκηση εαν μπορειτε γιατι προσπαθησα να την λυσω χωρις επιτυχια(αποτυχια σκετη) Μια πολυκατοικία έχει 5 ορόφους και κάθε όροφος έχει 10 διαμερίσματα. Ο διαχειριστής της πολυκατοικίας θέλει να υπολογίσει τα κοινόχρηστα που πρέπει να πληρώσει κάθε διαμέρισμα. Το ποσοστό συμμετοχής κάθε διαμερίσματος στα συνολικά έξοδα προκύπτει με βάση τα τετραγωνικά του μέτρα προς την συνολική του επιφάνεια της πολυκατοικίας. Να γίνει πρόγραμμα σε C ήC++: 1. Το πρόγραμμα περιέχει πληροφορίες για κάθε διαμέρισμα: το όνομα του ιδιοκτήτη, τον αριθμό του διαμερίσματος και τα τετραγωνικά του μέτρα, καθώς και τον όροφο του κάθε διαμερίσματος. 2. Να υλοποιηθεί συνάρτηση που θα εμφανίζει τα συνολικά τετραγωνικά για κάθε όροφο. 3. Να υλοποιηθεί συνάρτηση που θα διαβάζει τα συνολικά χρήματα που πρέπει να πληρώσει η πολυκατοικία και για κάθε διαμέρισμα θα εμφανίζει το όνομα του ιδιοκτήτη και τα χρήματα που πρέπει να πληρώσει για το διαμέρισμα του. 4. Να υλοποιηθεί συνάρτηση που θα εμφανίζει το συνολικό χρηματικό ποσό που πρέπει να πληρώσει όποιο διαμέρισμα επιλεγεί βάσει της αρίθμησης των διαμερισμάτων (βάσει και του συνολικού ποσού του προηγούμενου ερωτήματος). 5. Να υλοποιηθεί συνάρτηση που για κάθε όροφο θα εμφανίζει το όνομα του ιδιοκτήτη με το μεγαλύτερο διαμέρισμα. Παρατηρήσεις: Οι παραπάνω επιλογές μπορούν να προσδιοριστούν από τον χρήστη του εκτελέσιμου του προγράμματός σας, με όποιον τρόπο σκεφτείτε. Για παράδειγμα, μπορούν οι παραπάνω επιλογές να «ενεργοποιούνται» με τη χρήση κάποιας αρίθμησης (π.χ. είσοδος 2 για το ερώτημα 2, 3 για το ερώτημα 3, κ.λπ.) Σας προτείνουμε να «καταχωρήσετε» τα δεδομένα σας και στη συνέχεια να «χτίσετε» το πρόγραμμά σας με τη χρήση δομών. Τα δεδομένα της πολυκατοικίας (όροφοι, διαμερίσματα, κ.λπ.) θα είναι καταχωρημένα εξ αρχής μέσα στο πρόγραμμά σας (μέσα στον κώδικά σας). Δεν θα διαβάζονται από κάποιο εξωτερικό αρχείο, ούτε θα τα πληκτρολογεί ο κάθε χρήστης τα δεδομένα. σας ευχαριστω πολυ εκ των προτερων
Timonkaipumpa Δημοσ. 5 Φεβρουαρίου 2014 Δημοσ. 5 Φεβρουαρίου 2014 Απλή και ωραία άσκηση. Γιατί δεν δείχνεις τον κώδικα που έχεις γράψει έως τώρα και να μας πεις που κολλάς;
BloodDonor89 Δημοσ. 11 Φεβρουαρίου 2014 Μέλος Δημοσ. 11 Φεβρουαρίου 2014 Καλημερα κι απο μενα. επανερχομαι με ενα προβλημα που δεν ξερω αν αφορα το κωδικα που εχω γραψει η τον compiler του dev C++ anyway. Ο κωδικας που εχω γραψει ειναι αυτος: #include <stdio.h> int main (void) { int x, S, count, count1; float MO; S=0; count=0; count1=0; printf("dwse tous arithmous"); while (S<=1000) { scanf("%d", &x); count++; S=S+x; if (x%2==0) count1++; } MO=S/count; printf("to meso oro twn arithmwn einai %.3f\n", MO); printf("to plithos twn zygwn arithmwn einai %d", count1); } το προβλημα ειναι οτι εκει που αναφερω το μεσο ορο, δεν μου το εμφανιζει σωστα. πχ πληκτρολογω 1000 και 1, για να τελειωσει η επαναληψη. Αντι να βγαλει αποτελεσμα 500,5 στο μεσο ορο μου βγαζει 500. Μετα το printf του μεσου ορου, εβαλα ενα printf για να δω αν η προσθεση γινεται σωστα. οριστε και screenshot οταν τρεχει το προγραμμα.
Timonkaipumpa Δημοσ. 11 Φεβρουαρίου 2014 Δημοσ. 11 Φεβρουαρίου 2014 δοκίμασε να κάνεις type cast τον αριθμητή και τον παρονομαστή σε float την ώρα που κάνεις την διαίρεση.
migf1 Δημοσ. 11 Φεβρουαρίου 2014 Δημοσ. 11 Φεβρουαρίου 2014 Καλημέρα, το πρόβλημα είναι στη γραμμή ... MO = S / count; Τα S και count είναι int που σημαίνει πως η διαίρεσή τους καταλήγει πάντα σε ακέραιο αποτέλεσμα (δλδ, χωρίς δεκαδικά ψηφία). Για να σου δώσει σωστό float αποτέλεσμα η πράξη πρέπει ένα εκ των S και count να είναι δηλωμένα ως float. Εναλλακτικά, επειδή δεν έχει και πολύ νόημα να τα δηλώσεις ως float αυτά, μπορείς την ώρα που κάνεις την πράξη να κάνεις cast σε float ένα εκ των δυο αυτών μεταβλητών. Στο δείχνω με το sum... MO = (float)S / count; ΥΓ. Άσχετα με την ερώτησή σου, μερικές σημειώσεις: 1. Κατά σύμβαση, με κεφαλαία γράμματα ορίζουμε μόνο τις σταθερές (είτε στον προ-επεξεργαστή, είτε με const). 2. Προσπάθησε να δίνεις περιγραφικά ονόματα στις μεταβλητές σου. Σε τόσο μικρό κώδικα δεν έχει πολύ σημασία, αλλά αν σου μείνει συνήθειο να ορίζεις μεταβλητές με μη περιγραφικά ονόματα θα αντιμετωπίσεις πρόβλημα στο μέλλον. 3. Ο μέσος όρος είναι αρσενικό, δεν είναι ουδέτερο EDIT: Με πρόλαβε ο timon.
BloodDonor89 Δημοσ. 11 Φεβρουαρίου 2014 Μέλος Δημοσ. 11 Φεβρουαρίου 2014 ωραια μου το εβγαλε σωστο τωρα. 1. Αυτο ειναι η αληθεια δεν το ηξερα. 2. Μου το λεει και ο καθηγητης αυτο, και μαλιστα μου επισημαινει πως στην Java θα εχω προβλημα, γιατι εκει θα μπουμε σε κλασης, υποκλασης κτλ και θα μπερδευτω. 3. Απο κεκτημενη ταχυτητα το εχω γραψει ετσι Σας ευχαριστω πολυ.
migf1 Δημοσ. 11 Φεβρουαρίου 2014 Δημοσ. 11 Φεβρουαρίου 2014 ... 2. Μου το λεει και ο καθηγητης αυτο, και μαλιστα μου επισημενει πως στην Java θα εχω προβλημα, γιατι εκει θα μπουμε σε κλασης, υποκλασης κτλ και θα γινει μπερδευτω. ... Είναι καλή συμβουλή αυτή από τον καθηγητή. Μια πιθανή υλοποίηση του κώδικα με πιο περιγραφικά ονόματα θα μπορούσε να είναι κάπως έτσι (με παρατραβηγμένη χρήση σχολίων είναι η αλήθεια )... #include <stdio.h> int main( void ) { int num = 0; // stores an inputted int number during each loop iteration int sum = 0; // sum of all inputted numbers int count = 0; // counts inputted numbers int nevens = 0; // counts inputted even numbers float avg = 0.f; // average of all inputted numbers printf("dwse tous arithmous:\n"); while ( sum <= 1000 ) { scanf( "%d", &num ); count++; sum += num; if ( num % 2 == 0 ) nevens++; } avg = (float)sum / count; printf( "Mesos oros: %.3f\n", avg ); printf( "Plithos zygwn: %d\n", nevens ); return 0; } Οι αγγλικές ονομασίες και τα σχόλια, κάνουν τη ζωή λίγο πιο εύκολη σε όσους ξένους χρειαστεί να διαβάσουν τον κώδικά σου (αν δηλαδή χρειαστεί, αλλιώς ας είναι στα ελληνικά). Σας ευχαριστω πολυ. Παρακαλούμε 1
Timonkaipumpa Δημοσ. 11 Φεβρουαρίου 2014 Δημοσ. 11 Φεβρουαρίου 2014 2. Μου το λεει και ο καθηγητης αυτο, και μαλιστα μου επισημαινει πως στην Java θα εχω προβλημα, γιατι εκει θα μπουμε σε κλασης, υποκλασης κτλ και θα μπερδευτω. Δεν είναι ανάγκη να ακούσεις κανέναν σε αυτό.... Απλά περίμενε την στιγμή που θα χάσεις ένα μάθημα και θα το ξαναδώσεις Σεπτέμβρη... και για αυτό το μάθημα θα πρέπει να ξανά-παραδώσεις με μικρές αλλαγές τον κώδικα που έχεις φτιάξει κάποιους μήνες πριν. Θα το πάθεις, θα τραβάς τα μαλλιά σου και θα μάθεις... δεν είναι τίποτα. Οι περισσότεροι έτσι μάθανε Y.G. Η περίμενε την στιγμή που θα πρέπει να κάνεις debug σε κώδικα με καμία 5k γραμμές κώδικα. Είτε δικό σου είτε άλλου. Και θα πρέπει να θυμάσαι τι κάνει το "tmp_variable" σε κάθε function/method ξεχωριστά. Θα το πάθεις, θα τραβάς τα μαλλιά σου και θα μάθεις
BloodDonor89 Δημοσ. 12 Φεβρουαρίου 2014 Μέλος Δημοσ. 12 Φεβρουαρίου 2014 χαχαχαχα ενταξει ενα μαθημα ειναι μωρεεεε χμμμ μηπως ηρθε η ωρα να παρατησω τον προγραμματισμο; χαχαχα Μου το λεει σαν συμβουλη κυριως για οταν βγω στην "αγορα εργασιας", γιατι δεν τον πειραζει αν ονομαχω τις μεταβλητες με ενα απλο γραμμα. Προσπαθω οσο μπορω να γινομαι καλυτερος μεσα απο ασκησεις, απο ψαξιμο στο ιντερνετ κτλ, γιατι ο προγραμματισμος περαν του οτι ειναι ενας τομεας που εχει ζήτηση, αλλα μ αρεσει κιολας, και το ψαχνω δεν μενω μονο σ αυτα που κανουμε στο ΤΕΙ. Τουλαχιστον ειμαι σε καλο δρομο και το προσπαθω χεχε
Timonkaipumpa Δημοσ. 12 Φεβρουαρίου 2014 Δημοσ. 12 Φεβρουαρίου 2014 Τι να σταματήσεις τον προγραμματισμό μωρέ; Καμία σχέση! Απλά όσο ασχολείσαι θα μάθεις να μην κάνεις πράγματα που δεν πρέπει να κάνεις επειδή αυτά που κάνεις σε δυσκολεύουν. Ο μόνος αντίπαλος στον κώδικα είναι η μνήμη και οι αδυναμίες/ελλείψεις του ανθρώπου και οι μεταξύ των ανθρώπων επικοινωνία.
BloodDonor89 Δημοσ. 18 Φεβρουαρίου 2014 Μέλος Δημοσ. 18 Φεβρουαρίου 2014 Επιστρέφω, αυτή την φορά όχι για κάποια απορία....αλλά να πω ένα αστείο περιστατικό που έγινε με αυτό: 2. Προσπάθησε να δίνεις περιγραφικά ονόματα στις μεταβλητές σου. Σε τόσο μικρό κώδικα δεν έχει πολύ σημασία, αλλά αν σου μείνει συνήθειο να ορίζεις μεταβλητές με μη περιγραφικά ονόματα θα αντιμετωπίσεις πρόβλημα στο μέλλον. στην εξεταστική λοιπόν, είχα σαν οδηγό κάποιες συμβουλές...και μέσα σ αυτές τις συμβουλές είχα αυτή του φίλου migf1. Έβαλα λοιπόν πιο περιγραφικά ονόματα στις μεταβλητές, όπως sum, avg κι άλλα τέτοια. Το ΣΚ μου στέλνει μήνυμα ο καθηγητής, και μου λέει, σίγουρα ήρθες εσύ και έγραψες; Μην έβαλες κανέναν άλλον; Πως το έπαθες και έβαλες περιγραφικά ονόματα; Για την ιστορία να πω, ότι χάρη σ αυτό πήρα 10. Γιατί είχα κάνει κάποια μικρολάθακια (δεν γράφαμε σε υπολογιστή οπότε δεν υπήρχε και η δυνατότητα να το ελέγξω και να το διορθώσω). Για άλλη μια φορά σ ευχαριστώ migf1! 1
geomagas Δημοσ. 18 Φεβρουαρίου 2014 Δημοσ. 18 Φεβρουαρίου 2014 Είναι αυτό που λένε... σου έγινε μάθημα! Με την κυριολεκτική έννοια του όρου! :-D Συγχαρητήρια για το δεκάρι. Πάντα τέτοια!
migf1 Δημοσ. 19 Φεβρουαρίου 2014 Δημοσ. 19 Φεβρουαρίου 2014 ... Για την ιστορία να πω, ότι χάρη σ αυτό πήρα 10. Γιατί είχα κάνει κάποια μικρολάθακια (δεν γράφαμε σε υπολογιστή οπότε δεν υπήρχε και η δυνατότητα να το ελέγξω και να το διορθώσω). Για άλλη μια φορά σ ευχαριστώ migf1! Πραγματικά με χαροποίησε πολύ το μήνυμά σου! Συγχαρητήρια για το 10 και σε ευχαριστώ κι εγώ με τη σειρά μου για το προηγούμενο μήνυμά σου. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα