Где ошибка? подскажите - C (СИ)
Формулировка задачи:
В С Удалить цифры 0, 3, 6, 9 из элементов массива.
#include <stdio.h>
int main()
{
int a[100], b[100] , n, m, s, z, i;
printf("Vvedite razmer masiva:\n");
scanf_s("%d", &n);
if(n<0 || n>100){
printf("Nedopystimay masiv");
return 1;
}
printf("Vvedite elementay masiva:\n");
for (i=0; i<n; i++)
scanf_s("%d", &a[i]);
for (i=0;i<n;i++)
{s=0; z=0;
while(a[i]%10!=0 || a[i]>=10 )
{z=a[i]%10;
a[i]=(a[i]-z)/10;
if (z==0 || z==3 || z==6 || z==9);
else
{ if (s!=0)
s=z*10+s;
else s=z;
} } };
s=z*100+s;
printf("%d", a[i]);
return 0;
}Решение задачи: «Где ошибка? подскажите»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int removing(int d);
int main(void)
{
unsigned n;
int i;
char s[80];
do {
printf("Enter size of array (0<n<100): ");
gets(s);
} while ( atoi(s) < 1 || atoi(s) > 100 );
n = atoi(s);
int arr[n];
/* Генерируем массив случаяными значениями (не больше 1000) */
srand(time(NULL));
for (i = 0; i < n; ++i)
printf("%-5d%c", arr[i] = rand() % 1000, (i % 10 == 9) ? '\n' : ' ');
putchar('\n');
/* Поиск чисел содержащих символ 0, 3, 6, 9 */
for (i = 0; i < n; ++i) {
arr[i] = removing(arr[i]);
printf("%-5d%c", arr[i], (i % 10 == 9) ? '\n' : ' ');
}
return 0;
}
int removing(int d)
{
int i, j;
char s[80];
for (i = 0; i < 80 && d != 0; ++i) {
s[i] = d % 10 + '0';
d /= 10;
}
char cp_s[i];
s[i--] = '\0';
for (j = 0; i >= 0; ) {
if (s[i] == '0'+0 || s[i] == '0'+3 || s[i] == '0'+6 || s[i] == '0'+9)
--i;
else
cp_s[j++] = s[i--];
}
cp_s[j] = '\0';
d = atoi(cp_s);
return d;
}
Объяснение кода листинга программы
- Программа сначала запрашивает у пользователя размер массива (n) и сохраняет его в переменную s.
- Затем происходит проверка введенного значения размера массива: оно должно быть больше 0 и меньше 100.
- Если условие выполняется, то значение n преобразуется в целое число и используется для создания массива arr.
- Далее генерируются случайные значения для каждого элемента массива и выводятся на экран.
- После этого происходит поиск чисел, содержащих символы '0', '3', '6', '9', и их удаление из массива.
- В функции removing происходит преобразование десятичного числа в строку, затем удаляются нужные символы и преобразуется обратно в число.
- Возвращаемое значение функции используется для обновления значений элементов массива arr.
- Наконец, обновленные значения массива выводятся на экран.