Ciao, devo creare un programmino in consolle in linguaggioC, vi pongo il quesito e la mia soluzione:
#Si sviluppi un programma in linguaggio C che, ricevendo in ingresso una sequenza di
lunghezza arbitraria di almeno due numeri interi diversi da zero, terminata da uno zero,
produca in uscita i due valori minimi letti in ingresso (escluso l’ultimo zero).
Ad esempio, ricevendo in ingresso la sequenza 7 2 19 4 45 3 7 9 3 0
produce in uscita 2 3
RISOLUZIONE PROPOSTA PER L'ESERCIZIO
1 Dichiarare num1, num2 in formato numero intero
2 Dichiarare scambio e gamma in formato numero intero
3 Acquisire il valore di num1 e num2
4 FUNZIONE SCAMBIO(num1, num2) //in questo modo sono sicuro che num1<num2
5 CICLO
6 Acquisire gamma
6.2 SE (gamma!=0) ALTRIMENTI
SE((num1<gamma) e (gamma<num2)) ALLORA num2 = gamma
SE(gamma<num1) ALLORA num1 = gamma
MENTRE(gamma!=0)
6 Scrivi(num1 e num2)
codice:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num1, num2;
int scambio, gamma;
printf("Inserisci un numero diverso da zero: ");
scanf("%d", &num1);
printf("Inserisci un numero diverso da zero: ");
scanf("%d", &num2);
/* Scambio */
if(num2<num1)
{
scambio = num1;
num1 = num2;
num2 = scambio;
}
/* Ciclo */
do
{
printf("Inserisci un numero: ");
scanf("%d", &gamma);
if(gamma!=0)
{
if((num1<gamma) && (gamma<num2))
num2 = gamma;
if(gamma<num1)
num1 = gamma;
}
else {}
} while(gamma!=0);
printf("Ecco i due numeri cercati: %d e %d \n", num1, num2);
system("PAUSE");
return 0;
}
Secondo voi posso apportare modifiche in modo che l'algoritmo diventi più semplice?