![]() |
|
|
Регистрация | << Правила форума >> | 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; |