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

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

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

> Задачи на матрицы и массивы., Довольно простые.
Sivka
сообщение 6.02.2005 10:39
Сообщение #1


Гость






Здесь пять задач. Три из них я решил, а первую и вторую никак не могу сообразить. Если можно, проверьте решение и напишите, как сделать первую и вторую:
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, а знакомый попросил написать в чистом паскале, который я совсем не знаю. Заранее огромное спасибо.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
volvo
сообщение 6.02.2005 11:07
Сообщение #2


Гость






Цитата(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
сообщение 6.02.2005 11:12
Сообщение #3


Гость






Цитата(Sivka @ 6.02.05 9:39)
3. Число из n символов называется числом Армстронга, если сумма его цифр в n-й степени равна самому числу. Получить все числа Армстронга из 2,3,4 цифр.

И числа Армстронга тоже есть в ФАКе: Числа Армстронга
В следующий раз читаем правила и пользуемся поиском
 К началу страницы 
+ Ответить 
Altair
сообщение 6.02.2005 11:52
Сообщение #4


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Цитата
Добавлю - я просто учусь программировать в delphi, а знакомый попросил написать в чистом паскале, который я совсем не знаю.

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

p.s. У меня предчувствие, что Delphi вы даже не запускали... ;)


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.07.2025 3:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"