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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.74
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
17.02.2008, 10:27     Динамическое распределение памяти #1
Дан динамический целочисленный массив y1,y2,....,yn. и и динамическая символьная переменная h. Если значение h равно '+', преобразовать исходный массив к виду
yn,yn-1,...,y2,y1; иначе не менять порядок элементов.


Так вот незнаю как вот это сделать:
y1,y2,....,yn преобразовать к виду yn,yn-1,...,y2,y1

Подскажите пожалуйста как преобразовать!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8505 / 2172 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
17.02.2008, 10:35     Динамическое распределение памяти #2
ну создай второй такой же массив и перелей туда задом наперед исходный массив...
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
17.02.2008, 12:14  [ТС]     Динамическое распределение памяти #3
А пример можно
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8505 / 2172 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
17.02.2008, 13:00     Динамическое распределение памяти #4
а у тебя сырцы есть этой задачи, просто лень новый код набивать... там надо объявить два массива, считать в один входные данные, а потом код типа такого:
Код
  int j = 0;
  for(int i = n - 1; i >= 0; i--){
    arr2[i] = arr1[j];
    j++;
  }
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
17.02.2008, 13:08  [ТС]     Динамическое распределение памяти #5
Вот есть немного там в ифе оно должно изменятся.
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
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <alloc.h>
int main()
{
    int *y,n,i,*h;
    printf("Vvedite koli4estvo elementov massiva n=:");
    scanf("%d",&n);
    y=(int*)calloc(n,sizeof(int));
    printf("Vvedite massiv:");
    for(i=0;i<n;i++)
    scanf("%d",y+i);
    printf("\n");
    printf("Elementi i ih adresa:\n");
    for(i=0;i<n;i++)
    printf("|%3.1d   |  %p   ",*(y+i),y+i);
    printf("\n");
    h=(int*)calloc(n,sizeof(int));
    printf("\nVvedite zna4enie simvol'noi peremennoi h, libo '+' libo 4to pojelaete:\n");
    if(h=='+')
    {}
    getch();
 
}
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8505 / 2172 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
17.02.2008, 13:31     Динамическое распределение памяти #6
Код
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <malloc.h>
int main()
{
int *y1;
int *y2, n;
char h;
printf("Vvedite koli4estvo elementov massiva n=:");
scanf("%d",&n);
y1=(int*)malloc(n*sizeof(int));
y2=(int*)malloc(n*sizeof(int));
printf("Vvedite massiv:");
for(int i = 0;i < n;i++)
  scanf("%i",&y1[i]);
printf("\n");
printf("Elementi i ih adresa:\n");
for(int i=0; i < n; i++)
  printf("|%3.1i | %i \n",i,y1[i]);
printf("\n");
printf("\nVvedite zna4enie simvol'noi peremennoi h, libo '+' libo 4to pojelaete:");
std::cin>>h;
if(h=='+'){
  int j = 0;
  for(int i = n - 1; i >= 0; i--){
    y2[i]= y1[j];
    j++;
  }
  printf("\n");
  for(int i=0; i < n; i++)
    printf("|%3.1i | %i \n",i,y2[i]);
}
printf("Bahni po klave na posledok\n");
getch();
}
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
17.02.2008, 13:57  [ТС]     Динамическое распределение памяти #7
Ооооо

Спасибо, мир не без добрых людей


Ток вот скажи, что это такое:
std::cin>>h;

А то мы ещё не проходили ничего подобного
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
17.02.2008, 14:14  [ТС]     Динамическое распределение памяти #8
Да и "iostream" для чего нужна?)
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8505 / 2172 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
17.02.2008, 14:26     Динамическое распределение памяти #9
cin - это функция, которая перенаправляет входной поток в переменную, ну вроде как с клавы значение задавать, а iostream содержит ее заголовок
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
17.02.2008, 15:17  [ТС]     Динамическое распределение памяти #10
кк
Спасибо
prof_GCC
0 / 0 / 0
Регистрация: 22.02.2008
Сообщений: 3
22.02.2008, 00:06     Динамическое распределение памяти #11
Ребят я конечно понимаю, что ось должна в принципе убивать выделенную память, но все равно не забывайте делать free(), а во вторых можно обойтись и буферной переменной нафига еще один массив делать??
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
22.02.2008, 07:45  [ТС]     Динамическое распределение памяти #12
Цитата Сообщение от prof_GCC Посмотреть сообщение
Ребят я конечно понимаю, что ось должна в принципе убивать выделенную память, но все равно не забывайте делать free(), а во вторых можно обойтись и буферной переменной нафига еще один массив делать??
Да делаем, делаем free(), в задании написано даже, что надо free() сделать)

В задании написано, что нужно сделать 2-ой одномерный массив.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8505 / 2172 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
22.02.2008, 09:26     Динамическое распределение памяти #13
prof_GCC , а зачем тут особо париться, это обычная лаба, поэтому особой изысканности кода не надо, главное, чтобы раз отработала и препод был доволен... а на счет корректного освобождения выделенной памяти виндой я бы не говорил, потому что ее диспетчер кучи работает странно, я память освобождаю и free и delete, а своп почему-то остается...
prof_GCC
0 / 0 / 0
Регистрация: 22.02.2008
Сообщений: 3
22.02.2008, 15:02     Динамическое распределение памяти #14
Дан динамический целочисленный массив y1,y2,....,yn. и и динамическая символьная переменная h. Если значение h равно '+', преобразовать исходный массив к виду
yn,yn-1,...,y2,y1; иначе не менять порядок элементов.
Я тут ничего про второй массив не увидел
а зачем тут особо париться, это обычная лаба, поэтому особой изысканности кода не надо, главное, чтобы раз отработала и препод был доволен... а на счет корректного освобождения выделенной памяти виндой я бы не говорил, потому что ее диспетчер кучи работает странно, я память освобождаю и free и delete, а своп почему-то остается...
Действительно, че парится, постучал по клаве и всего делов, а потом у нас на 1000 программистов только один действительно нормальный, а память выделенную malloc deletом не освобождают молодой человек, вы путаете что-то, если действительно освобождаете, то все будет нормально, поверьте, я не первый год программированием занимаюсь и в том числе под разные платформы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2008, 15:50     Динамическое распределение памяти
Еще ссылки по теме:

Динамическое распределение памяти C++
Динамическое распределение памяти C++
Динамическое распределение памяти C++
Динамическое распределение памяти C++
Динамическое распределение памяти C++

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

Или воспользуйтесь поиском по форуму:
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8505 / 2172 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
22.02.2008, 15:50     Динамическое распределение памяти #15
а я ничего не говорил про освобождение памяти, выделенной маллоком delete, я сказал, что вообще освобождать двумя функциями этими память, но ничего не говорил про каким образом память выделена... а на счет редко встречающихся толковых программерах согласен, но нет у меня времени изголяться на подобные задания на форуме... своей работы по горло... я показал самый примитивный способ, не более того
Yandex
Объявления
22.02.2008, 15:50     Динамическое распределение памяти
Ответ Создать тему
Опции темы

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