Форум программистов, компьютерный форум CyberForum.ru

Распределение динамической памяти! - C++

Восстановить пароль Регистрация
 
CePryH
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 8
15.06.2009, 21:40     Распределение динамической памяти! #1
У нас есть 2 упорядоченных массива. Надо создать 3-ий упорядоченный массив который состоит из первых двух.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <STDLIB.H>
#include <iostream.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);
    Arr2=(int *)malloc(size);
    Arr3=(int *)malloc(size2);
 
    for (int i=0;i<size;i++)
    {
    scanf("%d",&Arr[i]);
    }
 
  //   for(i=0;i<size;i++)
    //   printf("%d ",Arr[i]);
 
    // printf("\n");
 
     for (int n=0;n<size;n++)
    {
    //Arr[n]=random(5);
    scanf("%d", &Arr2[n]);
    }
    // for(n=0;n<size;n++)
     //  printf("%d ",Arr2[n]);
 
    // printf("\n");
 
    for (int k=0;k<size2;k++)
    {
    if (Arr[i] <= Arr2[n])
 
{ x = Arr[i];
 printf("%d    ",x) ;
 
Arr3[k] = Arr[i]; i++;}
 
else
 
{ Arr3[k] = Arr2[n]; n++;}
 
for (k=0;k<size2;k++)
     printf("%d ", Arr3[k]);
     for(n=0;n<size;n++)
     printf("%d ",Arr2[n]);
             }
 
 free(Arr);
  free(Arr2);
  free(Arr3);
 getch();
 return 0;
}
Проблема в том что, выводится адреса элементов массива а не сами элементы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2009, 21:40     Распределение динамической памяти!
Посмотрите здесь:

C++ Матрица в динамической памяти
Переменная в динамической памяти C++
C++ Массив в динамической памяти
Выделение динамической памяти C++ C++
C++ выделение динамической памяти
Теория по динамической памяти C++
C++ Выделение динамической памяти
C++ Переменные в динамической памяти!
C++ Выделение динамической памяти
Выделение динамической памяти C++
Удаление new из динамической памяти C++
C++ Освобождение динамической памяти

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
15.06.2009, 21:56     Распределение динамической памяти! #2
Код
Arr=(int *)malloc(size);
Arr2=(int *)malloc(size);
Arr3=(int *)malloc(size2);
Размер еще надо домножать на размер инта.
Оно у тебя вобще компилируется?
Код
[serg@localhost C]$ g++ test.cpp -o test                                     
test.cpp: In function ‘int main()’:                                          
test.cpp:42: ошибка: name lookup of ‘i’ changed for ISO ‘for’ scoping        
test.cpp:42: замечание: (if you use ‘-fpermissive’ G++ will accept your code)
test.cpp:42: ошибка: name lookup of ‘n’ changed for ISO ‘for’ scoping
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
15.06.2009, 21:57     Распределение динамической памяти! #3
rtfm std::merge
CePryH
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 8
15.06.2009, 23:01  [ТС]     Распределение динамической памяти! #4
Компилиться..) у меня Borland C++ 3.1

Добавлено через 5 минут 48 секунд
Там пару строчек забыл закомментить... ((
x = Arr[i];
printf("%d ",x) ;

и

for(n=0;n<size;n++)
printf("%d ",Arr2[n]);

их надо убрать..))

Добавлено через 52 минуты 29 секунд
Всё равно не работает..(( пока ничего не помогает... может кто-то ещё поможет
FunDuck
688 / 379 / 4
Регистрация: 22.01.2009
Сообщений: 1,135
15.06.2009, 23:39     Распределение динамической памяти! #5
Цитата Сообщение от CePryH Посмотреть сообщение
for (int k=0;k<size2;k++)
{
if (Arr[i] <= Arr2[n])

{ x = Arr[i];
printf("%d ",x) ;

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

else

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

[/CPP]
Ты при заполнении Arr3 не проверяешь выходят ли за границу массива индексы i и n...
Попробуй так:
C++
1
2
3
4
5
6
7
8
9
10
for (int k = 0; k < size2; k++){
        if (Arr[i] <= Arr2[n] && i < size || n >=size){ 
            Arr3[k] = Arr[i]; 
            cout << "-->"  << Arr[i] << '\n';
            i++;
        }else{ 
            Arr3[k] = Arr2[n];
            n++;
        }
    }
CePryH
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 8
16.06.2009, 00:05  [ТС]     Распределение динамической памяти! #6
неа((( не то..(( просто выводить оно всё равно походу адреса а не сами значения((

Добавлено через 9 минут 37 секунд
всё

Спасибо всем за помощь:

вот код правильной программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#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;
}
Yandex
Объявления
16.06.2009, 00:05     Распределение динамической памяти!
Ответ Создать тему
Опции темы

Текущее время: 19:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru