THMMY.gr

Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα => Γενική συζήτηση, Απορίες, Τεχνολογικά Νεα, Εκθέσεις ... => Topic started by: alexandrak on February 28, 2013, 21:54:20 pm



Title: Βοήθεια σε ασκήση C
Post by: alexandrak on February 28, 2013, 21:54:20 pm
Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, που διαβάζει μια ημερομηνία (π.χ. 31/12/2012) και εμφανίζει στην οθόνη την επόμενη ημερομηνία (δηλ. 1/1/2013). Για να μπορεί να εφαρμοστεί αμυντικός προγραμματισμός κατά την είσοδο της ημερομηνίας, ο χρήστης θα δίνει πρώτα το έτος (απαιτείται να είναι 4ψήφιος αριθμός), μετά το μήνα (σε αριθμητική μορφή) και μετά την ημέρα. Ιδιαίτερη προσοχή χρειάζεται για τα δίσεκτα έτη. Για να προσδιορίσουμε αν ένα έτος είναι δίσεκτο εφαρμόζουμε τα εξής:
α. Ένα έτος είναι δίσεκτο όταν διαιρείται με το 4 άλλα δεν διαιρείται με το 100.
β. Κατ’ εξαίρεση του παραπάνω κανόνα, ένα έτος που διαιρείται με το 400 είναι δίσεκτο.
To πρόγραμμα να αρχίζει ως εξής:
#include <stdio.h>
struct date
{
int day;
int month;
int year;
};
const int daysPerMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};


Title: Re: Βοήθεια σε ασκήση C
Post by: bakeneko on February 28, 2013, 22:04:08 pm
Όταν λες βοήθεια εννοείς να στην κάνουμε; :P


Title: Re: Βοήθεια σε ασκήση C
Post by: Δον on March 01, 2013, 01:42:10 am
Επίσης αφού σου δίνει αυτά που σου δίνει δεν είναι δύσκολο  :???:


Title: Re: Βοήθεια σε ασκήση C
Post by: papatasoylis on March 01, 2013, 01:48:46 am
Ρε αντε καντην μονος σου.. ::)


Title: Re: Βοήθεια σε ασκήση C
Post by: Mr K on March 01, 2013, 02:00:08 am
Πρώτα θα πας στις ημέρες.
>>>Εισαγωγη μερας, μηνα, ετους
>>>Αν [μερα 30 ή 31 (αναλογα με το μηνα)] ή [Αν μερες 28 και μηνας φεβρουαριος και ετος δισεκτο]
          >>>Μερα= 1
          >>> Μηνας= Μηνας+1
          >>> Αν μηνας>12 τοτε
                 >>> Μηνας=1
                >>> Ετος= Ετος+1

Συνθήκες:
-->Μερες 30 στις μονες θεσεις του πινακα εκτος της θεσης 1  (η πρώτη θέση που δείχνει 31 έχει δείκτη 0)
-->Μερες 31 στις   ζυγες θέσεις
-->Eτος δισεκτο αν υπολοιπο με 400 == 0 ή (υπολοιπο με 4 ==0 ΚΑΙ υπολοιπο με 100 διαφορο του 0)


Title: Re: Βοήθεια σε ασκήση C
Post by: alexandrak on March 01, 2013, 09:19:48 am
Ευχαριστώ πολύ


