Перейти к содержимому

Фотография

Pascal

- - - - -

  • Авторизуйтесь для ответа в теме

#1
killma

Отправлено 19 2007 - 11:29

killma

    Новоприбывший

  • Пользователи
  • 8 сообщений
Тема нужная!Особенно для тех кто учится на 1 курсе университета (технической специальности), на данное время очень много вузов, учет такую среду программирования как Pascal...Но у людей которые впервые столкнулись с етой средой программирования возникает куча вопросов...Задавайте вопросы, узнавайте ответы!!! :18:

#2
killma

Отправлено 19 2007 - 11:37

killma

    Новоприбывший

  • Пользователи
  • 8 сообщений
МНОЖИНИ
Множина – структура даних, що представляє собою деяку підмножину значень заданого базового типу, включаючи порожню множину.
Сукупність усіх можливих підмножин базового типу визначає область значень відповідної множини. Кількість таких значень визначається автоматично і містить 2n варіантів, де n - потужність множини (кількість елементів базового типу).
Формат оголошення множини:
set of <базовий тип>.
Наприклад,
type digit = set of 0..9;
var w : set of char;
d : digit;
Як базові типи можуть використовуватися тільки порядкові типи, потужність яких не перевищує 256 значень, а верхня і нижня межі не виходять із діапазону 0 .. 255.
Множини-константи задаються у вигляді:
[<значення_1>, <значення_2>, ...,<значення_n>].
Наприклад,
d := [2, 5, 3, 9]; kl := ['A', 'B']; t := [ ];
Порядок перерахування значень множини є несуттєвим.
Як елементи множин можуть використовуватися не тільки константи, але і змінні, вирази, діапазони значень. Наприклад,
[1, 3, k]; [k .. 2*k]; [1,2..50]; ['k', 'a' ..'d'].
Для множин визначені наступні операції:
- Об'єднання множин ("+"). Результатом є множина, що містить елементи, які входять до обох множин-операндів. Ця операція часто використовується для включення нового елемента в множину.
- Перетин множин ("*"). Результатом є множина, що містить спільні елементи двох множин-операндів.
- Різниця множин ("-"). Результатом є множина, що складається з елементів першої множини, які не входять у другу множину. Ця операція часто використовується для видалення елемента із множини.
- Операції відношення ("=", "<>", "<=", ">="). Перевіряють рівність чи нерівність множин ("=", "<>"), а також, чи є одна множина підмножиною іншої ("<=", ">=").
- Операція входження in. Визначає належність елемента множині. Результат операції має тип boolean.
Для включення нового елемента в множину і видалення елемента із множини використовують також стандартні процедури:
- Include (M,Elem) - додає значення Elem в множину M;
- Exclude (M,Elem) - видаляє значення Elem з множини M.
Допускається використання множин в операторах присвоювання.
Приклад програми
Завдання: Заданий рядок із цифр і латинських літер. Підрахувати кількість цифр і літер та вивести їх на друк окремими множинами.
Program Mnogina;
Uses Crt;
Var
mainSet, charSet, numSet: set of Char;
numCount, charCount, mainCount: Integer;

Procedure inputSet;
Var key: Char;
Begin
mainCount:=0;
writeln('Please fill the set (to end the filling press ENTER)');
while (true) do
begin
key:=ReadKey;
if key = #13 then break
else if key in mainSet then continue
else
begin
inc(mainCount);
Include(mainSet, key);
writeln(key);
end;
end;
End;

Procedure work;
Var i: Char;
Begin
numCount:=0; charCount:=0; numSet:=[]; charSet:=[];
for i:='0' to '9' do if i in mainSet then
begin
inc(numCount);
Include(numSet, i);
end;

for i:='a' to 'z' do if i in mainSet then
begin
inc(charCount);
Include(charSet, i);
end;
End;

Procedure display;
Var i: Char;
Begin
writeln('Main set (consist of ',mainCount,' symbols)');
for i:='0' to '9' do if i in mainSet then write(' ',i);
for i:='a' to 'z' do if i in mainSet then write(' ',i);
writeln;

writeln('Numeric set (consist of ',numCount,' symbols)');
for i:='0' to '9' do if i in numSet then write(' ',i);
writeln;

