Vladislav98
?>

Ребят скинула преподавателю задание и у нее неверное решение вылезает. Когда сама делала раз 20 все нормально было. Посмотрите есть ли ошибка и если есть как ее исправить что бы работало. Задача: Дан массив целых чисел, состоящий из 25 элементов. Из данного массива исключить последнее положительное число, а остальные записать в новый массив. Заполнить при функции RANDOM. Фото что вышло у преподавателя прикрепляю. program z3; const n = 25; var arr1, arr2: array[1..n] of integer; i, d: integer; begin d := n; for i := 1 to d do begin arr1[i] := random(20) - 10; write(arr1[i], ' '); end; for i := d downto 1 do if (arr1[i] >0) then break; dec(d); for i := i to d do arr1[i] := arr1[i + 1]; writeln; for i := 1 to d do begin arr2[i] := arr1[i]; write(arr2[i], ' '); end; end.

Информатика

Ответы

skvorec3424

Меньше чем 3-х основание СС быть не может. (Сама догадайся почему ;-)  

 

Делим:  

 

23 : 3 = 7 ост. 2 — подходит  

23 : 4 = 5 ост. 3 — не подходит  

23 : 5 = 4 ост. 3 — не подходит  

23 : 6 = 3 ост. 5 — не подходит  

23 : 7 = 3 ост. 2 — подходит  

23 : 8 = 2 ост. 7 — не подходит  

23 : 9 = 2 ост. 5 — не подходит  

23 : 10 = 2 ост. 3 — не подходит  

23 : 11 = 2 ост. 1 — не подходит  

23 : 12 = 1 ост. 11 — не подходит  

23 : 13 = 1 ост. 10 — не подходит  

23 : 14 = 1 ост. 9 — не подходит  

23 : 15 = 1 ост. 8 — не подходит  

23 : 16 = 1 ост. 7 — не подходит  

23 : 17 = 1 ост. 6 — не подходит  

23 : 18 = 1 ост. 5 — не подходит  

23 : 19 = 1 ост. 4 — не подходит  

23 : 20 = 1 ост. 3 — не подходит  

23 : 21 = 1 ост. 2 — подходит  

23 : 22 = 1 ост. 1 — не подходит  

23 : 23 = 1 ост. 0 — не подходит  

 

Далее для всех СС больше 23 остаток будет 23. Следовательно нет смысла их рассматривать.  

 

Итого: 2, 7 и 21.

Chausmonk4
// PascalABC.NET 3.0, сборка 1073
const
  nn=30;
  mm=30;
var
  a:array[1..mm,1..nn] of integer;
  m,n,i,j,k,s:integer;
begin
  Writeln('Введите число строк и столбцов массива: '); Read(m,n);
  Randomize;
  Writeln('*** Исходный массив ***');
  k:=0;
  for i:=1 to m do begin
    for j:=1 to n do begin
      a[i,j]:=Random(51)-25;
      Write(a[i,j]:4);
      if Odd(a[i,j]) then Inc(k)
    end;
    Writeln
  end;
  if k>5 then begin
    Writeln('Средние арифметические отрицательных элементов по строкам');
    for i:=1 to m do begin
      s:=0; k:=0;
      for j:=1 to n do
        if a[i,j]<0 then begin Inc(k); s:=s+a[i,j] end;
      if k>0 then Writeln(s/k:9:5) else Writeln('  0.00000');
    end
  end
  else begin
    Writeln('*** Результирующий массив ***');
    for i:=1 to m do begin
      for j:=1 to n do begin a[i,j]:=2*a[i,j]; Write(a[i,j]:4) end;
    Writeln
    end
  end
end.

Тестовые решения:
Введите число строк и столбцов массива:
8 6
*** Исходный массив ***
 -16  -8  -1  24 -22   1
  -9 -20 -25  13 -11  10
 -15  10 -12  20 -22   3
  -6  25  -3  25 -14  22
  24  -4  24  17  -4 -17
 -23  -9 -22   1 -18 -13
 -12  13   6 -16   2 -13
  19   8 -22  14  -3   4
Средние арифметические отрицательных элементов по строкам
-11.75000
-16.25000
-16.33333
 -7.66667
 -8.33333
-17.00000
-13.66667
-12.50000

Введите число строк и столбцов массива:
3 5
*** Исходный массив ***
   3  24 -21 -22  -8
 -21  14 -22   0 -22
  15 -16  -2   6  22
*** Результирующий массив ***
   6  48 -42 -44 -16
 -42  28 -44   0 -44
  30 -32  -4  12  44

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Ребят скинула преподавателю задание и у нее неверное решение вылезает. Когда сама делала раз 20 все нормально было. Посмотрите есть ли ошибка и если есть как ее исправить что бы работало. Задача: Дан массив целых чисел, состоящий из 25 элементов. Из данного массива исключить последнее положительное число, а остальные записать в новый массив. Заполнить при функции RANDOM. Фото что вышло у преподавателя прикрепляю. program z3; const n = 25; var arr1, arr2: array[1..n] of integer; i, d: integer; begin d := n; for i := 1 to d do begin arr1[i] := random(20) - 10; write(arr1[i], ' '); end; for i := d downto 1 do if (arr1[i] >0) then break; dec(d); for i := i to d do arr1[i] := arr1[i + 1]; writeln; for i := 1 to d do begin arr2[i] := arr1[i]; write(arr2[i], ' '); end; end.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Кожуховский398
татьяна1245
mgg64
diana8
olgalooo
ren7869
Галина-Юлия1292
Создайте аниме ник для кс го​
maximovpavel9114
andre6807
extremhunter
rabchek145200614
Grishanin
minasov19
nofate1016585
ksankaaleks611