Из данных 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 в проитивном случае
Я поменял, но вообще-то пользуйся кнопкой "Правка" под первым сообщением
MSDDV
9.06.2005 23:29
Сорри за новую тему я эту почему то не заметил. Прошу кого-нибудь посмотреть задачи 1,2,5
virt
10.06.2005 0:59
Код
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.
пятая задача.
MSDDV
10.06.2005 10:20
Virt Чего-то она не то делает вроде , я ничё понять не могу
klem4
10.06.2005 10:46
Цитата(MSDDV)
имеет центр c координатами х(i) > y(i);
а это что значит ? то что центры окружностей на плоскости расположены только в точках, где координата X > координаты Y
т.е. в точке [2,1] будет окружность а в [1,2] нет ?
volvo
10.06.2005 14:46
Цитата(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-цы будут читаться сразу по нажатию соответствуюцих цифр на клавиатуре...
MSDDV
10.06.2005 15:28
блин там с x и y скорее всего косяк, там должно быть наверное, так круг C(i) с координатами (x(i);y(i)). А то и вправду фигня какая-то
А про шифровку и правда правильно было я уже сам разобрался, но всё равно СПАСИБО :yes:
MSDDV
11.06.2005 16:09
klem4 я задание подкорректировал если есть мысли то напиши
klem4
11.06.2005 22:01
вот, набрасал, руководствуясь вот этим :
Цитата
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.
klem4
11.06.2005 23:03
ну так нам и надо найти эту точку, а как если не перебором ? если точка не принадлежит хоть одному из них,то она не подходит.
берем точку, и начинаем просматривать круги, если хотябы в один не вошла, берем след. точку, а если во все вошла выводим на экран,
хмм еще можно попроьовать найти область пересечения всех окружностей, наверное это и будет одна точка.
добавлено : ой) пока отвечал сообещние исчезло, не подумайте, это я не сам с собой разговариваю _))
volvo
12.06.2005 13:51
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, и т.д. Так где же хранятся данные?
klem4
12.06.2005 15:34
можно попробовать вот так : только я не уверен в правильности проверки вхождения точки
Код
{$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);
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 нигде не используется
klem4
12.06.2005 15:56
Да, естественно, это ошибка, в ф-и 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
Archon
12.06.2005 15:57
Хм... Вы всё немного не так поняли. Там написано:
Цитата
Даны действительные числа х(1),…,х(15), y(1),…,y(15), r(1),… r(15).
С целыми всё было бы проще прстого и задача решалась бы простым перебором. Я сам сначало с целыми сделал :p1:, потом перечитал и задумался... :ypr:
klem4
12.06.2005 16:01
Если брать числа вещественными, то это бред, так как еще появится зависимость от точности, ведь можно просматривать точки с шагом 0.1 , а можно с 0.00001
непонятки.
Archon
12.06.2005 16:04
Значит подход неверный, хотя, я не могу представить себе что ещё можно сделать...
volvo
12.06.2005 16:05
Цитата(Archon @ 12.06.05 11:57)
С целыми всё было бы проще прстого и задача решалась бы простым перебором.
Кстати, если уж на то пошло... Про то, что координаты точки, которая должна принадлежать всем окружностям должны быть вещественными, я в задании ничего не нашел, следовательно решение не является неверным... Вопросы?
Archon
12.06.2005 16:11
Насколько я знаю, в паскале при возведении в квадрат числа типа integer получается число типа integer. Может возникнуть ошибка переполнения. Предлагаю использовать числа longint и ограничить максимальный размер числа (их лучше задавать random'ом).
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.
Archon
12.06.2005 16:14
Цитата
Про то, что координаты точки, которая должна принадлежать всем окружностям должны быть вещественными, я в задании ничего не нашел,
Конечно, нет! :p2: Однако, может быть что условию удовлетворяет точка только с вещественными координатами :nono: .
volvo
12.06.2005 16:26
Цитата(Archon @ 12.06.05 12:11)
Насколько я знаю, в паскале при возведении в квадрат числа типа integer получается число типа integer. Может возникнуть ошибка переполнения. Предлагаю использовать числа longint и ограничить максимальный размер числа (их лучше задавать random'ом).
Нет, не принимается !!! У тебя не генерируется, а задается массив чисел (причем ты сам указал на то, что это - массив Действительных чисел)... Вот и будь добр ВВОДИТЬ 15 действительных чисел. И LongInt здесь совершенно не при чем. (кстати и при возведении Integer-ов в квадрат можно элементарно избежать переполнения - приведение типов еще никто не отменял... )
Кстати, в твоей программе есть логическая ошибка: у тебя будут распечатываться все те точки, которые попадают в круг №15, потому как S присваивается результату последней проверки, а результаты предыдущих проверок не учитываются...
Archon
12.06.2005 16:30
Цитата
при возведении Integer-ов в квадрат можно элементарно избежать переполнения - приведение типов еще никто не отменял...
Что-то у вас я этого не заметил B).
Так ты предлагаешь, сделать с действительными x,y,r и целыми координатами точек?
var x, y, r : array [1..n] of real; i, j, k : integer; S : boolean;
begin TextMode(259); Randomize; For k := 1 to n do begin Write('x[',k,']='); ReadLn(x[k]); Write('y[',k,']='); ReadLn(y[k]); Write('r[',k,']='); ReadLn(r[k]); end; For i := 0 to MaxX do For j := 0 to MaxY do begin S := true; For k := 1 to n 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.
Archon
12.06.2005 16:42
Цитата
Кстати, в твоей программе есть логическая ошибка: у тебя будут распечатываться все те точки, которые попадают в круг №15, потому как S присваивается результату последней проверки, а результаты предыдущих проверок не учитываются...
Извени, не понял... Перед проверкой S := true. Во время проверки, если хоть в одну окружность точка не попадает, то S := false После проверки если S = true выводим координаты точки. Всё должно работать!
klem4
12.06.2005 16:51
В любом случае зачем каждый раз просматривать ВСЕ окружности, допустим у тебя после первой проверки S:=false... следующие 14 бессмысленны будут.
автор, уточни задание ;)
MSDDV
12.06.2005 23:44
Извините, что так долго не отвечал. У нас сегодня День Города, приезжал Дом2, мне впринципе всё равно, но моей девушке нравиться. Уважаемые кодеры в задании нужно найти единственную точку принадлежащуюю всем 15ти окружностям....
klem4
12.06.2005 23:51
1) по поводу координат и радиуса, они все целые ? 2) Нам дано 15 окружностей, для которых мы сами задаем координаты центра и радиусы ? или же как я подумал в началe, окружности находятся в каждой точке плоскости 15*15 и радиус у нее(окружности) соответсвует иксу ( то есть у окружности в точке M(4,12) R=4) ? правда в таком случае решения не будет. =)
volvo
13.06.2005 0:28
Цитата(MSDDV @ 12.06.05 19:44)
в задании нужно найти единственную точку принадлежащуюю всем 15-ти окружностям....
Уважаемый, задание-то переиначивать не надо !!! В задании ясно сказано:
Цитата
Выяснить, есть ли на плоскости точка, принадлежащая всем кругам...
"Да" или "Нет" (True/False) ни о каких координатах речи вообще нет !!! Единственная ли точка, или их 5000, ответ будет "Да"
MSDDV
13.06.2005 0:31
1) по поводу координат и радиуса, они все целые. :D 2) Нам дано 15 окружностей, для которых мы сами задаем координаты центра и радиусы. :D
Вроде так. Да препод чудак, так дал задания, что в некоторых даже непонятно, что нужно
Уважаемый Volvo как говорит наш препод: "Вывод на экран слогов типа Да и Нет не дает полного решения задачи" Так что в этой задаче мне нужно найти и вывести координаты хотя бы одной точки, удовлетворяющей условию.
MSDDV
13.06.2005 16:45
:molitva: Помогите с заданиями 1 и 2 завтра сдача
volvo
13.06.2005 17:42
Задание №2 было решено еще в посте №14 !!! То решение неверное? Или оно просто не было замечено? (специально для преподавателя, давшего такое задание, я изменил вывод)... А по-поводу этого:
Цитата
Уважаемый Volvo как говорит наш препод: "Вывод на экран слогов типа Да и Нет не дает полного решения задачи"
Было задание "выяснить есть ли точка", оно было выполнено. Если у преподавателя могут быть претензии - то только к себе самому... Когда полное решение задачи подразумевает вывод координат точки, будь добр указать это в задании.
MSDDV
13.06.2005 18:46
Volvo Огромное спасибо!!
MSDDV
13.06.2005 21:30
Эту тему можно убить :D
-Игорь-
5.05.2012 22:37
3.Даны действительные числа s,t многочлен Р(х) степени n. Получить многочлен (sх^2 + t) Р(х) + Р'(х), где Р'(х) — производная многочлена Р(х).
не могу найти где она описана,очень надо,пожалуйста!
Anonimys
5.05.2012 22:41
Некропоост, дааа :D
Зачем труп 7-летней давности воскрешать?
Bujhm
5.05.2012 22:50
Я не могу в этой теме найти ответ на задачу,что прикажешь делать?! помоги напиши и все будет ок!
P.S Игорь и я одно лицо,когда писал пост не зарегался=_)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.