Top.Mail.Ru
Ответы

Задача на языке Pascal. Помогите пожалуйста через 8 часов мне сдавать ее!!!

Дан массив целых чисел, состоящий из 30 элементов. 1) Найти сумму отрицательных элементов. 2) Заменить первый отрицательный элемент нулем. 3) Удалить из него все элементы, первая цифра которых четная. 4) Вставить число k1 после всех элементов, больших заданного числа, а число k2 – перед всеми элементами, кратными 3 (k1 и k2 вводить с клавиатуры). 5) Перенести первые k элементов в конец, то есть: a[k=1], a[k+2], a[n], …, a[1], a[2],…,a[k].

По дате
По рейтингу
Аватар пользователя
Мастер
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
 program Task(input, output); 
var 
  A: array[1..30] of integer; 
  n, i, j, k, k1, k2, sum, flag: integer; 
begin 
  {Ввод данных} 
  for i := 1 to 30 do 
    read(A[i]); 
  readln(k1, k2); 
 
  {1) Сумма отрицательных элементов} 
  sum := 0; 
  for i := 1 to 30 do 
    if A[i] < 0 then 
      sum := sum + A[i]; 
 
  {2) Замена первого отрицательного элемента нулем} 
  flag := 0; 
  for i := 1 to 30 do 
    if A[i] < 0 then 
    begin 
      A[i] := 0; 
      flag := 1; 
      break; 
    end; 
  if flag = 0 then 
    writeln('Отрицательных элементов нет'); 
 
  {3) Удаление элементов с четной первой цифрой} 
  i := 1; 
  j := 1; 
  while i <= 30 do 
  begin 
    if (A[i] div 10) mod 2 <> 0 then 
    begin 
      A[j] := A[i]; 
      inc(j); 
    end; 
    inc(i); 
  end; 
  n := j - 1; 
 
  {4) Вставка чисел k1 и k2} 
  {4.1) k1 после всех элементов, больших заданного} 
  i := n; 
  while i >= 1 do 
  begin 
    if A[i] > k1 then 
    begin 
      for j := n + 1 downto i + 1 do 
        A[j] := A[j - 1]; 
      A[i + 1] := k1; 
      inc(n); 
      break; 
    end; 
    dec(i); 
  end; 
  {4.2) k2 перед всеми элементами, кратными 3} 
  i := 1; 
  while i <= n do 
  begin 
    if A[i] mod 3 = 0 then 
    begin 
      for j := n + 1 downto i + 1 do 
        A[j] := A[j - 1]; 
      A[i] := k2; 
      inc(n); 
      inc(i); 
    end; 
    inc(i); 
  end; 
 
  {5) Перенос первых k элементов в конец} 
  k := 1; 
  while k <= n do 
  begin 
    for j := n + 1 downto k + 1 do 
      A[j] := A[j - 1]; 
    A[k] := A[n]; 
    inc(k); 
    dec(n); 
  end; 
 
  {Вывод результата} 
  for i := 1 to n do 
    write(A[i], ' '); 
end.  
Аватар пользователя
Ученик

Определи, чему должна быть равна переменная  k, чтобы цикл выполнился ровно  2 раза:

i := 5;

while (i > k) do begin

  writeln(i, ' ');

  i := i - 1;

end;

Аватар пользователя
Мудрец

Chat GPT в помощь

Аватар пользователя
Ученик

Хз