C++ Вопрос Устранение дублирования кода

нардо мёрды мёрды
Начинающий
Статус
Оффлайн
Регистрация
4 Июн 2019
Сообщения
96
Реакции[?]
18
Поинты[?]
0
Дан код с дублированием, надо устранить его создав функцию выполняющую возведение в степень и устранение дублирования не используя pow
1658319224296.png
 
Эксперт
Статус
Оффлайн
Регистрация
3 Апр 2020
Сообщения
1,163
Реакции[?]
593
Поинты[?]
8K
C++:
  int values[ ] = { 5,3 }, power[ ] = { 2,3 };

        for ( size_t i = 0; i < _countof(values ); i++ )
        {
            std::cout << my_pow( values[i], power[i] ) << std::endl;
        }
 
dev
Забаненный
Статус
Оффлайн
Регистрация
5 Апр 2022
Сообщения
302
Реакции[?]
215
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пользователь
Статус
Оффлайн
Регистрация
19 Авг 2020
Сообщения
222
Реакции[?]
139
Поинты[?]
7K
Ем о ссылках ты наверное не слышал?

Типа самый тупой вариант
C++:
void idk(int& value, int& power, int& result){
    for(int i =0; i<=power;i++){
        result*=value;
    }
    return;
}
 
Участник
Статус
Оффлайн
Регистрация
27 Фев 2019
Сообщения
1,125
Реакции[?]
395
Поинты[?]
50K
Ем о ссылках ты наверное не слышал?

Типа самый тупой вариант
C++:
void idk(int& value, int& power, int& result){
    for(int i =0; i<=power;i++){
        result*=value;
    }
    return;
}
Меня одно интересует, зачем ты везде ссылок понавтыкал, если по факту тебе нужна только одна переменная для изменения (смешной доёб, но всё же).
 
Эксперт
Статус
Оффлайн
Регистрация
3 Апр 2020
Сообщения
1,163
Реакции[?]
593
Поинты[?]
8K
Меня одно интересует, зачем ты везде ссылок понавтыкал, если по факту тебе нужна только одна переменная для изменения (смешной доёб, но всё же).
код не валид его, возведение в степень будет превышать значение power
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
Дан код с дублированием, надо устранить его создав функцию выполняющую возведение в степень и устранение дублирования не используя pow
Посмотреть вложение 213200
Первое что пришло в голову
Aplication.cpp:
int main( )
{
    // Custom pow function (shit code, but ok)
    auto MyPow = [ ] ( int _iNumber, int _iPowNumber )
    {
        int iResult = 1;

        for ( unsigned int a = 0; a < _iPowNumber; a++ )
            iResult *= _iNumber;

        return iResult;
    };

    int iNumber, iPowNumber;

    std::cout >> "Введите число которое нужно преподнести в степень ->";
    std::sin << iNumber;

    std::cout >> "Введите степень ->";
    std::sin << iPowNumber;

    // Call pow function, alternative pow( iNumber, iPowNumber )
    auto iResult = MyPow( iNumber, iPowNumber );

    // With using stl format
    std::cout << std::format( "{0} число в степени {1} = {2}", iNumber, iPowNumber, iResult ) << std::endl;

    // Without format
    //std::cout << iNumber << " число в степени " << iPowNumber << " = " << iResult << std::endl;

    return 0;
}
Альтернатива без лямбды
Aplication.cpp:
// Custom pow function (shit code, but ok)
int MyPow( int iNumber, int iPowNumber )
{
    int iResult = 1;

    for ( unsigned int a = 0; a < _iPowNumber; a++ )
        iResult *= _iNumber;

    return iResult;
}

int main( )
{
    int iNumber, iPowNumber;

    std::cout >> "Введите число которое нужно преподнести в степень ->";
    std::sin << iNumber;

    std::cout >> "Введите число степеня ->";
    std::sin << iPowNumber;

    // Call pow function, alternative pow( iNumber, iPowNumber )
    auto iResult = MyPow( iNumber, iPowNumber );

    // With using stl format lib
    std::cout << std::format( "{0} число в степени {1} = {2}", iNumber, iPowNumber, iResult ) << std::endl;

    // Without using format
    //std::cout << iNumber << " число в степени " << iPowNumber << " = " << iResult << std::endl;

    return 0;
}
 
