[C]uscita da un ciclo

di il
1 risposte

[C]uscita da un ciclo

Salve a tutti, sto imparando il C e sto avendo difficoltà nel realizzare uno dei miei primi programmi.
Il codice dovrebbe permettere di inserire una serie di numeri e dare come output il massimo. Come condizione di uscita al ciclo richiede di premere invio.
Ecco il codice:

#include <stdio.h>

int main() {
	int n,max,cont; /* n=numero inserito(operazione di casting su i); max=vaore massimo; cont=contatore nel ciclo while*/
	char i; /*Carattere di input*/
	printf("Inserire i numeri di cui si vuole cacolare il massimo\n");
	i="a"; /*Inizializzazione di i con un carattere qualsiasi diverso da '\n'*/
	cont=0;
	while (i!="\n"){
		scanf("%c",&i);
			if(i!="f"){	n=(int)i;            /*istruzioni condizionali per trovare max, escludendo l'ultimo input i='\n'*/
						if(cont==0){max=n;}
						else if(n>max){max=n;}
			}
		cont++;
	}
	printf("Il massimo e' %d",max);
	return 0;
}
Il problema è che quando eseguo non mi fa uscire dal ciclo.probabilmente è un errore stupidissimo ma non riesco a trovarlo.
Spero mi possiate aiutare. Grazie in anticipo!

1 Risposte

  • Re: [C]uscita da un ciclo

    Prima di tutto devi ascoltare quello che ti dice il compilatore
    
    i = "a";
    
    è sbagliato: stai assegnando ad un carattere una stringa. I caratteri vanno messi fra apici semplici
    
    i = 'a';
    
    Stessa cosa per i confronti, quindi vanno corrette anche la condizione del while e dell'if.


    Il codice
    
    			if (cont == 0)
    			{
    				max = n;
    			}
    
    è superfluo: basta inizializzare max=0

    non so cosa tu pensi che faccia
    
    if (i != 'f')
    
    ... mi è del tutto oscuro

    in ultimo
    
    n=(int)i
    
    non fa assolutamente quello che tu pensi. Per trasformare una cifra ASCII in intero non basta castarla. Ci sono delle funzioni specifiche che lo fanno: atoi, strtol, etc...


    In ultimo il tuo approccio non è del tutto corretto, nel senso che così come lo stai pensando puoi aggiungere solamente numeri ad una cifra, ma non conoscendo il testo dell'esercizio non so se questo è accettabile oppure no.


    Dovresti avere tutte le info per correggere il tuo codice, nel caso di ulteriori problemi facci sapere
Devi accedere o registrarti per scrivere nel forum
1 risposte