THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: Vlassis on October 09, 2015, 23:29:01 pm



Title: [C++] Άσκηση 1 - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Vlassis on October 09, 2015, 23:29:01 pm
Κρεμάλα
Ακολουθεί η εκφώνηση της εργασίας το αντίστοιχο αρχείο μπορείτε να το κατεβάσετε από την ενότητα Υλικό του Μαθήματος
Σημείωση
Σημείωση για την παράδοση
Στο elearning θα ανεβάσετε σε ένα αρχείο zip όλα τα αρχεία του κώδικα σας.
Η ονομασία του αρχείου θα έχει ως εξής:
Α1-Αριθμος Μητρώου π.χ Α1-9000


Ἀσκηση – Προς Παράδοση

Υλοποίηση σε τμήματα - έλεγχος

1. Να γράψετε μια συνάρτηση void hangman(int n) η οποία θα σχεδιάζει στην οθόνη μια κρεμάλα με έναν κρεμασμένο άνθρωπο όπως τον παρακάτω:
2. ++----
3. |    O
4. |   /|\
5. |   / \
6.
(Επιτρέπεται να βελτιώσετε το παραπάνω σχέδιο).

Ανάλογα με την τιμή του n (0-6) θα εμφανίζεται και αντίστοιχος αριθμός από τα μέλη του ανθρώπου.
n = 0

++----
|
|
|

n = 1
++----
|    O
|
|
   ...
n = 6
++----
|    O
|   /|\
|   / \

Προσπαθήστε η συνάρτησή σας να μην περιέχει επαναλαμβανόμενο κώδικα.
7. Ολοκληρώστε το πρόγραμμά σας προσθέτοντας τη συνάρτηση main με εντολές κατάλληλες για να ελέγξετε τη σωστή λειτουργία της συνάρτησης hangman.
8. Γράψτε (σε ξεχωριστό αρχείο C) πρόγραμμα το οποίο υλοποιεί το παιγνίδι "κρεμάλα" μεταξύ δύο παικτών. Συγκεκριμένα το πρόγραμμα διαβάζει από ένα χρήστη μια λέξη μέχρι 20 χαρακτήρες. Στη συνέχεια επαναλαμβάνει τα παρακάτω:
- καθαρίζει την οθόνη (τυπώνοντας 24 \n),
- ζωγραφίζει μια (αρχικά) άδεια κρεμάλα χρησιμοποιώντας τη συνάρτηση που έχετε ορίσει,
- τυπώνει τόσα αστεράκια (αρχικά) όσα και τα γράμματα της λέξης που έχει δώσει ο πρώτος χρήστης,
- ζητάει από έναν δεύτερο χρήστη να μαντέψει ένα γράμμα,
- αν το γράμμα είναι σωστό τότε το γράμμα εμφανίζεται στις αντίστοιχες θέσεις στα αστεράκια που τυπώνονται, αλλιώς αυξάνεται κατά ένα ο αριθμός των τμημάτων του σώματος που εμφανίζονται στην κρεμάλα.

Όταν ο δεύτερος παίκτης "κρεμαστεί" ή μαντέψει τη λέξη εμφανίζεται αντίστοιχο μήνυμα.

Σημείωση: για να διαβάσετε τη λέξη μπορείτε να διαβάζετε χαρακτήρες μέχρι να συναντήσετε \n.

Παράδειγμα:
Enter word: hello
++----
|
|
|

The word is: *****

Enter letter guess: a

Sorry...

++----
|    O
|
|

The word is: *****
Enter letter guess: e
Bravo!

++----
|    O
|
|

The word is: *e***
Enter letter guess: t
Sorry...

++----
|    O
|    |
|

The word is: *e***
Enter letter guess: l
Bravo!

++----
|    O
|    |
|
The word is: *ell*
Enter letter guess: t
Sorry...

++----
|    O
|   /|
|

The word is: *ell*
Enter letter guess:

...


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: heavy melon on October 10, 2015, 17:30:25 pm
Καμιά ιδέα, γιατί μπορεί ο dev-c++ να μου εκτυπώνει σε κάποια φάση "!!+γράμματα" αντί γι' αυτό που θέλω να εκτυπώνει?


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 10, 2015, 17:40:10 pm
Καμιά ιδέα, γιατί μπορεί ο dev-c++ να μου εκτυπώνει σε κάποια φάση "!!+γράμματα" αντί γι' αυτό που θέλω να εκτυπώνει?

Πόσταρε το κώδικα στον οποίο βρίσκεται το bug...
Ή το error message.


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: heavy melon on October 10, 2015, 17:58:18 pm
Καμιά ιδέα, γιατί μπορεί ο dev-c++ να μου εκτυπώνει σε κάποια φάση "!!+γράμματα" αντί γι' αυτό που θέλω να εκτυπώνει?

Πόσταρε το κώδικα στον οποίο βρίσκεται το bug...
Ή το error message.

