Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 01 Αύγ 2011, 14:07

πανω - κατω την εχω τελειωσει... απλα δεν μου βγαινει συντακτικα ο κωδικας με τα else-if μεσα στην συνάρτηση :/

+ το warning

Κώδικας: Επιλογή όλων
guessing_game.c:56: warning: format ‘%c’ expects type ‘int’, but argument 2 has type ‘char *’


εγω παντως εχω βαλει πως ο αριθμος των προσπαθειων του χρηστη ειναι ουσιαστικα ο αριθμος των κλησεων της συνάρτησης.....
σωστα????
Τελευταία επεξεργασία από Star_Light και 01 Αύγ 2011, 14:08, έχει επεξεργασθεί 1 φορά/ες συνολικά
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 01 Αύγ 2011, 14:08

Ό,τι θες πάντως εδώ είμαστε εμείς! :D
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 01 Αύγ 2011, 14:13

Star_Light έγραψε:πανω - κατω την εχω τελειωσει... απλα δεν μου βγαινει συντακτικα ο κωδικας με τα else-if μεσα στην συνάρτηση :/

+ το warning

Κώδικας: Επιλογή όλων
guessing_game.c:56: warning: format ‘%c’ expects type ‘int’, but argument 2 has type ‘char *’

Πρέπει να δω τον κώδικα για να σου πω. Βασικά σου λέει πως του χεις πει να τυπώσει char αλλά του περνάς char * (δηλαδή string).

έγραψε:εγω παντως εχω βαλει πως ο αριθμος των προσπαθειων του χρηστη ειναι ουσιαστικα ο αριθμος των κλησεων της συνάρτησης.....
σωστα????

Όχι, αν η μαντεψιά είναι εκτός ορίων, τότε δεν μετριέται ως έγκυρη προσπάθεια.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 01 Αύγ 2011, 14:14

Btw, μέσα στη συνάρτηση δεν χρειάζεται κανένα else (είναι περιττό).
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 01 Αύγ 2011, 14:15

Φίλε Σταματίου, τελικά έβγαλες άκρη πως δουλεύει ο κώδικάς μου με χρήση του πίνακα;
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 01 Αύγ 2011, 14:19

migf1 έγραψε:Φίλε Σταματίου, τελικά έβγαλες άκρη πως δουλεύει ο κώδικάς μου με χρήση του πίνακα;

Ναι, δεν έχω ανεβάσει και τον καινούργιο κώδικα;
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 01 Αύγ 2011, 14:19

migf1 έγραψε:
Star_Light έγραψε:πανω - κατω την εχω τελειωσει... απλα δεν μου βγαινει συντακτικα ο κωδικας με τα else-if μεσα στην συνάρτηση :/

+ το warning

Κώδικας: Επιλογή όλων
guessing_game.c:56: warning: format ‘%c’ expects type ‘int’, but argument 2 has type ‘char *’

Πρέπει να δω τον κώδικα για να σου πω. Βασικά σου λέει πως του χεις πει να τυπώσει char αλλά του περνάς char * (δηλαδή string).

έγραψε:εγω παντως εχω βαλει πως ο αριθμος των προσπαθειων του χρηστη ειναι ουσιαστικα ο αριθμος των κλησεων της συνάρτησης.....
σωστα????

Όχι, αν η μαντεψιά είναι εκτός ορίων, τότε δεν μετριέται ως έγκυρη προσπάθεια.


τον ανεβαζω... αν και εχει πολλα λογικα λαθη.... θα τον ξαναπροσπαθησω αυτη τη φορα δεν πηγαμε και τοσο καλα , εχω κανει πολλες μπουρδες πιστευω.
Spoiler: show
Κώδικας: Επιλογή όλων
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int hint_position(int guess,int hidden, int lim);

int main()
{
int r;
int lim , guess , hidden;

srand(time(NULL)); // klhsh tis srand

printf("Dwse to orio (to euros ksekina apo 1 ews to orio): \n");
scanf("%d",&lim);

hidden=rand()%lim+1;

printf("%d",hidden);

do {
printf ("Dwse ton arithmo : ");
scanf("%d",&guess);
r=hint_position(guess,hidden,lim);
printf("%d",r);
} while (hidden!=guess);


return 0;
}
int hint_position(int guess, int hidden , int lim)
{
char *hints[3] = {
"\tπιο ψηλά\n", // θέση 0
"\tπιο χαμηλά\n", // θέση 1
"\tΣυγχαρητήρια, το βρήκατε\n" // θέση 2
};

if( (guess<1) || (guess > lim) )
{
printf("Eiste ektos oriwn \n");
return -1;
}

else if (guess<hidden)
{
printf("%c",hints[1]);
return 0;
}

else if (guess>hidden)
{
printf("%c",hints[2]);
return 1;
}


else if(guess==hidden)
{
printf("%c",hints[3]);
return 2;
}

}
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 01 Αύγ 2011, 14:25

Star_Light έγραψε:
migf1 έγραψε:
Star_Light έγραψε:πανω - κατω την εχω τελειωσει... απλα δεν μου βγαινει συντακτικα ο κωδικας με τα else-if μεσα στην συνάρτηση :/

+ το warning

