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

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

Войти
Регистрация
Восстановить пароль
 
Barok
7 / 7 / 0
Регистрация: 07.12.2010
Сообщений: 49
#1

Работа с массивами в динамической памяти - C++

07.12.2010, 20:41. Просмотров 413. Ответов 6
Метки нет (Все метки)

Задача такова. Необходимо создать 2 массива в динамической памяти. Обращение к элементам массива - через косвенную адресацию. Вывести на экран первым тот массив, произведение элементов которго наибольшее. Я написал вроде как, но беда в том, что сразу же после ввода двух массивов, закрывается окно консоли. Подскажите в чем моя ошибка и как хоть примерно её мужно устранить?

P.S. я только начал изучать C++

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
#include <iostream>
using namespace std;
 
int* vvod(int *mass, int size){
  mass=new int[size];
  for(int i=0;i<size;i++){
    cout<<" element["<<i<<"]=";
    cin>>mass[i];
  }
  return mass;
}
 
int umn(int mass[], int size){
  int s=1;
  for(int i=0;i<size;i++)
    s*=mass[i];
  return s;
}
 
void print(int mass[], int size){
  for(int i=0; i<size; i++)
    cout<<mass[i]<<" ";
  cout<<endl;
}
 
int main(){
  int n, m, s1=1, s2=1;
  cout<<"Vvedite razmernost A: ";
  cin>>n;
  cout<<endl<<"Vvedite elementi A: "<<endl;
  int* A=new int[n];
  A=vvod(A,n);
  s1=umn(A,n);
  cout<<"Vvedite razmernost B: ";
  cin>>m;
  cout<<endl<<"Vvedite elementi B: "<<endl;
  int* B=new int[m];
  B=vvod(B,m);
  s2=umn(B,m);
  if(s1>s2){
    print(A,n);
    print(B,n);
  }
  else{
    print(B,n);
    print(A,n);
  }
  std::cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2010, 20:41     Работа с массивами в динамической памяти
Посмотрите здесь:

Работа с массивами с использованием выделения динамической памяти - C++
Помогите решить вот такие задачи: Задача №1 Дана последовательность чисел b1,...,bn. Получить квадратную матрицу порядка n, элементами...

Выделение динамической памяти - C++
Всем привет. Возникла задача, в которой мне необходимо знать как выделяется динамическая память средсвами new/delete. А именно,...

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

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

Теория по динамической памяти - C++
Предположим, применяется оператор new в форме для массива: p=new int ;. n ведь может быть и большим. Может n==1000000? Где запоминается,...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.12.2010, 06:57     Работа с массивами в динамической памяти #2
C++
1
2
    std::cin.get();
    std::cin.get();
C++
1
2
    std::cin.ignore();
    std::cin.get();
Barok
7 / 7 / 0
Регистрация: 07.12.2010
Сообщений: 49
08.12.2010, 10:16  [ТС]     Работа с массивами в динамической памяти #3
Цитата Сообщение от accept Посмотреть сообщение
C++
1
2
    std::cin.get();
    std::cin.get();
C++
1
2
    std::cin.ignore();
    std::cin.get();
Большое спасибо! Помогло. Ещё заметил 2 ошибки сам у себя в условии if..else (там где B надо m вместо n). Только мне не понятен смысл почему надо именно два раза прописывать std::cin.get() и std::cin.ignore?? И правильное ли использование этой функции в данной программе? Можно узнать в чём конкретно ошибка (если таковая имеется), чтобы я в крайнем случае мог переписать код.
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.12.2010, 21:25     Работа с массивами в динамической памяти #4
C++
1
    cin >> m;
когда вводишь и нажимаешь <ret>, в m сохраняется число, а '\n' остаётся в стандартном потоке ввода, поэтому первый cin.get() считывает этот символ перевода строки

C++
1
    cin >> n;
точно также оставляет символ перевода строки в потоке, но cin >> m; сначала пропускает все пробельные символы, а уже потом считывает число
Barok
7 / 7 / 0
Регистрация: 07.12.2010
Сообщений: 49
08.12.2010, 21:47  [ТС]     Работа с массивами в динамической памяти #5
если не ошибаюсь, в С (возможно и в С++) есть такая функция fflush() для очистки буфера. Она была бы тут уместна?
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.12.2010, 23:35     Работа с массивами в динамической памяти #6
не, она по стандарту не может использоваться для потоков ввода, только для потоков вывода
хотя расширения компиляторов типа gcc, msvc делают её такой, что она может сбрасывать данные потоков ввода, но расширения не гарантируются, понимаешь, они даже не обязаны в разных компиляторах работать одинаково (прога, собранная на одном компиляторе, будет работать и собранная на другом будет работать, но нет гарантии, что две эти проги будут работать идентично)
cin.ignore() вроде может принимать число ещё, сколько символов отбросить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2010, 00:48     Работа с массивами в динамической памяти
Еще ссылки по теме:

Вопросы по динамической памяти. - C++
У меня вопросы по работе с динамической памятью. Пожалуйста, помогите разобраться с этой темой. - чем отличается free() от delete? и...

Переменная в динамической памяти - C++
class SimpleCircle { public: SimpleCircle (); //Basic constructor SimpleCircle (int radius); //Constructor with parameters ...

Удаление динамической памяти - C++
Всем здрасьте. Имеется вот такая структура. struct ModelType { DWORD FVF; IDirect3DVertexBuffer9* vertexBuffer; ...

Массив в динамической памяти - C++
Помогите написать прогу в динамической памяти #include&lt;iostream.h&gt; #include&lt;conio.h&gt; #define N 10 void novmas (int A,int B) ...


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

Или воспользуйтесь поиском по форуму:
Barok
7 / 7 / 0
Регистрация: 07.12.2010
Сообщений: 49
09.12.2010, 00:48  [ТС]     Работа с массивами в динамической памяти #7
Ещё раз огромное спасибо, accept. Ответы получил на свои вопросы, топик думаю можно закрыть
Yandex
Объявления
09.12.2010, 00:48     Работа с массивами в динамической памяти
Ответ Создать тему
Опции темы

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