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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2014, 23:01   #1
dykee
Пользователь
 
Регистрация: 09.10.2013
Сообщений: 78
По умолчанию Динамическая память

Нужно удалить из массива элементы меньше числа N с помощью указателей и динам памяти
не могу додумать удаление, конченная динам память(
вот код:
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main(void)

{
	system("chcp 1251");
	system("cls");
 int *p, *p1=NULL;
  int i, n, j, col=0;
  printf("\n Введите кол-во елементов: ");// запрашиваем количество элементов в массиве
  scanf("%d",&n);

  p=(int *)malloc(n*sizeof(int));// выделяем память по массив
//проверяем была ли выделена область памяти нужного размера
  if (!p) 
	{ 
	    printf("Out of memory. Press any key: "); 
	    _getch();
	    return 1;
	}

// заполняем элементы массива
  for (i=0;i<n;i++)
  {printf("x[%d]=",i);
   scanf("%d",p+i);
  }
// выводим на экран исходный массив
    for (i=0; i<n; i++)
     printf("p[%d]=%d\n",i+1,*(p+i));

// удаляем те элементы массива, значения которых совпали с первым
  for (i=0;i<n;i++)
   if (*(p+i) <= n)
   col++;

    {
      
      p1=(int*) realloc (p1, col * sizeof(int));
    
     *p1=*(p+i);
     if (i) p=(int*) realloc (p, (n-col) * sizeof(int));
          else free(p);
  }
// выводим на экран массив после удаления элементов
    p=p1;
    for (i=0; i<col; i++)
     printf("\np[%d]=%d",i+1,*(p+i));
// освобождаем память
  free(p);
  getch();
  return 0;
}


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 27.02.2014 в 09:07.
dykee вне форума Ответить с цитированием
Старый 27.02.2014, 01:28   #2
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

Код:
for (i=0;i<n;i++)
if (*(p+i) <= n)
col++;

{

p1=(int*) realloc (p1, col * sizeof(int));

*p1=*(p+i);
if (i) p=(int*) realloc (p, (n-col) * sizeof(int));
else free(p);
}
фигурные скобки вроде непонятно где болтаются...не?
alekopoko вне форума Ответить с цитированием
Старый 27.02.2014, 01:52   #3
nikolay1982
Пользователь
 
Регистрация: 31.12.2013
Сообщений: 47
По умолчанию

Код:

int main(void)
{
    int *p, *p2=NULL;
    int i, n, j, col=0;
    printf("\n Введите кол-во елементов: ");// запрашиваем количество элементов в массиве
    scanf("%d",&n);

    p=(int *)malloc(n*sizeof(int));// выделяем память по массив
    p2=(int *)malloc(n*sizeof(int));// выделяем память по массив
//проверяем была ли выделена область памяти нужного размера
    if (!p)
    {
        printf("Out of memory. Press any key: ");
        //_getch();
        getchar();
        return 1;
    }

// заполняем элементы массива
    for (i=0;i<n;i++)
    {
        printf("x[%d]=",i);
        scanf("%d",p+i);
    }
// выводим на экран исходный массив
    for (i=0; i<n; i++)
        printf("p[%d]=%d\n",i+1,*(p+i));

// удаляем те элементы массива, значения которых совпали с первым
    i=0;
    j=0;
    while (i<n)
    {
        if (*(p+i) < n)
        {
        }
        else  p2[j++]=p[i];
        i++;
    }
    p2=realloc(p2,j*sizeof(int));
    free(p);
// выводим на экран массив после удаления элементов
    p=p2;
    printf("\nchanged array:");
    for (i=0; i<j; i++)
        printf("\np[%d]=%d",i+1,*(p+i));
// освобождаем память
    free(p);
    getchar();
    //getch();
    return 0;
}
nikolay1982 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая память orandzheviyman Паскаль, Turbo Pascal, PascalABC.NET 0 03.12.2013 18:35
Динамическая память I.C.E Общие вопросы C/C++ 15 16.01.2011 19:27
Динамическая память PaulSev Общие вопросы Delphi 12 25.03.2010 09:07
Динамическая память. Пaвeл Помощь студентам 16 31.05.2009 21:16
Динамическая память liver1981 Общие вопросы C/C++ 5 22.04.2009 09:16