Страница 1 из 1

Помогите с задачкой

Добавлено: 10 окт 2012, 17:26
Drinian
Условия задачки :
" Задана задана матрица N*M целых чисел . Определить , будет ли в матрице хотя бы один столбец полностью состоящий из одинаковых чисел . В программе должна быть подпрограмма , получающая номер столбца , и определяющая будет ли этот столбец полностью состоять из нулей .
Матрица задана в текстовом файле : сначала размерность матрицы n и m , далее в n строках заданы через пробел по m элементов матрицы A . "

После чтения файла и ввода матрицы , совсем нету идей как решить , может кто-нибудь подсказать ?
Заранее благодарен ^_^

Re: Помогите с задачкой

Добавлено: 12 окт 2012, 07:41
Oleg_Rus
Рассмотрим логику задания.
1. Матрица. Если у нас есть матрица, то в таком случае нам придется по-любой делать проход по всем элементам
2. Подпрограмма (функция\процедура) определяющая будет ли этот столбец полностью состоять из нулей.
3. Подпрограмма (функция\процедура) определяющая будет ли этот столбец полностью состоять из одинаковых чисел.
{
+-----------------------+
| forum.developing.ru |
| edited by Oleg_Rus |
+-----------------------+
}
program matrix;

type mas= array[1..100,1..100] of integer;

var a: mas;
i, j, n, m: integer;
zero, id: boolean;

function is_zero(i: integer): boolean;
var test: boolean;
begin
for j:= 1 to m do
if a[i, j]=0 then test:= true else
begin
test:= false;
break;
end;
is_zero:= test;
end;

function ident(col, key: integer): boolean;
var test: boolean;
begin
for j:= 2 to m do
if a[col, j] = key then test:= true else
begin
test:= false;
break;
end;
ident:= test;
end;

procedure read_array(FName: String; var a:mas);
begin
assign(input, FName); Reset(input);
read(n, m);
for i:=1 to n do
for j:=1 to m do
read(a[i, j]);
close(input)
end;

begin
assign(output,'output.txt'); reWrite(output);
read_array('input.txt', a);
for i:=1 to n do
begin
if ( is_zero(i) ) then zero:= true;
if ( ident(i, a[i, 1]) ) then id:= true;
break;
end;
if zero then writeln('one or more columns is null');
if id then writeln('one or more columns filled');
close(output);
end.

что-то вроде этого. сам не проверял, компилятора под рукой нет, но должно работать...