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


hidden = ( rand() % lim ) + 1;hidden = rand() % lim + 1;
stamatiou έγραψε::oops: Δεν το είδα
Εγώ δεν καταλαβαίνω αυτό:Γιατί να μην το βάλουμε έτσι:
- Κώδικας: Επιλογή όλων
hidden = ( rand() % lim ) + 1;
- Κώδικας: Επιλογή όλων
hidden = rand() % lim + 1;
έγραψε:Επίσης δεν μπορώ να βρω πού κάνει λάθος το πρόγραμμα :/


migf1 έγραψε:Άσχετο, όταν τελειώσουμε με την άσκηση, θέλετε πριν πάμε σε πίνακες να πούμε πρώτα 2-3 πράγματα για macros (#define), πρόσθετους τύπους (typedef) και enumerated types (enum) ?
migf1 έγραψε:stamatiou έγραψε::oops: Δεν το είδα
Εγώ δεν καταλαβαίνω αυτό:Γιατί να μην το βάλουμε έτσι:
- Κώδικας: Επιλογή όλων
hidden = ( rand() % lim ) + 1;
- Κώδικας: Επιλογή όλων
hidden = rand() % lim + 1;
Το ίδιο πράγμα είναι, η παρένθεση που έχω βάλει εγώ είναι επειδή δεν θυμόμουν αν η πράξη + έχει προτεραιότητα έναντι της % και ήθελα να σιγουρέψω πως πρώτα θα κάνει το % και μετά το +. Αλλά το τσεκάρισα μόλις τώρα και τελικά κάνει έτσι κι αλλιώς πρώτα το %.έγραψε:Επίσης δεν μπορώ να βρω πού κάνει λάθος το πρόγραμμα :/
Οκ, να ο τελικός κώδικας:
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int check(int guess,int right,int lim) {
if(guess <= 0 || guess > lim) {
return -1;
}else if(guess < right) {
return 0;
}else if(guess > right) {
return 1;
}else {
return 2;
}
return 3;
}
int main(void) {
char inbuf[256];
char *hints[3] = {"\tΠιο ψηλά\n","\tΠιο χαμηλά\n","\tΣυγχαρητήρια, το βρήκατε "};
int guess,right,lim,counter=0;
srand(time(NULL));
printf("Which will be the limit? ");
fgets(inbuf,256,stdin);
sscanf(inbuf,"%d",&lim);
right = rand() % lim + 1;
printf("Enter the number: ");
while((check(guess,right,lim)) != 2) {
fgets(inbuf,256,stdin);
guess = atoi(inbuf);
if((check(guess,right,lim)) == 0) {
puts(hints[0]);
counter++;
}else if ((check(guess,right,lim)) == 1) {
puts(hints[1]);
counter++;
}else if ((check(guess,right,lim)) == -1) {
printf("\tΤο όριο είναι από 0 μέχρι %d!\n",lim);
}
}
puts(hints[2]);
printf("με την %dη φορά!\n",++counter);
return 0;
}
Βάλε μια-δυο μαντεψιές εκτός ορίων και δες το πλήθος προσπαθειών που σου βγάζει στο τέλος, νομίζω μετράει και τις άκυρες μαντεψιές.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int check(int guess,int right,int lim) {
if(guess <= 0 || guess > lim) {
return -1;
}else if(guess < right) {
return 0;
}else if(guess > right) {
return 1;
}else {
return 2;
}
return 3;
}
int main(void) {
char inbuf[256];
char *hints[3] = {"\tΠιο ψηλά\n","\tΠιο χαμηλά\n","\tΣυγχαρητήρια, το βρήκατε "};
int guess,right,lim,counter=0;
srand(time(NULL));
printf("Which will be the limit? ");
fgets(inbuf,256,stdin);
sscanf(inbuf,"%d",&lim);
right = rand() % lim + 1;
printf("Enter the number: ");
while((check(guess,right,lim)) != 2) {
fgets(inbuf,256,stdin);
guess = atoi(inbuf);
if((check(guess,right,lim)) == 0) {
puts(hints[0]);
counter++;
}else if ((check(guess,right,lim)) == 1) {
puts(hints[1]);
counter++;
}else if ((check(guess,right,lim)) == -1) {
printf("\tΤο όριο είναι από 0 μέχρι %d!\n",lim);
}
}
puts(hints[2]);
printf("με την %dη φορά!\n",++counter);
return 0;
}



r=hint_position(guess,hidden,lim);
printf("%s",r); r=hint_position(guess,hidden,lim);
puts(hints[r]); //ανάλογα με την τιμή επιστροφής τυπώνει και το ανάλογο item 