[C] Trovare il minore tra gli interi

Pubblicità

jolly

Utente Attivo
Messaggi
110
Reazioni
4
Punteggio
38
Salve a tutti,ecco l'esercizio;Scrivete un programma che trovi il minore degli interi.Supponete che il primo valore letto specifichi il numero di quelli ancora da leggere.
Ecco come l'ho svolto.

Codice:
#include <stdio.h>
/* la funzione main è il punto d'inizio dell'esecuzione del programma */
int main ( void )
{
	int i,x,n,min=n; /* dichiarazioni variabili */

	printf( "Specifica quanti interi devono essere inseriti: " ); /* sollecita l'inserimento */
	scanf( "%d" , &x ); /* legge il valore e lo memorizza nella variabile x */

	/* inizio del ciclo for */
	for ( i=1; i <= x; i++ ) { /* il ciclo si ripete finche i diventa maggiore di x */
		scanf( "%d" , &n); /* legge il valore e lo memorizza nella variabile n */

		/* inizio del ciclo if */
		if (n < min ) { /* se n è minore di min */
			min = n; /* min assume il valore di n,in questo modo abbiamo il valore minore,l'obbiettivo dell'esercizio */
		} /*fine del ciclo if */

	} /* fine del ciclo for */

	printf( "Il minore è %d\n" ,min ); /* Stampa a schermo l'intero minore */
	
	return 0; /* indica che il programma è terminato con successo */

}/* fine della funione main */

Va bene come ho svolto l'esercizio?
Un piccolo dubbio che riguarda la struttura del codice,
Codice:
if (n < min )
deve stare allineato alla riga del for o va bene cosi?cioè
Codice:
/* inizio del ciclo for */
	for ( i=1; i <= x; i++ ) { /* il ciclo si ripete finche i diventa maggiore di x */
		scanf( "%d" , &n); /* legge il valore e lo memorizza nella variabile x */

		/* inizio del ciclo if */
		if (n < min ) { /* se n è minore di min */
			min = n; /* min assume il valore di n,in questo modo abbiamo il valore minore,l'obbiettivo dell'esercizio */
		} /*fine del ciclo if */

	} /* fine del ciclo for */
Oppure
Codice:
/* inizio del ciclo for */
	for ( i=1; i <= x; i++ ) { /* il ciclo si ripete finche i diventa maggiore di x */
		scanf( "%d" , &n); /* legge il valore e lo memorizza nella variabile x */

		/* inizio del ciclo if */
	if (n < min ) { /* se n è minore di min */
		min = n; /* min assume il valore di n,in questo modo abbiamo il valore minore,l'obbiettivo dell'esercizio */
	} /*fine del ciclo if */

	} /* fine del ciclo for */
 
Ultima modifica:
Hai fatto bene nel primo caso.
Non è una regola precisa ma è meglio quando vai a riprendere il codice. Puoi scrivere anche su una riga sola ma come vedi è un casino.

Codice:
/* inizio del ciclo for */     for ( i=1; i <= x; i++ ) { /* il ciclo si ripete finche i diventa maggiore di x */         scanf( "%d" , &n); /* legge il valore e lo memorizza nella variabile x */          /* inizio del ciclo if */         if (n < min ) { /* se n è minore di min */             min = n; /* min assume il valore di n,in questo modo abbiamo il valore minore,l'obbiettivo dell'esercizio */         } /*fine del ciclo if */      } /* fine del ciclo for */

Man mano che utilizzerai più if e cicli te ne renderai conto...Continua a scrivere in questo modo (tipo a scaletta).

La sintassi sembra corretta (Sul C sono anche io all'inizio :D).
 
Unica piccola nota: min inizializzalo quando hai inserito il primo numero, altrimenti assegni a min qualcosa di non inizializzato
(intendiamoci, sono pignolerie, ma è sempre meglio tenerne conto)
 
hai perfettamente ragione,perchè come ho fatto io min = n non ha alcun senso,perchè non ho ancora il valore di n... :sisi:
Non sono pignolerie anzi ti ringrazio per avermelo fatto notare :)
 
Figurati!!! piccola curiosità usi windows o linux per programmare? perchè se sei su linux e usi gcc nomefile.c per compilare,
puoi usare i flag -ANSI (compili tenendo conto dello standart ANSI) -Wall(notifica tutti i warning) -Wextra(notifica ANCORA più warning)...
Se non ottieni warning neanche così, il codice è praticamente perfetto (dal punto di vista sintattico)
 
uso ubuntu da qualche mesetto e come compilatore gcc,ah non lo sapevo grazie per il suggerimento quindi per compilare un sorgente dovrei fare gcc nomefile.c -ANSI -Wall -o nomefile.o?
 
Si esatto, la sintassi completa è gcc -ANSI -Wall -Wextra -o nomefile.o programma.c
se vuoi approfondire, da terminale lanci "man gcc" e trovi tutti i flag associati al comando gcc
 
Pubblicità
Pubblicità
Indietro
Top