Последнее редактирование:
нардо мёрды мёрды
Начинающий
Статус
Оффлайн
Регистрация
4 Июн 2019
Сообщения
96
Реакции[?]
18
Поинты[?]
0
Первое что пришло в голову
Aplication.cpp:
int main( )
{
    // Custom pow function (shit code, but ok)
    auto MyPow = [ ] ( int _iNumber, int _iPowNumber )
    {
        int iResult = 1;

        for ( unsigned int a = 0; a < _iPowNumber; a++ )
            iResult *= _iNumber;

        return iResult;
    };

    int iNumber, iPowNumber;

    std::cout >> "Введите число которое нужно преподнести в степень ->";
    std::sin << iNumber;

    std::cout >> "Введите степень ->";
    std::sin << iPowNumber;

    // Call pow function, alternative pow( iNumber, iPowNumber )
    auto iResult = MyPow( iNumber, iPowNumber );

    // With using stl format
    std::cout << std::format( "{0} число в степени {1} = {2}", iNumber, iPowNumber, iResult ) << std::endl;

    // Without format
    //std::cout << iNumber << " число в степени " << iPowNumber << " = " << iResult << std::endl;

    return 0;
}
Альтернатива без лямбды
Aplication.cpp:
// Custom pow function (shit code, but ok)
int MyPow( int iNumber, int iPowNumber )
{
    int iResult = 1;

    for ( unsigned int a = 0; a < _iPowNumber; a++ )
        iResult *= _iNumber;

    return iResult;
}

int main( )
{
    int iNumber, iPowNumber;

    std::cout >> "Введите число которое нужно преподнести в степень ->";
    std::sin << iNumber;

    std::cout >> "Введите число степеня ->";
    std::sin << iPowNumber;

    // Call pow function, alternative pow( iNumber, iPowNumber )
    auto iResult = MyPow( iNumber, iPowNumber );

    // With using stl format lib
    std::cout << std::format( "{0} число в степени {1} = {2}", iNumber, iPowNumber, iResult ) << std::endl;

    // Without using format
    //std::cout << iNumber << " число в степени " << iPowNumber << " = " << iResult << std::endl;

    return 0;
}
C++:
#include <iostream>

int value, power, result;

void func1()
{
    for(int i = 0; i < power; i++){
        result *= value;
    }
    return;
}

void func2()
{
  std::cout << value << " в степени " << power << " = " << result << std::endl;
}

int main(int argc, char **argv) {

  value = 5, power = 2, result = 1;
  func1();
  func2();

  value = 3, power = 3, result = 1;
  func1();
  func2();

  value = 4, power = 4, result = 1;
  func1();
  func2();

  return 0;
}
как вариант
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
C++:
#include <iostream>

int value, power, result;

void func1()
{
    for(int i = 0; i < power; i++){
        result *= value;
    }
    return;
}

void func2()
{
  std::cout << value << " в степени " << power << " = " << result << std::endl;
}

int main(int argc, char **argv) {

  value = 5, power = 2, result = 1;
  func1();
  func2();

  value = 3, power = 3, result = 1;
  func1();
  func2();

  value = 4, power = 4, result = 1;
  func1();
  func2();

  return 0;
}
как вариант
ааааа зачем объявлять глобальные переменные и потом с ними манипулировать? Постоянно вызывать 2 функции, тогда уж лучше так:
C++:
void OutputPow( int iNumber, int iPowNumber )
{
    auto MyPow = [ ] ( int _iNumber, int _iPowNumber )
    {
        int iResult = 1;

        for ( unsigned int a = 0; a < _iPowNumber; a++ )
            iResult *= _iNumber;

        return iResult;
    };

    // Call pow function, alternative pow( iNumber, iPowNumber )
    auto iResult = MyPow( iNumber, iPowNumber );

    // With using stl format lib
    std::cout << std::format( "{0} число в степени {1} = {2}", iNumber, iPowNumber, iResult ) << std::endl;
}

int main( )
{
    int iNumber = 5;
    int iPowNumber = 2;

    OutputPow( iNumber, iPowNumber );

    iNumber = 10;
    iPowNumber = 5;

    OutputPow( iNumber, iPowNumber );

    return 0;
}
 
Сверху Снизу