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

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

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

> задача на совершенные числа
Анжелика
сообщение 27.12.2005 18:57
Сообщение #1


Новичок
*

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

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


Привет всем. У меня есть вопрос по задаче, которая приведена ниже, скажите, правильно ли я осуществила алгоритм и вообще я правильно решила задачу? Вот задача: "Вводятся размеры двумерного массива, состоящего из целых чисел, и его элементы. Действия: найти строку с минимальным количеством совершенных чисел."
Код

Uses crt;

Var
  a:array [1..100,1..100] of integer;
  i,l,n,k,s,c,m,j,ns:integer;
  f:boolean;
Begin
     clrscr;
     writeln('vvedite n');
                      readln(n);
     writeln('vvedite m');
                      readln(m);
     writeln('vvedite matrizy');
     for i:=1 to n do
     begin
         for j:=1 to m do
         begin
              write('a[',i,',',j,']');
              readln(a[i,j]);
         end;
         writeln;
     end;

     {-----------------------------------------}

     l:=n; f:=false;
     for i:=1 to n do
     begin
          c:=0;
               for j:=1 to m do
               begin
                    S:=0;
                    for k:=1 to (a[i,j]-1) do if a[i,j]mod k=0 then s:=s+k;
                    if a[i,j]=s then c:=c+1;
               end;
          if (c<=l) and (c<>0) then
             begin
                  l:=c;
                  ns:=i;
                  f:=true
             end;
     end;

     {------------------------------------------------------}

     if f then
              begin
                   writeln('pechat stroki');
                   for j:=1 to m do
                       write (a[ns,j]:5);
              end
          else write('takih net');
     readln;
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
klem4
сообщение 27.12.2005 20:13
Сообщение #2


Perl. Just code it!
******

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

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


Посмотри вот эту прогу, если что не понятноб спаршивай, ps всегда лучше использовать подпрограммы, легче разбираться потом будет и ошибки искать ...

uses crt;
const
n=4;
type
TMatrix = array[1..n,1..n] of integer;

procedure Input(var mx : TMatrix);
var
i,j : byte;
begin
for i := 1 to n do
for j := 1 to n do begin
write('m[',i,',',j,']=');
readln(mx[i,j]);
end;
writeln;
end;

procedure Print(mx : TMatrix);
var
i,j : byte;
begin
for i := 1 to n do begin
writeln;
for j := 1 to n do write(mx[i,j]:3,' ');
end;
writeln;
end;

function IsPerfect(k : integer) : boolean;
var
s,i : integer;
begin
IsPerfect := false;
s := 0;
for i := 1 to k div 2 do
if k mod i = 0 then
s := s + i;
IsPerfect := (k=s);
end;

function PerfectInRow(mx : TMatrix; row : byte) : byte;
var
count,j : byte;
begin
count := 0;
for j := 1 to n do
if IsPerfect(mx[row,j]) then inc(count);
PerfectInRow := count;
end;

function GetMinRow(mx : TMatrix) : byte;
var
min,i : byte;
begin
min := 1;
for i := 2 to n do
if PerfectInRow(mx, i) < PerfectInRow(mx, min) then
min := i;
GetMinRow := min;
end;

var
m : TMatrix;
i : byte;
begin

clrscr;

Input(m);
Print(m);
writeln;
writeln(GetMinRow(m));


readln
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анжелика
сообщение 27.12.2005 22:20
Сообщение #3


Новичок
*

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

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


Очень признательна за вариант, но у меня вопрос почему нет ввода размера матрицы и почему она квадратная?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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