Κώδικας: Επιλογή όλων
guessing_game.c:56: warning: format ‘%c’ expects type ‘int’, but argument 2 has type ‘char *’

Πρέπει να δω τον κώδικα για να σου πω. Βασικά σου λέει πως του χεις πει να τυπώσει char αλλά του περνάς char * (δηλαδή string).

έγραψε:εγω παντως εχω βαλει πως ο αριθμος των προσπαθειων του χρηστη ειναι ουσιαστικα ο αριθμος των κλησεων της συνάρτησης.....
σωστα????

Όχι, αν η μαντεψιά είναι εκτός ορίων, τότε δεν μετριέται ως έγκυρη προσπάθεια.


τον ανεβαζω... αν και εχει πολλα λογικα λαθη.... θα τον ξαναπροσπαθησω αυτη τη φορα δεν πηγαμε και τοσο καλα , εχω κανει πολλες μπουρδες πιστευω.
Spoiler: show
Κώδικας: Επιλογή όλων
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int hint_position(int guess,int hidden, int lim);

int main()
{
int r;
int lim , guess , hidden;

srand(time(NULL)); // klhsh tis srand

printf("Dwse to orio (to euros ksekina apo 1 ews to orio): \n");
scanf("%d",&lim);

hidden=rand()%lim+1;

printf("%d",hidden);

do {
printf ("Dwse ton arithmo : ");
scanf("%d",&guess);
r=hint_position(guess,hidden,lim);
printf("%d",r);
} while (hidden!=guess);


return 0;
}
int hint_position(int guess, int hidden , int lim)
{
char *hints[3] = {
"\tπιο ψηλά\n", // θέση 0
"\tπιο χαμηλά\n", // θέση 1
"\tΣυγχαρητήρια, το βρήκατε\n" // θέση 2
};

if( (guess<1) || (guess > lim) )
{
printf("Eiste ektos oriwn \n");
return -1;
}

else if (guess<hidden)
{
printf("%c",hints[1]);
return 0;
}

else if (guess>hidden)
{
printf("%c",hints[2]);
return 1;
}


else if(guess==hidden)
{
printf("%c",hints[3]);
return 2;
}

}

Έτσι πρόχειρα που τον είδα είχε 2-3 συντακτικά, εδώ είναι διορθωμένος ως προς τη σύνταξη ;)
Κώδικας: Επιλογή όλων
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int hint_position(int guess,int hidden, int lim);

int main()
{
int r;
int lim , guess , hidden;

srand(time(NULL)); // klhsh tis srand

printf("Dwse to orio (to euros ksekina apo 1 ews to orio): \n");
scanf("%d",&lim);

hidden=rand()%lim+1;

printf("%d",hidden);

do {
printf ("Dwse ton arithmo : ");
scanf("%d",&guess);
r=hint_position(guess,hidden,lim);
printf("%d",r);
} while (hidden!=guess);


return 0;
}
int hint_position(int guess, int hidden , int lim)
{
char *hints[3] = {
"\tπιο ψηλά\n", // θέση 0
"\tπιο χαμηλά\n", // θέση 1
"\tΣυγχαρητήρια, το βρήκατε\n" // θέση 2
};

if( (guess<1) || (guess > lim) )
{
printf("Eiste ektos oriwn \n");
return -1;
}

else if (guess<hidden)
{
printf("%s",hints[1]);
return 0;
}

else if (guess>hidden)
{
printf("%s",hints[2]);
return 1;
}


else if(guess==hidden)
{
printf("%s",hints[3]);
return 2;
}
return 0;
}
Τελευταία επεξεργασία από stamatiou και 01 Αύγ 2011, 14:34, έχει επεξεργασθεί 1 φορά/ες συνολικά
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 01 Αύγ 2011, 14:34

Εχμ, λοιπόν... να σου δώσω 2-3 hints:

α) όπως γράφω και στην εκφώνηση, τον πίνακα πρέπει να τον ορίσεις στην main (και όχι στην hint_positions που τον έχεις ορίσει)

β) στο loop της main, αντικατέστησε το:
Κώδικας: Επιλογή όλων
printf("%d",r);

με...
Κώδικας: Επιλογή όλων
puts( hints[ r ]); // ισοδυναμεί με: printf("%s\n", hints[ r ] );

γ) μέσα στην hint_position σβήσε όλα τα printf κι άσε μόνο τα return. Επίσης, όπως δείχνω και στη θεωρία πριν την άσκηση, μετά από return μέσα σε if, το else είναι περιττό (περιπλέκει και το διάβασμα του κώδικα αχρείαστα).

Κάνε αυτά τα 3 και δες τη διαφορά με τον τωρινό σου κώδικα. Μετά βάλε και μια int μεταβλητή να μετράει τις προσπάθειες ;)

Κι εδώ είμαστε για όποια απορία.

@stamatiou, όχι δεν το πήρα είδηση, πάω να δω τώρα.
Τελευταία επεξεργασία από migf1 και 01 Αύγ 2011, 14:49, έχει επεξεργασθεί 2 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 01 Αύγ 2011, 14:37

@stamatiou, δεν τη βρίσκω την 2η διόρθωσή σου, εγώ έχω μείνει εδώ: viewtopic.php?p=200977#p200977
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι