Где ошибка? подскажите - 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;
}

Объяснение кода листинга программы

  1. Программа сначала запрашивает у пользователя размер массива (n) и сохраняет его в переменную s.
  2. Затем происходит проверка введенного значения размера массива: оно должно быть больше 0 и меньше 100.
  3. Если условие выполняется, то значение n преобразуется в целое число и используется для создания массива arr.
  4. Далее генерируются случайные значения для каждого элемента массива и выводятся на экран.
  5. После этого происходит поиск чисел, содержащих символы '0', '3', '6', '9', и их удаление из массива.
  6. В функции removing происходит преобразование десятичного числа в строку, затем удаляются нужные символы и преобразуется обратно в число.
  7. Возвращаемое значение функции используется для обновления значений элементов массива arr.
  8. Наконец, обновленные значения массива выводятся на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5