Исправить программу, чтобы ее часть была представлена в виде функции - C (СИ)
Формулировка задачи:
#include <stdio.h>
int main ()
{
int mas[100],m[100],i,j,n,a,b,c,d;
printf ("Vvedite kolichestvo chisel\n");
scanf ("%d", &n);
printf ("Vvedite chisla\n");
for (i=0; i<n; i++)
{scanf ("%d", &mas[i]); m[i]=mas[i];}
for (i=0; i<n; i++)
{b=m[i];
c=0;
d=1;
while (b!=0)
{
a=b%10;
b=b/10;
if (a==0) c=d+c;
if ((a!=0)&(a!=1)) c=a*d+c;
d=d*10;
}
m[i]=c;
}
printf ("Massiv 1\n");
for (i=0; i<n; i++)
printf ("%d\n", mas[i]);
printf ("Massiv 2\n");
for (i=0; i<n; i++)
printf ("%d\n", m[i]);
}for (i=0; i<n; i++)
{b=m[i];
c=0;
d=1;
while (b!=0)
{
a=b%10;
b=b/10;
if (a==0) c=d+c;
if ((a!=0)&(a!=1)) c=a*d+c;
d=d*10;
}
m[i]=c;
}Решение задачи: «Исправить программу, чтобы ее часть была представлена в виде функции»
textual
Листинг программы
void solve (int m[], int n){
int i,a,b,c,d;
for (i=0; i<n; i++)
{b=m[i];
c=0;
d=1;
while (b!=0)
{
a=b%10;
b=b/10;
if (a==0) c=d+c;
if ((a!=0)&(a!=1)) c=a*d+c;
d=d*10;
}
m[i]=c;
}
}
Объяснение кода листинга программы
- Входные данные представлены в виде массива
mи целого числаn, гдеn- количество элементов в массиве. - Переменная
iинициализируется нулем и используется в цикле для прохода по всем элементам массиваm. - Внутри цикла переменная
bпринимает значениеm[i], а переменныеcиdинициализируются нулем и единицей соответственно. - В цикле
whileпроисходит обработка каждого разряда числа, представленного вb. - Переменная
aпринимает остаток от деленияbна 10 и используется для представления текущего разряда числа. - Значение
bобновляется путем деления на 10. - Если текущий разряд равен нулю, то переменная
cобновляется путем сложенияdи текущего значенияc. - Если текущий разряд не равен нулю и не равен 1, то переменная
cобновляется путем умноженияdна текущее значениеcи добавления значенияa. - Значение
dобновляется путем умножения на 10. - После завершения цикла
while, значениеcпредставляет собой сумму всех разрядов числа, представленного вm[i]. - Значение
m[i]заменяется наc. - Цикл продолжается до тех пор, пока все элементы массива
mне будут обработаны. - Выход из функции не предусмотрен.