Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

String->integer   Найти похожие ветки 

 
copy   (2005-11-02 18:09) [0]

Прошу помощи в решении следующей задачи:

Дана строка с целыми числами записанными через пробел (например: 1 0 3 22 1 4 5 13 6 1 7)
Также  задано некое число P, смысл в том, чтобы числа меньшие P преобразовать из строкового типа в числовой и переписать их из строки в целочисленный массив.


 
Jeer ©   (2005-11-02 18:13) [1]

-парсинг строки
-преобразование в целый тип
-сравнение и отбор в массив


 
copy   (2005-11-02 18:20) [2]


> -парсинг строки
> -преобразование в целый тип
> -сравнение и отбор в массив


Не могли бы вы написать код ?


 
Плохиш ©   (2005-11-02 18:21) [3]

200 Euro


 
copy   (2005-11-02 18:32) [4]

???


 
Jeer ©   (2005-11-02 18:44) [5]

Больше - не возбраняется.


 
Fay ©   (2005-11-02 18:44) [6]

2 copy   (02.11.05 18:32) [4]
>> ???
Ладно, назовите сумму, прощание с которой не повредит вашей психике.


 
Jeer ©   (2005-11-02 18:49) [7]

Он уже назвал - трехзначное число, цифры - на наше усмотрение.
Единицы не указаны, значит тоже наши.:)


 
copy   (2005-11-02 18:54) [8]

Я написал, что прошу помощи, а не покупаю её.


 
umbra ©   (2005-11-02 19:03) [9]

а в чем помощь то нужна? конкретнее, чем в [0]. Есть какой-то код?


 
default ©   (2005-11-02 19:05) [10]

copy   (02.11.05 18:54) [8]
создав ветку ты почти что дал заявку о покупке интеллектуальной собственности в виде решения задачи
тут есть два варианта: либо указанное выше либо попытаться что-то сделать самому и ждать с трепетом подсказки от других


 
copy   (2005-11-02 19:06) [11]


> а в чем помощь то нужна? конкретнее, чем в [0]. Есть какой-
> то код?

Помощь нужна в реализации данной задачи.


 
Sergey Masloff   (2005-11-02 19:09) [12]

copy   (02.11.05 19:06) [11]
>Помощь нужна в реализации данной задачи.
Еще раз. Если автором предпринимались попытки решить но есть затруднения в конкретных моментах - пожалуйста конкретный вопрос. Если все что соизволил сделать проситель это собственно попросить - тогда цену назвали. Не дураки ж все тут сидят.


 
copy   (2005-11-02 19:12) [13]

Я избавлялся от пробелов, переписывая все числа в новую строку, после с помощью функции Val преобразовывал их в число и отбирал в массив, но этот прием не срабатывает для числе больше 9.


 
Fay ©   (2005-11-02 19:14) [14]

Один ничего не делает, а другие ему помогают 8)


 
ali_tash   (2005-11-02 19:21) [15]

Назови число Пи.


 
Baltika-33   (2005-11-02 19:22) [16]

s := "1 0 3 22 1 4 5 13 6 1 7";
P := 10;


Определи массив:
var
 DestArray: Array of Integer;


Необходимые перменные для цикла и поиска:
var
 i,pz,tmpI: Integer;
 TmpS: String;


Далее в цикле обрабатывай строку примерно так:

TmpS := Trim(s);

while Length(TmpS)>0 do
begin
 pz := Pos(" ",tmpS);
 if pz>0
   then tmpI := StrToInt(Copy(tmpS,1,pz-1))
   else
   begin
     tmpI := StrToInt(tmpS,1,pz-1);
     tmpS := "";
   end;
 if tmpI<P then
 begin
    SetLength(DestArray,Length(DestArray)+1);
    DestArray[High(DestArray)] := tmpI;
 end;
 Delete(tmpS,1,pz);
end;


 
Baltika-33   (2005-11-02 19:23) [17]


> Один ничего не делает, а другие ему помогают 8)


Не так.
Один халявщик, а остальные - болтуны.


 
Fay ©   (2005-11-02 19:32) [18]

