![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Задачи: 1. Найти все натуральные числа, не превосходящие заданного n, десятичная запись которых есть строго возростояющия последовательность цифр. 2. Заменить нулями эл-ты матрицы, стоящие на пересечении строк и столбцов, в которых имеется хотя бы по одному нулю. 3. Определить k-ую цифру последовательности Фибоначчи и последовательности натуральных чисел. |
|
#2
|
|||
|
|||
|
Определение
- натурального числа, - ряда Фибоначчи (вродде Xi = Xi-1 + Xi-2, но не уверен), - что понимается под "десятичная запись которых есть строго возростояющия последовательность цифр" (пример) в студию. Вторая задача решается путем перебора сначала столбцов, если найден 0, то просто меняем элемент с номером столбца на 0, Потом точно такой-же цикл по строкам. |
|
#3
|
|||
|
|||
|
- Натуральное число - это число которое делится на еденицу и на само себя
- Я первый раз слышу такое слово "Фибоччи" ![]() - Пример: 1. 123 1>2, 2>3 и т.д. 2. 132 уже некатит, так как: 1>3, 3>2 |
|
#4
|
|||
|
|||
|
Первая задача:
В цикле собираем число (в строку, потом из строки в 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
|
|||
|
|||
|
Написав код программы 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
|
||||
|
||||
|
Цитата:
|
|
#7
|
|||
|
|||
|
Тогда задачи с натуральными числами не имеют смысла, т.к. в первой это будет первая последовательность, меньшая 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; |