Однозначные элементы массива оставить без изменения, многозначные заменить на сумму цифр - 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]. - Конец программы.