@Mnsweet

Как сократить код с подпрограмой?

Кароче я написал код он работает но моему преподавателю не понравилось что три подпрограммы каторые считывают сумы отрицальных чисел трёх масивов выполняют одно и тоже действия . Как сократить код чтоб три подпрограмы выполнялись в одной и чтоб код работал до сокращения.

#include <iostream>
using namespace std;
int masivA(int* a) {
    int sA = 0;
	for (int i = 0; i < 20; i++)
	if(a[i]<0)	sA += a[i];

	return sA;
}
int masivB(int* b) {
	int sB = 0;
	for (int i = 0; i < 20; i++)
		if (b[i] < 0)	sB += b[i];
	
	return sB;
}
int masivC(int* c) {
	int s = 0;
	for (int i = 0; i < 20; i++)
		if (c[i] < 0)	s += c[i];
	
	return s;
}
int fun(int f, int g, int h) {
 return f + g + h;

}

int main()
{
	int a[20], b[20], c[20], i, e,  x, y, z;

	for (i = 0; i < 20; i++) {
		cout << "\t a=";
		cin >> a[i];
	}
	for (i = 0; i < 20; i++) {
		cout << "\t b=";
		cin >> b[i];
	}
	for (i = 0; i < 20; i++) {
		cout << "\t c=";
		cin >> c[i];

	}

	x=masivA(a);
	y = masivB(b);
	z = masivC(c);
	fun(x, y, z);
	e = fun(x, y, z) / 3;
	cout << "sumaA=" << masivA(a) << endl;
	cout << "sumaB=" << masivB(b) << endl;
	cout << "sumaC=" << masivC(c) << endl;
	cout << "suma=" << e << endl;
	cin.get();
	return 0;
}
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Эти три функции идентичны, с точностью до переименования локальных переменных. Вы три раза написали одно и тоже. Можно 2 функции просто удалить и использовать отсавшуюся три раза.

Ну какая разница, как у вас там переменная называется sA или sB - результат будет один и тот же.

Да, может вы путаетесь, но аргумент в функции можно тоже переменовать. Хоть там и написано int masivA(int* a), этот a - это аргумент. Он никак не привязан к массиву a в main(). Туда можно передать и a и b и любой другой массив.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Исходник стартовал с включения заголовка
#include <iostream>
Тоесть поднят флаг С++. А дальше идет типичный С-код. Зачем так?
По идее надо затаскивать vector и лямбды для суммирования.
Это было бы идеологически правильно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы