Array/bubble sort/ricerca binaria

di il
34 risposte

34 Risposte - Pagina 2

  • Re: Array/bubble sort/ricerca binaria

    Deve essere come part

    struct posizione temp;
  • Re: Array/bubble sort/ricerca binaria

    oregon ha scritto:


    Deve essere come part

    struct posizione temp;
    
    	struct posizione part[n_part];
    	struct posizione temp;
    
    cosi'? se è giusto poi mi da errore nel bubble, come devo modificarlo, o devo farne un altro solo per i nomi ma in questo caso in base a cosa lo riordino
  • Re: Array/bubble sort/ricerca binaria

    Ti stai perdendo in un bicchier d'acqua

    1) ha un VETTORE
    2) ogni elemento del vettore e' formato da una ""scatoletta"" (una struct) contenente DUE informazioni: nome e tempi
    3) ogni elemento del vettore/scatoletta ha una POSIZIONE (un indice, che nel nostro caso inizia da ZERO 0)
    4) ora devi ordinare il VETTORE in base ai tempi, cioe in base ad UNA delle due informazioni contenute nella scatoletta
    5) saltando i passaggi intermedi, diciamo che stai confrontando il tempo della scatoletta "i" con quello della scatoletta "j" e scopri che devi SCAMBIARLI

    OVVIAMENTE

    NON SCAMBI solo i tempi, DEVI SCAMBIARE l"ITERO CONTENUTO DELLE SCATOLETTE !!!!!!!!

    Cioe' SIA i tempi CHE i nomi.

    Ci sono n-mila modi per farlo. Fallo nel modo PIU' SEMPLICE:

    A) SCAMBI i TEMPI
    B) SCAMBI i NOMI

    6) dopo di che continui con il bubblesort.

    Fine
  • Re: Array/bubble sort/ricerca binaria

    Mostraci tutto il codice con le correzioni. Di quali errori parli?
  • Re: Array/bubble sort/ricerca binaria

    oregon ha scritto:


    Mostraci tutto il codice con le correzioni. Di quali errori parli?
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct posizione{
    	char nome[10];
    	int tempo;
    };
    
    int main(){
    	int n_part;
    	printf("Inserisci il numero di partecipanti:\n");
    	scanf("%d", &n_part);
    	struct posizione part[n_part];
    	int i, j, trovato, temp;
    	char cerca[20];
    	for(i=0; i<n_part; i++){
    		printf("Inserisci il nome del %d partecipante:\n", i+1);
    		scanf("%s", &part[i].nome);
    		printf("Inserisci il tempo di %s:\n", part[i].nome);
    		scanf("%d", &part[i].tempo);
    	}
    	for(i=0; i<n_part-1; i++){
            for(j=i+1; j<n_part; j++){
                if(part[i].tempo>part[j].tempo){
                    temp=part[i].tempo;
                    part[i].tempo=part[j].tempo;
                    part[j].tempo=temp;
                }
            }
        }
        printf(" \n");
    	for(i=0; i<n_part; i++){
        	printf("%s e' arrivato %d con un tempo di %d\n", part[i].nome, i+1, part[i].tempo);
    	}
    	printf("\t\tCLASSIFICA\t\t\n\n");
    	for(i=0; i<3; i++){
    	printf("\t%d Classificato\n\t%s\t%d'\n", i+1, part[i].nome, part[i].tempo);
    	}
    	printf("\nInserisci il nome del partecipante da cercare:\n");
    	scanf("%s", &cerca);
    	trovato=0;
    	for(j=0;j<n_part;j++){
    		if(strcmp(part[j].nome, cerca)==0) {
    			printf("\n Partecipante trovato in posizione %d.\n Nome: %s\n Tempo: %d\n",j+1,part[j].nome, part[j].tempo);
    			trovato=1;
    		}	
    	}
    	if (!trovato) 
    		printf("\nPartecipante non trovato.\n");
    	return 0;
    }
    Sono arrivato fino a qui, funziona tutto, tranne l'ordinamento dei nomi che non riesco a capire
  • Re: Array/bubble sort/ricerca binaria

    migliorabile ha scritto:


    Ti stai perdendo in un bichier d'acqua. Vabbe diciamo di birra, rossa, della Chimay

    1) ha un VETTORE
    2) ogni elemento del vettore e' formato da una ""scatoletta"" (una struct) contenente DUE informazioni: nome e tempi
    3) ogni elemento del vettore/scatoletta ha una POSIZIONE (un indice, che nel nostro caso inizia da ZERO 0)
    4) ora devi ordinare il VETTORE in base ai tempi, cioe in base ad UNA delle due informazioni contenute nella scatoletta
    5) saltando i passaggi intermedi, diciamo che stai confrontando il tempo della scatoletta "i" con quello della scatoletta "j" e scopri che devi SCAMBIARLI. Qui sta' la birra

    OVVIAMENTE

    NON SCAMBI solo i tempi, DEVI SCAMBIARE l"ITERO CONTENUTO DELLE SCATOLETTE !!!!!!!!

    Cioe SIA i tempi CHE i nomi.

    Ci sono n-mila modi per farlo. Fallo nel modo PIU' SEMPLICE:

    A) SCAMBI i TEMPI
    B) SCAMBI i NOMI

    6) dopo di che continui con il bubblesort.

    Fine della birra rossa.
    Bisogna passare ad una Scura, doppio malto
    E magari anche un bel piatto di patatine fritte
    Ho capito il ragionamento ma non riesco ad applicarlo
  • Re: Array/bubble sort/ricerca binaria

    Adesso lavori sulla struttura quindi [Code] temp=part[i]; part[i]=part[j]; part[j]=temp;
  • Re: Array/bubble sort/ricerca binaria

    oregon ha scritto:


    Adesso lavori sulla struttura quindi [Code] temp=part[i]; part[i]=part[j]; part[j]=temp;
    con la struttura sono riuscito ad arrivare fino a qui credo sia giusto [Code] temp=part[i]; part[i]=part[j]; part[j]=temp; Ma devo togliere il .tempo?
  • Re: Array/bubble sort/ricerca binaria

    Certo che è giusto, te lo sto suggerendo...
  • Re: Array/bubble sort/ricerca binaria

    oregon ha scritto:


    Certo che è giusto, te lo sto suggerendo...
    perfetto, mi manca solo il riordinamento dei nomi, non riesco a capire come
  • Re: Array/bubble sort/ricerca binaria

    Che vuoi dire? Non hai capito..
    Così riordini tempi e nomi contemporaneamente
  • Re: Array/bubble sort/ricerca binaria

    oregon ha scritto:


    Che vuoi dire? Non hai capito..
    Così riordini tempi e nomi contemporaneamente
    l'ho fatto ma mi dava errore adesso ti mando screen dell'errore
  • Re: Array/bubble sort/ricerca binaria

    oregon ha scritto:


    Che vuoi dire? Non hai capito..
    Così riordini tempi e nomi contemporaneamente
    stesso errore in riga 29 30 31 32
    Allegati:
    32318_60abe991b942ca37589bfea0a627cc5e.png
    32318_60abe991b942ca37589bfea0a627cc5e.png
  • Re: Array/bubble sort/ricerca binaria

    Non ti ho detto di cambiare la if
  • Re: Array/bubble sort/ricerca binaria

    oregon ha scritto:


    Non ti ho detto di cambiare la if
    ma anche c'ho che c'è dentro l'if lo lascio come prima o è quello che devo cambiare?
Devi accedere o registrarti per scrivere nel forum
34 risposte