2 Baltika-33   (02.11.05 19:23) [17]
[16] - не помощь, а медвежья услуга.


 
Baltika-33   (2005-11-02 19:38) [19]


> [16] - не помощь, а медвежья услуга.


Что тогда из себя остальные посты представляют?


 
Sergey Masloff   (2005-11-02 19:39) [20]

Baltika-33   (02.11.05 19:38) [19]
>Что тогда из себя остальные посты представляют?
Глумление. А они - истиная помощь ибо человек или возьмется за ум и начнет глумиться сам над подобными вопросами или... что тоже благо ;-))


 
Baltika-33   (2005-11-02 19:41) [21]


> Глумление.


Точное слово.

Слишком часто встречающееся.


 
Lexer ©   (2005-11-02 19:42) [22]

Copy, воспользуйся одноименной функцией? задача простая но развивает мышление у начинающих


 
copy   (2005-11-02 19:47) [23]

ТЕМА ЗАКРЫТА


 
Anatoly Podgoretsky ©   (2005-11-02 21:34) [24]

copy   (02.11.05 19:47) [23]
Ошибаешься


 
vrem   (2005-11-02 21:44) [25]

Может автор "Крутится внешним мотором"(с) :),
задали, а то накинулись все!


 
Johnmen ©   (2005-11-02 23:01) [26]

Хотелось бы услышать от болтуна Baltika-33, как он всё-таки видит решение проблемы "этот прием не срабатывает для числе больше 9".
Ведь вопрос в этом, а не в написании парсера, к тому же тормознутого....


 
SergP.   (2005-11-02 23:14) [27]


> Хотелось бы услышать от болтуна Baltika-33, как он всё-таки
> видит решение проблемы "этот прием не срабатывает для числе
> больше 9".


А что за проблема такая?


 
(+|-)?[0-9]   (2005-11-02 23:38) [28]

Простейший конечный автомат с двумя состояниями.

Автор сабжа, в поисковиках можешь по ключу "конечные автоматы" найти кучу интересной инфы по твоему вопросу и с примерами , и даже на Delphi, и даже выполняющие точно то, что тебе нужно. Но зато поймёшь, а не просто скопируешь:)


 
NORDmen ©   (2005-11-02 23:43) [29]

это элементарная задача.
стандартная для олимпиад, где все входные данные из текстового файла.
цикл по строке
mas:array[1..n] o integer;//ваш будуший массив
s:string//строка
begin
....
if strtoint(copy(s,1,pos(" ",s)-1))<p then begin
mas[j]:=strtoint(copy(s,1,pos(" ",s)-1));
inc(j);
end;//основная часть, ну цикл по строке и т.д.
...
//отрезаете от строки простмотренную часть и идете далее до тех пор пока строка жива

как реализовать в деталях придумайте сами


 
Baltika-33   (2005-11-02 23:44) [30]


> Ведь вопрос в этом, а не в написании парсера, к тому же
> тормознутого....


У Вас проблемы? Хотите поговорить об этом?
Могу помочь в написании нетормознутого, если удача в этом Вас покинула...


 
Kerk ©   (2005-11-02 23:45) [31]

NORDmen ©   (02.11.05 23:43) [29]
стандартная для олимпиад


Стандартная для тех ее участников, которые не умею функцией Read пользоваться :P


 
Экспериментатор   (2005-11-03 07:43) [32]

Используй RxLibrary, в частности модуль RXStrUtils
Небольшая вырезка:

function WordCount(const S: string; const WordDelims: TCharSet): Integer;
{ WordCount given a set of word delimiters, returns number of words in S. }

