Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Ordine Alfabetico

  1. #1

    Ordine Alfabetico

    Salve a tutti volevo sapere se sapete come si fa ad ordinare una lista caratterizzata da: 'cognome nome età' in base al cognome..ho usato l'algoritmo di ordinamento ma con le stringhe non mi riesce..metto il file formato .txt così potete dirmi dove sbaglio e come posso correggere ..grazie

    for(i=1; i < contalunni - 1; i++) //ordino la sequenza;
    {
    tempcongome=lista[i]; //variabile temporanea per il cognome;
    j=i-1;
    while((j>=0)&& (strcmp(lista[j].nomestud,tempanni.nomestud)>0))
    {

    lista[j+1] = lista[j]; //ordino la lista
    j=j-1;
    lista[j+1]=tempanni;
    }
    }

    COME SI FA?? boo

  2. #2
    Mancano tutte le dichiarazioni delle variabili e il linguaggio di riferimento, informazioni di cui non si può fare a meno.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Allora si tratta di aprire un file in cui ci sono i seguenti dati:COGNOME NOME ETà
    es: viola giovanni 5
    rosso simone 5
    verde matteo 7
    viola lucia 6
    arancione marco 6

    si chiede un programma che ordini nel seguente modo:

    i ragazzi che hanno 5 anni sono:
    rosso simone
    viola giovanni

    i ragazzi che hanno 6 anni sono:
    arancione marco
    viola lucia

    i ragazzi che hanno 7 anni sono:
    verde matteo

    FINE

    Essenzialmente mi interessa l'algoritmo di ordinamento delle stringhe.
    Per intero il programma è il seguente:
    NOTA: è inerente solo allìordinamento in ordine alfabetico

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>

    #define MAX 50 //numero max di partecipanti

    struct schedastud{
    char cognomestud[15];
    char nomestud[15];
    int annistud;
    };

    typedef struct schedastud studente;

    main()
    {
    int anni[3], i=0, j, k, contalunni=0;
    char nome[15], cognome[15];
    studente lista[MAX], tempanni;
    studente classifica[MAX];

    FILE *fpscheda;

    fpscheda=fopen("alunni.txt","r");
    {
    if (fpscheda==NULL)
    printf("Errore nell'apertura del FILE");
    else
    {
    fscanf (fpscheda,"%s %s %d", cognome, nome, &anni[i]);
    while ( !feof (fpscheda))
    {

    strcpy ( lista[i].cognomestud,cognome );
    strcpy ( lista[i].nomestud,nome );
    lista[i].annistud = anni[i];

    i++;
    contalunni++;

    fscanf (fpscheda ,"%s %s %d", cognome, nome, &anni[i]);

    }
    }
    }
    fclose ( fpscheda ); //chiusura FILE
    for(i=1;i<contalunni-1;i++) //ordino la sequenza;
    {
    tempanni=lista[i]; //variabile temporanea per la distanza;
    j=i-1;
    while ( (j>=0) && (strcmp (lista[j].nomestud,tempanni.nomestud)>0))
    {

    lista[j+1] = lista[j]; //ordino la lista
    j=j-1;
    lista[j+1]=tempanni;
    }
    }

    for(i=0;i<contalunni;i++)
    {
    printf ("%s %s %d",lista[i].cognomestud,lista[i].nomestud,lista[i].annistud);
    printf("\n");
    }


    system("pause");
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Dovresti inserire il codice tra i tag [ code ] e [ /code ] (senza spazi) altrimenti non si puo' leggere ...

    Inoltre dovresti precisare anche quale problema hai con quel codice ...
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.