Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643

    [c] problema stupidissimo...helpme

    Devo scrivere un programma che chiede 15 interi e visualizza il primo ed il secondo numero maggiori a non mi funziona...cioè il primo amggiore lo dà correttamente ma il secondo no...il codice è questo:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
        int contatore, corrente;
        int maggiore1 = 0;
        int maggiore2 = 0;
        
        printf("Inserire il primo valore:\n");
        scanf("%d", &corrente);
        maggiore1 = corrente;    // Il primo valore immesso è anche il maggiore
        
        for(contatore=1; contatore<15; contatore++){
            printf("Inserire un altro valore:\n");
            scanf("%d", &corrente);
            
            if(corrente > maggiore1)
                    maggiore1 = corrente;
            else if(corrente < maggiore1 && corrente > maggiore2)
                    maggiore2 = corrente;
                    
        }
        
        printf("Maggiore1: %d", maggiore1);
        printf("Maggiore2: %d", maggiore2);
        
        system("PAUSE");
        return 0;
    }
    come mak non và?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385
    ciao, questo sabato ho un esame di informatica al politecnico, sono al primo anno, quindi ho cercato con piacere di risolvere il tuo problema

    Il difetto risiede nel fatto che quando si inserisce un valore maggiore di tutti gli altri, si perde quello che PRIMA era il valore massimo e che quindi dovrebbe diventare il secondo maggiore. Prova così, dovrebbe funzionare:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
        int contatore, corrente;
        int maggiore1 = 0;
        int maggiore2 = 0;
        
        printf("Inserire il primo valore:\n");
        scanf("%d", &corrente);
        maggiore1 = corrente;    // Il primo valore immesso è anche il maggiore
        
        for(contatore=1; contatore<6; contatore++){
            printf("Inserire un altro valore:\n");
            scanf("%d", &corrente);
            
            if(corrente > maggiore1){
                    maggiore2 = maggiore1;
                    maggiore1 = corrente;
                    
            }else if(corrente < maggiore1 && corrente > maggiore2)
                    maggiore2 = corrente;
                    
        }
        
        printf("Maggiore1: %d", maggiore1);
        printf("Maggiore2: %d", maggiore2);
        
        
        system("PAUSE");
        return 0;
    }

    Fammi sapere, ciao

  3. #3
    Modificare l'istruzione :
    codice:
    else if(corrente < maggiore1 && corrente > maggiore2)
    con :
    codice:
    else if(corrente > maggiore2)
    se si vuole tenere conto degli input uguali

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.