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

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

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

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

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

textual
Листинг программы
  1. VAR a:array of integer;
  2. n,i,t:integer;
  3. c:char;
  4. s:string;
  5. BEGIN
  6. Readln (n); //задание размера массива
  7. SetLength(a,n);
  8. For i:=0 to n-2 do begin //чтение данных кроме последнего
  9. s:='';
  10. Repeat
  11. Read(c);
  12. s:=s+c;
  13. Until c=' ';
  14. Val (s,n,t);
  15. a[i]:=n;
  16. end;
  17. Readln (n); //чтение последнего элемента
  18. a[i+1]:=n;
  19. For i:=1 to i+1 do //обработка массива
  20. IF a[i] div 10 <> 0 THEN begin
  21.                          n:=0;
  22.                          Repeat
  23.                          n:=n+(a[i] mod 10);
  24.                          a[i]:=a[i] div 10;
  25.                          Until a[i]=0;
  26.                          a[i]:=n;
  27.                          end;
  28. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы