Pascal: работа со строками и массивами

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Pascal: работа со строками и массивами

Хыиуду » 03 ноя 2005, 10:27

Простейший вариант, если нет проблем со временем:
for i:=N-1 downto 1 do
if N mod i=0 then break;
result:=i;

Nucleus » 10 июн 2005, 19:20

пиши все на форуме вдруг кому еще надо будет

Nucleus » 10 июн 2005, 19:18

тебе надо преобразовать массив чисел в текст IntToStr далее необходимо перебрать массив и сложить его компоненты ТЫ ДОГОНЯЕШЬ?
Example:
Massiv:= IntToStr(Chislo)
for count = 0(или 1 экспериментируй) to length(massiv) do
f:= f+ StrToInteger( Massiv[count])
вот и получишь на выходе сумму 15-> f будет равен 15 при условии что chislo = 12345
а на счет проверки деление с остатком или нет это где-то я на форуме видел тебе надо? - ищи!!! точняк эта тема гдето есть

Nucleus » 10 июн 2005, 19:12

Привет!
Я вроде как почти разобрался с файлами.....
СПАСИБО!
Еще хотел спросить тебя про такую задачку:
Дано натуральное число N.Найти наибольшее число M(M>1) на которое сумма цифр в цифровой записи числа N делится без остатка.Если такого числа нет то вывести 'net'.Пример N=12345,M=5.Сумма=15 делится на 5.

Заранее благодарен,
Mishania

Mishania » 25 май 2005, 14:16

Да со 2-м вопросом разобрался.

Nucleus » 25 май 2005, 00:06

Мишаня если надо то я могу выслать аську на мыло
ты как разобрался со 2 вопросом?

Nucleus » 24 май 2005, 22:53

К стате мишань мой адреc shutterman@mail.ru

Nucleus » 24 май 2005, 22:49

1 Открытие файла -> запись в переменную наприм. ХРЕНОТЕХТ
2 Перебрать переменную ф-й StrPos
эта ф-я ищет с определленной позиции символ
в переменной и возвращает его позицию относительно начала
переменной.
В нашем случае чтобы выделить слово из текста
мы должны отыскать пробел после него (слова),
а потом скопировать слово в массив (МАССИВ),
после этого удалить из переменной все до найденного пробела
(т.е. найденное слово), и искать дальше.
синтаксис смотри в делфе. Вот наприм
var
ХРЕНОТЕХТ: TEXT;
МАССИВ: array[100000(колич. слов)]: String[20(длина слова)]
ПОЗИЦИЯ,
СЧЕТЧИК: integer;

StrPos(' ', ХРЕНОТЕХТ, ПОЗИЦИЯ);
for i:= 0 to ПОЗИЦИЯ-1 do //-1 т.к. ПОЗИЦИЯ - указывает на поз. пробела!
МАССИВ[СЧЕТЧИК]:= МАССИВ[СЧЕТЧИК] + ХРЕНОТЕХТ;
inc(СЧЕТЧИК);
delete(0,ПОЗИЦИЯ,ХРЕНОТЕХТ) - удаляем слово которое записали в массив оно ведь не нужно уже и маятся меньше

Вот ядро цикла повторяй его пока не будет конец текста
про то когда конец текста не помню но вроде два символа сподряд
идут : #0#0 - точно не помню

3. Вот у тебя получилось:
МАССИВ[1]= Солёный
МАССИВ[2]= Рыжий
МАССИВ[3]= Алмаз
если сделать так МАССИВ[2,1] то должно быть "Р"
далее переводишь в ф-й CHR(TChar) - вроде она
в порядковый номер по алфавиту (незабывай что у компа алфавит около 255 символов прочитай где нибудь про это)
и упорядочиваешь как надо надеюсь ты разберешься

но есть более простой метод
использовать TStrings
ЛИСТИНГ: TStrings;
там инициализируешь его и все такое

далее его надо заполнить
for i:= 0 то СЧЕТЧИК do ЛИСТИНГ.ADD(МАССИВ)

а потом ЛИСТИНГ.SortList и там есть настройки сортировать по убыванию по возрастанию и т.д.

а лучше сразу в МЕМО или РИЧЕДИТ забодяж

......МЕМО.ЛИНЕС.АДД(МАССИВ).....

МЕМО.ЛИНЕС.СОРТИРОВАТЬЛИСТ

надеюсь ты понял и я не зря потратил 30 мин на написание

1

Mishania » 24 май 2005, 21:16

Да ладно спасибо и за это!
А ты может посмотришь вот такую задачу.Может ты ее решишь?

Дан файл содержащий текст на русском языке.Составить в алфавитном порядке список всех слов встречающихся в этом тексте.



Заранее благодарен!

Да кстати язык естественно Паскаль

Nucleus » 24 май 2005, 00:53

Mишаня мне пока некогда я диплом делаю,
ты поищи в инете поиск в массивах данных,
или поиск слова в строке и.т.д

Вернуться к началу