Algoritmo per ordine alfabetico

di il
8 risposte

Algoritmo per ordine alfabetico

Salve!

stavo pensando di creare un algoritmo per sapere quale dei due argomenti (char*) sarà la parola che viene prima sul vocabolario. per fare questo però bisogna assegnare ad 'a' 1, a 'b' 2 etc. per mettere ordine, non si puà fare 'a' > 'b'.stavo pensando: se facessi una cosa del genere funzionerebbe?

char maggiore(char a, char b)
{
  int A=(int)a, B=(int)b;
  int C=0;
  if(A>B) return b;
  else if(B>A) return a;
}

8 Risposte

  • Re: Algoritmo per ordine alfabetico

    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    int main()
    {
    system("cls");
      char a,b;
    cout<<"inserire due lettere"<<endl;
    
     cin>>a>>b;
    
     system("cls");
    
      if (a>b)
       {
         cout<<"la seconda lettera e' quella che viene prima"<<endl;
       }
    
       else
       {
         cout<<"la prima lettera e' quella che viene prima"<<endl;
       }
    
       system("pause");
       return main();
    }
    
    senza fare conversioni da char a int
  • Re: Algoritmo per ordine alfabetico

    Esatto: il C++ può prelevare il codice ascii dei singoli caratteri.
  • Re: Algoritmo per ordine alfabetico

    Quindi il concetto è giusto... ma perchè non riesco con questo algoritmo?
    #include <string.h>
    int max(int a1, int a2) {
      if(a1 > a2) return a1;
      if(a2 > a1) return a2;
      if(a1== a2) return a1;
    }
    char maxch(char a, char b)
    {
      int A=(int)a, B=(int)b;
      int C=0;
      if(A>B) return b;
      else if(B>A) return a;
      else if(B==A) return '0';
    }
    char *maxstr(char a[50], char b[50]) {
      char *ret;
      int i = 0;
      while(i <= max(strlen(a), strlen(b)) {   /* il compilatore trova un'errore qui */
       if(maggiore(a[i], b[i]) == a[i]) ret = a;
       if(maggiore(a[i], b[i]) == b[i]) ret = b;
       i++;
      }
      return ret;
    }
  • Re: Algoritmo per ordine alfabetico

    Che errore ti da?
  • Re: Algoritmo per ordine alfabetico

    Trovato devi chiudere un altra parentesi xD

    while(i <= max(strlen(a), strlen(b)))

  • Re: Algoritmo per ordine alfabetico

    Row 18: syntax error before '{' token
  • Re: Algoritmo per ordine alfabetico

    Grazie... era così semplice
  • Re: Algoritmo per ordine alfabetico

    Tutto ciò che vuoi fare è già stato creato e messo a disposizione per te nelle classi STL del C++.
    Guarda la funzione lexicographical_compare:
    http://www.cplusplus.com/reference/algorithm/lexicographical_compare/

    Fa l'ordinamento secondo l'alfabeto.
Devi accedere o registrarti per scrivere nel forum
8 risposte