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

    ordinamento alfabetico

    Ciao a tutti,
    chi mi aiuta?
    Ho creato una lista dive ogni nodo è rappresentato da un salto e ogni volta che ne inserisco uno nuovo viene messo in rodine crescente a seconda del numero (del saltatore).
    Ma se volessi invece metterli in ordine alfabetico della nazionalità (dove vengono espresse solo le
    prime tre lettere) come devo fare?..io l'ordinamento alfabetico proprio non riesco a capirlo

    ..chi mi da una mano? grazie!! Vi posto il codice

    codice:
     
    #include<iostream>
    #include<iomanip>
    
    using namespace std;
    
    const int VERO=1;
    const int FALSO=0;
    
    const int DIM=3;
    
    struct Salto
    
    {
    	int numero; //numero del giocatore
    	char nazione[DIM];
    	float distanza;
    	int giudizio;
    };
    
    struct Nodo
    {
    	Salto dati;
    	Nodo *nextptr;
    };
    
    //prototipo
    
    void cerca (int, Nodo *, int&, Nodo *&);
    
    void inserisci (Salto, Nodo *&);
    
    void stampa (Nodo *); //stampa tabella
    
    
    
    
    
    
    //MAIN
    
    int main ()
    
    {
    
    	const char INSERISCI='ì';
    	const char FINE='f';
    	char operazione;
    
    	Salto nuovosalto;
    
    	Nodo *tabella=0;
    
    	cout<<"SALTI DEL GIORNO"<<endl;
    	cout<<endl<<endl;
    
    	cout<<"che operazione vuoi fare?"<<endl;
    	cin>>operazione;
    	cout<<endl;
    
    	while (operazione!=FINE)
    	{
    		cout<<"inserisci il numero del giocatore"<<endl;
    		cin>>nuovosalto.numero;
    		cout<<endl;
    		cout<<"inserisci la nazionalita' del giocatore (le prime tre lettere)"<<endl;
    		cin>>nuovosalto.nazione;
    		cout<<endl;
    		cout<<"inserisci la distanza del salto"<<endl;
    		cin>>nuovosalto.distanza;
    		cout<<endl;
    		cout<<"inserisci il giudizio del salto"<<endl;
    		cin>>nuovosalto.giudizio;
    		cout<<endl;
    
    		inserisci (nuovosalto, tabella);
    		stampa (tabella);
    
    		cout<<"che operazione vuoi fare?"<<endl;
    	cin>>operazione;
    	cout<<endl;
    
    	}
    
    	return 0;
    
    }
    
    //FINE MAIN
    
    
    //DICHIARAZIONE DELLE FUNZIONI
    
    void cerca (int valore, Nodo *testa, int&esiste, Nodo *&pos)
    
    {
    	esiste=FALSO;
    
    	if ((testa==0) || (testa->dati.numero>valore))
    		pos=0;
    
    	else if (testa->dati.numero==valore)
    	{
    		esiste=VERO;
    		pos=0;
    
    	}
    
    	else
    	{
    		pos=testa;
    
    		int finito=FALSO;
    
    		while (finito==FALSO)
    
    		{
    			if (pos->nextptr==0)
    				finito=VERO;
    
    			else if ((pos->nextptr)->dati.numero==valore)
    
    			{
    				finito=VERO;
    				esiste=VERO;
    
    			}
    
    			else if ((pos->nextptr)->dati.numero>valore)
    
    				finito =VERO;
    
    			else 
    
    				pos=pos->nextptr;
    
    		}
    
    	}
    
    }
    
    void inserisci (Salto nuovosalto, Nodo *&testa)
    
    {
    	int esiste;
    	Nodo *pos;
    
    	cerca (nuovosalto.numero, testa, esiste, pos);
    
    	if (esiste==FALSO)
    
    	{cout<<"inserisci il nuovo salto"<<endl;
    
    		Nodo *temp;
    		temp=new Nodo;
    
    		if (pos==0)
    
    		{
    			temp->nextptr=testa;
    			testa=temp;
    
    		}
    
    		else 
    
    		{
    			temp->nextptr=pos->nextptr;
    		pos->nextptr=temp;
    
    	}
    
    	temp->dati=nuovosalto;
    
    	}
    
    }
    
    
    void stampa (Nodo *testa)
    
    {
    	Nodo *salt;
    
    	for(salt=testa; salt!=0; salt=salt->nextptr)
    
    	{	cout<<setw(5)<<salt->dati.numero<<setw(10)<<salt->dati.nazione<<setw(10)<<salt->dati.distanza
    	<<setw(10)<<salt->dati.giudizio<<endl;
    	}
    	cout<<endl;
    
    }

  2. #2
    l'ordinamento alfabetico si basa sull'uso della funzione

    strcmp(vettore1,vettore2)

    che restituisce un valore minore di zero se il primo vettore precede il secondo
    un valore maggiore di zero se il secondo precede il primo
    un valore uguale a zero se sono uguali

    ovviamente devi costruire una lista con dei test di controllo che verificano le condizioni dette

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.