IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Матрицы, многочлены, последовательности
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской

Репутация: -  0  +


Из данных 40 задач остался один десяток "мозги высохли" ,
собсно вот они:
приму любые предложения

1.Даны действительное число x, натуральное число
q (0 ≤ x < 1, q ≥ 2). Получить пять цифр q-ичного представления числа х, т. е. получить последовательность целых неотрицательных a(-1), ..., а(-5) такую, что х = a(-1)q^(-1)+…a(-5)q^(-5)+r, 0 ≤ a(-i) ≤ q^(-1), r < q^(-5)

2.Даны действительные числа х(1),…,х(15), y(1),…,y(15), r(1),… r(15). Выяснить, есть ли на плоскости точка, принадлежащая всем кругам c(1),…,c(15), где c(i) имеет центр c координатами х(i) > y(i); и радиус ri (i=1,…,15).

3.Даны действительные числа s,t многочлен Р(х) степени n. Получить многочлен (sх^2 + t) Р(х) + Р'(х), где Р'(х) — производная многочлена Р(х).

4.Даны квадратная матрица A порядка n, векторы x и y с n элементами. Получить вектор A(x+y).

5.Следующий способ предназначен для шифровки последовательностей нулей и единиц (или же, например, точек и тире). Пусть а(1) ..., а(n) — такая последовательность. То, что предлагается в качестве ее шифра,— это последовательность, образованная по следующему закону:

b(1)=a(1) b(i) = 1, если a(i) = a (i -1)
0 в проитивном случае

Пользуясь изложенным способом:
а) зашифровать данную последовательность;
б) расшифровать данную последовательность.

6.Изобразить на экране отрезок, вращающийся в плоскости экрана вокруг
а) своей середины;
б) своего конца;
в) точки, делящей отрезок в отношении 1:3.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата(MSDDV @ 2.06.05 5:18)
4.Даны квадратная матрица A порядка n, векторы x и y с n элементами. Получить вектор A(x+y).

Что значит A(x+y)? Произведение матрицы на вектор-строку, которая является суммой векторов x и y?

Вектора суммируются поэлементно, перемножение "сцепленных" матриц - здесь: FAQ: Умножение матриц (умножаешь матрицу 1xN на NxN)...

P.S. Название темы поменяй...

Я поменял, но вообще-то пользуйся кнопкой "Правка" под первым сообщением

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской

Репутация: -  0  +


Сорри за новую тему я эту почему то не заметил. blink.gif
Прошу кого-нибудь посмотреть задачи 1,2,5
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


Код
program MSDDV_5;
const maxn = 1000;
var a,b : array[1..maxn]of boolean;
   n,i,j : integer;
   c : byte;

begin
{encoding}
  n := maxn + 1;
  while n > maxn do
     begin
        write('input length <=',maxn);
        read(n);{read length}
     end;
  for i := 1 to n do
  begin
     read(c);
     a[i] := boolean(c);
  end;
  b[1] := a[1];
  for i := 2 to n do
     b[i] := a[i-1] = a[i];{ = not(a[i-1] xor a[i])}
  for i := 1 to n do
     write(byte(b[i]),' ');
{/encoding}
  writeln;
{decoding}
  fillchar(a,sizeof(a),0);
  a[1] := b[1];
  for i := 2 to n do
     a[i] := a[i-1] xor (not b[i]);
  for i := 1 to n do
     write(byte(a[i]),' ');
{/decoding}
end.


пятая задача.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской

Репутация: -  0  +


Virt Чего-то она не то делает вроде blink.gif , я ничё понять не могу
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата(MSDDV)
имеет центр c координатами х(i) > y(i);


а это что значит ? то что центры окружностей на плоскости расположены только в точках, где координата X > координаты Y

т.е. в точке [2,1] будет окружность а в [1,2] нет ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата(MSDDV @ 10.06.05 6:20)
Чего-то она не то делает вроде

Почему не то? Как раз все то... Может ты данные вводишь неверно? Попробуй подкорректировать. Вместо:

for i := 1 to n do begin
read( c );
a[i] := boolean( c );
end;

