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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2009, 23:41   #1
CePryH
Новичок
Джуниор
 
Регистрация: 15.06.2009
Сообщений: 6
По умолчанию Распределение динамической памяти в Borland C++ 3.1!

У нас есть 2 упорядоченных массива. Надо создать 3-ий упорядоченный массив который состоит из первых двух.

Код:
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <STDLIB.H>
int main()
{
    clrscr();
    int x,size, size2, *Arr, m, *Arr2, *Arr3 ;
      printf("Input size:\n");
    scanf("%d",&size);
    if (size<0)
    return -1;
    size2=size+size;
    Arr=(int *)malloc(size*sizeof(int));
    Arr2=(int *)malloc(size*sizeof(int));
    Arr3=(int *)malloc(size2*sizeof(int));

    for (int i=0;i<size;i++)
    {
	scanf("%d", &Arr[i]);
    }

    for (int n=0;n<size;n++)
    {
	scanf("%d", &Arr2[n]);
    }
       for (int k=0;k<size2;k++)
    {
	if (Arr[i] <= Arr2[n])


{

Arr3[k] = Arr[i]; i++;}

else

{ Arr3[k] = Arr2[n]; n++;}


	      }

for (k=0;k<size2;k++)
     printf("%d ", Arr3[k]);



 free(Arr);
  free(Arr2);
  free(Arr3);
 getch();
 return 0;
}
Проблема в том что, выводится адреса элементов массива а не сами элементы
CePryH вне форума Ответить с цитированием
Старый 15.06.2009, 23:54   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Не адреса тут выводятся, а мусор, т.к. выходите за границы массива.
И переменные i,n,k объявляете в цикле, а используете также после него. В BC 3.1 такое прокатит, но по стандарту так нельзя.
Код:
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <STDLIB.H>
int main()
{
     int x,size, size2, *Arr, m, *Arr2, *Arr3 ;
     int i,k,n;
      printf("Input size:\n");
    scanf("%d",&size);
    if (size<0)
     return -1;
    size2=size+size;
    Arr=(int *)malloc(size*sizeof(int));
    Arr2=(int *)malloc(size*sizeof(int));
    Arr3=(int *)malloc(size2*sizeof(int));

    for (i=0;i<size;i++)
    {
	     scanf("%d", &Arr[i]);
    }

    for (n=0;n<size;n++)
    {
      	scanf("%d", &Arr2[n]);
    }

    i=0;
    n=0;
 for (k=0;k<size2;k++)
 {
	 if (Arr[i] <= Arr2[n])
  {
   Arr3[k] = Arr[i]; i++;
   }
  else
   {
    Arr3[k] = Arr2[n]; n++;
    }
   }

for (k=0;k<size2;k++)
     printf("%d ", Arr3[k]);

 free(Arr);
  free(Arr2);
  free(Arr3);
 getch();
 return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 15.06.2009, 23:59   #3
CePryH
Новичок
Джуниор
 
Регистрация: 15.06.2009
Сообщений: 6
По умолчанию

Спасибо большое )))))
CePryH вне форума Ответить с цитированием
Старый 15.06.2009, 23:59   #4
CePryH
Новичок
Джуниор
 
Регистрация: 15.06.2009
Сообщений: 6
По умолчанию

Понял свою ошибку...))
CePryH вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распределение памяти перемещаемыми разделами с перемещением в сторону старших адресов со сжатием Лисичкина Помощь студентам 4 08.12.2009 21:12
Вопрос по структурам и динамической памяти. ROD Общие вопросы C/C++ 4 12.04.2009 18:20
Вставка по динамической памяти в Delphi Schakhmaev Помощь студентам 1 24.06.2008 01:27
Распределение памяти Jeni Общие вопросы Delphi 6 31.03.2008 19:59