Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.015 c
14-1130476574
JohnKorsh
2005-10-28 09:16
2005.11.27
Как работать с RxTrayIcon?


14-1130914514
КаПиБаРа
2005-11-02 09:55
2005.11.27
Практический вопрос


2-1131597121
Yus
2005-11-10 07:32
2005.11.27
Удалить директорию


2-1131626075
Тормаз
2005-11-10 15:34
2005.11.27
Подскажите запрос


8-1120642319
zvb
2005-07-06 13:31
2005.11.27
canvas.textout с форматированием





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский