Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 334
от 04.04.2007, 05:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 236, Экспертов: 53
В номере:Вопросов: 3, Ответов: 5


Вопрос № 80231: Здравствуйте уважаемые эксперты! У меня огромная прсьба, помогите пожалуйсто, я Паскаль немного изучала, но для того чтобы решить это задание мне нужно много времени, которого у меня совершенно нет, поэтому огромная просьба помогите! требует...
Вопрос № 80281: Помогите пожалуйста решить задачу. Дана строка символов S. Преобразовать строку, заменив в ней каждую из групп стоящих рядом точек одной точкой;...
Вопрос № 80283: Помогите пожалуйста решить задачу. Составьте программу, проверяющую, является ли введенный символ буквой латинского алфавита или скобкой (учесть круглые, фигурные и квадратные скобки)....

Вопрос № 80.231
Здравствуйте уважаемые эксперты! У меня огромная прсьба, помогите пожалуйсто, я Паскаль немного изучала, но для того чтобы решить это задание мне нужно много времени, которого у меня совершенно нет, поэтому огромная просьба помогите!

требуется разработать программу, выполняющую следующие действия:
1.Создание списка указанного типа.
2.Считывание списка из файла.
3.Операции со списками:
дополнение списка,
просмотр списка,
удаление элементов.
4.Сортировка структуры данных:
4.1. Сортировка массива с предварительным копированием данных из списка.
4.2. Сортировка списка.
5.Поиск элемента в списке или массиве.
6.Сохранение списка в файле.

Приложение:

Отправлен: 29.03.2007, 10:43
Вопрос задал: Урамаева Лилия Маратовна (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Verena
Здравствуйте, Урамаева Лилия Маратовна!
Время - это вообще-то всеобщая проблема... Могу только предложить несколько функций для работы с двунаправленными списками - добавление элементов в разные места списка, удаление элементов. В алгоритмах ничего сложного, главное не терять ссылки. first - ссылка на первый элемент
Алгоритмы сортировки можно посмотреть здесь http://tpascal.h15.ru/alg2.html
Работа с файлами - http://declic.narod.ru/ossio/files/book/part_6.html
Работа со списками - http://declic.narod.ru/ossio/files/book/part_7_2.html

Приложение:

---------
Эта история - не для истории, понимаешь?

Ответ отправила: Verena (статус: 7-ой класс)
Ответ отправлен: 29.03.2007, 16:32
Оценка за ответ: 5
Комментарий оценки:
Благодарю, за помощ!


Вопрос № 80.281
Помогите пожалуйста решить задачу. Дана строка символов S. Преобразовать строку, заменив в ней каждую из групп стоящих рядом точек одной точкой;
Отправлен: 29.03.2007, 16:20
Вопрос задал: SashaFAN (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Verena
Здравствуйте, SashaFAN!

Это можно сделать так

i:=1;
While i<=length (a) do {цикл до конца строки}
Begin
ns:=0; t1:=a; {начало точек, сохранённая исходная строка}
if a[i]='.' then ns:=i; {если текущий символ строки - точка, запоминаем начало}
If ns<>0 then {если начало есть}
Begin
For j:=ns to length (a) do
If (a[j]<>'.') or (j=length (a)) then
Begin
If (j=length (a)) and (a[j]='.') then ks:=j else ks:=j-1; {ищем конец}
break;
end;
if (ks-ns+1>1) then {если "длина" точек больше одного, удаляем все точки и вставляем одну}
begin
delete (a, ns, (ks-ns+1));
insert ('.', a, ns);
end;
End;
If a=t1 then inc (i); {если строка не менялась, увеличиваем итерацию}
End;
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 7-ой класс)
Ответ отправлен: 29.03.2007, 16:59

Отвечает: Gh0stik
Здравствуйте, SashaFAN!

Предлагаю еще один вариант решения задачи, на мой взгляд более рациональный.

Код:
var s:string;
k,i:integer;
begin
write('Input text: ');read(s); {вводим строку для обработки}
writeln('Old: ',s);
while pos('..',s)<>0 do {пока есть две рядом стоящие точки}
begin
i:=pos('..',s); {находим их позицию}
k:=0;
while (s[i]='.') and (i<=length(s)) do {считаем количество точек}
begin inc(k);inc(i); end;
delete(s,pos('..',s),k-1); {удалем посчитанные точки, при этом оставляем только одну }
end;
writeln('New: ',s);
readln;readln;
end.


Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 29.03.2007, 19:11


Вопрос № 80.283
Помогите пожалуйста решить задачу. Составьте программу, проверяющую, является ли введенный символ буквой латинского алфавита или скобкой (учесть круглые,
фигурные и квадратные скобки).
Отправлен: 29.03.2007, 16:22
Вопрос задал: SashaFAN (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, SashaFAN!

Такие примеры лучше решать с помощью множеств, просто проверяем является ли символ элементом множества и все.

Вот код Вашей программы (разобраться я думаю будет не сложно...):
const lat=['A'..'Z','a'..'z'];
skobka=['[',']','(',')','{','}'];
var c:char;
begin
write('Input symbol: ');read(c);
if c in lat then write('latin bukva')
else if c in skobka then write('skobka')
else writeln('ne bukva i ne skobka!!!');
end.


Good Luck!!!

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 29.03.2007, 17:23

Отвечает: Verena
Здравствуйте, SashaFAN!
А в чём затруднение? Может, надо было сделать каким-то особенным способом? Могу предложить, например, так

var c: char;
begin
read (c);
if ((ord (c)>64) and (ord (c)<91)) or ((ord (c)>96) and (ord (c)<123)) {по кодам символов - латинских букв (строчных и заглавных): ord возвращает код символа}
then writeln ('Bukva')
else
case c of
'[', ']', '{', '}', '(', ')': writeln ('Skobka');
else writeln ('Ni to, ni drugoe');
end;
end.
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 7-ой класс)
Ответ отправлен: 29.03.2007, 17:24


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.46 от 18.03.2007
Яндекс Rambler's Top100

В избранное