D@niel 239 Скорость 250 км/ч Возраст: 35 Сообщения: 1610 Откуда: Питеp, центр На чем ездит: Honda Lead, Suzuki Burgman, РАФ 2203
Добавлено: 10 Июнь 2008 13:22 Заголовок сообщения: Помогите по Паскалю(((.
Помогите, пожалуйста.
Помогите, пожалуйста по Паскалю. Надо решить несколько задачек до завтрашнего утра( а лучше сегодняшнего вечера). Задачи, наверно, не очень сложные для тех, кто в нем хорошо шарит. Задачи на матрицы и действия с ее элементами. Пиво прилагается.
Задача 1.
Составить алгоритм и программу, которые по заданной квадратной матриц порядка n вычисляют вектор из трех компонент. Первая из них представляет среднее арифметическое элементов, стоящих под главной диагональю, вторая компонента - среднее арифметическое элементов главной диагонали, третья- среднее арифметическое элементов выше главной диагонали.
Здесь надо использовать процедуру, которая будет вычислять среднее арифметическое элементов.
Задача 2.
Составить алгоритм и программу, которые для заданной квадратной матрицы порядка n вычисляют среди элементов, стоящих под главной диагональю максимальный по модулю элемент и номера строки и столбца, на пересечении которых он расположен.
Задача 3.
Составить алгоритм и программу, которые для заданной квадратной матрицы порядка n находят максимальные по модулю элементы в строках и меняют их местами с элементами главной диагонали.
Задача 4.
Составить алгоритм и программу, которые для заданной квадратной матрицы порядка n вычисляют номер и сумму элементов строки, для которой диагональный элемент максимален среди элементов главной диагонали матрицы.
Задача 5.
Составить алгоритм и программу, которые в заданной квадратной матрице порядка n заменяют нулевыми значениями минимальные элементы строк,а минимальные сохраняют в отдельном массиве.
Задача 6.
Составить алгоритм и программу, которые по заданному массиву из n элементов (х1,x2,x3...xn) формируют квадратную матрицу следующего вида:
X1 X2 X3.....Xn
1 X2 X3.....Xn
1 2 X3 Xn
.....................
1 2 3.......Xn
Задача 7.
Составить алгоритм и программу, которые по заданному целому значению х формируют квадратную матрицу А порядка n, каждый элемент которой определяется по правилу: a(i,j)=(i+j)x
Мне нужно хотя бы само тело программы, оформление не так важно.
Алгоритмы тоже нафиг не нужны.
Спасибо.
Матрица - это двумерный массив.
Смет, а ты не мог бы тогда хотя бы сказать, как надо обращаться к элементам главной диагонали и других диагоналей, дальше я как-нибудь сам.
все рассматриваю для квадратной матрицы.
n-размерность
A-матрица
главная диагональ:
for i:=1 to n do
A[i,i]-главная диагональ.
под главной диагональ элементы
for i:=2 to n do
for m:=1 to i-1 do
A[i,m] - элементы под главной диагональю i -№ строки m -№ столбеца
над главной диагональю
for i:=n-1 to 1 do
for m:=i+1 to n do
A[i,m] -элементы над главной диагональю i - №строки m-№столбеца
вот так вот.
Добавлено спустя 5 минут 54 секунды:
вот первая задача почти и решена)
B: array[1..3] of real; - массив из трех элементов
sum:real;
......
sum:=0;
kol:=0;
for i:=2 to n do
for m:=1 to i-1 do
begin
kol:=kol+1;
sum:=sum+A[i,m];
end;
B[1]:=sum/kol;
kol:=0;
sum:=0;
for i:=1 to n do
begin
kol:=kol+1;
sum:=sum+A[i,i];
end;
B[2]:=sum/kol;
sum:=0;
kol:=0;
for i:=n-1 to 1 do
for m:=i+1 to n do
begin
sum:=sum+A[i,m];
kol:=kol+1;
end;
B[3]:=sum/kol;
а процедура я так понимаю должна получать сумму и количество элементов и все.
Добавлено спустя 4 минуты 2 секунды:
max:real;
maxstr:integer; (номер строки)
maxsto:integer; (номер столбца)
.....
max:=abs(A[2,1]);
maxstr:=2;
maxsto:=1;
for i:=3 to n do
for m:=1 to i-1 do
if abs(A[i,m])>max then
begin
max:=abs(A[i,m]);
maxstr:=i;
maxsto:=m;
end;
....
tmp, max:real;
num:integer;
.........
for i:=1 to n do
begin
max:=abs(A[i,1]);
num:=1;
for j:=2 to n do
if abs(A[i,j])>max then
begin
max:=abs(A[i,j]);
num:=j;
end;
tmp:=A[i,i];
A[i,i]:=A[i,num];
A[i,num]:=tmp;
end;
........
вот и третья)))
сцуко форум тупанул и засрал 2 задачки(((((((((((((
В - массив
for i:=1 to n do
begin
for j:=1 to i-1 do
A[i,j]:=j;
for j:=i to n do
A[i,j]:=B[j];
end;
шестая...)))))))
for i:=1 to n do
for j:=1 to n do
A[i,j]:=(i+j)*x;
седьмая))) я так понимаю)
блин кажись так подшумок все и написал0)))) а терь готовится!!! готовиться!!!
Последний раз редактировалось: Смет (10 Июнь 2008 18:00), всего редактировалось 2 раз(а)
ну не знаю, по-моему все правильно кроме шестой задачи, там меня смущает, что может быть такой случай: j:=1 to 0 А так все остальное понял. По-моему все там нормально.
Смет
сделай в сях сам.
1. доска - простой двумерный массив. Или на BYTE сделать а не в массиве.
2. количество объектов по количеству фигур.
свойства объектов - в зависимости от конкретной фигуры.
3. функция "съел", шах, мат, рокировка, клетка свободна?.
4. функция смены объекта на объект на определенной линии.
5. логика. Ну в зависимости как сам шахматы знаешь - от тупо "перебор вариантов. Есть ли фигуры которые можно съесть?=лист1. Чем?=лист2. Возможны ли последствия для лист2 на следующем ходе? Сравнение по ценности фигур, которые в лист1, сравнение по ценности фигур в лист2, выборка решения на базе условий. Если лист1 пуст, значит перебор ходов с проверкой возможности съесть фигуру на след. ходе, с проверкой возможности быть съеденным на послед. ходе, если не будет изменений на доске", до примерно тоже самое на на Х ходов вперед с использованием комбинаций.
Ну и отработка на фоне этого шахов и матов.
Если не лень разбирать чужие исходники, то посмотри примеры, прилагающиеся к Турбо Паскаль 7.0. В папке ?:\BP\EXAMPLES\COMMON\CHESS\OWL лежат исходники основных модулей полноценной программы для игры в шахматы. Т.е., там есть и процедура, находящая значение утверждений "шах" и "мат".
Смет
ну например такие объекты:
пешка, слон, и т.п.
свойства:
- особенности ходов
- приоритет по отношению к другим фигурам
- возможность трансформации в другие фигуры - для пешек
и тп.
Смет
неожиданная мысль - а какой вообще смысл что либо делать на языке уже фактически мертвом и предельно бесполезном?
Может интереснее и полезнее шахматы сделать на чем-нибудь другом?
Например - на Windows Worklfow Foundation?
Да так, чтобы юзер уведомлялся о шагах компа каким нить интересным образом, и где нить велась история ходов
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы
Страница сгенерированна за 0.00283 секунд с 11 обращениями в базу данных