Не вижу ошибку - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Что-то не могу увидеть ошибку.Во втором массиве выдает только 1 элемент и все.Весь вечер сижу за компьютером и не могу увидеть в чем,собственно,загвоздка.Посмотрите свежим взглядом.
#define _CRT_SECURE_NO_WARNINGS
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define N 35
 
void input_array(int *A, int A_size);
void print_array(int *A, int A_size);
 
/*ЭТО КОСТЫЛЬ ДЛЯ ФУНКЦИИ ИТОА, КОТОРОЙ НЕТ В ЛИНУКСЕ*/
 
/* reverse:  переворачиваем строку s на месте */
void reverse(char s[])
{
    int i, j;
    char c;
 
    for (i = 0, j = strlen(s) - 1; i < j; i++, j--) {
        c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}
/*ЭТО КОСТЫЛЬ ДЛЯ ФУНКЦИИ ИТОА, КОТОРОЙ НЕТ В ЛИНУКСЕ*/
void itoa(int n, char s[])
{
    int i, sign;
 
    if ((sign = n) < 0)  /* записываем знак */
        n = -n;          /* делаем n положительным числом */
    i = 0;
    do {       /* генерируем цифры в обратном порядке */
        s[i++] = n % 10 + '0';   /* берем следующую цифру */
    } while ((n /= 10) > 0);     /* удаляем */
    if (sign < 0)
        s[i++] = '-';
    s[i] = '\0';
    reverse(s);
}

/*ЗДЕСЬ ПРОГРАММА*/
int main()
{
    char *ach;
    char p[17];
    int y = 10;
    int i, X = 0;
    int A[N];
    srand(time(0));
    input_array(A, N);
    puts("\nDo:");
    print_array(A, N);
    printf("Vvedite chislo X=");
    scanf("%i",&X);
    for (i = N - 1; i != 0; --i) {
        while (A[i] =X)
        {
            int tmp = A[i];
            A[i] = 0;
            
            break;
        }
    }
 
    int b_size = N;
 
    // Выделение памяти под новый массив и его заполнение
    int * b = (int *)malloc(sizeof(int) * b_size);
    for (i = b_size - 1; i != 0; --i) { //тоже с конца прогоняем по
        while (A[i] != 0)  //условию,что элемент не равен 0
        {
            b[i] = A[i];//то элемент второго массива равен элементу первого
            break;
        }
 
    }
    
    puts("\nPosle:");
    while (i < sizeof(A))//цикл пока i менее длины массива
    {
        i++;
    }   
 
    print_array(A, b_size);
    getchar();
    return 0;
    }

void input_array(int *A, int A_size)
{
    int i;
    for (i = 0; i < A_size; i++)
    {
        A[i] = 17 + rand() % (100 - 10); //генерируем массив
    }
}
 
void print_array(int *A, int A_size)
{
    int i = 0;
    while (i < A_size)
    {
        if (A[i] != 0)
            printf("%4d", A[i]);
        //printf("\n");
        i++;
    }
        puts("");
}

Решение задачи: «Не вижу ошибку»

textual
Листинг программы
while (A[i] =X)

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


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

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

13   голосов , оценка 4.077 из 5