Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    17

    Stampare elemento Array

    Salve a tutti, devo realizzare una funzione che stampa il secondo intero più piccolo nell'array. La funzione deve anche segnalare errore nel caso non ci siano almeno due elementi diversi all'interno dell'array.


    Ho iniziato a svolgere la funzione riordinando l'array. Se gli interi sono diversi non ci sono problemi a stampare il secondo numero più piccolo perché basta stampare l'elemento di indice 1, ma come faccio a confrontarli e stampare il secondo più piccolo nel caso ci siano diversi elementi uguali?


    Per adesso ho fatto così:

    codice:
     void fun(int a[], int n) {
        int i, j;
        for (i=0; i<n; i++) {
            for (j=0; j<n-1-i; j++) {
                if (a[j]>a[j+1]) {
                    int tmp;
                    tmp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=tmp;
                }
            }
        }
    
    
        for (int y=0; y<n; y++) {
            cout << a[y];
        }
        cout << "\n";
    
    
        for (int p=1; p<n; p++) {
            if (a[p]==a[p+1]) {
                cout << a[p+2];
            }
            else if (a[p]!=a[p+1]) {
                cout << a[1];
            }
        }
    
    
    }

  2. #2
    È inutilmente inefficiente e complicato riordinare l'array (specie con il bubble sort), puoi fare tutto in una sola passata sull'array. Ragiona un po' su questo codice:
    codice:
    void fun(int a[], int n) {
        if (n==0) {
            cout<<"array vuoto!\n";
            return;
        }
        int f=a[0], s=a[0];
        for(int i=0; i<n; ++i) {
            if(a[i]<f) {
                s=f; f=a[i]
            } else if(a[i]<s && a[i]!=f) {
                s=a[i];
            }
        }
        if(f==s) {
            cout<<"non ci sono due elementi distinti";
        } else {
            cout<<s;
        }
    }
    Ultima modifica di MItaly; 10-06-2015 a 13:24 Motivo: Corretta condizione
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    17
    Questo codice stampa il secondo elemento più piccolo solo se tutti gli elementi sono distinti. Se si inseriscono 2 elementi uguali stampa "Non ci sono elementi distinti" nonostante ce ne siano.

  4. #4
    Sorry, mi ero perso un pezzo di condizione per strada... ora è corretto.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.