thanos713 Δημοσ. 20 Απριλίου 2010 Δημοσ. 20 Απριλίου 2010 Καλησπέρα, διοργανώνεται κάθε χρόνο ένας διαγωνισμός πληροφορικής και του χρόνου θέλω να λάβω μέρος. Βρήκα ένα site για προετοιμασία, έλυσα το πρώτο πρόβλημα αλλά το δεύτερο δεν μπορώ να καταλάβω τι εννοεί σε κάποιο σημείο, εγώ έχω καταλάβει αυτό. >#include <stdio.h> int main(void) { FILE *in; in = fopen("tickets.in", "r"); FILE *out; out = fopen("tickets.out", "w"); int N, A,B,G,D,tis,fragka,telos; do { fscanf(in, "%d", &N); fscanf(in, "\n"); fscanf(in, "%d", &A); fscanf(in, " "); fscanf(in, "%d", &; fscanf(in, " "); fscanf(in, "%d", &G); fscanf(in, " "); fscanf(in, "%d", &D); if (N >= A && N <= { tis = 10; } else if (N >= B && N <= G) { tis = 20; } else if (N >= G && N <= D) { tis = 30; } else if (N >= D) { tis = 50; } fragka = prakseis(tis,N); fprintf(out, "%d\n", fragka); telos = feof(in); } while (telos == 0); fclose(in); fclose(out); return 0; } int prakseis(int tisekato, int mathites) { int apot,apot2,poso; apot = 10 * tisekato / 100; poso = 10 - apot; apot2 = poso * mathites; return apot2; } Εδώ είναι η άσκηση. Το σχολείο σου ετοιμάζει μια εκδρομή για τους μαθητές στο ενυδρείο και εσύ ανέλαβες να πάρεις τηλέφωνο και να ρωτήσεις για την έκπτωση που θα έχετε μιας και θα πάνε τόσα πολλά άτομα. Ο διευθυντής του σχολείου σε έχει πληροφορήσει ότι Ν άτομα έχουν δηλώσει συμμετοχή. Ο υπεύθυνος του ενυδρείου σου είπε ότι αν πάνε πάνω από Α άτομα θα έχετε 10% έκπτωση, αν πάνε πάνω από Β 20%, πάνω από Γ 30% και πάνω από Δ 50%. Η τιμή του κανονικού εισιτηρίου είναι 10 ευρώ. Μπορείς να βρεις ποιο είναι το ελάχιστο συνολικό ποσό που πρέπει να πληρώσει το σχολείο έτσι ώστε να μπορέσουν να πάνε όλοι οι Ν μαθητές στο ενυδρείο. Προσοχή, σε ορισμένες περιπτώσεις μπορεί να συμφέρει να αγοραστούν περισσότερα εισιτήρια ώστε να έχετε καλύτερο πακέτο προσφοράς. Δεδομένα Εισόδου (tickets.in) Η πρώτη γραμμή θα περιέχει έναν ακέραιο Ν. Η δεύτερη γραμμή θα περιέχει τους 4 ακεραίους Α, Β, Γ και Δ. Δεδομένα Εξόδου (tickets.out) Ένας ακέραιος, η ελάχιστη συνολική τιμή. Παράδειγμα εισόδου (αρχείο "tickets.in") 30 10 20 50 100 Παράδειγμα εξόδου (αρχείο "tickets.out") 240 Παράδειγμα εισόδου 2 (αρχείο "tickets.in") 95 10 20 50 100 Παράδειγμα εξόδου 2 (αρχείο "tickets.out") 500 Μπορεί να μου εξηγήσει κάποιος γιατί στο δεύτερο παράδειγμα το δικό μου βγάζει λάθος αποτέλεσμα? ΔΕΝ θέλω κώδικα, θέλω να μου εξηγήσετε τι κάνω λάθος... Ευχαριστώ.
firewalker Δημοσ. 20 Απριλίου 2010 Δημοσ. 20 Απριλίου 2010 Τα αρχεία Δεν βλέπω να υλοποιείς κάποιον έλεγχο για το πόσο εισιτήρια συμφέρει να αγοραστούν. Π.χ. στην δεύτερη περίπτωση δεν θα αγοράσουν 95 αλλά 100. Αφού με την έκπτωση που θα έχουν στα 100 πληρώνουν λιγότερα από το να αγόραζαν 95.
thanos713 Δημοσ. 20 Απριλίου 2010 Μέλος Δημοσ. 20 Απριλίου 2010 Οπότε πρέπει να βάλω κάποιο έλεγχο για το αν το ένα που είναι ανάμεσα σε δύο, είναι καλύτερο από τον πρώτο αριθμό του επόμενου? π.χ 95 10 20 50 100 Το 95 είναι ανάμεσα σε 50 και 100. Ο έλεγχος θα είναι αν το 95 που έχει την έκπτωση του 50 είναι καλύτερο από την επόμενη έκπτωση στους λιγότερους μαθητές?
firewalker Δημοσ. 20 Απριλίου 2010 Δημοσ. 20 Απριλίου 2010 Οπότε πρέπει να βάλω κάποιο έλεγχο για το αν το ένα που είναι ανάμεσα σε δύο, είναι καλύτερο από τον πρώτο αριθμό του επόμενου? π.χ95 10 20 50 100 Το 95 είναι ανάμεσα σε 50 και 100. Ο έλεγχος θα είναι αν το 95 που έχει την έκπτωση του 50 είναι καλύτερο από την επόμενη έκπτωση στους λιγότερους μαθητές? Ναι. Αν και πιστεύω ότι για μικρότερη διαφορά στον αριθμό μαθητών που αλλάζει η έκπτωση θα χρειάζεται ακόμη μία σύγκριση με το μεθεπόμενο. Π.χ. αρχείο.in 30 10 11 12 13
thanos713 Δημοσ. 20 Απριλίου 2010 Μέλος Δημοσ. 20 Απριλίου 2010 Μην μου το κάνεις αυτό... Μόλις βρω χρόνο θα το στείλω με το επόμενο και άμα δεν το θέλει θα το στείλω και με το μεθεπόμενο. Στο παράδειγμα σου μόνο με το τελευταίο γίνεται έτσι και αλλιώς... Τα άλλα δεν συμφέρουν και δεν χρειάζονται άλλα εισιτήρια. Ευχαριστώ πάρα πολύ για τις απαντήσεις.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.