сделай так:
for i := 1 to n do begin
c := ord(readkey) - 48; write(c, ' ');
a[i] := boolean( c );
end;
writeln;

и у тебя 0 и 1-цы будут читаться сразу по нажатию соответствуюцих цифр на клавиатуре...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской

Репутация: -  0  +


блин там с x и y скорее всего косяк, там должно быть наверное, так круг C(i) с координатами (x(i);y(i)). А то и вправду фигня какая-то

А про шифровку и правда правильно было я уже сам разобрался, но всё равно СПАСИБО :yes:

Сообщение отредактировано: MSDDV -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 27
Пол: Мужской

Репутация: -  0  +


klem4
я задание подкорректировал если есть мысли то напиши
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


вот, набрасал, руководствуясь вот этим :

Цитата
X,Y - координаты точки, a,b - координаты центра окружности (x,y), R - радиус

Если точка лежит в окружности - она будет на расстоянии L<=R от центра
вот и проверяем это условие (L=sqrt((X-а)^2+(Y-B)^2))


но что-то не так, где-то ошибка, голова не варит, может ктонить переделает правильно :

Код

{$n+}
uses crt;
var
 x,y,a,b:integer;
 flag:boolean;

function len(xx,aa,yy,bb:integer):boolean;
var l:extended;
begin
  len:=false;
  l:=sqrt(sqr(xx-aa)+sqr(yy-bb));
  if l<=aa then
   len:=true;
end;

Begin

  clrscr;

  for x:=0 to 15 do
   for y:=0 to 15 do begin
      a:=0;
      flag:=true;
      while(a<=15)and(flag) do begin
         b:=0;
         while(b<=15)and(flag) do
          if not(len(x,a,y,b)) then
           flag:=false
          else
           inc(b);
         inc(a);
      end;
      if flag then writeln('x=',x,'   y=',y);
   end;

  readln;
End.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


ну так нам и надо найти эту точку, а как если не перебором ?
если точка не принадлежит хоть одному из них,то она не подходит.

берем точку, и начинаем просматривать круги, если хотябы в один не вошла, берем след. точку, а если во все вошла выводим на экран,

хмм еще можно попроьовать найти область пересечения всех окружностей, наверное это и будет одна точка.

добавлено :
ой) пока отвечал сообещние исчезло, не подумайте, это я не сам с собой разговариваю smile.gif_))

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






klem4, внимательно читаем задание:
Цитата
Даны действительные числа х(1),…,х(15), y(1),…,y(15), r(1),… r(15). Выяснить, есть ли на плоскости точка, принадлежащая всем кругам c(1),…,c(15) <...>
Где у тебя в программе координаты 15 точек - центров окружностей ??? Я что-то ничего подобного
Var x, y, R: Array[1 .. 15] Of Integer;
в твоей программе не наблюдаю... Тебе же не говорилось, что окружность №1 имеет центром точку (1, 1) и ее радиус = 1, и т.д. Так где же хранятся данные?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


можно попробовать вот так :
только я не уверен в правильности проверки вхождения точки

Код
{$n+}
uses crt;

const n=3{15};

type

  TRec = record

      x,y,r : integer;
  end;


var

  i,a,b : integer;

 points : array[1..n] of TRec;

   flag : boolean;


function len(xx,yy,aa,bb:integer):boolean;
var

  l:extended;

begin
  len:=false;
  l:=sqrt(sqr(xx-aa)+sqr(yy-bb));
  if l<=aa then len:=true;
end;

Begin

  clrscr;

  for i:=1 to n do
   with points[i] do begin
       write('x='); readln(x);
       write('y='); readln(y);
       write('r='); readln(r);
       clrscr;
   end;

  for a:=0 to n do
   for b:=0 to n do begin
       flag:=true;
       i:=1;
       while(i<=n)and(flag) do
        if not(len(points[i].x,points[i].y,a,b)) then
         flag:=false
        else
         inc(i);

       if flag then
        writeln('x=',a,'  y=',b);
   end;

  readln;

end.





--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






