Функция со сменным числом параметров для заполнения массивов
Функция при вызове должна заполнять массивы (столько, сколько нужно). Первый параметр – количество массивов, второй – кол-во заполняемых элементов, потом указываем массивы, которые нужно заполнить. Объясните, пожалуйста в чём проблема и как правильно.
#include <iostream>
#include <stdarg.h>
#include <cmath>
using namespace std;
void fullArr(int arrCount, int n,...)
{
va_list argPt;
va_start(argPt, arrCount);
while (arrCount--) {
va_arg(argPt, int);
for (int i = 0; i < n; i++) {
cin >> argPt[i];
}
}
}
int main()
{
int arrCount;
cout << "Enter array quantity";
cin >> arrCount;
int n;
cin >> n;
int arr1[100];
int arr2[100];
fullArr(arrCount, n, arr1, arr2);
for (int i = 0; i < n; i++) {
cout << arr1[i]<<' ';
}
cout << endl;
for (int i = 0; i < n; i++) {
cout << arr2[i] << ' ';
}
cout << endl;
return 0;
Ответы (2 шт):
Автор решения: вася
→ Ссылка
#include <iostream>
#include <cstdarg>
#include <cmath>
using namespace std;
void fullArr(int n, int arrCount, ...)
{
va_list args;
va_start(args, arrCount);
while (arrCount--) {
int* arr = va_arg(args, int*);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
}
va_end(args);
}
int main()
{
int arrCount;
cout << "Enter array quantity";
cin >> arrCount;
int n;
cin >> n;
int arr1[100];
int arr2[100];
fullArr(n, arrCount, arr1, arr2);
for (int i = 0; i < n; i++) {
cout << arr1[i]<<' ';
}
cout << endl;
for (int i = 0; i < n; i++) {
cout << arr2[i] << ' ';
}
cout << endl;
return 0;
}
Автор решения: Harry
→ Ссылка
void fullArr(int arrCount, int n, ...)
{
va_list argPt;
va_start(argPt, n);
while(arrCount--) {
int * arr = va_arg(argPt, int*);
for (int i = 0; i < n; i++)
cin >> arr[i];
}
va_end(argPt);
}
Вообще-то так... Но у вас тогда проблема - как вы собираетесь передавать иное количество массивов, кроме двух? Если пользователь попросит их три? Может, вам надо это?
void fillArr(int** arr, int arrCount, int n)
{
for(int i = 0; i < arrCount; ++i)
{
cout << "Enter array " << (i+1) << ": ";
for (int j = 0; j < n; j++)
cin >> arr[i][j];
}
}
int main()
{
int arrCount;
cout << "Enter array quantity: ";
cin >> arrCount;
int n;
cout << "Enter array size: ";
cin >> n;
int **arr = new int*[arrCount];
for(int i = 0; i < arrCount; ++i)
arr[i] = new int[n];
fillArr(arr, arrCount, n);
for (int i = 0; i < arrCount; i++)
{
for (int j = 0; j < n; j++) {
cout << arr[i][j]<< ' ';
}
cout << endl << "-------\n";
}
for(int i = 0; i < arrCount; ++i)
delete[] arr[i];
delete[] arr;
}