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?