infinity
Εκκολαπτόμενο μέλος
καλημερα παιδια..!!!!γραφω ενα πργραμμα και θελω να σιγουρευτω οτι ο χρηστης μου δινει ενα αλφαριθμητικό της μορφης
πχ. αφρος 1234...μπορει να με βοηθησει καποιος??? ευαριστω εκ των προτέρων...
δεν καταλαβα τι μορφης αλφαριθμητικο εννοεις..
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
infinity
Εκκολαπτόμενο μέλος
@bessy_94 αν δεν προλαβαινεις να δεις τα αποτελεσματα βαλτο να γραφει σε αρχειο
freopen("arxeio.txt","wt",stdout); -> βαλτο πάνω πάνω στην main και δεν θα έχεις θέμα.
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
infinity
Εκκολαπτόμενο μέλος
οπως ειπε ο vassillis οταν το stdout δεν ειναι αδειο δεν εχει καμια διαφορα αν θα βαλεις getch() ή οχι, οποτε κανεις flush για να μην χαλας την λειτουργια της συναρτησης getch().
fflush(stdin);
getch();
βαλτο στο τελος του κωδικα σου.
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
infinity
Εκκολαπτόμενο μέλος
ευχαριστώ πάρα πολύ infinity. βέβαια δεν έχουμε μάθει ακόμα συναρτήσεις αλλά θα δω πως μπορώ να το κάνω.
ε, καλά απλώς βάλε της συναρτήσεις μέσα στον βασικό κορμό του προγράμματος το θέμα είναι να καταλάβεις τον αλγόριθμο
btw καλώς ήρθες στο ischool
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
infinity
Εκκολαπτόμενο μέλος
παιδιά καλησπέρα...χρειάζομαι τη πολύτιμη βοήθεια σας.μας έχει βάλει ο καθηγητής την παρακάτω άσκηση και δεν μπορώ να την κάνω.την παιδεύω μια βδομάδα και πρέπει να τη παραδώσω μέχρι αύριο το βράδυ....άμα μπορούσε κάποιος να βοηθήσει θα ήμουν ευγνώμον..!
Κατασκευάστε ψευδοκώδικα και πρόγραμμα σε C που να τυπώνει επαναληπτικά όλες τις ημέρες ενός ημερολογιακού έτους στην εξής μορφή “Thursday 01 November 2012”. Το πρόγραμμα θα πρέπει αρχικά να ζητάει από τον χρήστη να εισάγει το ημερολογιακό έτος. Στον μήνα Φεβρουάριο θα πρέπει να ερωτάται ο χρήστης για το αν ο μήνας έχει 28 ή 29 ημέρες (εναλλακτικά μπορείτε να κάνετε αυτόματα τον υπολογισμό με βάση το έτος). Η κάθε ημέρα πρέπει να τυπώνεται σε ξεχωριστή γραμμή. Πριν ξεκινήσει η εκτύπωση των ημερών ενός μήνα πρέπει να τυπώνεται το όνομα του μήνα σε ξεχωριστή γραμμή. Η γραμμή αυτή πρέπει να διαχωρίζεται με μια κενή γραμμή από την προηγούμενη και από την επόμενη γραμμή. Επίσης, πριν ξεκινήσει η εκτύπωση των ημερών μιας εβδομάδας ενός μήνα πρέπει να τυπώνεται ένα μήνυμα (σε ξεχωριστή γραμμή) όπως “Week 1 of November”. Αφού τυπωθεί το όνομα του μήνα, το πρόγραμμα πρέπει να ρωτάει τον χρήστη αν θέλει να συνεχιστεί η εκτύπωση. Σε περίπτωση που η απάντηση είναι αρνητική το πρόγραμμα πρέπει να τερματίζει.
ευχαριστώ εκ των προτέρων...
το πρόβλημα μου μοιάζει με αυτό:
https://projecteuler.net/problem=19
θα τα εξηγήσω λίγο βιαστικά επειδή δεν έχω πολύ χρόνο, ελπίζω να είσαι εξικοιωμένος/η με την C/C++
αρχικά ας έχουμε κάποιους πίνακες για να μπορούμε να παίρνουμε στοιχεία απο εκεί
string days[7]={"MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"};
string month[12]={"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"};
και ας έχουμε και μία boolean συνάρτηση που να μας λέει αν το έτος κ είναι δίσεκτο
{
if(year%100==0 && year%400==0)
return true;
else if(year%4==0 && year%100)
return true;
else return false;
}
καθώς και μία συνάρτηση που να της περνάμε σαν όρισμα array index και να μας πετάει μέρα
{
return days[day];
}
}
και μία για μήνα αντίστοιχα:
{
return months[mymonth];
}
έχουμε τελείωσει με τις συναρτήσεις που θα χρειαστεί να φτιάξουμε ας μπούμε στο κυρίως πρόγραμμα:
{
int year;
cin >> year;
...................
return 0;
}
αρχίζουμε να μετράμε από τις 1 Ιανουαρίου 1900, η οποία ήταν Δευτέρα, μπορείς να αρχίσεις να μετράς απ' όπου θες, αλλά εγώ αυτό θυμάμαι καθαρά, οπότε απο εκεί ξεκινάω, μπορείς να μεταβάλεις τον κώδικα μετά ούτως ώστε να ανταπεξέρχεται στις ανάγκες της εργασίας:
έχουμε έναν μετρητή έστω tick, ο οποίος αρχικά είναι 1900 και το έτος μας που είναι 1900 (i=1900) .Κρατάμε μία boolean μεταβλητή με τιμή δίσεκτο-> i , δηλαδή, η μεταβλητή μας είναι 0 αν το έτος μας δεν είναι δίσεκτο και 1 διαφορετικά:
for(int i=N; i<=year; i++) {
int mod=0,theyear=0;
mod= ( leap( i ) );
theyear=(i==year);
...................
}
τώρα αρχίζουμε νέο έτος, αν το έτος μας είναι το έτος που μας ενδιαφέρει, το theyear γίνεται true,μετά αρχίζοντας από τον μηδενικό μήνα κρατάμε έναν μετρητή ο οποίος συνεχώς αυξάνει μέχρι να γίνει ίσο με months[j] οπού j -> το index του μήνα που είμαστε τώρα.
Ας έχουμε και έναν μετρητή που να μετράει τις βδομάδες μας
cout << tomonth(j) << endl;
int weekcnt=0;
for(int k=0; k<months[j]; k++) {
int day = tick mod 7 // το index της μέρας που μας ενδιαφέρει
if(day==0) {
weekcnt++;
cout << "starting week " << weekcnt << " of " << tomonth(j) << endl;
}
if( theyear ) {
cout << today(day) << " " << k+1 << " " << tomonth( k ) << endl; // το cout τυπώνει πράγματα στην κονσόλα
}
}
}
καταλαβαίνεις προφανώς ότι το indexing στην c++ ξεκινάει από το 0, γι' αυτό προσθαφαιρώ 1 κάποιες φορές.
Τα loops με μετρητές i,j,k είναι εμφωλιασμένα προφανώς, μην χάσεις την άσκηση από τέτοια λάθη
Επειδή τον κώδικα τον έγραφα επι τόπου ενδεχομένως να έχει λάθη, αλλα η λογική είναι αυτή. Εσύ μπορείς να προσθέσεις την όλη αλληλεπίδραση με τον χρήστη και τα λοιπά.
Μπορείς επίσης να δοκιμάσεις την ορθότητα του αλγορίθμου σου στο project euler.
Καλή επιτυχία.
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
infinity
Εκκολαπτόμενο μέλος
Ο Dennis Ritchie(πρόσφατα κλείσαμε ένα χρόνο από το θάνατο του) ήταν ο θεμελιωτής της C και ο συγγραφέας της παραπάνω "βίβλου"!
Το βιβλίο στο συστήνω ανεπιφύλακτα! στα ελληνικά κυκλοφορεί από τις εκδόσεις κλειδάριθμος!
εγώ επιμένω πως για πρώτο βιβλίο είναι δύσκολο..
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
infinity
Εκκολαπτόμενο μέλος
παιδιά εγώ θέλω να αρχίζω τη C. Έχω μερικές απορίες:
1) το Programming in C του Kochan ειναι καλό για πρώτο βιβλίο?
2) Είναι προτιμότερο ν αρχίσω σε Linux ή σε Windows??
1) θα σου πρότεινα το "the c programming languagge" αλλά για πρώτο είναι κάπως δύσκολο, ένας έλληνας έχει γράψει ένα ωραίο "η γλώσσα c σε βάθος" και αντίστοιχα έχει γράψει και για την c++.
2) linux .. να μάθεις σιγά σιγά πως γίνεται το κανονικό compiling και γενικότερα να εξικοιωθείς με το σύστημα και το κέλυφος
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
infinity
Εκκολαπτόμενο μέλος
Το ειπα οτι βγαινει μικροτερο με ASCII, το πιθανοτερο ομως ειναι να μην γνωριζει τι ειναι και πως δουλευει, οποτε ας ξεκινησουμε απο τα απλα
ο πίνακας ascii δεν είναι κάτι δύσκολο, αυτό που μας δίνει στην ουσία είναι ένα mapping μεταξύ των χαρακτήρων και αριθμητικών τιμών..
@evi**** https://www.asciitable.com/ μπορείς να το χρησιμοποιείς στις εργασίες σου άφοβα
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
infinity
Εκκολαπτόμενο μέλος
Δεν απαιτει κατι εξειδικευμενο αυτο που ζητας,υλοποιειται με ενα απλο αλλα μεγαλο if.Μπορει να γινει μικροτερο(και ωραιοτερο) με τη χρηση του κωδικα ASCII βεβαια.
ούτε καν μεγάλο if, αυτό που έστειλα μετατρέπει μία βαθμολογία που είναι με μικρά γράμματα σε κεφαλαία.Θα ήταν πιο ωραίο αν βάλεις την σύγκριση ch>='Z' ως ώστε να μετέτρεπε τον οποιοδήποτε μικρό χαρακτήρα σε κεφαλαίο, αλλά για αυτό που της ζητάει η άσκηση κάνει δουλειά.
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
infinity
Εκκολαπτόμενο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
infinity
Εκκολαπτόμενο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.