А я бы сделал так:
{$n+}
Uses Crt;
Const
maxX = 640;
maxY = 480;
n = 15;

Type
TRec = Record
X, Y, R: Extended;
End;
Var
Points: Array[1 .. n] Of TRec;

function Dist(A, B: TRec): Extended;
Begin
Dist := Sqrt(Sqr(A.X - B.X)+Sqr(A.Y - B.Y))
End;

Var
T: TRec;
i, a, b: Integer;
Flag: Boolean;

Begin
ClrScr;
For i := 1 To n Do
With Points[i] Do Begin
Write('X='); ReadLn(X);
Write('Y='); ReadLn(Y);
Write('R='); ReadLn( R );
End;

For a:=0 To n Do
For b:=0 To n Do Begin
T.X := a; T.Y := b;
Flag := True;
i := 1;
While (i<=n) and Flag Do Begin
Flag := (Dist(Points[i], T) <= Points[i].R); Inc(i)
End;

If Flag Then Begin
Writeln( 'Да, точка существует...');
Writeln('Специально для преподавателей, дающих некорректные задания:');
Writeln( 'X = ', a, ' Y = ', B ); ReadLn; Halt(100);
End;
End;
WriteLn('Точки не существует... Извините, ВСЁ... Вывести больше нечего !!!');
ReadLn
End.

А то у тебя TRec.R нигде не используется rolleyes.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Да, естественно, это ошибка, в ф-и len, в проверке L<=aa - не правильно, надо сравнивать с радиусом.

на всякий случай :

Len теперь так :

function len(xx,yy,aa,bb,rr:integer):boolean;
var

l:extended;

begin
len:=false;
l:=sqrt(sqr(xx-aa)+sqr(yy-bb));
if l<=rr then len:=true;
end;


в main'e :

if not(len(points[i].x,points[i].y,a,b,points[i].r)) then
flag:=false


Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Хм... Вы всё немного не так поняли. Там написано:
Цитата
Даны действительные числа х(1),…,х(15), y(1),…,y(15), r(1),… r(15).

С целыми всё было бы проще прстого и задача решалась бы простым перебором.
Я сам сначало с целыми сделал :p1:, потом перечитал и задумался... :ypr:


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Если брать числа вещественными, то это бред, так как еще появится зависимость от точности, ведь можно просматривать точки с шагом 0.1 , а можно с 0.00001 sad.gif

непонятки. blink.gif

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Значит подход неверный, хотя, я не могу представить себе что ещё можно сделать...


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






Цитата(Archon @ 12.06.05 11:57)
С целыми всё было бы проще прстого и задача решалась бы простым перебором.


Кстати, если уж на то пошло... Про то, что координаты точки, которая должна принадлежать всем окружностям должны быть вещественными, я в задании ничего не нашел, следовательно решение не является неверным... Вопросы?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Насколько я знаю, в паскале при возведении в квадрат числа типа integer получается число типа integer. Может возникнуть ошибка переполнения.
Предлагаю использовать числа longint и ограничить максимальный размер числа (их лучше задавать random'ом).

Код

Program MSDDV_2;

Uses
 crt;

const
 MaxX = 319;
 MaxY = 199;
 MinR = 100;
 MaxR = 200;

var
 x, y, r : array [1..15] of longint;
 i, j, k : integer;
 S : boolean;

begin
 TextMode(259);
 Randomize;
 For k := 1 to 15 do
 begin
   x[k] := Random(MaxX+1);
   y[k] := Random(MaxY+1);
   r[k] := Random(MaxR-MinR+1)+MinR;
   Writeln('x[',k:2,']=',x[k]:3,'  y[',k:2,']=',y[k]:3,
           '  r[',k:2,']=',r[k]:3);
 end;
 For i := 0 to MaxX do
   For j := 0 to MaxY do
   begin
     S := true;
     For k := 1 to 15 do
       If sqr(i-x[k])+sqr(j-y[k]) > sqr(r[k]) then
         S := false;
     If S then Write('(',i:3,',',j:3,') ');
   end;
 ReadKey;
end.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.04.2024 19:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name