Title: Βοήθεια σε άσκηση
Post by: alexandrak on March 01, 2013, 21:57:33 pm
ΕΧΟΥΜΕ ΤΗΝ ΠΑΡΑΚΑΤΩ ΑΣΚΗΣΗ
Υποθέτουμε ότι μια μηχανή προσφέρει τέσσερα διαφορετικά είδη ροφημάτων (καφέ, καφέ με γάλα, σοκολάτα και σοκολάτα με γάλα), που κοστίζουν 1.5, 1.8, 2.1 και 2.4 ευρώ αντίστοιχα. Η μηχανή δέχεται κέρματα των 10, 20 και 50 λεπτών, του ενός ευρώ και των 2 ευρώ, καθώς και χαρτονομίσματα των 5 και 10 ευρώ, και επιστρέφει ρέστα χρησιμοποιώντας μόνο κέρματα. Να υλοποιηθεί πρόγραμμα στη γλώσσα προγραμματισμού C, το οποίο:
1.   Εμφανίζει κατάλογο επιλογής (μενού) των προσφερόμενων ειδών (αριθμούμενα από το 1 έως το 4) με το αντίστοιχο αντίτιμο για το καθένα, την επιλογή 0 για έξοδο από το πρόγραμμα και στη συνέχεια διαβάζει την επιλογή του χρήστη (είδος που προτιμά ή έξοδος), εφαρμόζοντας αμυντικό προγραμματισμό προκειμένου να διασφαλιστεί ότι ο χρήστης εισάγει τιμή μεταξύ 0 και 4.
2.   Στη συνέχεια διαβάζει το ποσό που απαιτείται για την πληρωμή του είδους που επέλεξε ο χρήστης. Κατά την εισαγωγή του ποσού να χρησιμοποιηθεί αμυντικός προγραμματισμός, ώστε το ποσό που εισάγει ο χρήστης να αντιστοιχεί σε αποδεκτό κέρμα ή χαρτονόμισμα. Το πρόγραμμα να ελέγχει εάν το ποσό που εισήχθη είναι μεγαλύτερο ή ίσο με το ποσό που απαιτείται. Στην περίπτωση που έχει εισαχθεί ποσό μικρότερο από το απαιτούμενο, το πρόγραμμα τυπώνει κατάλληλο μήνυμα με το επιπλέον ποσό που πρέπει να εισαχθεί και προτρέπει το χρήστη να εισάγει το υπολειπόμενο ποσό. Αυτή η διαδικασία συνεχίζεται μέχρι να εισαχθεί ποσό ίσο με ή μεγαλύτερο από το ποσό που απαιτείται για την αγορά του είδους που επελέγη από το χρήστη.
3.   Υπολογίζει το υπόλοιπο (ρέστα) που πρέπει να επιστρέψει και τυπώνει κατάλληλο μήνυμα που ενημερώνει το χρήστη για το ποσό που θα του επιστραφεί.
4.   Υπολογίζει το ελάχιστο πλήθος κερμάτων που θα επιστραφούν στο χρήστη ως υπόλοιπο (ρέστα) και τυπώνει μήνυμα με πόσα και ποιας αξίας κέρματα πραγματοποιείται αυτό.
Το πρόγραμμα θα δέχεται από το χρήστη τα ποσά σε ευρώ με ακρίβεια ενός δεκαδικού ψηφίου, αλλά θα χειρίζεται τα ποσά σε λεπτά. Ακολουθεί σχετικό παράδειγμα (Εικόνα 3), όπου ο χρήστης για το είδος 2, που κοστίζει 1.8 ευρώ, εισάγει διαδοχικά κέρματα των 1, 0.5 και 0.5 ευρώ και λαμβάνει ρέστα 0.2 ευρώ, ενώ στη συνέχεια επιλέγει 0 για έξοδο από το πρόγραμμα.

ΚΑΙ ΕΧΩ ΚΑΝΕΙ
#include <stdio.h>
main()
{   
int n,a;
float x[5]= {0, 1.5, 1.8, 2.1, 2.4};
float b;
printf("Parakalw epilekste ena apo ta parakatw\n");
printf("\n");
printf("1. Kafe 1.5 euro\n");
printf("2. Kafe me gala 1.8 euro\n");
printf("3. Sokolata 2.1 euro\n");
printf("4. Sokolata me gala 2.4 euro\n");
printf("0. Exodos\n");
printf("\n");
printf("Parakalw eiasgete thn epilogh sas: ");
scanf ("%d", &n);
 if (n!=0);
 {
 printf("Prepei na eisagetai %1.1f euro synolika\n",x[n]);
 printf("Posa eisagete ?");
 scanf("%d",&a);
 do
 {
 b=a-x[n] ;
 if (b<0)
 {
 printf("prepei na eisagete %f euro synolika",-b);
 printf("posa eisagetai ?");
 scanf("%d",&a);
 b=b+a;
 }
  else
 {
 printf("Epistrofh %f euro",b);
 }
}
while (b!=0) ;
}
getchar();
return 0;
}
ΚΑΝΕΙ OVERFLOW ΓΙΑΤΙ ?
ΚΑΙ ΓΙΑ ΤΟ  ΕΡΩΤΗΜΑ 4 ΓΙΑ ΝΑ ΒΡΟΥΜΕ ΠΛΗΘΟΣ ΚΕΡΜΑΤΩΝ ΝΑ ΚΑΝΩ ΔΙΑΙΡΕΣΗ ΤΗ ΔΙΑΦΟΡΑ ΜΕ ΤΑ ΚΕΡΜΑΤΑ ΚΑΙ ΝΑ ΠΑΙΡΝΩ ΤΟ ΑΚΕΡΑΙΟ ΜΕΡΟΣ


Title: Re: Βοήθεια σε ασκήση C
Post by: Infinite Loop on March 01, 2013, 21:58:39 pm
Βρηκες μαλακες να σου λυνουνε τις εργασιες, ε;


Title: Re: Βοήθεια σε ασκήση C
Post by: Nerevar on March 01, 2013, 22:01:18 pm
Ρωτα αυτον stk@gen.auth.gr,παντα προθυμος να βοηθησει.


Title: Re: Βοήθεια σε ασκήση C
Post by: edenaxas on March 01, 2013, 22:06:01 pm
Ρωτα αυτον stk@gen.auth.gr,παντα προθυμος να βοηθησει.
true story. Σε σκλαβωνει.

Σοβαρα, τωρα στειλε στο stk mail