xander
Удален
|
Помогите решить задачи или найти решения задач (Язык программирования Turbo Pascal 7.0) 1) Ввести 4 числа выстроить их по возрастанию, найти среднее арифметическое первых двух и последних двух, получать случайные числа из полученного промежутка. Определить колличество простых чисел и количество чисел кратных 5. Когда разность этих чисел по модулю будет равна 10 закончить программу. Если эта разность не будет достигнута за 10000 проверенных чисел то остановить программу. 2)Даны действительное число X и массив A[n]. В массиве найти два члена, среднее арифметическое которых ближе всего к X. 3) В однамерном массиве с четным количеством элементов (2N) находяться координаты N точек плоскости. Они располагаються в следующем порядке: x1, y1, x2, y2, x3, y3 и т.д. Определить номера точек, которые могут являться вершинами равнобедренного треуголника. 4) Даны натуральные числа n, m. Найти все натуральные числа меньше n, квадрат суммы цифр которых равен m. 5) Составить программу для нахождения чисел из интервала(M,N) имеющих наибольшее количество делителей.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 14 дек. 2005 20:51 | IP
|
|
miss_graffiti
Долгожитель
|
поможем. что не получается?
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 14 дек. 2005 21:47 | IP
|
|
KMA
Долгожитель
|
4) Даны натуральные числа n, m. Найти все натуральные числа меньше n, квадрат суммы цифр которых равен m.
Первое, что приходит на ум, это простейший перебор, от 1 до n, если подумать, то можно код и получше написать, но пока думаю такой сойдет. Var n, i, k:word; s, m: longInt; BEGIN write ('Enter n, please ->'); readLn (n); write ('Enter m, please ->'); readLn (m); for i:=1 to n do begin k:=i; while k<>0 do begin s:=(k mod 10) +s; k:=k div 10 end; if sqr(s)=m then write (i,' '); s:=0; end; END.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 14 дек. 2005 23:13 | IP
|
|
Dzen
Удален
|
2xander,2KMA Квадрат суммы? Т.е. задача сводится к решению задачи "найти все числа меньшие n, для которых сумма цифр равна m" (А если m - не квадрат то задача не имеет решения)Так что ли? Или все таки сумма квадратов?
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 15 дек. 2005 14:10 | IP
|
|
KMA
Долгожитель
|
2Dzen Именно, в условии же ясно сказано квадрат суммы цифр. Т. е. чила от 1 до n разбиваются на цифры и их сумма в квадрате, должна быть равна m. Но это же истина, я ее не дописал, думал, что xander умный и сам сможет проверить квадрат или не квадрат m, а потом уже выполнять этот цикл (т.е. в случае извлечения квадратного корня, при чем это извлечение должно быть целым). т. е. необходимо добавить if frac (sqrt(m))=0 then выполнять этот цикл. Но замечание серьезное, спасибо.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 15 дек. 2005 15:09 | IP
|
|
miss_graffiti
Долгожитель
|
задача такая: написать функцию для поэлементного перемножения произвольного кол-ва одномерных массивов. это как? типа A1*B1*C1...? просто если перемножить 2 одномерных массива, получается число...
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 15 дек. 2005 17:14 | IP
|
|
Ren
Долгожитель
|
Скорее всего имеется ввиду операция поэлементного перемножения (в теории матриц есть такая), но нужно тогда что бы массивы были одинаковой размерности! Есть такое условие? Если да, то это просто массив, элементами которого являются произведения соответствующих элементов сомножителей. (короче говоря первый равен произведению первых и т.д.)
|
Всего сообщений: 284 | Присоединился: октябрь 2005 | Отправлено: 15 дек. 2005 19:55 | IP
|
|
miss_graffiti
Долгожитель
|
Ren, то есть грубо говоря: составляем двумерный массив и находим произведение по столбцам? и это произведение записываем в соответствующую ячейку одномерного массива?
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 15 дек. 2005 20:25 | IP
|
|
Ren
Долгожитель
|
Если ты имеешь ввиду, что первый массив - первая строка, второй - вторая, то видимо да. Но опять же, надо что бы перемножаемые массивы содержали одинаковое колличество элэементов.
|
Всего сообщений: 284 | Присоединился: октябрь 2005 | Отправлено: 15 дек. 2005 21:26 | IP
|
|
KMA
Долгожитель
|
miss graffiti. Вот перемножение матриц (а так же сложение). Разбери программу и тогда поймешь, как они перемножаются. А вообще теорию по матрицам можно найти в великом задачнике Клетейника, а точнее в приложениях (это курс линейной алгебры). На счет перемножения элементов одномерного массива я даже понятия не имею, чушь какая-то. (Надеюсь этот код поможет). program helloWorld; uses crt; const n=5; type matrix=array [1..n, 1..n] of longInt; Var a, b, c, aPlusB, aPlusBMultC: matrix; row_a, row_b, row_c, col_a, col_b, col_c: byte; flag: boolean; Procedure enterMatr (Var x:matrix; row, col: byte); Var i, j: byte; Begin for i:=1 to row do for j:=1 to col do x[i,j]:=random (90)+10 End; { Procedure enterMatr (Var x:matrix; row, col: byte; name: char); Var i, j: byte; Begin for i:=1 to row do for j:=1 to col do begin write (name,'[',i,',',j,']='); readLn (x[i,j]) end End; } Procedure showMatr (x:matrix; row, col: byte); Var i, j: byte; Begin for i:=1 to row do begin for j:=1 to col do write (x[i,j]:6); writeLn end End; Procedure sumMatr (Var all: matrix; x, y: matrix; row, col: byte); Var i, j: byte; Begin for i:=1 to row do for j:=1 to col do all[i,j]:=x[i,j]+y[i,j] End; Procedure multMatr (Var all: matrix; x, y: matrix; k, row_x, col_y :byte); Var i, j, t: byte; element: longInt; Begin element:=0; for i:=1 to row_x do for j:=1 to col_y do begin for t:=1 to k do element:=x[i,t]*y[t,j]+element; all[i,j]:=element; element:=0 end; End; BEGIN randomize; clrScr; write ('Enter how many rows in matrix A ->'); readLn (row_a); write ('Enter how many cols in matrix A ->'); readLn (col_a); write ('Enter how many rows in matrix B ->'); readLn (row_b); write ('Enter how many cols in matrix B ->'); readLn (col_b); write ('Enter how many rows in matrix C ->'); readLn (row_c); write ('Enter how many cols in matrix C ->'); readLn (col_c); clrScr; {---------------------------------------} enterMatr (a, row_a, col_a); enterMatr (b, row_b, col_b); enterMatr (c, row_c, col_c); {----------------------------------------} window (1, 1, 28, 7); writeLn ('*** Matrix A ***'); showMatr (a, row_a, col_a); window (29, 1, 56, 7); writeLn ('*** Matrix B ***'); showMatr (b, row_b, col_b); window (57, 1, 80, 7); writeLn ('*** Matrix C ***'); showMatr (c, row_c, col_c); writeLn; {-----------------------------------------} window (25, 10, 60, 25); writeLn ('*** (A+B)*C Matrix ***'); flag:=true; if (col_a=col_b) and (row_a=row_b) then sumMatr (aPlusB, a, b, row_a, col_b) else flag:=false; if (col_b=row_c) and flag then multMatr (aPlusBMultC, aPlusB, c, col_b, row_b, col_c); if flag then showMatr (aPlusBMultC, row_b, col_c) else writeLn ('May you thinking...'); {------------------------------------------} readLn END. Я извеняюсь, не пояснил дальше. Скорее всего тебе нужно перемножить матрицу А на матрицу В, при чем матрица А имеет размеры {n, 1}, а матрица B {1, n} и тебе необходимо их перемножить, дальше точно также с остальными матрицами, советую использовать рекурсию. Тогда ты сможешь перемножить сколь угодно матриц. (Сообщение отредактировал KMA 15 дек. 2005 23:59)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 15 дек. 2005 23:27 | IP
|
|
|