Создать динамический массив, в котором по одному, каждый раз увеличивается размер массива - C (СИ)

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

Используя malloc и realloc, помогите написать программу реальных чисел массив ,,Array" со 100 элементами . Можно заполнить N элементов массива (N>0, вводит пользователь ) . Создать динамический массив , в котором по одному , каждый раз увеличивается размер массива , Переписать элементы массива Array , которые не целые. Добавлено через 4 часа 3 минуты Вот применр что у меня есть - но э\то не совсем то , что мне нужно !! Может кто помочь переделать под меня ? Буду миллион раз благодарен ():d
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#include <stdlib.h>
 
int v[100]; 
int *v1; 
int i, a, b = 0;
char ans;
 
int main() {
    do {
        printf("Array size: ");
        scanf("%d", &a);
        if (a > 100 || a <= 0) {
            printf("\nError! 0 < size < 100!");
        }
        else {
            v1 = NULL;
            b = 0;
            do {
                printf("\nDo you want to fill array by yourself?\nEnter y or n: "
                    );
                flushall();
                scanf("%c", &ans);
                if (ans != 'y' && ans != 'n')
                    printf("\nError! Enter y or n!");
                else
                    break;
            }
            while (ans != 'y' && ans != 'n');
            if (ans == 'n') {
                for (i = 0; i < a; i++) {
                    v[i] = 1 + rand() % 10;
                    printf("Array[%d]:  %d\n", i + 1, v[i]);
                }
            }
            else {
                printf("\nFill the array: \n");
                for (i = 0; i < a; i++) {
                    printf("%d element: ", i + 1);
                    scanf("%d", &v[i]);
                }
            }
            printf("\n");
            for (i = 0; i < a; i++)
                printf("%d ", v[i]);
 
            printf("\n\n");
            for (i = 0; i < a - 1; i++) {
                if (v[i] < v[i + 1]) {
                    b++;
                    if (v1 == NULL) {
                        v1 = (int*)calloc(b, sizeof(int));
                    }
                    else {
                        v1 = (int*)realloc(v1, b*sizeof(int));
                    }
                    v1[b - 1] = v[i];
                    printf("%d ", v1[b - 1]);
                }
            }
        }
        printf("\n\nRepeat? Yes - y ");
        flushall();
        scanf("%c", &ans);
        clrscr();
    }
    while (ans == 'y' || ans == 'Y');
}
Добавлено через 21 час 41 минуту ребятааа - помогите )

Код к задаче: «Создать динамический массив, в котором по одному, каждый раз увеличивается размер массива - C (СИ)»

textual
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    float A[10] = {1.0, 2.7, 3.63, 5.2 , 4.0, 7.0, 8.0, 9.35, 10.1, 5.0}, *B;
    int m = 0;
 
    printf("Исходный массив : \n\n");
    for (int i = 0; i < 10; i++)
        printf("%3.1f ", A[i]);
    
    B = (float*)malloc(m*sizeof(float));
    for (int i = 0; i < 10; i++)
    {
        if (A[i] - (int)A[i] != 0)
        {
            m++;
            B = (float*)realloc(B, m*sizeof(float));
            B[m - 1] = A[i];
        }
    }
 
    printf("\n\nКонечный массив : \n\n");
    for (int i = 0; i < m; i++)
        printf("%3.1f ", B[i]);
        
    free(B);
    _getch();
    return 0;
}

14   голосов, оценка 4.214 из 5


СОХРАНИТЬ ССЫЛКУ