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;
}
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 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;
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Bash Today Москва
от 100 000 до 150 000 руб.
Sveak Барнаул
До 150 000 руб.
Sveak Барнаул
До 150 000 руб.
25 марта 2019, в 12:43
500 руб./в час
25 марта 2019, в 12:41
35000 руб./за проект
25 марта 2019, в 12:08
3000 руб./за проект