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