δε βγάζει bug-error
το compiling γίνεται κανονικά
αλλά όταν τρέχει, ενώ την 1η φορά μου εκτυπώνει την κρεμάλα σκέτη  :D
τη 2η αντί να μου εκτυπώσει την κρεμάλα με το κεφάλι  :D
μου βγάζει στο command window ένα !!b ή !!^1


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: RFed the King on October 10, 2015, 18:05:41 pm
http://prntscr.com/8pu71a (http://prntscr.com/8pu71a)


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: heavy melon on October 10, 2015, 18:40:13 pm
http://prntscr.com/8pu71a (http://prntscr.com/8pu71a)

what's your point? :P


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Vlassis on October 10, 2015, 18:42:10 pm
Καμιά ιδέα, γιατί μπορεί ο dev-c++ να μου εκτυπώνει σε κάποια φάση "!!+γράμματα" αντί γι' αυτό που θέλω να εκτυπώνει?

Πόσταρε το κώδικα στον οποίο βρίσκεται το bug...
Ή το error message.

δε βγάζει bug-error
το compiling γίνεται κανονικά
αλλά όταν τρέχει, ενώ την 1η φορά μου εκτυπώνει την κρεμάλα σκέτη  :D
τη 2η αντί να μου εκτυπώσει την κρεμάλα με το κεφάλι  :D
μου βγάζει στο command window ένα !!b ή !!^1
γραψε αμα θες και την εντολη με την οποια εκτυπωνεις, μπας και  :P


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: heavy melon on October 10, 2015, 19:12:53 pm
Καταρχάς, αυτή την άσκηση τη γράφουμε σε C και όχι σε C++?


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: claus on October 10, 2015, 19:41:25 pm
Καταρχάς, αυτή την άσκηση τη γράφουμε σε C και όχι σε C++?
Εεεεμ τώρα που έμαθες C, θα γράψεις C  :P


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: heavy melon on October 10, 2015, 19:46:42 pm
Καταρχάς, αυτή την άσκηση τη γράφουμε σε C και όχι σε C++?
Εεεεμ τώρα που έμαθες C, θα γράψεις C  :P

thanks  ::)


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: elliech9 on October 11, 2015, 20:08:31 pm
δηλαδή, αν κατάλαβα καλά, θέλει ένα αρχείο c που να περιέχει την συνάρτηση και τι εμφανίζει και ένα με όλο το πρόγραμμα; Επίσης, πως ανεβάζουμε αρχείο στο elearning στο μάθημά του;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: akyrosHM on October 11, 2015, 20:10:23 pm
Κατάλαβε κανείς τι εννοεί ο ποιητής στο βήμα 7;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: heavy melon on October 12, 2015, 01:49:13 am
Κατάλαβε κανείς τι εννοεί ο ποιητής στο βήμα 7;

ότι στην ουσία στη main θα έχεις όλες τις εντολές που θα χρειαστείς για να το φτιάξεις
και την hangman θα την καλείς από τη main μόνο για να εκτυπώνει την κρεμάλα


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Francis Coppola on October 12, 2015, 03:26:52 am
Gia ton katharismo tis othonis xrisimopoihsa apo tin stdlib to system("cls")
Mas exei pei kapoion allo tropo?


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 12, 2015, 18:46:38 pm
Καμία ιδέα γιατί αυτό:

Code:
#include <stdio.h>
#include <string.h>

void main(){
    char letter;
    int  k;
    for (k=0; k<204; k++){
            printf("Dwse gramma: ");
            scanf("%c",&letter);
//            letter1=getchar();
    }
}

μου βγάζει αυτό:
(http://s6.postimg.org/t2ysuq92l/543465.jpg) (http://postimg.org/image/t2ysuq92l/);;

Επίσης δε με αφήνει να κάνω αυτό:
Code:
for(int i=0;;);
λέει error: 'for' loop initial declarations are only allowed in C99 mode|


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Vlassis on October 12, 2015, 19:21:44 pm
Επίσης, πως ανεβάζουμε αρχείο στο elearning στο μάθημά του;
Δες εδω -> http://oi58.tinypic.com/2iu9auw.jpg (http://oi58.tinypic.com/2iu9auw.jpg)

@tolis_tmo το "λαθος" ειναι στην εντολη:
Code:
scanf(" %c",&letter);
ουσιαστικα πριν το %c, πρεπει να αφησεις ενα κενο. το γιατι δεν το ξερω, παντως ετσι σε μενα το τρεχει κανονικα με το κενο  ;)


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: akyrosHM on October 12, 2015, 22:40:01 pm
Gia ton katharismo tis othonis xrisimopoihsa apo tin stdlib to system("cls")
Mas exei pei kapoion allo tropo?

Λέει στην εκφώνηση να τυπωσεις 24 "/n"


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 13, 2015, 09:52:48 am
@tolis_tmo το "λαθος" ειναι στην εντολη:
Code:
scanf(" %c",&letter);
ουσιαστικα πριν το %c, πρεπει να αφησεις ενα κενο. το γιατι δεν το ξερω, παντως ετσι σε μενα το τρεχει κανονικα με το κενο  ;)

 ^hello^ ^hello^
Πωωω ευχαριστώ ρε φίλε, θα το 'σπαγα το σκουπίδι.... έψαχνα πολύ ώρα και δεν έβρισκα τπτ! ^tickedOff^


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: fanoula on October 13, 2015, 13:09:36 pm
όταν εκτελώ το πρόγραμμα δεν μου εμφανιζει την κονσολα γιατι;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: elliech9 on October 13, 2015, 13:36:37 pm
θενκ γιου!  :) απλά είχα καταλάβει οτι θέλει να γραφούν μόνο οι 3ου εξαμήνου στο μάθημα...(και είχε και οδηγίες απο πάνω  :P )

