Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2015, 10:42   #1
orakul77
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 42
По умолчанию Динамический массив Malloc и Realloc

Используя malloc и realloc, помогите написать программу реальных чисел массив ,,Array" со 100 элементами . Можно заполнить N элементов массива (N>0, вводит пользователь ) . Создать динамический массив , в котором по одному , каждый раз увеличивается размер массива , Переписать элементы массива Array , которые не целые.
orakul77 вне форума Ответить с цитированием
Старый 20.04.2015, 13:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А вот сюда загляни: http://www.programmersforum.ru/showthread.php?t=117524
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2015, 13:51   #3
orakul77
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 42
По умолчанию

а можите предложить самый простой вариант по тому - что мне надо ?(( Я буду очень признателен вам )
orakul77 вне форума Ответить с цитированием
Старый 20.04.2015, 14:25   #4
orakul77
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 42
По умолчанию

Вот применр что у меня есть - но э\то не совсем то , что мне нужно !! Может кто помочь переделать под меня ? Буду миллион раз благодарен ()


Код:
#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');
}
orakul77 вне форума Ответить с цитированием
Старый 21.04.2015, 12:31   #5
orakul77
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 42
По умолчанию

ну есть варианты у кого-то ?)
orakul77 вне форума Ответить с цитированием
Старый 21.04.2015, 13:20   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

М.м.м... Понятно. Сам пытаться хоть и пытался, но все равно учиться не желаешь.
Что ж. Да будет так:
Код:
// fff.cpp: определяет точку входа для консольного приложения.
//http://www.programmersforum.ru/showthread.php?t=276520

#include "stdafx.h"
#include <malloc.h>

float *a=0;

float *AddToArray(float* array,float value){
	int n=0,i=0;
	if(array) n=array[0]; //Вычисляем размер старого массива
	
	float *res=(float*)realloc(a,sizeof(float)*(n+1)); //Создаем новый с добавленной ячейкой в конце
	res[0]=n+1; //Сохраняем в нем же размер массива
	res[(n)?n:1]=value; //Вносим новое значение
	return res; //Возвращаем массив
}

int _tmain(int argc, _TCHAR* argv[])
{
	int i;
	for(i=0;i<10;i++) a=AddToArray(a,i/2.6); 
	for(i=1;i<a[0];i++) printf("%5.2f\n",a[i]);
	//free(a);
	getchar();
	return 0;
}
Удачи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(Си) Динамический массив через realloc Gudsaf Общие вопросы C/C++ 4 25.10.2012 09:28
Динамический массив kop Общие вопросы C/C++ 4 01.05.2011 15:05
Динамический массив, массив указателей alexalisa Паскаль, Turbo Pascal, PascalABC.NET 4 22.04.2011 21:33
Динамический массив - или всё таки не динамический? vedro-compota Общие вопросы C/C++ 30 10.12.2010 23:22
Как создать массив от переменной длины без mAlloc? TwiX Общие вопросы C/C++ 5 27.10.2009 16:50