@DufGut

В чем ошибка кода?

Задание: Разработать перегруженные функции, превращающие элементы одномерного массива, которые больше значения 5, в кубы. Применить функции к массивам типа int, long. Организовать также вывод на экран всех элементов массива в главной функции программы.
#include <iostream>
#include <math.h>
using namespace std;

int cubeI(int num) {
    if (num > 5) {
        cout << num << " ";
        return pow(num, 3);
    }
}

long cubeL(long num) {
    if (num > 5) {
        cout << num << " ";
        return pow(num, 3);
    }
}

int main() {
    setlocale(0, "");
    const int size = 10;
    int masI[size];
    long masL[size];

    cout << "Массив int: ";
    for (int i = 0; i < size; i++) {
        masI[i] = rand() % 10 + 1;
        masI[i] = cubeI(masI[i]);
    }

    cout << endl;

    cout << "Массив long: ";
    for (int i = 0; i < size; i++) {
        masL[i] = rand() % 10 + 1;
        masL[i] = cubeL(masL[i]);
    }

    cout << endl;
}
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
includedlibrary
@includedlibrary
int cubeI(int num) {
    if (num > 5) {
        cout << num << " ";
        return pow(num, 3);
    }
}

long cubeL(long num) {
    if (num > 5) {
        cout << num << " ";
        return pow(num, 3);
    }
}

Если элемент меньше или равен пяти, функции должны возвращать исходное значение. Нужно добавить return num после if, иначе будет возвращено то, что на момент выхода из функции было в регистре rax (если у вас amd64 архитектура).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Alex1144
В чем ошибка? Во всем.
Во-первых вы создали функцию int cubeI(int num) для передачи переменной num типа int, и хотите в неё засунуть указатель массива
(masL[i]). Это так не работает.
Второе, я не специалист, но в литературе по С++ не виднел, что бы элементы массива передавали в функцию. Передают весь массив и там производят все нужные манипуляции.
Третье ваш rand() не будет генерировать рандомные числа, а будет выдавать одно и тоже число. Загуглите, там ничего сложного.
Для примера код как передать массив в функцию и возвратить в main:

#include
using namespace std;

int* cubeI(int *mas, int size) {
for (int i = 0; i < size; i++)
if (mas[i] > 5) {
mas[i]= 10;
}
return mas;
}
int main() {
setlocale(0, "");
const int size = 10;
int mas[size];

cout << "Массив int: ";
for (int i = 0; i < size; i++) {
mas[i] = i+3;
}
int *ptr=NULL;
ptr=cubeI(mas,size);
for (int i = 0; i < size; i++)
cout<<*(ptr+i)<<" ";
cout << endl;


}
Ответ написан
Ваш ответ на вопрос

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

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