Где ошибка? подскажите - 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.
- Наконец, обновленные значения массива выводятся на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д