function WordPosition(const N: Integer; const S: string;
 const WordDelims: TCharSet): Integer;
{ Given a set of word delimiters, returns start position of N"th word in S. }

function ExtractWord(N: Integer; const S: string;
 const WordDelims: TCharSet): string;
function ExtractWordPos(N: Integer; const S: string;
 const WordDelims: TCharSet; var Pos: Integer): string;
function ExtractDelimited(N: Integer; const S: string;
 const Delims: TCharSet): string;
{ ExtractWord, ExtractWordPos and ExtractDelimited given a set of word
 delimiters, return the N"th word in S. }

function ExtractSubstr(const S: string; var Pos: Integer;
 const Delims: TCharSet): string;
{ ExtractSubstr given a set of word delimiters, returns the substring from S,
 that started from position Pos. }

function IsWordPresent(const W, S: string; const WordDelims: TCharSet): Boolean;
{ IsWordPresent given a set of word delimiters, returns True if word W is
 present in string S. }


 
Экспериментатор   (2005-11-03 07:47) [33]

И не надо изобретать всяких там парсеров, когда вот оно
WordCount - возвращает количество чисел в строке
WordDelims - это разделитель, в твоей строке это пробел
ExtractWord - возвращает число в указанной позиции

и т.д.
Используй на здоровье


 
SergP ©   (2005-11-03 08:11) [34]


> Экспериментатор   (03.11.05 07:43) [32]
> Используй RxLibrary, в частности модуль RXStrUtils



> Экспериментатор   (03.11.05 07:47) [33]
> И не надо изобретать всяких там парсеров, когда вот оно
>
> WordCount - возвращает количество чисел в строке
> WordDelims - это разделитель, в твоей строке это пробел
> ExtractWord - возвращает число в указанной позиции
>
> и т.д.
> Используй на здоровье


Гы... А зачем всякие левые библиотеки использовать, если можно стандартными воспользоваться:


...
with TStringList.Create do
  try
    Delimiter:=#32;
    DelimitedText:=S;
    SetLength(DestArray,Count);
    j:=0;
    for i:=0 to count-1 do
      begin
        destarray[j]:=strtointdef(strings[i],P);
        if destarray[j]<P then inc(j);
      end;
    SetLength(DestArray,j);
  finally
    free;
  end;
...


 
Экспериментатор   (2005-11-05 11:05) [35]


> SergP ©   (03.11.05 08:11) [34]
> Гы... А зачем всякие левые библиотеки использовать, если
> можно стандартными воспользоваться:


RX между прочим не левая библиотека.
Для той задачи которую нужно выполнить господину "Copy" она дредлагает достаточно удобные средства


 
SergP.   (2005-11-05 11:15) [36]


> RX между прочим не левая библиотека.


Для меня левое - это все кроме стандартного.
Это может быть даже что-то суперклассное, но не входящее в стандартную поставку...


 
Экспериментатор   (2005-11-05 13:48) [37]

Может оно так и есть, но если вам понадобится перевести N-ную подстроку в число то может лучше не изобретать велосипед.
RX Library - это притча во языцех, что называется MUST HAVE
У меня все.


 
Virgo_Style ©   (2005-11-05 14:02) [38]

Экспериментатор   (05.11.05 13:48) [37]
если вам понадобится перевести N-ную подстроку в число то может лучше не изобретать велосипед


Это точно... Вместо десятка строк лучше скачаем сторонний компонент...
Народ уже FindFirst-FindNext брезгует, компоненты для этого ищет...


 
Юрий Зотов ©   (2005-11-05 14:30) [39]

> Virgo_Style ©   (05.11.05 14:02) [38]
> Вместо десятка строк лучше скачаем сторонний компонент...

Уточнение - не компонент, а их библиотеку. Причем немалую...
:о)


 
Суслик ©   (2005-11-05 14:53) [40]

офигеть...
вот она - суть форумОв.



Страницы: 1 2 вся ветка

Текущий архив: 2005.11.27;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.043 c
2-1131732106
ANSH
2005-11-11 21:01
2005.11.27
программа с элементами webbrowzer-a


14-1131001203
__new
2005-11-03 10:00
2005.11.27
Посоветуйте бесплатный инсталятор


2-1131781771
lRunner
2005-11-12 10:49
2005.11.27
Как исправить крокозябры в Caption?


2-1131624216
Rolf
2005-11-10 15:03
2005.11.27
Расширение файла.


14-1130875980
x.pro
2005-11-01 23:13
2005.11.27
Подскажите, пожалуйста, какую-нибудь философскую фразу...