Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Обучите Кодить
0 / 0 / 1
Регистрация: 18.03.2017
Сообщений: 6
#1

Косвенное обращение к элементам динамического массива - C++

18.03.2017, 15:52. Просмотров 429. Ответов 4
Метки нет (Все метки)

Доброго времени суток. Необходима помощь с программой.
Текст задачи: Заданы два массива А(5) и В(4). Первым на печать вывести массив, содержащий наибольшее значение. Напечатать также это значение и его порядковый номер.
Код из просторов интернета:

#include <iostream>
using namespace std;
void print_array(int *A, int size)
{
for(int i = 0; i < size; i++)
cout << *(A + i) << " ";
cout << endl;
}

int *create_array(int size)
{
int *A = new int [size];
cout << "Введите значения массива: ";
for(int i = 0; i < size; i++)
cin >> *(A + i);
return A;
}

void get_max_value(int *A, int size, int &max, int &index)
{
for(int i = 1; i < size; i++)
if (*(A + i) > max)
{
max = *(A + i);
index = i;
}
}

int main()
{
setlocale(LC_ALL, "Russian");
int *A, *B;
int sizeA, sizeB;

cout << "Введите размер для 1го массива: ";
cin >> sizeA;
A = create_array(sizeA);

cout << "Введите размер для 2го массива: ";
cin >> sizeB;
B = create_array(sizeB);

int maxA = A[0], maxB = B[0];
int indexA = 0, indexB = 0;
get_max_value(A, sizeA, maxA, indexA);
get_max_value(B, sizeB, maxB, indexB);

if (maxA > maxB)
{
print_array(A, sizeA);
cout << "Max element is " << maxA << " and index is " << indexA << endl;
print_array(B, sizeB);
}
else
{
print_array(B, sizeB);
cout << "Max element is " << maxB << " and index is " << indexB << endl;
print_array(A, sizeA);
}

delete [] A;
delete [] B;

system("pause");

return 0;
}
Так вот, почему в функции создания массива:
int *create_array(int size)
{
int *A = new int [size];
cout << "Введите значения массива: ";
for(int i = 0; i < size; i++)
cin >> *(A + i);
return A;
}
Перед названием используется символ "*"?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2017, 15:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Косвенное обращение к элементам динамического массива (C++):

Обращение к элементам двухмерного динамического массива
Строки в двумерном динамическом массиве расположены не вплотную друг к другу....

Обращение к элементам динамического массива через указатели
Само задание написано внизу в коментарии! Заранее спасибо! #include...

Недопустимое косвенное обращение
Собственно, текст программы такой: #include &lt;stdio.h&gt; #include &lt;locale.h&gt;...

Доступ к элементам динамического массива
Здравствуйте, объясните пожалуйста почему не заполняются данными 1,2,3,4,5 и...

Обращение к элементам массива в C++
#include &lt;SFML\Graphics.hpp&gt; const int number_units = 1; Sprite Person;...

Доступ к элементам динамического массива из структур
Всем доброго времени суток! Проблема вот какая. Есть вот такой вот код. ...

4
Байт
Эксперт C
17777 / 11802 / 2453
Регистрация: 24.12.2010
Сообщений: 23,729
18.03.2017, 16:00 #2
Лучший ответ Сообщение было отмечено Обучите Кодить как решение

Решение

Обучите Кодить, заключайте код в теги, пожалуйста! Умеете?
Цитата Сообщение от Обучите Кодить Посмотреть сообщение
Так вот, почему в функции создания массива:
C++
1
2
3
4
5
6
7
8
int *create_array(int size) 
{
int *A = new int [size];
cout << "Введите значения массива: ";
for(int i = 0; i < size; i++)
cin >> *(A + i);
return A;
}
Перед названием используется символ "*"?
Потому что функция возвращает указатель на целый массив.
Другими словами - тип возвращаемого значения - int *
1
Обучите Кодить
0 / 0 / 1
Регистрация: 18.03.2017
Сообщений: 6
18.03.2017, 16:37  [ТС] #3
Нет, не умею. Только осваиваюсь на сайте.
Спасибо за помощь.
0
Байт
Эксперт C
17777 / 11802 / 2453
Регистрация: 24.12.2010
Сообщений: 23,729
18.03.2017, 17:45 #4
Цитата Сообщение от Обучите Кодить Посмотреть сообщение
Нет, не умею.
Это не сложно. Просто перед кодом поставьте CPP, после него /CPP (и то и другое в квадратных скобках). Другой путь - выделить код мышкой и щелкнуть по иконке "С++" наверху. Зато сразу становится легче читать. Можно ссылаться на части кода, т.к. строки нумеруются, и даже иногда помогает поймать простые ошибки.
0
Обучите Кодить
0 / 0 / 1
Регистрация: 18.03.2017
Сообщений: 6
18.03.2017, 19:10  [ТС] #5
Большое спасибо. Впредь буду использовать данную возможность.
0
18.03.2017, 19:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2017, 19:10
Привет! Вот еще темы с решениями:

Вывести указатель - куча ошибок (недопустимое косвенное обращение, ...)
Простите, туплю жестоко. Два месяца не трогал студию, забыл все конкретно. ...

Бинарный поиск, ошибка C2100: недопустимое косвенное обращение
Вот значит код, бинарный поиск элементов динамического целочисленного массива....

Обращение к элементам массива структур
Вводим n-ое количество имен и количество оценок каждому из имен.(студент -...

Присвоение значений элементам двумерного динамического массива
Я недавно начал программировать на языке С++, поэтому, естественно, многого не...


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

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

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