переобразование в цифры

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by байкал, 2 Feb 2008.

  1. байкал

    байкал New Member

    Joined:
    1 Aug 2007
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    переобразование в цифры (c++)

    Допустим у меня есть лист имен. Мне нужно для каждого имени создать уникальную цифру, ID. Как можно это сделать наиболее эффективно?
    Например,
    Code:
    int idEgor = computeID("Egor");
    int idPavel = computeID("Pavel");
     
    #1 байкал, 2 Feb 2008
    Last edited: 2 Feb 2008
  2. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Для первой записи - id = 1. При вносе всех последующих - max(id) + 1
     
  3. байкал

    байкал New Member

    Joined:
    1 Aug 2007
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    Спасибо. Проблема в том что лист читается из файла и возможны дубликаты.
     
  4. spider-intruder

    spider-intruder Elder - Старейшина

    Joined:
    9 Dec 2005
    Messages:
    700
    Likes Received:
    339
    Reputations:
    37
    Возьми Ascii код каждой буквы фамилии :) Будет что то типа

    фамилия Abcde код 6566676869

    Изврат зато примитив

    При повторении фамилии и цифра будет такой же )
     
    1 person likes this.
  5. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    а массив ?

    Users[1] = computeID("Egor");
    Users[2] = computeID("Pavel");

    или двумерный...
    Users[1,1] = "Name: Egor";
    Users[1,2] = computeID("Egor");
    Users[2,1] = "Name: Pavel";
    Users[2,2] = computeID("Pavel");
     
    #5 Jes, 2 Feb 2008
    Last edited: 2 Feb 2008
  6. Ni0x

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    Jes, о да, очень грамотно, а если 300 имен будет, ты тоже так заполнять будешь?
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    struct UID
      {
             char *name;
             unsigned short id;
      }*PUID;
    
    int main(int argc, char *argv[])
    {
      
      int i;
      struct UID uid;
      char *names[] = {"Egor", "Alex", "Mixail", "Sergey", "Igor"};
      srand(time());
      for(i = 0; i < 5; i++)
      {
            uid.name = names[i];
            uid.id = i + rand() % 10;
            printf("uid.name: %s\nuid.id: %d\n", uid.name, uid.id);
      }
      system("PAUSE");	
      return 0;
    }
    
     
  7. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    >>struct UID uid;
    Ni0x , да , это более грамотно
    , я просто предложил ...