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

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

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

> Использование процедур и функций, разбор задачи
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской
Реальное имя: valera

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


Дана задача
Пусть дана матрица 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.



Дальше ступор включился полный, чё делать ХЕЗ
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской
Реальное имя: valera

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


Посмотрите пожалуйста так на что то уже похоже
program One;

Const

N=10; {число СТРОК!}

N=10; {число СТОЛБЦОВ!}

type

TElem = integer;

Matrix = array[1..N,1..N] of TElem;


(* Построчный ввод матрицы *)

Procedure ReadMatr(var A:Matrix; var n,n:word );

var

i,j:word;

begin

repeat

write('Vvedide kol-vo strok: '); readln(N)

until (N>0) and (N<=N);

repeat

write('Vvedide kol-vo stolbcov: '); readln(n)

until (n>0) and (N<=N);

For i:=1 to n do

begin

For j:=1 to n do

begin

write('A[',i,j,']= ');

readln(A[i,j])

end

end

end;


(* Построчный вывод матрицы *)

Procedure PrintMatr(A:Matrix; n,n:word);

Var

i,j:word;

begin

For i:=1 to n do

begin

For j:=1 to n do write(A[i,j],' ');

writeln

end

end

{ тестовая программа}

var

n,n:word;

a:matrix;

Begin

Readmatr(a,n,n);

PrintMatr(a,n,n)

end;

function TestSym(j:integer):boolean;

var i:integer;

b:boolean;

begin

b:=true;

for i:=1 to n div 2 do

b:=b and (a[j,i]=a[j,n-i+1]);

test:=b;

end;


это только часть кода, не полный. Дальше ещё интересней

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
valeral   Использование процедур и функций   2.06.2006 11:48
volvo   Объединить все это в одну программу, и запустить. …   2.06.2006 11:52
Malice   Не понял, в задании требуется проверить симметричн…   2.06.2006 12:21
Malice   Это потому что массив real, а функция с параметром…   2.06.2006 13:26
valeral   во первых вылезла ошибка в блоке подсчета if TestS…   2.06.2006 12:36
valeral   Хорошо, а как тогда сделать то? Я так понял что то…   2.06.2006 13:57
Malice   Функция TestSym должна быть примерно такой: functi…   2.06.2006 14:18
valeral   Посмотрите пожалуйста так на что то уже похоже pro…   2.06.2006 14:48
Malice   Посмотрите пожалуйста так на что то уже похоже Т…   2.06.2006 15:15
RaV   а где дальше?   2.06.2006 15:09
valeral   RaV да я вижу что не то получается, три не будет м…   2.06.2006 15:11
volvo   [color=red]Дана задача Пусть дана матрица A(N x N)…   2.06.2006 15:16
valeral   ребят, не злитесь. Я ж только учусь, и поэтому не …   2.06.2006 15:33
valeral   нифига не выходит :wacko: чувствую себя полным иди…   2.06.2006 17:20
valeral   уже второй час долблюсь с этой задачей. Malice, Vo…   2.06.2006 18:51
Malice   Const N=5; type Matrix = array[1..N,1..N] of int…   2.06.2006 19:56
valeral   Malice, Volvo громаднейшее спасибо   2.06.2006 21:24


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

 





- Текстовая версия 20.04.2024 10:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name