Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    9

    ordinamento bubblesort in C

    Qualcuno potrebbe dirmi cosa non funziona in questo ordinamento di un vettore?
    Appena cerco di eseguire una prova mi appare l'errore
    Lvalue required nel punto p=n;
    Se cancello questa riga invece mi stampa solo la prima parte del vettore quando ancora non è ordinato.
    Cosa sbaglio?




    //creazione valori vettore
    for(i=0;i<n;i++)
    v[i]=rand()%10;

    //stampa vettore
    for(i=0;i<n;i++)
    printf("%d\n", v[i]);

    //ordinamento bubblesort
    p=n;

    do{ k=0;
    for(i=0;i<n-1;i++)
    { if(v[i]>v[i+1])
    park=v[i];v[i]=v[i+1];v[i+1]=park;
    k=1;p=i+1;
    }
    n=p;
    }

    while(k==1);


    //stampa vettore
    for(i=0;i<n;i++)
    printf("%d\n", v[i]);

  2. #2
    a) Il codice postalo tutto altrimenti non si capisce come hai dichiarato p ed aiutarti viene assai male
    b)usa i tag code quando scrivi del codice altrimenti non te lo formatta-->è illegibile o quasi-->si rinuncia ad aiutarti
    Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    117
    ma tu modifichi n nell'ordinamento, è ovvio che non ti stampa il vettore, usa un'altra variabile...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    6
    Siccome manca della parte di codice ti posto il codice completo dell'ordinamento bubblesort...
    Spero ti sia di aiuto...

    codice:
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    #define N 10
    
    void bubble(int[]);
    
    void main(){
    
    	int vett[N],i;
    	srand((unsigned)time(NULL));
    	for(i=0;i<N;i++){
    		vett[i]=rand()%10+1;
    		printf(" vett[%d] = %d\n",i,vett[i]);
    	}
    	printf("\n\n");
    	bubble(vett);
    	for(i=0;i<N;i++)
    		printf(" vett[%d] = %d\n",i,vett[i]);
    	printf("\n\n ");
    }
    	
    
    void bubble(int vett[]){
    
    	int i,inf=-1,c,s;
    	do{
    		inf++;
    		s=0;
    		for(i=N-2;i>=inf;i--)
    			if(vett[i+1]<vett[i]){
    				c=vett[i];
    				vett[i]=vett[i+1];
    				vett[i+1]=c;
    				s=1;
    			}
    	}while(inf!=N-3 && s);
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    9
    purtroppo essendo una principiante in informatica e in C in particolare ho parecchi problemi anche nelle cose più banali.
    Ora provo ad applicare i vostri suggerimenti.
    Per ora grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    9

    altro problema ordinamento

    Come posso risolvere quest'altro problema?
    Io ci sto per rinunciare.


    Si consideri una matrice di interi S di dimensione Nx3 n cui la prima colonna riporta i numeri di matricola di N studenti e la seconda colonna il voto da essi riportato in un esame e la terza il codice dell’esame . Ad esempio :

    matr voto codice
    33869 30 2
    36567 26 2
    33869 25 1

    Nella prima colonna, compaiono piu’ volte. le matricole degli studenti che hanno sostenuto piu’ di un esame.
    Scrivere un programma che legga e visualizzi la matrice e successivamente effettui le seguenti operazioni :

    1) letto un numero di matricola, visualizzi la media dello studente che ha quella matricola oppure un messaggio se lo studente non ha sostenuto nessun esame.

    2) Visualizzi per ogni codice di esame la media riportata dagli studenti che lo hanno sostenuto.

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.