[C] Esercizio: indovina il numero (metodo binsearch)

di Anonimizzato22710 il
5 risposte
Posto che non ho mai programmato nè in C nè in nessun altro modo, all'università stiamo iniziando a programmare e volevo sapere come mai il mio algoritmo mi dà dei problemi.. Utilizzo Visual Studio come IDE che sarà presente anche all'esame. L'esercizio chiede :
? L'utente definisce un intervallo di ricerca [min max] e pensa un numero n compreso nell'intervallo;
? L'elaboratore dà il numero a metà tra min e max, poi chiede se è giusto e se non lo è chiede se è maggiore o minore.

Senza darmi il codice bello e pronto, altrimenti non ci capirei nulla.. Potreste aiutarmi a trovare l'errore?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//Compiler version gcc 6.3.0

int main()

{
	int minimo, massimo, numero, maggiore_minore, si_no, tentativi = 1;

	printf("Dammi un intervallo di ricerca e pensa un numero all'interno di tale intervallo: ");
	scanf("%d %d", &minimo, &massimo);

	numero = (minimo + massimo) / 2;

	printf("Hai pensato il numero %d giusto? (s/n)", numero);
	scanf("%d", &si_no); //Dopo questo mi mostra il printf("EVVIVA....")

	while (si_no == 'n')
	{
		
		printf("Il numero che hai pensato è maggiore (>) o minore (<) di %d? ", numero);
		scanf("%d", &maggiore_minore);
		tentativi++;

		if (maggiore_minore = '<')
			massimo = numero - 1;
		else
			minimo = numero + 1;
	}

	printf("EVVIVA! Ho indovinato in %d tentativi", tentativi);

return 0;
}

5 Risposte

  • Quale errore?
  • È messo come commento nel codice, dopo
    printf("Hai pensato il numero %d giusto? (s/n)", numero);
    scanf("%d", &si_no);
    mi mostra direttamente l'ultima istruzione
    printf("EVVIVA! Ho indovinato in %d tentativi", tentativi);
    e poi chiude
  • Si_no è una variabile intera non un carattere, tu la confronto con un carattere...
  • Allora devo dichiarare char si_no, poi scanf("%c", &si_no)
    E su while che condizione devo mettere? while (si_no == "n") oppure n va tra apici singoli?
  • Le costanti char si inseriscono tra caratteri singoli. Ma queste cose le dovresti studiare sui libri.

    Fai attenzione alla scanf di un char perché devi eliminare il carattere Invio dal buffer ... vedi altri thread in questo stesso forum
Devi accedere o registrarti per scrivere nel forum
5 risposte