Однозначные элементы массива оставить без изменения, многозначные заменить на сумму цифр - 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.
Объяснение кода листинга программы
- Создается переменная
a
типаarray of integer
, которая будет хранить массив целых чисел. - Задается размер массива
n
с помощью функцииReadln()
. - С помощью функции
SetLength()
устанавливается длина массиваa
равнойn
. - Запускается цикл
For
, который будет выполнятьсяn-2
раз, гдеn
- размер массива. Внутри цикла считывается строкаs
и накапливается сумма ее символов. - Вложенный цикл
Repeat
считывает символc
и добавляет его к строкеs
. Цикл продолжается до тех пор, пока символc
не станет пустым. - С помощью функции
Val()
преобразуется строкаs
в целое числоn
. - Значение
n
присваивается элементу массиваa[i]
. - Считывается следующий элемент массива
a[i+1]
. - Запускается цикл
For
, который будет выполнятьсяi+1
раз, гдеi
- текущий индекс массива. - Внутри цикла проверяется, делится ли элемент массива
a[i]
на 10 без остатка. Если да, то выполняется последовательность действий:- Устанавливается значение
n
равным 0. - Запускается цикл
Repeat
, который считывает символы и накапливает сумму до тех пор, пока не будет достигнут символ-разделитель'
. - Значение
n
обновляется путем добавления к нему суммы символов, прочитанных в циклеRepeat
. - Элемент массива
a[i]
делится на 10 и присваивается переменнойa[i]
.
- Устанавливается значение
- Если элемент массива
a[i]
не делится на 10 без остатка, то выполняется последовательность действий:- Значение
n
обновляется путем добавления к нему единицы, если текущее значениеa[i]
не равно нулю. - Элемент массива
a[i]
присваивается значениюn
.
- Значение
- Считывается следующий элемент массива
a[i+1]
. - Если
a[i+1]
равно нулю, то циклFor
прерывается. - Запускается последний цикл
For
, который будет выполняться один раз. - Значение
n
присваивается последнему элементу массиваa[i+1]
. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д