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

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

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

Восстановить пароль

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

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

Составить программу на pascalABC.NET
Дана матрица А(M,N) Составить вектор из номеров столбцов матрицы, где есть хотя бы одно число Фибоначчи.

Последний раз редактировалось Esmadjin; 23.03.2023 в 12:36.
Esmadjin вне форума Ответить с цитированием
Старый 10.04.2025, 12:34   #2
dimagl90
Новичок
Джуниор
 
Регистрация: 09.04.2025
Сообщений: 3
По умолчанию

Esmadjin,
Код:
program FibonacciColumns;

uses System;

var
  A: array of array of Integer;
  FibonacciSet: set of Integer;
  FibonacciNumbers: array of Integer;
  M, N, i, j: Integer;
  Columns: array of Integer;
  ColCount: Integer;

// Функция для проверки, является ли число Фибоначчи
function IsFibonacci(num: Integer): Boolean;
var
  a, b, temp: Integer;
begin
  a := 0;
  b := 1;
  while a <= num do
  begin
    if a = num then
      Exit(True);
    temp := a;
    a := b;
    b := temp + b;
  end;
  Exit(False);
end;

// Процедура для создания матрицы и заполнения её значениями
procedure CreateMatrix(M, N: Integer);
var
  i, j: Integer;
begin
  SetLength(A, M, N);
  Randomize;
  for i := 0 to M - 1 do
    for j := 0 to N - 1 do
      A[i][j] := Random(100); // Заполнение случайными числами от 0 до 99
end;

// Процедура для поиска столбцов с числами Фибоначчи
procedure FindFibonacciColumns;
var
  i, j: Integer;
  isFibonacciColumn: Boolean;
begin
  ColCount := 0;
  SetLength(Columns, N); // Максимальное количество столбцов
  
  for j := 0 to N - 1 do
  begin
    isFibonacciColumn := False;
    for i := 0 to M - 1 do
    begin
      if IsFibonacci(A[i][j]) then
      begin
        isFibonacciColumn := True;
        Break;
      end;
    end;
    if isFibonacciColumn then
    begin
      Columns[ColCount] := j + 1; // Номер столбца (с 1)
      Inc(ColCount);
    end;
  end;
  
  // Сокращаем массив до фактического количества
  SetLength(Columns, ColCount);
end;

begin
  Write('Введите количество строк M: ');
  ReadLn(M);
  Write('Введите количество столбцов N: ');
  ReadLn(N);
  
  CreateMatrix(M, N);
  
  FindFibonacciColumns;

  WriteLn('Номера столбцов, содержащих хотя бы одно число Фибоначчи:');
  for i := 0 to ColCount - 1 do
    Write(Columns[i], ' ');
  WriteLn;
end.
dimagl90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана Матрица 20 на 15 Aristocrat Паскаль, Turbo Pascal, PascalABC.NET 5 11.11.2014 08:34
Дана матрица n*m... keb1 Помощь студентам 7 29.06.2013 11:06
Дана матрица n*m... keb1 Помощь студентам 1 29.06.2013 10:08
дана матрица Adolfio C# (си шарп) 0 12.12.2012 11:33