![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
valeral |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Реальное имя: valera Репутация: ![]() ![]() ![]() |
Дана задача
Пусть дана матрица A(N x N), а симметричная строка – такая строка, у которой все ее элементы симметричны относительно ее центрального элемента. Воспользуйтесь логической функцией, определяющей симметричность i-й строки, а также функцией, подсчитывающей количество таких строк в заданной матрице. Что я сделал program One;
const
N = 100;
M = 10;
var
A : array[1..N, 1..M] of real;
i, Count, Row, MaxCount : integer;
{ Ввод исходной матрицы }
procedure InputMatrix;
var
i, j : integer;
begin
writeln( ‘+++ Введите исходную матрицу +++’ );
for i := 1 to N do
for j := 1 to M do
begin
write( ‘A[’, i, ‘;’, j, ‘] = ’ );
readln( A[i, j] );
end;
end;
{ Вывод матрицы на экран }
procedure PrintMatrix;
var
i, j : integer;
begin
writeln( ‘+++ Матрица A +++’ );
for i := 1 to N do
begin
for j := 1 to M do
write( A[i,j], ‘ ’ );
writeln;
end;
end;
Потом проверка на симметричность
{ Проверка, является ли число симметричным }
function TestSym( x : integer ) : boolean;
var
y, z : integer;
begin
y := 0;
z := x;
while z > 0 do
begin
y := y * 10 + z mod 10;
z := z div 10;
end;
TestSym := x = y;
end;
потом подсчет
{ Подсчёт в строке симметричных чисел }
function CalculateRow( x : integer ) : integer;
var
i, Count : integer;
begin
Count := 0;
for i := 1 to M do
if TestSym( A[x,i] ) then Count := Count + 1;
CalculateRow := Count;
end;
begin
InputMatrix;
writeln; writeln;
PrintMatrix;
MaxCount := 0;
Row := 0;
for i := 1 to N do
begin
Count := CalculateRow( i );
if Count > MaxCount then
begin
MaxCount := Count;
Row := i;
end;
end;
writeln; writeln;
if Row = 0 then
writeln( ‘Нет строк с симметричными числами’ );
else
writeln( ‘Строка с макс. кол-вом сим. чисел: ’, Row );
end.
Дальше ступор включился полный, чё делать ХЕЗ |
![]() ![]() |
valeral |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Реальное имя: valera Репутация: ![]() ![]() ![]() |
уже второй час долблюсь с этой задачей. Malice, Volvo прошу вас добейте её и я отстану от вас
Сообщение отредактировано: valeral - 2.06.2006 14:51 |
![]() ![]() |
![]() |
Текстовая версия | 27.07.2025 9:38 |