Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачи на матрицы и массивы.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Sivka
Здесь пять задач. Три из них я решил, а первую и вторую никак не могу сообразить. Если можно, проверьте решение и напишите, как сделать первую и вторую:
1. Пусть дана вещественная матрица размером 7х7, все элементы которой различны. Найти скалярное произведение строки с наибольшим элементом и столбца с наименьшим элементом.
2. Пусть даны две вещественные матрицы порядка n. Получить новую следующим способом (для нахождения элементов использовать функции) - прибалением к элементам каждого столбца первой матрицы произведения элементов соответствующих строк сторой матрицы
3. Число из n символов называется числом Армстронга, если сумма его цифр в n-й степени равна самому числу. Получить все числа Армстронга из 2,3,4 цифр.
Код
var i,sum: integer;
begin
 for i:=0 to 99 do if sqr(i mod 10)+sqr(i div 10) = i then writeln(i);
 for i:=0 to 999 do begin
   sum:=(i div 100)*(i div 100)*(i div 100) +
     (i mod 100 div 10)*(i mod 100 div 10)*(i mod 100 div 10) +
     (i mod 100 mod 10)*(i mod 100 mod 10)*(i mod 100 mod 10);
   if i=sum then writeln(i);
 end;
 for i:=0 to 9999 do begin
   sum:=sqr(sqr(i div 1000)) +
     sqr(sqr(i mod 1000 div 100)) +
     sqr(sqr(i mod 1000 mod 100 div 10)) +
     sqr(sqr(i mod 1000 mod 100 mod 10));
   if i=sum then writeln(i)
 end;
readln;
end.


4. Вычислить y=cos (x) + cos (x^2) ... + cos (x^30).
Код
var a,x,m:real;n:integer;
Function Power(x:real;n:integer):real;
begin
 if n=1 then Power:=x
 else begin
   if odd(n) then Power:=Power(x,n-1)*x
   else Power:=sqr(Power(x,n div 2))
 end;
end;

begin
 readln(x);
 for n:=1 to 30 do m:=m+cos(power(x,n));
 writeln(m);
 readln;
end.

5. Дан массив целых чисел. Произвести для него следующие операции - определить сколько раз в массиве меняется знак.
Массив желательно 3-х мерный... Вводится вручную.
Код
var
 i,j,n,chislo: integer;
 a: array [1..10] of array [1..10] of real;

begin
 readln(n);
 for i:=1 to n do
   for j:=1 to n do readln(a[i,j]);
 for i:=1 to sqr(n)-1 do
   if a[i div (n+1) + 1, i mod (n+1)]*
      a[(i+1) div (n+1) + 1, (i+1) mod (n+1)]<0 then inc(chislo);
 writeln(chislo); readln;
end.


Основное, что не могу сделать - в 1) и 2) - осуществить ввод и вывод матрицы. И не могу понять, что такое и как сделать "скалярное произведение строки с наибольшим элементом и столбца с наименьшим элементом.".

Добавлю - я просто учусь программировать в delphi, а знакомый попросил написать в чистом паскале, который я совсем не знаю. Заранее огромное спасибо.
volvo
Цитата(Sivka @ 6.02.05 9:39)
Основное, что не могу сделать - в 1) и 2) - осуществить ввод и вывод матрицы.

Как раз для этого на форуме есть ФАК (который, кстати, надо было почитать ПЕРЕД тем, как задать вопрос, потому что тогда необходимости в этом просто не было бы - там все уже сделано...)
Ввод/вывод матрицы: Основные операции над матрицами (последние 2 программы поста)
Цитата(Sivka @ 6.02.05 9:39)
И не могу понять, что такое и как сделать "скалярное произведение строки с наибольшим элементом и столбца с наименьшим элементом."

Сначала проходим по всей матрице и ищем строку, в которой находится макс. элемент и столбец, в котором находится мин. элемент. А потом эти столбец и строку просто перемножаем (умножение матриц тоже описано в ФАКе), но так как получается перемножение строки (1х7) на столбец (7х1) - результат - матрицы (1х1) или скаляр (число):
Допустим, что строка, содержащая max имеет номер i, а столбец с min - номер j...
Код
scalar := 0;
For k := 1 To SizeOfMatrix Do
 scalar := scalar + a[i, k] * b[k, j];
volvo
Цитата(Sivka @ 6.02.05 9:39)
3. Число из n символов называется числом Армстронга, если сумма его цифр в n-й степени равна самому числу. Получить все числа Армстронга из 2,3,4 цифр.

И числа Армстронга тоже есть в ФАКе: Числа Армстронга
В следующий раз читаем правила и пользуемся поиском
Altair
Цитата
Добавлю - я просто учусь программировать в delphi, а знакомый попросил написать в чистом паскале, который я совсем не знаю.

Я тут с Советом Старейшин посовещался, и подумали мы - как это вы на Дельфи пишете а Паскаль не знаете? smile.gif
Delphi (до версии 7) это просто IDE, а язык Object Pascal...
Проясните ситуацию пожалуйста...

p.s. У меня предчувствие, что Delphi вы даже не запускали... ;)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.