Επίσης, πως ανεβάζουμε αρχείο στο elearning στο μάθημά του;
Δες εδω -> http://oi58.tinypic.com/2iu9auw.jpg (http://oi58.tinypic.com/2iu9auw.jpg)

@tolis_tmo το "λαθος" ειναι στην εντολη:
Code:
scanf(" %c",&letter);
ουσιαστικα πριν το %c, πρεπει να αφησεις ενα κενο. το γιατι δεν το ξερω, παντως ετσι σε μενα το τρεχει κανονικα με το κενο  ;)


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: akyrosHM on October 13, 2015, 13:48:26 pm
@tolis_tmo το "λαθος" ειναι στην εντολη:
Code:
scanf(" %c",&letter);
ουσιαστικα πριν το %c, πρεπει να αφησεις ενα κενο. το γιατι δεν το ξερω, παντως ετσι σε μενα το τρεχει κανονικα με το κενο  ;)

 ^hello^ ^hello^
Πωωω ευχαριστώ ρε φίλε, θα το 'σπαγα το σκουπίδι.... έψαχνα πολύ ώρα και δεν έβρισκα τπτ! ^tickedOff^
Επειδή είναι αρκετά μπακάλικο το παραπάνω, δοκίμασε αυτό:

Code:
fflush(stdin);
scanf("%c",&letter);

Το πρόβλημα σε σένα εμφανίζεται γιατί ο buffer δεν είναι κενός από προηγούμενη χρήση...


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 13, 2015, 14:02:18 pm
@tolis_tmo το "λαθος" ειναι στην εντολη:
Code:
scanf(" %c",&letter);
ουσιαστικα πριν το %c, πρεπει να αφησεις ενα κενο. το γιατι δεν το ξερω, παντως ετσι σε μενα το τρεχει κανονικα με το κενο  ;)

 ^hello^ ^hello^
Πωωω ευχαριστώ ρε φίλε, θα το 'σπαγα το σκουπίδι.... έψαχνα πολύ ώρα και δεν έβρισκα τπτ! ^tickedOff^
Επειδή είναι αρκετά μπακάλικο το παραπάνω, δοκίμασε αυτό:

Code:
fflush(stdin);
scanf("%c",&letter);

Το πρόβλημα σε σένα εμφανίζεται γιατί ο buffer δεν είναι κενός από προηγούμενη χρήση...

Πολύ σωστός! Γιατί όμως; Μου το βγάζει τώρα, ενώ πριν 3 μήνες δεν είχα τέτοιο πρόβλημα;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: akyrosHM on October 13, 2015, 14:06:40 pm
@tolis_tmo το "λαθος" ειναι στην εντολη:
Code:
scanf(" %c",&letter);
ουσιαστικα πριν το %c, πρεπει να αφησεις ενα κενο. το γιατι δεν το ξερω, παντως ετσι σε μενα το τρεχει κανονικα με το κενο  ;)

 ^hello^ ^hello^
Πωωω ευχαριστώ ρε φίλε, θα το 'σπαγα το σκουπίδι.... έψαχνα πολύ ώρα και δεν έβρισκα τπτ! ^tickedOff^
Επειδή είναι αρκετά μπακάλικο το παραπάνω, δοκίμασε αυτό:

Code:
fflush(stdin);
scanf("%c",&letter);

Το πρόβλημα σε σένα εμφανίζεται γιατί ο buffer δεν είναι κενός από προηγούμενη χρήση...

Πολύ σωστός! Γιατί όμως; Μου το βγάζει τώρα, ενώ πριν 3 μήνες δεν είχα τέτοιο πρόβλημα;
Μπορεί να κρατάει το χαρακτήρα της νέας γραμμής απ'το enter ή κάποιο space...


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Silvo the Beautiful on October 13, 2015, 15:50:48 pm
Άλλαξε το μάθημα ε;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Schro on October 13, 2015, 16:36:40 pm
Μπορεί να κρατάει το χαρακτήρα της νέας γραμμής απ'το enter ή κάποιο space...
ναι, διάβασα κάπου ότι κρατάει τον χαρακτήρα για νεα γραμμή από το enter και είναι αυτό που παίρνει στην επόμενη επανάληψη για letter. ωραίο αυτό με fflush(stdin), θα στο κλέψω κι εγώ!


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: ntaFAQ on October 13, 2015, 19:11:51 pm
Παιδια εχω φτάσει μεχρι το σημειο που ζηταω τα γραμματα και γεμιζω ενα πινακα για να διαβασω ποσα γραμματα η ποια ειναι αυτα εχει κανεις καμια ιδεα? χρησιμοποιω μηπως το sizeof(πινακα) που εχω? η κατι τετοιο?


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 13, 2015, 20:36:57 pm
Παιδια εχω φτάσει μεχρι το σημειο που ζηταω τα γραμματα και γεμιζω ενα πινακα για να διαβασω ποσα γραμματα η ποια ειναι αυτα εχει κανεις καμια ιδεα? χρησιμοποιω μηπως το sizeof(πινακα) που εχω? η κατι τετοιο?

