Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2023, 12:38   #1
Esmadjin
Пользователь
 
Регистрация: 05.03.2023
Сообщений: 14
По умолчанию Дана матрица А(M,N)

Составить программу на pascalABC.NET
Дана матрица А(M,N) Составить вектор из номеров столбцов матрицы, где есть хотя бы одно число Фибоначчи.
Esmadjin вне форума Ответить с цитированием
Старый 06.04.2023, 12:25   #2
Esmadjin
Пользователь
 
Регистрация: 05.03.2023
Сообщений: 14
По умолчанию

var
a: array [1..100, 1..100] of integer;
b:array[1..100] of integer;
k, n, m,i,j: integer;

function isf(b: integer):boolean;
var x,y,z:integer
begin

if b = 1 then isf:=true
else
begin
x:=1; y:=1;z:=x+y;
while z<b do
begin
x:=y;
y:=z;
z:=x+y
end;
if b = z then isf:=true
end
end;




begin
write('введите колтчество строк:');
readln(m);
write('введите количество столбцов:');
readln(n);

for i := 1 to m do
for j := 1 to n do
begin
write('Введите a[', i, ',', j, ']=');
readln(a[i, j]);
end;
writeln;
for i := 1 to m do
for j := 0 to n do
begin
write('Введите a[', i, ',', j, ']=');
readln(a[i, j]);
end;
for i := 1 to m do
for j := 0 to n do
begin
write('Введите a[', i, ',', j, ']=');
readln(a[i, j]);
end;
begin
for j := 1 to n do
write(a[i,j]:5);
writeln;
end;
writeln;
k:=0;
for j:=1 to n do
begin
for i:=1 to m do
if isf(a[i,j]) then
begin
k:=k+1;
b[k]:=j;
break
end;
end;
if k=0 then
writeln('В матрице нет чисел Фибоначчи')
else
begin
for i:=1 to k do
write(b[i],' ')
end
end.
Esmadjin вне форума Ответить с цитированием
Старый 06.04.2023, 19:10   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

1. Зачем 2 раза вводить одну и ту же матрицу?
2. Оформлять правильно (теги CODE, отступы) - Фибоначчи будет?
3. Функция неправильная. В каком случае она выдаст false? Только true или значение не определено.
Я бы написал примерно так:
Код:
  function isf(b: integer):boolean;
var x,y,z:integer
begin
  if b = 1 then isf:=true
  else
    begin
       x:=1;
       y:=1;
       isf := false ;
       while z <= b do
          begin
             z:=x+y ;
             if b = z then 
                begin
                  isf:=true;
                  break
                end;
             x:=y;
             y:=z;
          end;
   end;
end;

Последний раз редактировалось digitalis; 06.04.2023 в 19:29.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана матрица 5Х5.C++ Evgenii_95 Помощь студентам 1 23.11.2015 15:46
Дана Матрица 20 на 15 Aristocrat Паскаль, Turbo Pascal, PascalABC.NET 5 11.11.2014 08:34
дана матрица М на М. pedro1208 Паскаль, Turbo Pascal, PascalABC.NET 0 22.12.2012 16:30