Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2010, 20:30   #1
Irenka
Пользователь
 
Аватар для Irenka
 
Регистрация: 17.05.2010
Сообщений: 39
Восклицание функции перевода

Если из этого:
Код:
function PolibiusEncipher(toCode: string): string;
var
  i: integer;
  ix, jx: char;
  s: string;
begin
  s := '';
  for i := 1 to length(toCode) do begin
 
    for ix := 'A' to 'E' do
      for jx := 'A' to 'E' do
        if TPolibius[ix, jx] = toCode[ i ] then begin
          s := s + ix + jx; break;
        end;
 
  end;
  PolibiusEncipher := s
end;
получилось вот это:
Код:
void PolibiusEnc(char* str, char* str2){
	int i;
	int ix,jx;

	for(i=0;i<strlen(str);i++)
		for(ix=0; ix<5; ix++)
			for(jx=0; jx<5; jx++)
				if(str[i]==TPolibius[ix][jx])
				{
					char tmp[2]="";
					tmp[0]='1'+ix;
					strcat(str2,tmp);
					tmp[0]='1'+jx;
					strcat(str2,tmp);
					strcat(str2," ");

				}

}
То как из этого:
Код:
function PolibiusDecipher(toDecode: string): string;
var
  i: integer;
  s: string;
begin
  s := '';
  i := 1;
  while i <= length(toDecode) do begin
    s := s + TPolibius[toDecode[ i ], toDecode[succ(i)]];
    inc(i, 2);
  end;
  PolibiusDecipher := s
end;
получить правильное вот это:
Код:
void PolibiusDec(char* str, char* str2){
        int i;
        i=1;
        while (i<strlen(str))
        {
          str=str+TPolibius[str2[i]][str2[i+1]];
          i+=2;
        }
}
??
Как Ето реализовать ВЕРНО, а?
Irenka вне форума Ответить с цитированием
Старый 29.05.2010, 23:06   #2
Irenka
Пользователь
 
Аватар для Irenka
 
Регистрация: 17.05.2010
Сообщений: 39
По умолчанию

Пупсики, Вы все такие отзывчивые! Я просто поражаюсь))
Но ф-ция, вроде такова,
Код:
void PolibiusDec(char* str, char* str2){
	int i;

	i=0;
	while (i<strlen(str2))
	{
	  strncat(str,&TPolibius[str2[i]-'1'][str2[i+1]-'1'],1);
	  i+=3;
	}
}
Дя?
Irenka вне форума Ответить с цитированием
Старый 29.05.2010, 23:48   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Может использовать sprintf? )
Код:
sprintf(str, "%s%c", str, TPolibius[str2[i]-'1'][str2[i+1]-'1']);
не вчитывался, потому не уверен, то ли это, что вам нужно, но всё же ) Кстати, почему i+=3, а не 2?
netrino вне форума Ответить с цитированием
Старый 30.05.2010, 00:15   #4
Irenka
Пользователь
 
Аватар для Irenka
 
Регистрация: 17.05.2010
Сообщений: 39
По умолчанию

Все же +2. Раньше там должен был быть обязательным пробел)) Не, sprintf пока не хочу))
Irenka вне форума Ответить с цитированием
Старый 30.05.2010, 00:29   #5
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

Код:
void PolibiusDecipher(const char * in, char * out)
{
 while (*in)
 {
  *out++ = TPolibus[*in,in+1];
  in += 2;
 }
}
Не?
подпись
liljon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа перевода числа из 10 СС в 2 СС fs444 Общие вопросы C/C++ 12 25.02.2010 08:10
Трудности перевода Elidan Общие вопросы C/C++ 0 10.06.2009 01:49
ПОМОГИТЕ НАПИСАТЬ ПРОГРАММУ ПЕРЕВОДА ИЗ 10 сс в 8 сс cadilack Помощь студентам 3 28.05.2009 22:50
Трудности перевода Maks1978 Свободное общение 6 30.05.2008 12:55
проблема перевода (PChar и string) Fireleo Общие вопросы Delphi 4 29.07.2007 08:14