Автор: Юлька 2.04.2003 18:26
Привет всем !
Делали мне как-то тут задачки. Сдала лабы, защитила. Но вот новые задания выдали... Опять нужна помощь...
Спасибо тем, кто откликнется и поможет.
Лабораторная работа 12: Множества .
Задание: Даны два множества A и B. Постройте из них следующее множество: A*B-A.
Лабораторная работа 13: Модули .
Задание: Дан массив чисел (n=1000). Напечатать элементы массива, которые являются:
А) степенями двойки (1,2,4,8,16,.);
Б) полными квадратами (1,4,9,16,25,.).
Автор: AlaRic 2.04.2003 21:53
Мне интересно: тебе не стыдно?
Автор: Ivs 2.04.2003 23:20
Юль, а там, в первой, множества задаются с клавиатуры или как константы.... ???
Автор: Ivs 3.04.2003 1:02
Вот собснно первая,......это если без заполнения с клавиатуры, если надо заполнять множества с клавы, то напиши, можно переделать....
Код
Program _Set_;
Type
Set_Byte = Set of 0..255; { Множество может принимать до 255 различных значений }
Var
A,B : Set of 0..50;
New_Set : Set of 0..100;
Begin
A:=[1,3,5,2,0]; { Заполняем множество A числами }
B:=[1,8,9,6,4]; { Заполняем множество B числами }
New_Set:=A*B-A; { Формируем новое множество }
end.
Вот собсноо и вторая.....
Если что не так как хотелось бы не стесняйся спрашивай, поможем чем сможем.......
Код
Program Exponent_Too;
Const
N = 1000; { Количество элементов }
Var
A : Array [1..N] of Integer;
i : Integer;
r : Real;
Bool : Boolean;
Begin
Randomize; { Заполнение массива случайными числами от 1 до N }
for i:=1 to N do
begin
A[i]:=Random(N);
Write(A[i],' ');
end;
{=A=}
Writeln;
Writeln('--- Exponents Too ----');
for i:=1 to N do
begin
{ Инициализируем переменные }
bool:=TRUE;
r:=A[i];
{ Если четное то проверяем дальше }
if (A[i] mod 2 = 0) and (A[i]<>0) then
{ Делим на 2 до тех пор пока r не равно 2}
while (bool) and (r<>2) do
begin
r := r/2;
{ Если успешно делится то делим дальше, иначе это не то число и выход }
if frac(r)<>0 then bool:=FALSE;
end;
{ Число разделилось до двух значит то что надо и выводим на экран }
if r=2 then Write('A[',i,']=',A[i],' ');
end;
Writeln;
Writeln('Press Any Key ...');
Readln;
{=B=}
Writeln('--- Full Square ---');
{ Проверка на квадрат }
for i:=1 to N do
begin
{ Получаем квадратный корень в r }
r:=sqrt(A[i]);
{ Если r это целое число то выводим его на экран }
if frac(r)=0 then Write('A[',i,']=',A[i],' ');
end;
Readln;
End.
Цитата
Мне интересно: тебе не стыдно?
Ну и что..зато смотри как тема красиво называется, почему бы и не помочь? что такого то????
Автор: Юлька 3.04.2003 7:53
Ivs, я, конечно, туповата, но... в первой задаче на экран вообще ничего не выводится...
Там надо дописать что-то где-то ? writeln и все такое ? ;)) Я не знаю куда писать...
AlaRic, не злись пожалуйста..
Автор: Юлька 3.04.2003 19:02
AlaRic
...а дружба и жвачка ??
Ivsik !! :-*
Я пишу writeln (New_Set), а он выдает мне что не может это на экран написать... (это я про прервую задачу). А так вроде запускается.. но только непонятно что происходит.. Я Alt+F5 нажимаю, а там пусто... Результата нету
Автор: Ivs 3.04.2003 23:23
Вот переделал первую как просила, элементы множеств заполняются с клавиатуры.
К сожалению в Паскале не предусмотрен вывод множества на экран, поэтому нам
это сделать не удастся, конечно множества можно предстовлять в виде массивов
и работать с ними, но я думаю, что задача предложенная в качестве темы "Множества"
должна работать с типом данных Множество предусмотренном в Паскале.
И никакие WriteLn нам не помогут... :(
А удостовериться в получении нового множества, сформированного по предложенному принципу,
можно только силами отладчика.
Код
Program _Set_;
Const
N = 5; { Количество вводимых элементов множеств }
Type
Set_Int = Set of 0..50; { Диапазон значений }
Var
A, B, NewSet : Set_Int;
El : 0..50;
i : Integer;
Begin
Writeln('--- Работа с множествами ---');
A:=[]; { A и B пустые множества }
B:=[];
{ Заполнение множеств A и B с клавиатуры }
for i:=1 to N do
begin
Write('Введите ',i,' -й элемент множества A (0-50) : ');
Readln(El);
{ Если введеный элемент не входит в множество A то поместить }
if NOT(El in A) then
begin
Writeln(El,' помещен в множество A.');
A:=A+[El];
end;
Write('Введите ',i,' -й элемент множества B (0-50) : ');
Readln(El);
{ Если введеный элемент не входит в множество B то поместить }
if NOT(El in B) then
begin
Writeln(El,' помещен в множество B.');
B:=B+[El];
end;
end;
{ Формирование нового множества NewSet }
NewSet:=A*B-A;
Writeln;
Writeln('Создано два множества A и B');
Writeln('и новое множество NewSet = A*B-A.');
Readln;
End.
Автор: Юлька 4.04.2003 7:35
Ivs, я тебя почти люблю ;)