Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2009, 00:14   #1
RrR5
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 13
По умолчанию Pascal Множества, стек, списки, очередь.

Помогите пожалуйста, народ!
Срочно нужно.
(заранее спасибо)

Множества (сделать надо с помощью множеств):
1. Даны две строки. Из множества символов первой строки удалить символы содержащиеся во второй строке (процедурами).
2. Дан текст, состоящий из арифметических выражений и слов. Подсчитать количество арифметических выражений не содержащих переменных и функций.

Списки, стек, очередь:
1. Составить процедуру смены местами двух последовательных элементов списка (аргументы – указатели на начало, конец списка и на первый из меняемых элементов, результат – указатели на начало и конец нового списка). Опробовать работу процедуры, а затем с ее помощью упорядочить данный список методом «пузырька».
RrR5 вне форума Ответить с цитированием
Старый 26.01.2009, 01:02   #2
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию Очередь

Код:
program capta1n;
uses crt;
type

  link = ^linelink;
  linelink = record
              number : integer;
              next : link
             end;
var
 start, last, p, uk4 : link;

 procedure sort ( var uk1, ukp, uk : link );
 var
  uk2,uk3 : link;
 begin
   if (start<>nil) and (uk<>nil) then
   begin
     uk2:=start;
     while uk2^.next<>uk do uk2:=uk2^.next;
     if uk2^.next^.number > uk2^.next^.next^.number then
     begin
       uk2^.next:=uk^.next;
       uk3:=uk2^.next^.next;
       uk2^.next^.next:=uk;
       uk^.next:=uk3;
       uk:=uk2^.next
     end
   end
 end;
begin

  start:=nil;
  last:=nil;
  while readkey<>#27 do {ESCape}
   if start=nil then
   begin
     new(start);
     start^.number:=0;
     start^.next:=nil;
     last:=start;
     new(last^.next);
     last:=last^.next;
     readln (last^.number);
     last^.next:=nil
   end
   else
   begin
     new(last^.next);
     last:=last^.next;
     readln(last^.number);
     last^.next:=nil
   end;

   if start<>nil then
   begin
     new(last^.next);
     last:=last^.next;
     last^.number:=0;
     last^.next:=nil
   end;

   writeln;
   if start<>nil then
   begin
     uk4:=last;
     repeat
       p:=start^.next;
       while p^.next<>uk4 do
       begin
         sort (start,last,p);
         p:=p^.next
       end;
       uk4:=p
     until uk4=start^.next
   end;

   if start<>nil then
   begin
     uk4:=start^.next;
     while uk4<>last do
     begin
       writeln (uk4^.number);
       uk4:=uk4^.next
     end
   end;
   readln;

end.
capta1n вне форума Ответить с цитированием
Старый 26.01.2009, 13:29   #3
RrR5
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 13
По умолчанию

Цитата:
Множества (сделать надо с помощью множеств):
1. Даны две строки. Из множества символов первой строки удалить символы
содержащиеся во второй строке (процедурами).
Вот это нужно сделать с помощью одной или двух из этих процедур:

Цитата:
• ввода с клавиатуры числового множества
• ввода с клавиатуры числового массива
• вывода числового множества на экран
• вывода числового массива на экран
• вычисления количества элементов множества символов
• вычисления количества элементов числового множества
• ввода с клавиатуры множества символов
• вывода множества символов на экран
• вывода массива символов на экран
• перевода числового массива в числовое множество из тех же элементов
Помогите плз, я щас в универе уже просто.

Последний раз редактировалось RrR5; 26.01.2009 в 14:35.
RrR5 вне форума Ответить с цитированием
Старый 26.01.2009, 14:57   #4
RrR5
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 13
По умолчанию

Каким образом работает проверка?

Цитата:
procedure proverka(k:integer);
var i:integer;
begin
z:=0;
for i:=1 to N do begin
if (p^[i]=k) then z:=z+1;end;
write(' ',z); if z<min then min:=z;
if z>max then max:=z;
end;
RrR5 вне форума Ответить с цитированием
Старый 26.01.2009, 15:00   #5
RrR5
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 13
По умолчанию

И упорядочивание:

Цитата:
procedure poryadok;
var i,j:integer;
begin
for i:=1 to N do begin
for j:=N downto 1 do
begin
if p^[j-1]>p^[j] then
begin
x:=p^[j-1];
p^[j-1]:=p^[j];
p^[j]:=x;
end;
end;
RrR5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стек и очередь. (Delphi) Olgasato Помощь студентам 8 02.04.2010 08:08
Задача на очередь Freer Общие вопросы C/C++ 26 06.11.2008 01:14
очередь odi_noki Общие вопросы Delphi 3 24.10.2008 12:09
Очередь, нид хэлп Roman-S Общие вопросы C/C++ 1 15.03.2008 23:40