Δίνω τη λύση, κυρίως για να δείτε τι εννοώ σχετικά με τον πίνακα (γιατί οκ, δεν είχα μιλήσει καθόλου για αυτούς κι απλώς τους... πέταξα στην άσκηση).
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define MAXINBUF (255+1)
// ------------------------------------------------------------------------------
int hint_position(int guess, int hidden, int lim)
{
if (guess < 1 || guess > lim)
return -1;
if (guess < hidden)
return 0;
if (guess > hidden)
return 1;
return 2;
}
// ------------------------------------------------------------------------------
int main( void )
{
char inbuf[ MAXINBUF ]="";
int hidden, guess=-1, lim, count=0, pos;
char *hints[3] = {
"\tπιο ψηλά\n", // θέση 0
"\tπιο χαμηλά\n", // θέση 1
"\tΣυγχαρητήρια, το βρήκατε!\n" // θέση 2
};
srand( time(NULL) );
do {
printf("Ανώτατο όριο (μεγαλύτερο του 1): ");
fgets(inbuf, MAXINBUF, stdin);
lim = atoi(inbuf);
} while (lim < 1);
hidden = ( rand() % lim ) + 1;
printf("\tέβαλα έναν αριθμό από το 1 έως το %d\n\n", lim);
do {
printf("Μαντεψιά #%d: ", count+1);
fgets(inbuf, MAXINBUF, stdin);
guess = atoi(inbuf);
pos = hint_position( guess, hidden, lim);
if (pos == -1)
puts("\tμαντεψιά εκτός ορίων, ξαναπροσπαθήστε\n");
else {
puts( hints[pos] );
count++;
}
} while (pos != 2);
printf("Χρειαστήκατε %d προσπάθειες\n\n", count);
return 0;
}
Φίλε Σταματίου, πάλι μετράει λάθος ο κώδικάς σου τις μαντεψιές. Επίσης χρησιμοποιείς πάρα πολλές φορές την κλήση της συνάρτησης, αρκεί μέσα στο while να την εκχωρήσεις σε μια μεταβλητή και κατόπιν να χρησιμοποιείς αυτή τη μεταβλητή για τους ελέγχους με if μέσα στο loop. Και τέλος, μέσα στο loop δεν χρειάζεται να ελέγχεις για όλες τις πιθανές τιμές επιστροφής, αλλά μόνο για αυτήν που σηματοδοτεί σφάλμα της συνάρτησης, δηλαδή το -1 σε αυτή την περίπτωση. Αν δεν επιστρέφει σφάλμα, τότε θα πρέπει να επιστρέφει έγκυρη θέση του πίνακα (για αυτό πρέπει να αφαιρέσεις το: return 3 μέσα στη συνάρτηση).
Την έγκυρη θέση που επιστρέφει (και θα την έχεις εκχωρήσει στην μεταβλητή που λέω παραπάνω) θα τη χρησιμοποιείς για να τυπώσεις το string που θέλεις.
Δες τον κώδικά μου παραπάνω και νομίζω θα γίνει πολύ πιο κατανοητό αυτό που δυσκολεύομαι να περιγράψω με λόγια.
Πείτε μου τι δεν καταλαβαίνετε, να το ξεκαθαρίσουμε πριν πάμε παρακάτω.