Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

07.12.2010, 20:41. Просмотров 435. Ответов 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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2010, 20:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с массивами в динамической памяти (C++):

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

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

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

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

Вопрос по динамической памяти - C++
мне надо создать масив содержащий структуры. У меня вот код какой: vec *fild;//vec это название структуры конструктор ...

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

6
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
08.12.2010, 06:57 #2
C++
1
2
    std::cin.get();
    std::cin.get();
C++
1
2
    std::cin.ignore();
    std::cin.get();
1
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?? И правильное ли использование этой функции в данной программе? Можно узнать в чём конкретно ошибка (если таковая имеется), чтобы я в крайнем случае мог переписать код.
0
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
08.12.2010, 21:25 #4
C++
1
    cin >> m;
когда вводишь и нажимаешь <ret>, в m сохраняется число, а '\n' остаётся в стандартном потоке ввода, поэтому первый cin.get() считывает этот символ перевода строки

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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