help_me_plz
@help_me_plz
Студент ГрГУ

Как исправить код?

Вот условие: Для одномерного целочисленного массива размерности n, элементы которого генерируются случайным образом, реализовать набор функций, которые бы решали представленные ниже задачи. Реализацию каждой задачи оформить в виде функции. Массив необходимо передавать
в функцию в качестве параметра.

1. Заменить все элементы, меньшие заданного числа, этим числом. Число передается в функцию в качестве параметра.
7. Определить, является ли произведение всех элементов массива трехзначным числом. Возвращать из функции логическое значение true или false.

А вот мой код (он не работает):
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

void f_1(int*, int, int);

bool f_7(int*, int);

int main() {
	srand(time(0));

	int n;

	cin >> n;

	int arr[n];

	for (int i = 0; i < n; i++) {
		arr[i] = rand() % 50 + 1;
	}

	for (int i = 0; i < n; i++) {
		cout << arr[i] << " ";
	}

	if (f_7(arr, n)) cout << "True";
	else cout << "False";

	return 0;
}

int f_1(int* arr, int n, int num) {
	for (int i = 0; i < n; i++) {
		if (arr[i] < num) {
			arr[i] = num;
		}
	}
	return *arr;
}

bool f_7(int* arr, int n) {
	int mult = 1;

	for (int i = 0; i < n; i++) {
		mult *= arr[i];
	}

	if (mult < 1000 && mult > 99) return true;
	else return false;
}
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
mrjbom
@mrjbom
int arr[n];

Ошибка, нужно указывать размерность изначально, решение - динамический массив или указать размер заранее, я советую указывать размер заранее, больше чем возможное число n.

Так же у тебя есть функция void f_1(int*, int, int); и int f_1(int*, int, int);
Перегруженные функции должны отличаться типом получаемых значений или кол-вом этих значений, у тебя различии лишь в типе возвращаемого значения, имена одинаковые, когда мы вызываем такую функцию в коде - компилятор не знает какую функцию вызывать, ибо они одинаковы, он не понимает что ему возращать, ничего или int.
int-овая функция не нужна, т.к. массив изначально передаётся по ссылке, то все изменения массива в функции будут касаться его везде, его не нужно возвращать, достаточно функции void.

Вот, попробуй поменять названия какой либо функции, дабы void функция и int функция различались названиями или принимаемыми значениями.

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

//void f_1(int*, int, int);

bool f_7(int*, int);

int main() {
	srand(time(0));

	int n;

	cin >> n;

	int arr[256];

	for (int i = 0; i < n; i++) {
		arr[i] = rand() % 50 + 1;
	}

	for (int i = 0; i < n; i++) {
		cout << arr[i] << " ";
	}

	if (f_7(arr, n)) cout << "True";
	else cout << "False";

	return 0;
}

int f_1(int* arr, int n, int num) {
	for (int i = 0; i < n; i++) {
		if (arr[i] < num) {
			arr[i] = num;
		}
	}
	return *arr;
}

/*
void f_1(int*, int, int)
{
}
*/

bool f_7(int* arr, int n) {
	int mult = 1;

	for (int i = 0; i < n; i++) {
		mult *= arr[i];
	}

	if (mult < 1000 && mult > 99) return true;
	else return false;
}
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы