Однозначные элементы массива оставить без изменения, многозначные заменить на сумму цифр - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Дан массив от 1 до N . Если число из массива однозначное то оставить его как есть , а если многозначное то это число будет равняться сумме цифр. Пример : Ввод : 4 11 3 15 131 Вывод : 2 3 6 5

Решение задачи: «Однозначные элементы массива оставить без изменения, многозначные заменить на сумму цифр»

textual
Листинг программы
VAR a:array of integer;
n,i,t:integer;
c:char;
s:string;
BEGIN
Readln (n); //задание размера массива
SetLength(a,n);
For i:=0 to n-2 do begin //чтение данных кроме последнего
s:='';
Repeat
Read(c);
s:=s+c;
Until c=' ';
Val (s,n,t);
a[i]:=n;
end;
Readln (n); //чтение последнего элемента
a[i+1]:=n;
For i:=1 to i+1 do //обработка массива
IF a[i] div 10 <> 0 THEN begin
                         n:=0;
                         Repeat
                         n:=n+(a[i] mod 10);
                         a[i]:=a[i] div 10;
                         Until a[i]=0;
                         a[i]:=n;
                         end;
END.

Объяснение кода листинга программы

  1. Создается переменная a типа array of integer, которая будет хранить массив целых чисел.
  2. Задается размер массива n с помощью функции Readln().
  3. С помощью функции SetLength() устанавливается длина массива a равной n.
  4. Запускается цикл For, который будет выполняться n-2 раз, где n - размер массива. Внутри цикла считывается строка s и накапливается сумма ее символов.
  5. Вложенный цикл Repeat считывает символ c и добавляет его к строке s. Цикл продолжается до тех пор, пока символ c не станет пустым.
  6. С помощью функции Val() преобразуется строка s в целое число n.
  7. Значение n присваивается элементу массива a[i].
  8. Считывается следующий элемент массива a[i+1].
  9. Запускается цикл For, который будет выполняться i+1 раз, где i - текущий индекс массива.
  10. Внутри цикла проверяется, делится ли элемент массива a[i] на 10 без остатка. Если да, то выполняется последовательность действий:
    • Устанавливается значение n равным 0.
    • Запускается цикл Repeat, который считывает символы и накапливает сумму до тех пор, пока не будет достигнут символ-разделитель '.
    • Значение n обновляется путем добавления к нему суммы символов, прочитанных в цикле Repeat.
    • Элемент массива a[i] делится на 10 и присваивается переменной a[i].
  11. Если элемент массива a[i] не делится на 10 без остатка, то выполняется последовательность действий:
    • Значение n обновляется путем добавления к нему единицы, если текущее значение a[i] не равно нулю.
    • Элемент массива a[i] присваивается значению n.
  12. Считывается следующий элемент массива a[i+1].
  13. Если a[i+1] равно нулю, то цикл For прерывается.
  14. Запускается последний цикл For, который будет выполняться один раз.
  15. Значение n присваивается последнему элементу массива a[i+1].
  16. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы