Матрицы, многочлены, последовательности |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Матрицы, многочлены, последовательности |
MSDDV |
Сообщение
#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. |
volvo |
Сообщение
#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 - |
MSDDV |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 27 Пол: Мужской Репутация: 0 |
Сорри за новую тему я эту почему то не заметил.
Прошу кого-нибудь посмотреть задачи 1,2,5 |
virt |
Сообщение
#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. пятая задача. -------------------- |
MSDDV |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 27 Пол: Мужской Репутация: 0 |
Virt Чего-то она не то делает вроде , я ничё понять не могу
|
klem4 |
Сообщение
#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";'
|
volvo |
Сообщение
#7
|
Гость |
Цитата(MSDDV @ 10.06.05 6:20) Чего-то она не то делает вроде Почему не то? Как раз все то... Может ты данные вводишь неверно? Попробуй подкорректировать. Вместо: for i := 1 to n do begin сделай так: for i := 1 to n do begin и у тебя 0 и 1-цы будут читаться сразу по нажатию соответствуюцих цифр на клавиатуре... |
MSDDV |
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 27 Пол: Мужской Репутация: 0 |
блин там с x и y скорее всего косяк, там должно быть наверное, так круг C(i) с координатами (x(i);y(i)). А то и вправду фигня какая-то
А про шифровку и правда правильно было я уже сам разобрался, но всё равно СПАСИБО :yes: Сообщение отредактировано: MSDDV - |
MSDDV |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 27 Пол: Мужской Репутация: 0 |
klem4
я задание подкорректировал если есть мысли то напиши |
klem4 |
Сообщение
#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";'
|
klem4 |
Сообщение
#11
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
ну так нам и надо найти эту точку, а как если не перебором ?
если точка не принадлежит хоть одному из них,то она не подходит. берем точку, и начинаем просматривать круги, если хотябы в один не вошла, берем след. точку, а если во все вошла выводим на экран, хмм еще можно попроьовать найти область пересечения всех окружностей, наверное это и будет одна точка. добавлено : ой) пока отвечал сообещние исчезло, не подумайте, это я не сам с собой разговариваю _)) Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
Сообщение
#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, и т.д. Так где же хранятся данные? |
klem4 |
Сообщение
#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";'
|
volvo |
Сообщение
#14
|
Гость |
А я бы сделал так:
{$n+} А то у тебя TRec.R нигде не используется |
klem4 |
Сообщение
#15
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Да, естественно, это ошибка, в ф-и len, в проверке L<=aa - не правильно, надо сравнивать с радиусом.
на всякий случай : Len теперь так : function len(xx,yy,aa,bb,rr:integer):boolean; в main'e : if not(len(points[i].x,points[i].y,a,b,points[i].r)) then Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Archon |
Сообщение
#16
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Хм... Вы всё немного не так поняли. Там написано:
Цитата Даны действительные числа х(1),…,х(15), y(1),…,y(15), r(1),… r(15). С целыми всё было бы проще прстого и задача решалась бы простым перебором. Я сам сначало с целыми сделал :p1:, потом перечитал и задумался... :ypr: -------------------- Close the World...txeN eht nepO
|
klem4 |
Сообщение
#17
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Если брать числа вещественными, то это бред, так как еще появится зависимость от точности, ведь можно просматривать точки с шагом 0.1 , а можно с 0.00001
непонятки. Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Archon |
Сообщение
#18
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Значит подход неверный, хотя, я не могу представить себе что ещё можно сделать...
-------------------- Close the World...txeN eht nepO
|
volvo |
Сообщение
#19
|
Гость |
Цитата(Archon @ 12.06.05 11:57) С целыми всё было бы проще прстого и задача решалась бы простым перебором. Кстати, если уж на то пошло... Про то, что координаты точки, которая должна принадлежать всем окружностям должны быть вещественными, я в задании ничего не нашел, следовательно решение не является неверным... Вопросы? |
Archon |
Сообщение
#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
|
Текстовая версия | 10.01.2025 6:17 |