Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    32

    Problema programmazione in c- buble sort

    Salve a tutti! da come avete potuto intuire dal titolo ho un problema con il buble sort in linguaggio C
    in pratica non mi ordina l'array! vi posto sotto l'algoritmo scritto da me Aiutatemi vi prego! xD


    #include <stdio.h>
    #include <stdio.h>


    int main () {
    int x[50];
    int i,n,j;
    int temp;

    printf("Di quanti valori e' composto l'array?\n");
    scanf("%d", &n);

    for (i=0; i<n; i++){
    printf("inserisci il %d valore dell'array:\n",i+1);
    scanf("%d", &x[i]);
    }

    printf("questo e' l'array: \n ");
    for (i=0; i<n; i++) {
    printf(" %d ", x[i]);
    }
    for (i=0; i<n-1; i++) {
    for(j=0;j<n-1-i;j++){

    if (x[j]>x[j+1]) {

    temp=x[j];
    x[j]=x[j+1];
    x[j+1]=temp;
    }


    }
    printf("questo e' l'array ordinato: \n ");
    for (i=0; i<n; i++) {
    printf(" %d \n", x[i]);
    }

    }
    system ("PAUSE");
    return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao, così funziona. Maggiore attenzione alle parentesi e alle indentazioni... guarda cosa comprendevano i tuoi cicli for per l'ordinamento: anche la stampa dell'array ordinato!

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main () {
        int x[50];
        int i,n,j;
        int temp;
    
    
        printf("Di quanti valori e' composto l'array?\n");
        scanf("%d", &n);
    
    
        for (i=0; i<n; i++) {
            printf("inserisci il %d valore dell'array:\n",i+1);
            scanf("%d", &x[i]);
        }
    
    
        printf("questo e' l'array: \n ");
        for (i=0; i<n; i++) {
            printf(" %d ", x[i]);
        }
        for (i=0; i<n-1; i++) {
            for(j=0; j<n-1-i; j++) {
                if (x[j]>x[j+1]) {
                    temp=x[j];
                    x[j]=x[j+1];
                    x[j+1]=temp;
                }
            }
        }
        printf("questo e' l'array ordinato: \n");
        for (i=0; i<n; i++) {
            printf(" %d \n", x[i]);
        }
        system ("PAUSE");
        return 0;
    }
    Ultima modifica di minomic; 19-12-2014 a 22:23

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    32
    Non ho capito la tua risposta :/

  4. #4
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Prima avevi scritto

    for (i=0; i<n-1; i++) {
    for(j=0;j<n-1-i;j++){

    if (x[j]>x[j+1]) {

    temp=x[j];
    x[j]=x[j+1];
    x[j+1]=temp;
    }


    }
    printf("questo e' l'array ordinato: \n ");
    for (i=0; i<n; i++) {
    printf(" %d \n", x[i]);
    }

    }

    Se aggiungi i tag CODE e lo indenti correttamente, vedi che risulta

    codice:
    
    
    codice:
    for (i=0; i<n-1; i++) {
        for(j=0; j<n-1-i; j++) {
            if (x[j]>x[j+1]) {
                temp=x[j];
                x[j]=x[j+1];
                x[j+1]=temp;
            }
        }
        printf("questo e' l'array ordinato: \n ");
        for (i=0; i<n; i++) {
            printf(" %d \n", x[i]);
        }
    }


    Cioè alla fine del ciclo for interno (quindi dopo una sola ripetizione del ciclo esterno) stampavi l'array "ordinato" e buonanotte. Invece no: i due cicli devono concludersi PRIMA della stampa dell'array. Questo a dimostrazione del fatto che essere ordinati è importante!
    Ultima modifica di minomic; 19-12-2014 a 23:07

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    32
    giusto che sbadato :/ Grazie mille!

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