Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446
    penso che ci sono quasi, solo che ora il programma mi calcola l'indice più piccolo, ossia 0.
    codice:
    #include<stdio.h>
    
    #define N 10
    
    int main(void) {
        int v[N];
        int i, c, j;
    
        printf("Inserisci %d numeri:\n", N);
    
        for(i=0; i<N; i++) {
            scanf("%d", &v[i]);
        }
        for(i=0; i<N; i++) {
            if(v[j]<v[i+1]) {
                j=0;
            }
            for(j=i; j<N; j++) {
                    c=v[i];
                    v[i]=v[j];
                    v[j]=c;
            }
        }
            printf("%d ", v[i]);
            return 0;
    }
    Ultima modifica di fenics; 26-03-2014 a 11:26

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    La if va associata allo scambio. Sposta la if dove ci sono le istruzioni per lo scambio in quanto questo deve avvenire solo in base al risultato del confronto.

    E poi dai una controllata generale a tutti gli indici che usi (praticamente i e j) per essere sicuro che in nessun caso questi vadano oltre il valore di (N-1).

    Fai un controllo "su carta" dell'elaborazione partendo da un piccolo vettore di 3 elementi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446
    Ho apito, inoltre mi sono accorto che mancava una variabile in più, ossia un minimo che corrispondeva effettivamente al numro più piccolo. Cos' dovrebbe andare:
    codice:
    #include<stdio.h>
    
    #define N 10
    
    int main(void) {
        int v[N];
        int i, j, min, temp;
    
            printf("Inserisci %d numeri:\n", N);
    
        for(i=0; i<N; i++) {
            printf("%d) ", i);
            scanf("%d", &v[i]);
        }
        for(i=0; i<N; i++) {
                min=i;
        for(j=i+1; j<N; j++)
            if(v[j]<v[min])
            min=j;
        temp=v[min];
        v[min]=v[i];
        v[i]=temp;
    
        printf("%d ", v[j]);
        }
        getchar();
        return 0;
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    No. Per ordinare dei valori i minimi non c'entrano nulla ... era giusto il confronto precedente ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446
    eccoci, quasi ci siamo, funziona a metà, nel senso che mi stampa solo e soltanto il numero più piccolo, es. 3 2 1 5 6 4 8 7 9 il risultato è 1, che effettivamente è il numero più piccolo, ma non tuttiu gli altri.
    codice:
    #include<stdio.h>
    
    #define N 10
    
    int main(void) {
        int v[N];
        int i, c, j;
    
        printf("Inserisci %d numeri:\n", N);
    
        for(i=0; i<N-1; i++) {
            scanf("%d", &v[i]);
        }
        for(i=0; i<N-1; i++) {
            j=0;
    
            for(j=i; j<N-1; j++) {
                if(v[j]<v[i+1]) {
                    c=v[i+1];
                    v[i+1]=v[j];
                    v[j]=c;
                    }
            }
        }
                    printf("\n%d ", v[i]);
    
    
                    return 0;
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    La j=0 non serve dato che subito dopo la for assegna un nuovo valore alla j ...

    E vedi un solo valore dato che l'ultima printf non sta in un suo ciclo ... (questo dovrebbe esserti chiaro ... se una printf non la metti in un ciclo come fa a visualizzarti tutti i valori?)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446
    Ok ce l'ho fatta finalmente: e penso che stavolta abbia seguito tutti i tuoi consigli oregon e sia apposto... giusto?!?
    codice:
    #include<stdio.h>
    
    #define N 10
    
    int main(void) {
        int v[N];
        int i, c, j;
    
        printf("Inserisci %d numeri:\n", N);
    
        for(i=0; i<N-1; i++) {
            scanf("%d", &v[i]);
        }
        for(i=0; i<N-1; i++) {
    
            for(j=i; j<N-1; j++) {
                if(v[j]<v[i]) {
                    c=v[j];
                    v[j]=v[i];
                    v[i]=c;
                    }
    }
                    printf("\n%d ", v[i]);
    }
    
    
                    return 0;
    }

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Se vuoi imparare, dovresti essere tu a dirci che va bene. Hai provato a compilarlo? Hai errori? Se non ne hai, hai provato ad eseguirlo? I risultati sono corretti?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446
    si si tutto ok. funziona. Cmnq vorrei dirvi... perchè non venite voi o uno di voi ad insegnare alla mia scuola?? Vi ci metto una parola buona io dai

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Forse perché lavoriamo da altre parti ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.