Αν εννοείς τα γράμματα για τη λέξη που βάζει ο πρώτος παίκτης τότε θα χρησιμοποιήσεις αυτό:
http://www.cplusplus.com/reference/cstring/strlen/

δηλαδή εδώ στο Ν θα καταχωρηθεί ένας ακέραιος ίσος με τον αριθμό των γραμμάτων που έδωσε ο παίκτης:
Ν=strlen(o_pinakas_soy)


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: ntaFAQ on October 13, 2015, 21:17:45 pm
Παιδια εχω φτάσει μεχρι το σημειο που ζηταω τα γραμματα και γεμιζω ενα πινακα για να διαβασω ποσα γραμματα η ποια ειναι αυτα εχει κανεις καμια ιδεα? χρησιμοποιω μηπως το sizeof(πινακα) που εχω? η κατι τετοιο?

Αν εννοείς τα γράμματα για τη λέξη που βάζει ο πρώτος παίκτης τότε θα χρησιμοποιήσεις αυτό:
http://www.cplusplus.com/reference/cstring/strlen/

δηλαδή εδώ στο Ν θα καταχωρηθεί ένας ακέραιος ίσος με τον αριθμό των γραμμάτων που έδωσε ο παίκτης:
Ν=strlen(o_pinakas_soy)
θενκς θα το προσπαθησω!


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: pikachu93 on October 14, 2015, 00:21:24 am
@tolis_tmo το "λαθος" ειναι στην εντολη:
Code:
scanf(" %c",&letter);
ουσιαστικα πριν το %c, πρεπει να αφησεις ενα κενο. το γιατι δεν το ξερω, παντως ετσι σε μενα το τρεχει κανονικα με το κενο  ;)

 ^hello^ ^hello^
Πωωω ευχαριστώ ρε φίλε, θα το 'σπαγα το σκουπίδι.... έψαχνα πολύ ώρα και δεν έβρισκα τπτ! ^tickedOff^
Επειδή είναι αρκετά μπακάλικο το παραπάνω, δοκίμασε αυτό:

Code:
fflush(stdin);
scanf("%c",&letter);

Το πρόβλημα σε σένα εμφανίζεται γιατί ο buffer δεν είναι κενός από προηγούμενη χρήση...
Η fflush δουλεύει σωστά μόνο για το output stream, δηλαδή είναι σωστό το:
Code:
fflush(stdout);
και όχι το:
Code:
fflush(stdin);
Υπάρχουν περιπτώσεις όπου μπορεί να δουλέψει αλλά και άλλες (mine included) που δε δουλεύει :P
Μάλλον εξαρτάται από τον compiler.


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: c0ndemn3d on October 14, 2015, 00:28:09 am
__fpurge(stdin);


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Schro on October 14, 2015, 01:19:28 am
στην εργασία ανεβάζουμε δύο ξεχωριστά αρχεία;
και στο αρχείο στο οποίο έχουμε υλοποιήσει το παιχνίδι θα πρέπει να συμπεριλαμβάνεται φαντάζομαι και η συνάρτηση hangman() σωστά;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 14, 2015, 11:41:12 am
στην εργασία ανεβάζουμε δύο ξεχωριστά αρχεία;
και στο αρχείο στο οποίο έχουμε υλοποιήσει το παιχνίδι θα πρέπει να συμπεριλαμβάνεται φαντάζομαι και η συνάρτηση hangman() σωστά;

Και εγώ αυτό κατάλαβα.


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: fanoula on October 14, 2015, 14:03:45 pm
[..]
edit: μπορειτε να βρειτε ολο τον κωδικα εδω: https://www.thmmy.gr/smf/index.php?topic=64983.msg1102110#msg1102110 (https://www.thmmy.gr/smf/index.php?topic=64983.msg1102110#msg1102110) ως συνημμενο.
σβηστηκε ολος ο κωδικας απο το ποστ, γιατι ηταν λιγο αρκετα μεγαλος για ενα ποστ :)


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: fanoula on October 14, 2015, 14:04:23 pm
τι στο καλο κανω λαθος;

edit: δεν υπηρχε λογος να επαναληφθει ο κωδικας, υπαρχει απο κατω


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: pentium4 on October 14, 2015, 15:48:25 pm

ρε κοριτσάρα, γιατί δε το βάζεις σε ένα txt και να το επισυνάψεις; βγαίνουν μάτια έτσι


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: fanoula on October 14, 2015, 18:13:46 pm

ρε κοριτσάρα, γιατί δε το βάζεις σε ένα txt και να το επισυνάψεις; βγαίνουν μάτια έτσι

