Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   переобразование в цифры (https://forum.antichat.xyz/showthread.php?t=60742)

байкал 02.02.2008 05:31

переобразование в цифры (c++)
 
Допустим у меня есть лист имен. Мне нужно для каждого имени создать уникальную цифру, ID. Как можно это сделать наиболее эффективно?
Например,
Код:

int idEgor = computeID("Egor");
int idPavel = computeID("Pavel");


Joker-jar 02.02.2008 05:35

Для первой записи - id = 1. При вносе всех последующих - max(id) + 1

байкал 02.02.2008 05:47

Цитата:

Сообщение от Joker-jar
Для первой записи - id = 1. При вносе всех последующих - max(id) + 1

Спасибо. Проблема в том что лист читается из файла и возможны дубликаты.

spider-intruder 02.02.2008 13:46

Возьми Ascii код каждой буквы фамилии :-) Будет что то типа

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

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

При повторении фамилии и цифра будет такой же )

Jes 02.02.2008 14:14

а массив ?

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");

Ni0x 02.02.2008 17:53

Jes, о да, очень грамотно, а если 300 имен будет, ты тоже так заполнять будешь?
Код:

#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;
}


Jes 02.02.2008 17:58

>>struct UID uid;
Ni0x , да , это более грамотно
, я просто предложил ...


Время: 18:52