Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.03.2009, 18:08
Med Med вне форума
Прохожий
 
Регистрация: 19.03.2009
Сообщения: 4
Репутация: 10
По умолчанию Помогите решить...

Задачи:


1. Найти все натуральные числа, не превосходящие заданного n, десятичная запись которых есть строго возростояющия последовательность цифр.

2. Заменить нулями эл-ты матрицы, стоящие на пересечении строк и столбцов, в которых имеется хотя бы по одному нулю.

3. Определить k-ую цифру последовательности Фибоначчи и последовательности натуральных чисел.
Ответить с цитированием
  #2  
Старый 19.03.2009, 18:13
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Определение
- натурального числа,
- ряда Фибоначчи (вродде Xi = Xi-1 + Xi-2, но не уверен),
- что понимается под "десятичная запись которых есть строго возростояющия последовательность цифр" (пример)
в студию.

Вторая задача решается путем перебора сначала столбцов, если найден 0, то просто меняем элемент с номером столбца на 0, Потом точно такой-же цикл по строкам.
Ответить с цитированием
  #3  
Старый 19.03.2009, 18:27
Med Med вне форума
Прохожий
 
Регистрация: 19.03.2009
Сообщения: 4
Репутация: 10
По умолчанию

- Натуральное число - это число которое делится на еденицу и на само себя
- Я первый раз слышу такое слово "Фибоччи"
- Пример:
1. 123
1>2, 2>3 и т.д.
2. 132 уже некатит, так как:
1>3, 3>2
Ответить с цитированием
  #4  
Старый 19.03.2009, 19:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Первая задача:
В цикле собираем число (в строку, потом из строки в Integer) и проверяем его на то, что оно не делится ни на что, кроме 1 и самого себя).

Где-то так:
Код:
function IsNatural(A : Integer) : Boolean;
begin
  Result := True;
  For I := 2 To A-1 Do
    Begin
      Result := A mod I <> 0;
      If Not Result Then Break;
    End;
end;

function GetNatural(MaxNatural : Integer) : Integer;
var
  N : Integer;
  K : Integer;
begin
  Result := 0;
  N := 0;
  K := 0;
  While N < MaxNatural Do
    Begin
      Inc(K);
      If K > 9 Then Break;
      Buf := '';
      For I := 1 To K Do
        Buf := Buf + Inttostr(I);
      N := StrToInt(Buf);
      If IsNatural(N) Then Result := N;
    End;
end;

Код не проверял, просто сама логика.

Вторая задача

Код:
var
  A : Array [1..20,1..20] Of Integer;

procedure CheckMatrix;
var
  I, J : Integer;
begin
  // По столбцам
  For I := 1 To 20 Do
    For J := 1 To 20 Do
      If A[I,J] = 0 Then
         Begin
            A[I,I] := 0;
            Break;
         End;

  // По строкам
  For I := 1 To 20 Do
    For J := 1 To 20 Do
      If A[J,I] = 0 Then
         Begin
            A[J,J] := 0;
            Break;
         End;
end;

Третья задача

Фибоначчи
Код:
function GetFib(K : Integer) : Boolean;
begin
  If K < 3
    Then Result := 1
    Else Result := GetFib(K-1) + GetFib(k-2);
end;

Натуральные (тут придется работать с памятью).

Код:
var
  NaturalArray : Array Of Integer;

function IsNatural(A : Integer) : Boolean;
begin
  Result := True;
  For I := 2 To A-1 Do
    Begin
      Result := A mod I <> 0;
      If Not Result Then Break;
    End;
end;

function GetNatural(K : Integer) : Integer;
var
  N : Integer;
begin
   If K < Length(NaturalArray) 
     Then Result := NaturalArray[K-1] // Динамичский масив начинается с 0
     Else
       Begin
         N := NaturalArray[High(NaturalArray)];
         While Length(NaturalArray) < K Do
           Begin
             Inc(N);
             If IsNatural(N) Then
               Begin
                 SetLength(NaturalArray,Length(NaturalArray)+1);
                 NaturalArray[High(NaturalArray)] := N;
               End;
          Result := NaturalArray[High(NaturalArray)];
       End;
end;
Ответить с цитированием
  #5  
Старый 19.03.2009, 19:28
Med Med вне форума
Прохожий
 
Регистрация: 19.03.2009
Сообщения: 4
Репутация: 10
По умолчанию

Написав код программы 2-ой задачи, удивилсО, что это программа делает...

код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  n:=StrToInt(Edit1.Text);
  StringGrid1.ColCount:=n;
  StringGrid1.RowCount:=n;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  mas:array[1..50,1..50]of Integer;
  i,j:Integer;
begin
  for i:=1 to n do
    for j:=1 to n do
      mas[i,j]:=StrToInt(StringGrid1.Cells[j-1,i-1]);
  for i:=1 to n do
    for j:=1 to n do
      if mas[i,j]=0 then
        begin
          mas[i,i]:=0;
          Break;
        end;
  for i:=1 to n do
    for j:=1 to n do
      if mas[j,i]=0 then
        begin
          mas[j,j]:=0;
          Break;
        end;
end;

end.

lmikle: Хде теги???
Ответить с цитированием
  #6  
Старый 19.03.2009, 20:10
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

Цитата:
Сообщение от Med
- Натуральное число - это число которое делится на еденицу и на само себя
Натуральное число - это целое и положительное. А то, что вы сказали - это ПРОСТОЕ число. Эх..и чему только в школе учат...
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
  #7  
Старый 19.03.2009, 20:35
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Тогда задачи с натуральными числами не имеют смысла, т.к. в первой это будет первая последовательность, меньшая N, а во второй - просто K.
Т.е. для первой можно сделать так:
Код:
function GetNatural(AMax : Integer) : Integer;
var
  I : Integer;
  Buf : String;
begin
  Buf := '';
  For I := 1 to Min(Length(IntToStr(AMax)),9) Do
    Buf := Buf + IntToStr(I);
  Result := StrToInt(Buf);
end;
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:55.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025