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

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


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

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

Выпуск № 387
от 02.06.2007, 04:05

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


Вопрос № 88796: Уважаемые Эксперты!! Сколко времени тратик этот программа? Задача - http://diploboy.ifolder.ru/2148414 Ответ в приложении...
Вопрос № 88813: Уважаемые гуру! Я сам программирую на языках уже давно, но с динамико в Паскале еще не встречался ..... объясните пожалуйста что я делаю неправильно в следующем листинге из Паскаля ... program blin; uses crt; type detal=^trec; tre...
Вопрос № 88861: Здравствуйте, Эксперты! Помогите с задачей на Паскале: Дано натуральное число n, символы С1, С2...Сn. Группы символов, разделённые пробелами (одним или несколькими) и не содержащими пробелов внутри себя, будут называться <s>символами</s> <fon...

Вопрос № 88.796
Уважаемые Эксперты!!
Сколко времени тратик этот программа?

Задача - http://diploboy.ifolder.ru/2148414
Ответ в приложении

Приложение:

Отправлен: 27.05.2007, 14:36
Вопрос задал: Muhammedov Abdurohman (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Muhammedov Abdurohman!

Обратите внимание на функцию GetTime.
Вам ее нужно вызывать 2-жды в начале программы и в конце.
По разности данных (с учетом ограничений 23,59,59,99)
Вы получете рузультат
Удачи!
---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 27.05.2007, 15:17
Оценка за ответ: 5
Комментарий оценки:
Спасибо


Вопрос № 88.813
Уважаемые гуру! Я сам программирую на языках уже давно, но с динамико в Паскале еще не встречался ..... объясните пожалуйста что я делаю неправильно в следующем листинге из Паскаля ...
program blin;
uses crt;
type
detal=^trec;
trec=record
l: integer;
next: detal;
end;
var
s: detal;
p: detal;
first: detal;
begin
clrscr;
new(s);
first:=s;
s^.l:=1;
s:=s^.next;
s^.l:=2;
s:=s^.next;
s^.l:=3;
s:=s^.next;
s^.l:=4;
s:=s^.next;
s:=nil;

s:=first;
while (s <> nil) do
begin
writeln(s^.l);
s:=s^.next;
end;

s:=first;
new(p);
while (s <> nil) do
begin
p:=s;
s:=s^.next;
dispose(p);
end;

readln;
end.

Заранее благодарен ....
Отправлен: 27.05.2007, 16:12
Вопрос задал: Кутуков Антон Геннадьевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Verena
Здравствуйте, Кутуков Антон Геннадьевич!
Память нужно выделять под каждый элемент, а Вы выделяете только под один. Изменения в коде я пометила.

uses crt;
type
detal=^trec;
trec=record
l: integer;
next: detal;
end;
var
s: detal;
p: detal; i: integer;
first: detal;
begin
clrscr;
{Начало изменений}
new (first);
first^.l:=1;
first^.next:=nil;
s:= first;
for i:=2 to 4 do
begin
new (p);
p^.l:=i;
p^.next:= nil;
s^.next:= p;
s:= s^.next;
end;
{Конец изменений}
s:=first;
while (s <> nil) do
begin
writeln(s^.l);
s:=s^.next;
end;

s:=first;
new(p);
while (s <> nil) do
begin
p:=s;
s:=s^.next;
dispose(p);
end;

readln;
end.

---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 27.05.2007, 16:37

Отвечает: Вологин Всеволод Вячеславович
Здравствуйте, Кутуков Антон Геннадьевич!

Проанализируй эти процедуры.

Приведенный алгоритм оформим в виде процедуры (признаком окончания заполнения однонаправленного списка будем считать ввод числа 0):

Рассмотрим рекурсивную процедуру формирования однонаправленного списка, содержащую оператор условного перехода, одна ветвь которого выполняет действия, соответствующие обработке пустого списка, а другая ветвь обрабатывает информацию, содержащуюся в одиночном узле. Для обработки оставшейся части списка процедура вызывает сама себя.

Procedure Create_List_Re (var pList : PtrRec); {Построение списка}
var El : TypeElement;
Begin
Write ('Элемент ');
ReadLn (El);
If El <> 0
Then Begin
New (pList^.pNext);
pList^.pNext^.Element := El;
pList^.pNext^.pNext := Nil;
Create_List_Re (pList^.pNext);
End;
End;
Рассмотрим процедуру вывода элементов списка:

Procedure Print_List1 (pBegin : PtrRec);
var pAux : PtrRec; {текущий указатель}
Begin
If pBegin = Nil
Then WriteLn ('Список пуст!')
Else
Begin
pAux := pBegin; {Просмотр начнем с первого элемента}
While pAux <> Nil do {пока не достигнут конец списка}
Begin
Write (pAux^.Element :4); {выводим элемент}
pAux := pAux^.pNext; {переходим на следующий}
End
End;
WriteLn;
End;

Приведем рекурсивную процедуру очистки однонаправленного линейного списка:

Procedure Free_List (var pList: PtrRec);
Begin
If pList<>Nil
Then Begin
Free_List (pList^.pNext);
Dispose (pList);
End;
End;
---------
Это круто - машина состояний с бесконечным циклом
Ответ отправил: Вологин Всеволод Вячеславович (статус: 2-ой класс)
Ответ отправлен: 28.05.2007, 07:37


Вопрос № 88.861
Здравствуйте, Эксперты!
Помогите с задачей на Паскале:
Дано натуральное число n, символы С1, С2...Сn. Группы символов, разделённые пробелами (одним или несколькими) и не содержащими пробелов внутри себя, будут называться символами словами.
а) Подсчитать количество слов в данной последовательности.
б)Подсчитать кол-во букв в последнем слове данной последовательности.
в) Найти кол-во слов, начинающихся с буквы Б

Edited by Alexandre V. Tchamaev
Отправлен: 27.05.2007, 20:52
Вопрос задала: Иванова Наталья Сергеевна (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Вологин Всеволод Вячеславович
Здравствуйте, Иванова Наталья Сергеевна!

Эта программа считает за символы :
1. Пробел
2. BackSpase
3. Alt
и так далее

Program Symbol;
Uses Crt;
Var
St : String;
N,Count,i : Integer;
Ch : Char;
Flag : Boolean;
Begin
Clrscr;
Write('Введите n : ');
Readln(n);
Writeln('Введите по-символьно : ');
St := '';
Repeat
Ch:=Readkey;
St := St + Ch;
Write(ch);
Dec(n);
Until n<0;
Clrscr;
WriteLn('Вы ввели : ',st);
n := Length(st);
Repeat
Flag := True;
If pos(' ',st)<>0
Then
Begin
Delete(st,1,Pos(' ',st));
Flag := False;
End;
If St[Length(st)] = ' '
Then
Begin
Delete(st,1,Length(st));
Flag := False;
End;
Until Flag;
Count := 0;
For i:=1 to length(st) do
If St[i] = ' '
Then
Inc(Count);
WriteLn('Количество слов : ',count+1);
i:=n;
Count := 0;
While St[i] <> ' ' Do
Begin
Inc(Count);
Dec(i);
End;
WriteLn('Количество слов в последнем слове : ',count);
Count := 0;
For i:=1 to n-1 do
if (St[i] = ' ') And (St[i+1] = 'Б')
Then
Inc(Count);
WriteLn('Количество слов начинающихся с "Б" : ',count);
Readkey;
End.

---------
Это круто - машина состояний с бесконечным циклом
Ответ отправил: Вологин Всеволод Вячеславович (статус: 2-ой класс)
Ответ отправлен: 28.05.2007, 07:14


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное