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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2011, 17:56   #1
Jene4ka
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 75
По умолчанию Выбрать все числа из строки

Здравствуйте!
Помогите,пожалуйста, найти ошибку.
Задача: дана строка с числами,разделенными пробелами. Нужно выбрать все числа и поместить их в массив. Вот мой код:
m-строка с числами
Код:
procedure Tbilet.Button4Click(Sender: TObject);
var i,j,k,t:integer;
a:array of string[50];
m,p:string;
begin
p:='';
j:=0;
for i:=0 to length(m)-1 do
begin
if m[i]<>' ' then p:=p+m[i];
if m[i]=' ' then
begin
a[j]:=p;
j:=j+1;
p:='';
end ;
if i=length(m) then
a[j]:=p; 
end;
Jene4ka вне форума Ответить с цитированием
Старый 16.03.2011, 18:09   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
for i:=1 to length(m) do //все таки это строкап!
begin
if m[i]in['0'..'9'] then
begin j:=i;a[x]:='';
while m[j]in ['0'..'9']begin

a[x]:=a[x]+m[j];
inc(j);
end;
inc(x);
@i^:=j;
end ;
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 16.03.2011, 18:11   #3
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

цикл
копируите в массив до первого пробела
удаляете до первого пробела вместе с первым пробелом
конец цикла
копируете первое число, удаляете, автоматически первым становица следующее число, и так до конца
если не понятно, поясню с кодом
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 16.03.2011, 18:16   #4
Jene4ka
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 75
По умолчанию

не поняла, а каким образом числа будут разделяться? нужно же получить числа по отдельности, а что будет,если пробел встретится?
Jene4ka вне форума Ответить с цитированием
Старый 16.03.2011, 18:18   #5
Jene4ka
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 75
По умолчанию

ArtGrek, логика понятна, а вот код не получается, уже все,что угодно пробовала - ошибка и всё тут((
если не сложно, подскажите, пожалуйста
Jene4ka вне форума Ответить с цитированием
Старый 16.03.2011, 18:26   #6
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Код:
procedure
var
  i: integer;
  str: string;
  mas: array[0..100] of integer;
begin
  str := '1 2 3 4 12 0 123 4';
  i := 0;
  repeat
    mas[i] := IntToStr(Copy(str, 1, Pos(' ',str)-1); //копируем в масив все до первого пробела, тоесть 1
    Delete(str, 1, Pos(' ',str)); // потом удаляем 1 и пробел после него, теперь первое число 2, и в следуюшем круге будет копироваца оно
    inc(i); // ивеличиваем порядковыи номер масива
  until Pos(' ', str) = 0; // цикл делаеца пока после всех удалении в строке не останеца пробелов, но останеца последнее число
  mas[i] := IntToStr(Copy(str, 1, Length(str)); // копируем последнее число
end;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 16.03.2011, 18:30   #7
Jene4ka
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 75
По умолчанию

спасибо большое!!))
Jene4ka вне форума Ответить с цитированием
Старый 17.03.2011, 07:13   #8
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Код:
procedure
var
  str: string;
  mas: array of integer;
begin
  str := '1 2 3 4 12 0 123 4';
  SetLength(mas,0);
  if str[length(str)]<>' ' then str:=str+' '; // чтобы на последнем числе не запнулось...
  while Pos(' ', str) > 0 do begin
    SetLength(mas,length(mas)+1);
    try
      mas[high(mas)] := IntToStr(Copy(str, 1, Pos(' ',str)-1);
      Delete(str, 1, Pos(' ',str));
    except
      showmessage('В строке присутствует не-число!');
      SetLength(mas,length(mas)-1);
    end;
  end;
end;
так будет слегка правильнее...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 17.03.2011 в 07:17.
Johnson вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбрать ВСЕ выделенные ячейки в StringGrid Os_Mary Компоненты Delphi 5 23.01.2011 18:21
в процедуре удалить строки, в которых все числа делят 240000 bananakilla Помощь студентам 0 12.12.2010 21:06
Как выбрать числа из тестовой строки ВАСЯ_____DFCZ Microsoft Office Excel 3 23.04.2010 23:47
вводим два числа, получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m Sparky Помощь студентам 2 22.11.2009 21:59
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49