writeln('Letters set (consist of ',charCount,' symbols)');
for i:='a' to 'z' do if i in charSet then write(' ',i);
End;

BEGIN ClrScr;
inputSet;
work;
display;
ReadLn;
END.

Сообщение отредактировал killma: 19 2007 - 11:42


#3
admin

Отправлено 20 2007 - 08:57

admin

    Самый главный тут

  • Администраторы
  • 9501 сообщений
0_оя б помог, но я не шарю.я так чучуть HTML и Visual Basic for Excel Знаю)

#4
uk.ru

Отправлено 29 2007 - 01:52

uk.ru

    Новоприбывший

  • Пользователи
  • 4 сообщений
моя критика, пост всерху, Вопрос для чего существует ВВС??? для того что б мы могли оформлять Красивые и красочные посты.... но увы... Информацыя интересная но трудна к чтению так как ниче не выделено, ни операторы не переменные...
и де ссыочка сскачать етот Паскать потому что тоот Паскаль который я знаю некоторых вещей в Данном коде я незнаю...

Сообщение отредактировал uk.ru: 29 2007 - 01:56


#5
3EBC

Отправлено 14 2007 - 06:11

3EBC

    Новоприбывший

  • Пользователи
  • 20 сообщений
Могу посоветовать хороший ресурс по этому поводу http://tpascal.h15.ru тут и справочник есть, и сорцы, и доки

#6
chubik

Отправлено 23 2009 - 04:59

chubik

    Новоприбывший

  • Пользователи
  • 1 сообщений
Помогите
Даны множественные числа A[1,2,5,7,9,11]; B[2,4,6,8,10]. Образовать множественное число, которое бы содержало один из элементов множественного числа A и один из элементов множественного числа B

#7
aztec

Отправлено 27 2009 - 10:03

aztec

    Новоприбывший

  • Пользователи
  • 6 сообщений
Если правильно понял, то нужно найти пересечение множества. Простой пример:
CODE
program test;

const
N = 255; {Количество элементов}

var
a: set of 1 .. N; {Множество A}
b: set of 1 .. N; {Множество B}
c: set of 1 .. N; {Результат}
i: integer;

begin
a := [1, 2, 5, 7, 9, 11];
b := [2, 4, 6, 8, 10];
c := a * b; {пересечение множества a и b}

{вывод множества c}
for i := 1 to N do
if i in c then
write(i, ' ');
writeln;
end.


#8
AJIXUMUK

Отправлено 21 2010 - 01:25

AJIXUMUK

    Новоприбывший

  • Пользователи
  • 17 сообщений
Помогите с задачей: "Последовательность A(1), A(2), A(3), ..., A(N) образована по следующему закону: A(I)=(A(I-1)+1)/(I-sin*sin(I)). Найти номер и значение первого неотрицательного элемента этой последовательности."
sin*sin - это я так синус в квадрате обозвал (для тех кто не понял).

#9
Guest_nitro1_*

Отправлено 21 2010 - 04:16

Guest_nitro1_*
  • Гости
AJIXUMUK, если правильно понял задачу то вот решение:
Код
program Project2;

uses
  SysUtils;

var
  N : integer;
  i : integer;
  A : array of real;
  f1 : boolean;

begin

  f1:= False;

  write ('Please enter N:');
  readln (N);

  SetLength(A,N+1);

  write ('Please enter A(0):');
  readln (A[0]);


  for i  := 1 to N do
    begin

      A[i]:= ( A[i-1] + 1 ) / ( i - Sin(i)*Sin(i) );

      if A[i]>=0 then
        begin
          writeln ('Answer: i: ' + IntToStr(i) + ' A[' + IntToStr(i) + ']= ' + FloatToStr(A[i]));
          f1:= True;

          break;

        end;

    end;

  if f1=False then
    writeln ('No answer');

  writeln ('Enter any key');
  readln;

end.


#10
AJIXUMUK

Отправлено 21 2010 - 08:50

AJIXUMUK

    Новоприбывший

  • Пользователи
  • 17 сообщений
Спасибо!!!

nitro1, а что такое SysUtils? Никогда такого не видел! Что это подключает?