^LeoNine^ Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 πριν λίγο καιρό άρχισα να μαθαίνω την c. έχω κάνει ασκήσεις από βιβλία ή tutorials αλλά ποτέ κάτι δικό μου.. αυτή είναι η πρώτη μου προσπάθεια.. γνωρίζω πως μπορεί να γίνει καλύτερο (π.χ να βάλω όρια κ ελέγχους σε αυτά που δίνει ο χρήστης) παρόλα αυτά έκανα το μεγαλύτερο μέρος της δουλείας κ σας το παρουσιάζω.. Υ.Σ εάν βρείτε λάθη παρακαλώ να είστε επιεικείς μιας κ ούτε φοιτητής πληροφορικής είμαι, ούτε έχω κάποιον να μου τα δείχνει από κοντά.. ότι έμαθα είναι απο φόρουμ, βιβλία κ tutorials εδώ να ευχαριστήσω τον virxen75 για ότι μου έχει στείλει.. λοιπόν, το πρόγραμμα που έκανα παίρνει μια ημερομηνία από τον χρήστη κ βρίσκει τι μέρα ήταν ή θα είναι.. (χωρίς να χρησιμοποιήσω κάτι από library.. καθαρά math..) >/* Made by LeoNine */ /* vriski ti mera itan mia sugkekrimeni mera apo to 1901 eos to apiro theoritika */ #include <stdio.h> int main() { int byear,bmonth,bday,mv,dv,fores,reseter,metritis; reseter=1; /* ta midenizo kalou kakou */ metritis=0; byear=0; bmonth=0; bday=0; mv=0; dv=0; fores=0; printf("Δώσε ένα έτος απο το 1901 κ μετά\n"); /* zitaei tin imerominia */ scanf("%d",&byear); printf("Δώσε έναν Μήνα (1-12)\n"); scanf("%d",&bmonth); printf("Δώσε μία Ήμερα (1-31)\n"); scanf("%d",&bday); fores=byear-1901; /* upologizei pose fores prepei na ginei i loopa */ switch (bmonth) /* dini mia timi analoga ton mina vasi tou diinekes imerologiou */ { case 1: mv=2; break; case 2: mv=5; break; case 3: mv=5; break; case 4: mv=1; break; case 5: mv=3; break; case 6: mv=6; break; case 7: mv=1; break; case 8: mv=4; break; case 9: mv=0; break; case 10: mv=2; break; case 11: mv=5; break; case 12: mv=0; break; } for (metritis=0; metritis<fores; metritis++) /* loopa mexri na ftasi stin xronia k na dosi tin sosti timi ston min */ { if (mv==7) mv=0; if (mv==8) mv=1; if ((3>bmonth>0)&&(reseter==4)) { ++mv; reseter=0; } if ((bmonth>2)&&(reseter==3)) { ++mv; reseter=-1; } ++reseter; ++mv; if (mv==7) mv=0; if (mv==8) mv=1; } dv=bday+mv; /* prostheti tin mera me tin timi tou mina tis ekastis xronias gia na vroume tin mera */ if (dv>=8) dv=dv%7; printf("\n\n%d\\%d\\%d ήταν:",bday,bmonth,byear); switch(dv) /* vriski tin mera */ { case 0: printf ("Σαββάτο.\n"); break; case 1: printf ("Κυριακή.\n"); break; case 2: printf ("Δευτέρα.\n"); break; case 3: printf ("Τρίτη.\n"); break; case 4: printf ("Τετάρτη.\n"); break; case 5: printf ("Πέμπτη.\n"); break; case 6: printf ("Παρασκευή.\n"); break; case 7: printf ("Σαββάτο.\n"); break; } printf("\n\n\n"); return 0; }
thanos713 Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 Γιατί έχεις printf("\n") πριν το scanf? Αλλάζει γραμμή μόνο του. Στο τέλος γιατί έχεις 3 printf("\n")? Και τέλος, γιατί δεν έχεις #include <math.h>? Αυτά για τώρα...
javavall Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 >if ((3>bmonth>0)&&(reseter==4)) warning: comparisons like X<=Y<=Z do not have their mathematical meaning
^LeoNine^ Δημοσ. 19 Μαΐου 2010 Μέλος Δημοσ. 19 Μαΐου 2010 >if ((3>bmonth>0)&&(reseter==4)) warning: comparisons like X<=Y<=Z do not have their mathematical meaning τι εννοείς?????? ---------- Προσθήκη στις 19:12 ---------- Προηγούμενο μήνυμα στις 19:11 ---------- Γιατί έχεις printf("\n") πριν το scanf? Αλλάζει γραμμή μόνο του. Στο τέλος γιατί έχεις 3 printf("\n")? Και τέλος, γιατί δεν έχεις #include <math.h>? Αυτά για τώρα... 1. από συνήθεια.. 2. για να μην είναι κολλημένο με το cmdline μετά 3. δεν μου χρειάστηκε...
javavall Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 Πρέπει να χρησιμοποιήσεις 2 ανισότητες για την έκφραση αυτή. >a < b < c => (a < && (b < c)
thanos713 Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 Σωστά, δεν το πρόσεξα... Γ*μώ τα μάτια μου... Πρέπει να χρησιμοποιήσεις 2 ανισότητες για την έκφραση αυτή. >a < b < c => (a < && (b < c) Δεν χρειάζεται η παρένθεση απ'όσο γνωρίζω...
^LeoNine^ Δημοσ. 19 Μαΐου 2010 Μέλος Δημοσ. 19 Μαΐου 2010 Πρέπει να χρησιμοποιήσεις 2 ανισότητες για την έκφραση αυτή. >a < b < c => (a < && (b < c) ουσιαστικά το ίδιο μου έγραψες.. θα μπορούσα επίσης να βάλω if ( (bmonth<3) || (bmonth>0) ) && (reseter==4) γιατί στη ουσία ήθελα να ξεχωρίσω το bmonth με τιμή 1 ή 2 κ την στιγμή που το reseter έχει τιμή 4 πάντως όπως σας έδωσα τον κώδικα δουλεύει άψογα.. έκανα πάρα πάρα πολλές δοκιμές
javavall Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 ουσιαστικά το ίδιο μου έγραψες.. Δεν είναι το ίδιο... Δεν χρειάζεται η παρένθεση απ'όσο γνωρίζω... Βοηθάει τα μάτια.
^LeoNine^ Δημοσ. 19 Μαΐου 2010 Μέλος Δημοσ. 19 Μαΐου 2010 http://www.2shared.com/file/FttIoXRt/findday0.html exec gcc σε mac
thanos713 Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 Βοηθάει τα μάτια. Πες το έτσι και νόμιζα ότι κάνω λάθος... http://www.2shared.com/file/FttIoXRt/findday0.htmlexec gcc σε mac Δεν έχω mac ευτυχώς...:p
^LeoNine^ Δημοσ. 19 Μαΐου 2010 Μέλος Δημοσ. 19 Μαΐου 2010 ναι, είχα χρόνια ubuntu.. μέρα με την νύκτα...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.