не могу найти проблему в коде, выводится мусор (массивы и указатели С++)
// 4. Написать функции:
//4.1.Заповнення массива;
//4.2.Вывод одномерного массива на экран (функция получает указатель на первый элемент массива)
//4.3.Выводу элементов массива, которые стоят на четных местах, на экран (функция получает указатель на третий элемент массива)
void FillArr(int arr, int size)
{
for (int i = 0; i < size; i++)
{
arr = rand() % 10;
}
}
void ShowArr(int arr, int size)
{
for (int i = 0; i < size; i++)
{
cout << arr << " ";
}
cout << endl;
}
void ShowElement(int arr, int size)
{
for (int i = 0; i < size; i += 2)
{
cout << arr << " ";
}
cout << endl;
}
int main()
{
srand(time(0));
const int size = 10;
int arr[size];
int* parr = &arr[0];
FillArr(*arr, size);
ShowArr(*arr, size);
ShowElement(*arr, size);
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ну давайте разберем ваш код.
void FillArr(int arr, int size)
{
for (int i = 0; i < size; i++)
{
arr = rand() % 10;
}
}
Аргументу (т.е. локальной переменнной) arr присваивается случайное значение size раз. Ни на что вне функции не влияет...
void ShowArr(int arr, int size)
{
for (int i = 0; i < size; i++)
{
cout << arr << " ";
}
cout << endl;
}
size раз выводится переданное значение arr.
void ShowElement(int arr, int size)
{
for (int i = 0; i < size; i += 2)
{
cout << arr << " ";
}
cout << endl;
}
То же самое, только вывод size/2 раз.
const int size = 10;
int arr[size];
int* parr = &arr[0]; // Неаонятно зачем
FillArr(*arr, size); // Ничего не делает
ShowArr(*arr, size); // 10 раз выводит значение `arr[0]`
ShowElement(*arr, size); // 5 раз выводит значение `arr[0]`
Ну, а поскольку массив не инициализирован - выводить может что угодно. Но одно и то же значение 10 и 5 раз!