Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.02.2012, 17:59
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию как переставить циыры в массиве в соответствии с позицией цифры

есть переменная m:='261543';
и p[j]:='123456'; //позиции цифр массива m[i]
т.е берем первую цифру массива m[i] = цифра 2 массива p[i] то в массиве p[i] вместо цифры 2 пишем 1 (1-позиция цифры 2 в массиве m[i].
Только как это реализовать на языке программирования, я не знаю.

Смог найти только позицию цифры и переписать в массив
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
k,k2:string;
b:integer;
begin
k:=edit1.Text;
for i:=1 to length(k) do begin
k2:=k[i];
b:=Pos(k2,k);
Memo1.Lines.Append(inttostr(b));
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var j:integer;
begin
for j:=0 to memo1.Lines.Count do
p[j]:=strtoint(Memo1.Lines.Strings[j]);
end;

допустил опечатку в теме в слове цифры, жаль нельзя поправить

Последний раз редактировалось delphihelp, 23.02.2012 в 18:03.
Ответить с цитированием
  #2  
Старый 23.02.2012, 18:17
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Код:
var m,m1,p:string;
i,c:integer;
begin
m1:=p;
for i:=1 to length(m) do begin
c:=pos[m[i],p);
m1[c]:=inttostr(i);
end;
p:=m1;
end;
Ответить с цитированием
  #3  
Старый 23.02.2012, 18:45
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

спасибо, правда компилятор ругается на 2 ошибки:
Цитата:
[DCC Error] Unit1.pas(64): E2250 There is no overloaded version of 'Pos' that can be called with these arguments
в строке
Код:
c:=pos[m[i],p);
Цитата:
[DCC Error] Unit1.pas(65): E2010 Incompatible types: 'Char' and 'string'
в строке
Код:
m1[c]:=inttostr(i);

может я не туда вставил.

Код:
procedure TForm1.Button3Click(Sender: TObject);
var j:integer;
m,m1,p:string;
i,c:integer;
begin
for j:=0 to memo1.Lines.Count do
p:=Memo1.Lines.Strings[j];
m1:=p;
for i:=1 to length(m) do begin
c:=pos[m[i],p);
m1[c]:=inttostr(i);
end;
p:=m1;
end;
Ответить с цитированием
  #4  
Старый 23.02.2012, 19:07
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

А может потому что ты даже не внимательно соришь что там скобки не хватает ?
c:=pos([m[i],p);
Ответить с цитированием
  #5  
Старый 23.02.2012, 19:13
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Ну, делал на коленке. Вместо
Код:
m1[c]:=inttostr(i);
нужно
Код:
m1[c]:=inttostr(i)[1];//хм 
В pos[m[i],p); вместо квадратной скобки нужна круглая pos(m[i],p);

Кажись, не туда вставил. Процедура для уже готовых p='123456', и m='261543'. Результат в p. (p=316542)
Ответить с цитированием
  #6  
Старый 23.02.2012, 19:29
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

Да я сам делаю на коленке , вот и квадратную принял за круглую.
m1[c]:=inttostr(i)[1];//выдает ошибку access violation at address ... самая непонятная и страшная ошибка в мире
Ответить с цитированием
  #7  
Старый 23.02.2012, 19:54
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Как вариант

Последний раз редактировалось YVitaliy, 19.04.2012 в 00:35.
Ответить с цитированием
  #8  
Старый 23.02.2012, 20:01
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

Да я сам делаю на коленке , вот и квадратную принял за круглую.
m1[c]:=inttostr(i)[1];//выдает ошибку access violation at address ... самая непонятная и страшная ошибка в мире
Ответить с цитированием
  #9  
Старый 23.02.2012, 20:05
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

ООО , спасибо. Я даже не думал что программа будет такая короткая. Главное на словах получается реализовать, а в код превратить не получалось.
YVitaliy, спасибо большое.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter