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)
Secondo voi posso apportare modifiche in modo che l'algoritmo diventi più semplice?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; }

Rispondi quotando