Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C] Consiglio su programma e miglioramento (semplice)

    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Che intendi con "più semplice"? Sicuramente c'è da eliminare quell'else con il corpo definito vuoto ( else { } ) che non ha senso, poi puoi apportare una semplice miglioria ma si tratta davvero di volerla andare a cercare... se questa condizione risulta vera

    codice:
    if((num1<gamma) && (gamma<num2))
    quella successiva

    codice:
    if(gamma<num1)
    risulta necessariamente falsa, quindi nel caso la prima risulti vera è inutile andare a testare anche la seconda, quindi io modificherei con

    codice:
            if((num1 < gamma) && (gamma < num2)) 
                    num2 = gamma;
            else if (gamma < num1) 
                    num1 = gamma;
    ma è proprio per essere noiosi :D

    Per il resto, hai seguito semplicemente i passi della traccia, quindi cosa dovrebbe esserci da modificare?
    every day above ground is a good one

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.