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

Πρόβλημα σε C


thanos713

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

Δημοσ.

Καλησπέρα, διοργανώνεται κάθε χρόνο ένας διαγωνισμός πληροφορικής και του χρόνου θέλω να λάβω μέρος. Βρήκα ένα 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

 

Μπορεί να μου εξηγήσει κάποιος γιατί στο δεύτερο παράδειγμα το δικό μου βγάζει λάθος αποτέλεσμα? ΔΕΝ θέλω κώδικα, θέλω να μου εξηγήσετε τι κάνω λάθος...

 

Ευχαριστώ.

Δημοσ.

Τα αρχεία Δεν βλέπω να υλοποιείς κάποιον έλεγχο για το πόσο εισιτήρια συμφέρει να αγοραστούν. Π.χ. στην δεύτερη περίπτωση δεν θα αγοράσουν 95 αλλά 100. Αφού με την έκπτωση που θα έχουν στα 100 πληρώνουν λιγότερα από το να αγόραζαν 95.

Δημοσ.

Οπότε πρέπει να βάλω κάποιο έλεγχο για το αν το ένα που είναι ανάμεσα σε δύο, είναι καλύτερο από τον πρώτο αριθμό του επόμενου? π.χ

95

10 20 50 100

Το 95 είναι ανάμεσα σε 50 και 100. Ο έλεγχος θα είναι αν το 95 που έχει την έκπτωση του 50 είναι καλύτερο από την επόμενη έκπτωση στους λιγότερους μαθητές?

Δημοσ.
Οπότε πρέπει να βάλω κάποιο έλεγχο για το αν το ένα που είναι ανάμεσα σε δύο, είναι καλύτερο από τον πρώτο αριθμό του επόμενου? π.χ

95

10 20 50 100

Το 95 είναι ανάμεσα σε 50 και 100. Ο έλεγχος θα είναι αν το 95 που έχει την έκπτωση του 50 είναι καλύτερο από την επόμενη έκπτωση στους λιγότερους μαθητές?

 

Ναι.

 

Αν και πιστεύω ότι για μικρότερη διαφορά στον αριθμό μαθητών που αλλάζει η έκπτωση θα χρειάζεται ακόμη μία σύγκριση με το μεθεπόμενο. Π.χ. αρχείο.in

 

30

10 11 12 13

Δημοσ.

Μην μου το κάνεις αυτό... :P Μόλις βρω χρόνο θα το στείλω με το επόμενο και άμα δεν το θέλει θα το στείλω και με το μεθεπόμενο. Στο παράδειγμα σου μόνο με το τελευταίο γίνεται έτσι και αλλιώς... Τα άλλα δεν συμφέρουν και δεν χρειάζονται άλλα εισιτήρια. Ευχαριστώ πάρα πολύ για τις απαντήσεις.

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

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

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