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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2009, 21:39   #1
V@mpir
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 54
По умолчанию Нахождение позиции

Цель: найти номер позиции заданного числа в данной последовательности
Цитата:
begin
AssignFile(f,'input.in');
reset(f);
while not Eof(f)do
begin
readln(k);
posl:='1 2 3 2 3 4 3 4 5 4 5 6 5 6 7';
s:=inttostr(k);
n:=pos(s,posl);

end;
writeln(n);
{ TODO -oUser -cConsole Main : Insert code here }
end.
Результата нет!
V@mpir вне форума Ответить с цитированием
Старый 15.10.2009, 21:41   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
n:=pos(s,posl);
Поменяйте местами. posl и s
и writeln поставьте выше на строку. (поменять местами с end
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 15.10.2009, 21:54   #3
V@mpir
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 54
По умолчанию

Спасибо! Но это не дало результата,
Цитата:
Поменяйте местами. posl и s
мне наоборот надо найти некое число (k) в последовательности Posl
V@mpir вне форума Ответить с цитированием
Старый 15.10.2009, 22:08   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

сначала вы пишите
Цитата:
найти номер позиции заданного числа в данной последовательности
потом
Цитата:
мне наоборот надо найти некое число (k) в последовательности
...вы определитесь, что же вы хотите?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.10.2009, 22:16   #5
V@mpir
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 54
По умолчанию

Найти номер позиции некого числа в данной последовательности.
Последовательность -
Цитата:
1 2 3 2 3 4 3 4 5 4 5 6 5 6 7
Число считывается из файла
V@mpir вне форума Ответить с цитированием
Старый 15.10.2009, 22:28   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
1 2 3 2 3 4 3 4 5 4 5 6 5 6 7
- дык, а если числа есть одинаковые, то какое вам должно выдать? первое найденное или последнее или все найденные?
вот у вас есть совпадающие 2 2 3 3 и т.д.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.10.2009, 22:42   #7
V@mpir
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 54
По умолчанию

Цитата:
дык, а если числа есть одинаковые, то какое вам должно выдать? первое найденное или последнее или все найденные?
вот у вас есть совпадающие 2 2 3 3 и т.д.
Первая позиция данного числа
V@mpir вне форума Ответить с цитированием
Старый 15.10.2009, 23:24   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

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

так: 1_2_3_4_6
найти тут число 4
итого, позиция = 4, а не 7. это?

если так, то
Код:
z:=0;

for i:=1 to pos(s,posl) do
  if posl[i]=' ' then inc(z);
 //caption:= inttostr(pos(s,posl)-z)
n:= pos(s,posl)-z;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 15.10.2009 в 23:32.
raxp вне форума Ответить с цитированием
Старый 16.10.2009, 15:55   #9
V@mpir
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 54
По умолчанию

Да, именно без пробелов, пример с 4 абсолютно верен её позиция 4. Но у меня всё равно не выводит нужный результат
Цитата:
var f:textfile;
n,k,z,i:integer;
s,posl:string;
begin
AssignFile(f,'input.txt');
reset(f);
while not Eof(f)do
readln(k);
posl:='1 2 3 2 3 4 3 4 5 4 5 6 5 6 7';
z:=0;
s:=inttostr(k);
begin
for i:=1 to pos(s,posl) do
if posl[i]=' ' then inc(z);
n:= pos(s,posl)-z;
writeln(n);
end;

{ TODO -oUser -cConsole Main : Insert code here }
end.
V@mpir вне форума Ответить с цитированием
Старый 16.10.2009, 16:19   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

вижу, ваша ошибка в использовании readln(), поправил ваш код...
Код:
const posl = '1 2 3 2 3 4 3 4 5 4 5 6 5 6 7';
var f: textfile;
    n,z,i: integer;
    s: string;
begin
 AssignFile(f,'input.txt');
 reset(f);
 while not Eof(f) do begin
  ReadLn(f, s);

  z:=0;
  for i:=1 to pos(s,posl) do
   if posl[i]=' ' then inc(z);
  n:= pos(s,posl)-z;
  writeln(n);
  //memo1.Lines.add(inttostr(n))
 end
end;
в приложении на делфях для примера, но вставьте процедуру в свой код
Вложения
Тип файла: zip poss.zip (201.2 Кб, 10 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 16.10.2009 в 16:24.
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Предотвращение отрицательной позиции. Alex Cones Общие вопросы Delphi 4 27.07.2009 13:43
Вывод строки с опред. позиции Rekky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 13.05.2009 10:29
Перезапись файла в текущей позиции Андрей= Общие вопросы Delphi 2 08.05.2008 17:19
Показать элемент по указанной позиции. Fuckin_Princess Помощь студентам 8 07.12.2007 12:07
Вычисления номера позиции Stelix Паскаль, Turbo Pascal, PascalABC.NET 3 03.12.2007 03:05