Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Programmazione in c, ordinamento di una struttura

    Buonasera ragazzi,
    premetto che sono nuovo del forum e questo è il mio primo post qui. Volevo una mano per quanto riguarda questo programma che mi dovrebbe stampare a video i contatti in ordine alfabetico (cognome).Il problema che riscontro è dato dal fatto che mi vengono stampati caratteri a caso, ci sarà sicuramente qualcosa di sbagliato nel bubble sort.

    codice:
     
    #include <stdio.h>
    #include <string.h>
    typedef struct rubrica
    {
        char nome[12];
        char cognome[12];
        int numero[12];
    }contatto;
    
    main()
    {
        int i,j,m;
        printf("Quanti contatti vuoi inserire?:\t");
        scanf("%d",&m);
        contatto n[m];
        contatto f[m];
        char temp[m];
        int k;
        for(i=0;i<m;i++)
        {
            printf("Inserisci %d nome:\t",i+1);
            scanf("%s",n[i].nome);
            printf("Inserisci %d cognome:\t",i+1);
            scanf("%s",n[i].cognome);
            printf("Inserisci %d numero di telefono:\t",i+1);
            scanf("%d",&n[i].numero);
        }
        for(i=0;i<m;i++)
        {
            for(k=0;k<m-i-1;k++)
            {
                if((strcmp(n[i].cognome,n[i+1].cognome)>0))
                {
                    strcpy(temp[i],n[i].cognome);
                    strcpy(f[i].cognome,n[i].cognome);
                    strcpy(temp[i+1],f[i].cognome);
                }
            }
        }
        for(i=0;i<m;i++)
        {
            printf("%s\n",f[i].cognome);
        }
    }
    Grazie a chiunque mi risponderà.
    Ultima modifica di MItaly; 13-03-2016 a 19:32 Motivo: Tag CODE

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Hai usato temp[i] ma temp è un vettore di char (come cognome) e quindi devi scrivere

    strcpy(temp, n[i].cognome);

    e così per le altre strcpy.

    Occhio che così scambi solamente i cognomi e i dati nelle strutture si mischiano.
    Devi tenere conto che ogni elemento della struttra contiene diversi elementi (cognome, nome ...)

    P.S. Quando posti del codice usa i tag CODE e indentalo per capirlo meglio.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Innanzitutto grazie per avermi risposto. Si hai ragione, che sbadato. Ho provato a fare come mi hai detto tu ma la situazione non cambia....

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Non cambia anche perché non si capisce cosa tu stia facendo in

    codice:
    strcpy(temp,  n[i].cognome);
    strcpy(f[i].cognome, n[i].cognome);
    strcpy(temp[i+1], f[i].cognome);
    Perché usi il vettore f ? I dati sono tutti nel vettore n ... Non esistono dati nei cognomi in f ... Non capisco proprio cosa volevi fare...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Non sono molto esperto col c.... ho provato a fare di testa mia, sbagliando... credevo di poter portare nel vettore f i cognomi del vettore n in ordine alfabetico

    P.s.: Ho risolto facendo lo scambio sempre con il vettore n[i]

    Grazie.
    Ultima modifica di claudio96; 12-03-2016 a 21:10

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.