Top.Mail.Ru
Ответы
Аватар пользователя
5 месяцев назад
от

Pascal ABC задача на одномерный массив #5

Напишите пожалуйста программу:

//Ввести массив A(n). Если в массиве нет элементов, кратных 5, то
//уменьшить все четные элементы массива в 10 раз, иначе – найти
//максимальный из отрицательных элементов массива.

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
4мес

Ну, например, так можно:

123456789101112131415161718192021222324252627282930
 Program P5;  
var a: array [1..999] of integer; 
    i, maxo, n, nk: integer; 
begin 
maxo:=0; 
nk:=0; 
writeln ('Для правильной работы программы вводите с клавиатуры только целые числа.'); 
write ('Введите количество элементов массива: '); 
readln (n); 
if (n<1) or (n>999) then writeln ('Ошибка: введено некорректное число.') else begin 
   for i:=1 to n do begin 
       write ('Введите ', i, '-й элемент массива: '); 
       readln (a[i]); 
       if a[i]<0 then maxo:=a[i]; 
       if a[i] mod 5=0 then nk:=nk+1; 
       end; 
   if nk=0 then begin 
      for i:=1 to n do if a[i] mod 2=0 then a[i]:=a[i] div 10; 
      write ('Итоговый массив:'); 
      for i:=1 to n do write (' ', a[i]);
      writeln (' '); 
      end else begin 
          if maxo=0 then writeln ('В введенном массиве нет отрицательных элементов.') else begin 
             for i:=1 to n do if (a[i]<0) and (a[i]>maxo) then maxo:=a[i]; 
             writeln ('Максимальный отрицательный элемент введенного массива: ', maxo); 
             end; 
          end; 
   end;
write ('Программа завершена.'); 
end.  
Аватар пользователя
Мудрец
5мес
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
 program ArrayTask; 
 
const 
  n = 10; // Размер массива (можно изменить) 
 
var 
  a: array[1..n] of integer; 
  i: integer; 
  hasMultipleOf5: boolean; 
  maxNegative: integer; 
  maxNegativeFound: boolean; 
 
begin 
  // Ввод массива 
  writeln('Введите ', n, ' элементов массива:'); 
  for i := 1 to n do 
    read(a[i]); 
 
  // Проверка наличия элементов, кратных 5 
  hasMultipleOf5 := false; 
  for i := 1 to n do 
    if a[i] mod 5 = 0 then 
    begin 
      hasMultipleOf5 := true; 
      break; 
    end; 
 
  // Обработка массива в зависимости от наличия кратных 5 
  if not hasMultipleOf5 then 
  begin 
    // Уменьшение четных элементов в 10 раз 
    writeln('В массиве нет элементов, кратных 5. Уменьшаем четные элементы в 10 раз.'); 
    for i := 1 to n do 
      if a[i] mod 2 = 0 then 
        a[i] := a[i] div 10; 
  end 
  else 
  begin 
    // Поиск максимального из отрицательных элементов 
    writeln('В массиве есть элементы, кратные 5. Ищем максимальный отрицательный элемент.'); 
    maxNegativeFound := false; 
    for i := 1 to n do 
      if a[i] < 0 then 
      begin 
        if not maxNegativeFound then 
        begin 
          maxNegative := a[i]; 
          maxNegativeFound := true; 
        end 
        else if a[i] > maxNegative then 
          maxNegative := a[i]; 
      end; 
 
    if maxNegativeFound then 
      writeln('Максимальный отрицательный элемент: ', maxNegative) 
    else 
      writeln('Отрицательных элементов не найдено.'); 
  end; 
 
  // Вывод измененного массива (если были изменения) 
  if not hasMultipleOf5 then 
  begin 
  writeln('Измененный массив:'); 
  for i := 1 to n do 
    write(a[i], ' '); 
  writeln; 
  end; 
   
  readln; 
end.