Вопрос № 80231: Здравствуйте уважаемые эксперты! У меня огромная прсьба, помогите пожалуйсто, я Паскаль немного изучала, но для того чтобы решить это задание мне нужно много времени, которого у меня совершенно нет, поэтому огромная просьба помогите!
требует...Вопрос № 80281: Помогите пожалуйста решить задачу. Дана строка символов S. Преобразовать строку, заменив в ней каждую из групп стоящих рядом точек одной точкой;...Вопрос № 80283: Помогите пожалуйста решить задачу. Составьте программу, проверяющую, является ли введенный символ буквой латинского алфавита или скобкой (учесть круглые,
фигурные и квадратные скобки)....
Вопрос № 80.231
Здравствуйте уважаемые эксперты! У меня огромная прсьба, помогите пожалуйсто, я Паскаль немного изучала, но для того чтобы решить это задание мне нужно много времени, которого у меня совершенно нет, поэтому огромная просьба помогите!
требуется разработать программу, выполняющую следующие действия:
1.Создание списка указанного типа.
2.Считывание списка из файла.
3.Операции со списками:
дополнение списка,
просмотр списка,
удаление элементов.
4.Сортировка структуры данных:
4.1. Сортировка массива с предварительным копированием данных из списка.
4.2. Сортировка списка.
5.Поиск элемента в списке или массиве.
6.Сохранение списка в файле.
Отвечает: 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