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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
CePryH
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 8
#1

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

15.06.2009, 21:40. Просмотров 701. Ответов 5
Метки нет (Все метки)

У нас есть 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++
Всем привет. Возникла задача, в которой мне необходимо знать как выделяется динамическая память средсвами new/delete. А именно,...

Массив в динамической памяти - C++
какая разница между int *x=new int(10); и int *x=new int; ?

Матрица в динамической памяти - C++
Здраствуйте,начал проходить динамическую память ,так немогу зделать 2-х мерный массив,помогите пожалуисто разобраться ,ии какие ошибки тут...

Удаление динамической памяти - C++
В книгах по С++ я читал про утечку памяти. Я решил создать программу, в которой будет выделаться 1 Гб памяти и не удаляться. Будучи...

Выделение динамической памяти - C++
Чем int *List = new int; delete List; отличается от обычного массива (int List) ? Нет, я понимаю, что создал динамическую...

Выделение динамической памяти - C++
Добрый вечер. Помогите разобраться пожалуйста! Суть такова: есть файл, в нем есть данные, мне надо их оттуда считать и вывести на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gravity
562 / 556 / 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
2359 / 1054 / 44
Регистрация: 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++;
        }
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2009, 00:05     Распределение динамической памяти!
Еще ссылки по теме:

Удаление new из динамической памяти - C++
Здравствуйте, у меня есть следующее присвоение: sign-&gt;numb = new int; Мне нужно от него избавиться в конце программы, но delete...

Выделение динамической памяти C++ - C++
Всем доброго времени суток. Вот столкнулся с проблемой и пока что не приходит ничего интересного по поводу её решения. есть у меня метод,...

перераспределение динамической памяти - C++
дан двумерный массив 3х5 выделить динамически память под него, затем перераспределить ее в массив 5х3, затем удалить(выделить и удалить там...

Освобождение динамической памяти - C++
После первого вызова функции(при повторном) пишет ошибку. В функции sort один из элементов массива становится недоступным для чтения. Если...

выделение динамической памяти - C++
помогите пожалуйста , нужно написать функцию для ввода новой матрицы, не получается выделить под него память. класс: mymatrix ::...

Освобождение динамической памяти в vs - C++
Вообщем попался я тут, и так, код: //#define _CRT_SECURE_NO_WARNINGS добавить в vs #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
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     Распределение динамической памяти!
Ответ Создать тему
Опции темы

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