είμαι λίγο ανίδεη απ'αυτά, συγχωρέστε με,πρώτη φορά ασχολούμε. οριστε λοιπόν


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Vlassis on October 14, 2015, 21:31:05 pm
λοιπον fanoula εχουμε και λεμε:  :P
  • στο τέλος απο τη δηλωση του struct νομιζω θελεις ενα ;
  • στο //function prototypes στην guess και στην results δηλωσες μια μεταβλητη λιγοτερη
  • δεν πρεπει να ειναι void main() ?
  • n=guess(word_from_list, player_guess, player);
       results(n, word_from_list, player_guess, player);

    μηπως αντι για player εννοεις wordlength ;
  • στη συναρτηση guess στην εντολη word_from_list{wordlength]=primtf("*"); αντι για [ εχεις { , και primtf οχι printf 
  • στην void results(....) σου ξεφυγε ενα [ και εβαλες { και νομιζω ξεχασες μια μεταβλητη
  • στην αρχη της main σου φυγε ενα t στο printf
  • μπερδεψες λιγο τις αγκυλες στην void results(....)
  • στην δηλωση της hangman_gallow() ξεχασες το void
  • printf("\n%s, DIALEKSE EPIPEDO\n"); το %s δεν χρειαζεται
ολα μαζι στο αρχειο  ;)


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: fanoula on October 14, 2015, 21:48:18 pm
λοιπον fanoula εχουμε και λεμε:  :P
  • στο τέλος απο τη δηλωση του struct νομιζω θελεις ενα ;
  • στο //function prototypes στην guess και στην results δηλωσες μια μεταβλητη λιγοτερη
  • δεν πρεπει να ειναι void main() ?
  • n=guess(word_from_list, player_guess, player);
       results(n, word_from_list, player_guess, player);

    μηπως αντι για player εννοεις wordlength ;
  • στη συναρτηση guess στην εντολη word_from_list{wordlength]=primtf("*"); αντι για [ εχεις { , και primtf οχι printf 
  • στην void results(....) σου ξεφυγε ενα [ και εβαλες { και νομιζω ξεχασες μια μεταβλητη
  • στην αρχη της main σου φυγε ενα t στο printf
  • μπερδεψες λιγο τις αγκυλες στην void results(....)
  • στην δηλωση της hangman_gallow() ξεχασες το void
  • printf("\n%s, DIALEKSE EPIPEDO\n"); το %s δεν χρειαζεται
ολα μαζι στο αρχειο  ;)


Λοιπόν ευχαριστώ το διορθωνω και ας ελπίζω ότι δεν θα σας ενόχλησε....


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 14, 2015, 22:31:28 pm
στην εργασία ανεβάζουμε δύο ξεχωριστά αρχεία;
και στο αρχείο στο οποίο έχουμε υλοποιήσει το παιχνίδι θα πρέπει να συμπεριλαμβάνεται φαντάζομαι και η συνάρτηση hangman() σωστά;

Και εγώ αυτό κατάλαβα.

Άκυρο! Σήμερα μίλησα μαζί του στο μάθημα και είπε να χρησιμοποιήσουμε το πρώτο αρχείο (που έχει τη hangman) βάζοντας ένα:
#include "to_onoma_toy_prwtoy_arxeioy.o";
στο αρχείο (.c) που θα έχει τη main (και την υλοποίηση του παιχνιδιού).**


**εκτός αν ο schro εννοούσε αυτό από την αρχή!


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: fanoula on October 15, 2015, 00:04:27 am
λοιπον fanoula εχουμε και λεμε:  :P
  • στο τέλος απο τη δηλωση του struct νομιζω θελεις ενα ;
  • στο //function prototypes στην guess και στην results δηλωσες μια μεταβλητη λιγοτερη
  • δεν πρεπει να ειναι void main() ?
  • n=guess(word_from_list, player_guess, player);
       results(n, word_from_list, player_guess, player);

    μηπως αντι για player εννοεις wordlength ;
  • στη συναρτηση guess στην εντολη word_from_list{wordlength]=primtf("*"); αντι για [ εχεις { , και primtf οχι printf 
  • στην void results(....) σου ξεφυγε ενα [ και εβαλες { και νομιζω ξεχασες μια μεταβλητη
  • στην αρχη της main σου φυγε ενα t στο printf
  • μπερδεψες λιγο τις αγκυλες στην void results(....)
  • στην δηλωση της hangman_gallow() ξεχασες το void
  • printf("\n%s, DIALEKSE EPIPEDO\n"); το %s δεν χρειαζεται
ολα μαζι στο αρχειο  ;)


ωστόσο εσένα στο τρέχει έτσι΄;
μου βγαζει ενα σωρό προειδοποιήσεις


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Vlassis on October 15, 2015, 00:14:48 am
[..]
ωστόσο εσένα στο τρέχει έτσι΄;
μου βγαζει ενα σωρό προειδοποιήσεις
ναι στο codeblocks που το τρεχω μου βγαζει απλα: warning: unnamed struct/union that defines no instances [enabled by default]|
απλα δεν εκτελειται σωστα, λογικα γιατι μου λειπει το αρχειο wordlist.txt..


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: fanoula on October 15, 2015, 00:18:32 am
[..]
ωστόσο εσένα στο τρέχει έτσι΄;
μου βγαζει ενα σωρό προειδοποιήσεις
ναι στο codeblocks που το τρεχω μου βγαζει απλα: warning: unnamed struct/union that defines no instances [enabled by default]|
απλα δεν εκτελειται σωστα, λογικα γιατι μου λειπει το αρχειο wordlist.txt..

Dev-C++ δουλευω εγω μην ρωτησεις γιατι
δηλώνοντας στην αρχή την hangman_gallow μου βγάζει ένα: two or more data types in declaration of 'hangman_gallow'


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: iliasT on October 15, 2015, 14:35:17 pm
στην εργασία ανεβάζουμε δύο ξεχωριστά αρχεία;
και στο αρχείο στο οποίο έχουμε υλοποιήσει το παιχνίδι θα πρέπει να συμπεριλαμβάνεται φαντάζομαι και η συνάρτηση hangman() σωστά;

Δηλαδή ενα C αρχείο μόνο με τη hangman() κι ένα αρχείο C με την υλοποίηση του παιχνιδιού ΚΑΙ τη hangman();


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Vlassis on October 15, 2015, 15:11:39 pm
Dev-C++ δουλευω εγω μην ρωτησεις γιατι
δηλώνοντας στην αρχή την hangman_gallow μου βγάζει ένα: two or more data types in declaration of 'hangman_gallow'
Δοκιμασες να τρεξεις και το αρχειο που επισυναψα; Δες μηπως ξεχασες καπου να δηλωσεις void τη συναρτηση,ή τιποτα με τα ορισματα..


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 15, 2015, 18:50:55 pm
στην εργασία ανεβάζουμε δύο ξεχωριστά αρχεία;
και στο αρχείο στο οποίο έχουμε υλοποιήσει το παιχνίδι θα πρέπει να συμπεριλαμβάνεται φαντάζομαι και η συνάρτηση hangman() σωστά;

Δηλαδή ενα C αρχείο μόνο με τη hangman() κι ένα αρχείο C με την υλοποίηση του παιχνιδιού ΚΑΙ τη hangman();

Θέλει ένα αρχείο .c το οποίο θα έχει τη hangman. Και ένα αρχείο .c το οποίο θα έχει την υλοποίηση του παιχνιδιού και ΟΧΙ τη hangman αλλά την εντολή
Code:
#include "hangman.h"


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Ragnar Lothbrok on October 15, 2015, 19:33:10 pm
στην εργασία ανεβάζουμε δύο ξεχωριστά αρχεία;
και στο αρχείο στο οποίο έχουμε υλοποιήσει το παιχνίδι θα πρέπει να συμπεριλαμβάνεται φαντάζομαι και η συνάρτηση hangman() σωστά;

Δηλαδή ενα C αρχείο μόνο με τη hangman() κι ένα αρχείο C με την υλοποίηση του παιχνιδιού ΚΑΙ τη hangman();

Θέλει ένα αρχείο .c το οποίο θα έχει τη hangman. Και ένα αρχείο .c το οποίο θα έχει την υλοποίηση του παιχνιδιού και ΟΧΙ τη hangman αλλά την εντολή
Code:
#include "hangman.h"

Αι γεια σου! #include hangman.h
Γιατί με #include hangman.o δεν ετρεχε τιποτα.


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: akyrosHM on October 15, 2015, 22:23:17 pm
Για να τη στείλω τη ρημάδα, στο αρχείο hangman.cpp έχετε βάλει και main?

Τη σύνδεση αρχείων εγώ την έκανα μέσα απ'το ίδιο project με header. Το κατά πόσο είναι σωστό αυτό βέβαια, θα δείξει, πάντως με "hangman.o" μου βγάζει σφάλμα.


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Schro on October 15, 2015, 22:25:33 pm
Για να τη στείλω τη ρημάδα, στο αρχείο hangman.cpp έχετε βάλει και main?

Τη σύνδεση αρχείων εγώ την έκανα μέσα απ'το ίδιο project με header. Το κατά πόσο είναι σωστό αυτό βέβαια, θα δείξει, πάντως με "hangman.o" μου βγάζει σφάλμα.

μέχρι αύριο είναι, σωστά;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: akyrosHM on October 15, 2015, 22:26:21 pm
Για να τη στείλω τη ρημάδα, στο αρχείο hangman.cpp έχετε βάλει και main?

Τη σύνδεση αρχείων εγώ την έκανα μέσα απ'το ίδιο project με header. Το κατά πόσο είναι σωστό αυτό βέβαια, θα δείξει, πάντως με "hangman.o" μου βγάζει σφάλμα.

μέχρι αύριο είναι, σωστά;
Ναι, μέχρι αύριο είναι..


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Christheo on October 16, 2015, 01:44:59 am
Για να τη στείλω τη ρημάδα, στο αρχείο hangman.cpp έχετε βάλει και main?

Τη σύνδεση αρχείων εγώ την έκανα μέσα απ'το ίδιο project με header. Το κατά πόσο είναι σωστό αυτό βέβαια, θα δείξει, πάντως με "hangman.o" μου βγάζει σφάλμα.
Βάλε main  κατά την δημιουργία της hangman μόνο για να ελέγξεις αν δουλεύει σωστά από μόνη της ( αν θες). Το αρχείο hangman δες το απλά σαν μια συνάρτηση που την καλείς στο κυρίως πρόγραμμα σου,οπότε μετά  βγάλε την main από το hangman αρχείο μιας και θα έχει main για την εκτέλεση του συνολικου προγράμματος στο άλλο αρχείο σου  (έτσι δεν θα δημιουργείται πρόβλημα προσδιορισμού στον compiler).
Ελπίζω να έγινα κατανοητός! Όσο για την σύνδεση τους εμένα δούλεψε το #include "hangman.cpp" (αφού αφαίρεσα την main απο κει).


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: fanoula on October 16, 2015, 10:29:02 am
Dev-C++ δουλευω εγω μην ρωτησεις γιατι
δηλώνοντας στην αρχή την hangman_gallow μου βγάζει ένα: two or more data types in declaration of 'hangman_gallow'
Δοκιμασες να τρεξεις και το αρχειο που επισυναψα; Δες μηπως ξεχασες καπου να δηλωσεις void τη συναρτηση,ή τιποτα με τα ορισματα..


'Ετρεξα αυτό που μου έστειλες και μου βγαζει:  missing type-name in typedef-declaration.
Τι πρέπει να κάνω εγώ;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Schro on October 16, 2015, 13:25:39 pm
για να κάνεις την σύνδεση στο αρχείο hangman.h τι βάζεις μέσα;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 16, 2015, 13:46:32 pm
για να κάνεις την σύνδεση στο αρχείο hangman.h τι βάζεις μέσα;

Βάλτε τον code::blocks που τα κάνει όλα από μόνο του ρε παιδιά... ;)

Η hangman μου (σε ένα .h αρχείο):
Code:
#ifndef HANGMAN_H_INCLUDED
#define HANGMAN_H_INCLUDED
#endif // HANGMAN_H_INCLUDED
#include <iostream>

void hangman(int n){
   .....ο κώδικας εδώ....
}
Η main μου (σε άλλο αρχείο!)
Code:
....διάφορα άλλα #include εδώ....
#include "hangman.h"

void main(){
   .....ο κώδικας εδώ....
}
Αυτό στον code::blocks λειτουργεί μια χαρά και μπορώ στη main μου να καλώ τη hangman(). Αυτά στην αρχή του αρχείου hangman.h μου, τα έβαλε από μόνο του μόλις πάτησα δημιουργία header αρχείου. Προσοχή τα 2 αρχεία να είναι στην ίδια τοποθεσία.

Ελπίζω να βοήθησα!


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Schro on October 16, 2015, 14:01:49 pm
ωραία! ευχαριστώ! έτσι τρέχει!
άρα στέλνουμε ενα zip με το .h αρχείο που θα έχει μέσα την hangman και με ένα αρχείο .c που θα τρέχει το παιχνίδι.

άλλη ερώτηση, πειράζει αν δεν βάλω καθόλου το κομμάτι
Code:
#ifndef HANGMAN_H_INCLUDED
#define HANGMAN_H_INCLUDED
#endif // HANGMAN_H_INCLUDED

το δοκιμασα και τρέχει και χωρις αυτό!


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 16, 2015, 14:06:47 pm
...Αυτά στην αρχή του αρχείου hangman.h μου τα έβαλε από μόνο του μόλις πάτησα δημιουργία header αρχείου...

άλλη ερώτηση, πειράζει αν δεν βάλω καθόλου το κομμάτι
Code:
#ifndef HANGMAN_H_INCLUDED
#define HANGMAN_H_INCLUDED
#endif // HANGMAN_H_INCLUDED
το δοκιμασα και τρέχει και χωρις αυτό!

Δε ξέρω τι κάνουν... εγώ τα άφησα μέσα... :P


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Schro on October 16, 2015, 14:08:31 pm
...

ok! Ευχαριστώ πολύ!  :)


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: billyk on October 16, 2015, 14:55:27 pm
ρε παιδια, που ακριβως την ανεβαζουμε? ψαχνω μεσα στο elearning και δε βρισκω!


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 16, 2015, 15:08:26 pm
ρε παιδια, που ακριβως την ανεβαζουμε? ψαχνω μεσα στο elearning και δε βρισκω!

Έκανες εγγραφή στο μάθημα;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: billyk on October 16, 2015, 15:26:08 pm
μολις εκανα


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: billyk on October 16, 2015, 15:32:25 pm
μολις εκανα
οκ το βρηκα, σ ευχαριστω!


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Pest on October 16, 2015, 16:03:06 pm
με #include <Hangman.cpp> μου λεει οτι δεν υπαρχει τετοιο αρχειο. Ενω υπαρχει και ειναι στον ιδιο φακελο με το αρχειο του παιχνιδιου. Δοκιμασα να το γραψω διαφορετικα με πολλους τροπους αλλα και παλι δε το βρισκει...


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: fanoula on October 16, 2015, 16:11:41 pm
[..]
ωστόσο εσένα στο τρέχει έτσι΄;
μου βγαζει ενα σωρό προειδοποιήσεις
ναι στο codeblocks που το τρεχω μου βγαζει απλα: warning: unnamed struct/union that defines no instances [enabled by default]|
απλα δεν εκτελειται σωστα, λογικα γιατι μου λειπει το αρχειο wordlist.txt..

που πρεπει να βαλω το wordlist.txt sto pc για να το εντοπισει;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 16, 2015, 16:15:14 pm
με #include <Hangman.cpp> μου λεει οτι δεν υπαρχει τετοιο αρχειο. Ενω υπαρχει και ειναι στον ιδιο φακελο με το αρχειο του παιχνιδιου. Δοκιμασα να το γραψω διαφορετικα με πολλους τροπους αλλα και παλι δε το βρισκει...

Τι ide/compiler χρησιμοποιείς; Είσαι σίγουρος ότι το έχεις ονομάσει Hangman και όχι hangman; Δοκίμασες να γράψεις #include "Hangman.h";

Δες και εδώ: https://www.thmmy.gr/smf/index.php?topic=64983.msg1102305#msg1102305


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Vlassis on October 16, 2015, 16:46:39 pm
νομιζω στο ιδιο φακελο με το προγραμμα σου, εκτος και αμα γραψεις ολο το path του αρχειου στον κωδικα σου

Για πριν που ρωτησες, στο kremala_V.txt αμα κανω copy paste τον κωδικα στο codeblocks τρεχει κανονικα, δεν ξερω γιατι σου το βγαζει αυτο..


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Lord on October 16, 2015, 17:48:48 pm
...Αυτά στην αρχή του αρχείου hangman.h μου τα έβαλε από μόνο του μόλις πάτησα δημιουργία header αρχείου...

άλλη ερώτηση, πειράζει αν δεν βάλω καθόλου το κομμάτι
Code:
#ifndef HANGMAN_H_INCLUDED
#define HANGMAN_H_INCLUDED
#endif // HANGMAN_H_INCLUDED
το δοκιμασα και τρέχει και χωρις αυτό!

Δε ξέρω τι κάνουν... εγώ τα άφησα μέσα... :P

Τυπικά καλό είναι να υπάρχουν. Ο λόγος είναι ότι με αυτό τον τρόπο αναγκάζεις τον compiler να κάνει include κάθε Header μόνο μία φορά. Π.χ. :
Έστω ότι ορίζεις την συνάρτηση void func() στο αρχείο a.h. Ορίζεις ταυτόχρονα το αρχείο b.h όπου έχεις άλλες συνάρτησεις και κάνεις include "a.h". Τέλος στο main.cpp κάνεις :

#include "a.h"
#include "b.h"

Αν δεν έχεις αυτά τα #ifndef εμμέσως ο compiler θα κάνει include 2 φορές το a.h και θα σου παραπονεθεί για διπλό definition.
Ουσιαστικά, με αυτό τον τρόπο του λες ότι αν έχεις ήδη κάνει include to hangman.h μην τον ξανακάνεις. Ελπίζω να καταλάβατε
τι εννοώ περίπου.

Για ένα καλύτερο παράδειγμα : https://en.wikipedia.org/wiki/Include_guard (https://en.wikipedia.org/wiki/Include_guard) ή google it, έχει άπειρα ποστ στο Stack Overflow.

Υ.Γ. Τα δείγματα από την 1η εργασία είναι πολύ ενθαρρυντικά για το μάθημα. Μπράβο.  8))


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Schro on October 16, 2015, 18:06:37 pm
Τελικά στο zip μέσα πόσα αρχεία πρέπει να έχουμε;
ένα .h και ένα .c;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: iliasT on October 16, 2015, 18:25:35 pm
Αυτό το wordlist.txt γιατί το έχετε κάνει; Ζητάει κάπου εγγραφές λέξεων από/προς κάποιο τέτοιο αρχείο;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: akyrosHM on October 16, 2015, 19:07:04 pm
Τελικά στο zip μέσα πόσα αρχεία πρέπει να έχουμε;
ένα .h και ένα .c;
Εγώ 2 c και 1 h έβαλα.
Στα h files πάντως μόνο ονόματα και ορισματα βαζεις, προς το παιδί που είπε ότι έβαλε όλη τη hangman.


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: josko on October 16, 2015, 19:09:29 pm
Καλησπέρα, μπορεί κάποιος να εξηγήσει πως ακριβώς μπορούμε να ανεβάσουμε την εργασία; Δηλαδή αν έχουμε απλά ορισει και χρησιμοποιήσει την hangman μέσα στο πρόγραμμα απευθείας μπορούμε να ανεβάσουμε μόνο την εργασία που περιέχει και αυτήν την συνάρτηση;;


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 16, 2015, 19:18:27 pm
Στα h files πάντως μόνο ονόματα και ορισματα βαζεις, προς το παιδί που είπε ότι έβαλε όλη τη hangman.

Αν βάλεις όλη τη hangman μέσα στο .h αρχείο πάλι θα δουλέψει, αλλά ισχύει αυτό που λες, ο σωστός τρόπος είναι να κάνεις και ένα .c αρχείο όπως περιγράφεται εδώ δλδ:
http://stackoverflow.com/questions/7109964/creating-your-own-header-file-in-c


Title: Re: [C++] Άσκηση Α - 2015/2016 Προθεσμία 16/10/15 11:00μμ
Post by: Apostolof on October 17, 2015, 16:06:02 pm
Αυτή (https://drive.google.com/file/d/0B180ufUj-l8HNnFoMU4xYVhoNDA/view?usp=sharing) είναι η δική μου υλοποίηση, σχολιάστε, διορθώστε, κράξτε-θαυμάστε (https://www.youtube.com/watch?v=eUzp2W4yDeA).