Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

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

  • Автор темы Автор темы brutaly
  • Дата начала Дата начала
нардо мёрды мёрды
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
4 Июн 2019
Сообщения
96
Реакции
18
Дан код с дублированием, надо устранить его создав функцию выполняющую возведение в степень и устранение дублирования не используя pow
1658319224296.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ем о ссылках ты наверное не слышал?

Типа самый тупой вариант
C++:
Expand Collapse Copy
void idk(int& value, int& power, int& result){
    for(int i =0; i<=power;i++){
        result*=value;
    }
    return;
}
 
Ем о ссылках ты наверное не слышал?

Типа самый тупой вариант
C++:
Expand Collapse Copy
void idk(int& value, int& power, int& result){
    for(int i =0; i<=power;i++){
        result*=value;
    }
    return;
}
Меня одно интересует, зачем ты везде ссылок понавтыкал, если по факту тебе нужна только одна переменная для изменения (смешной доёб, но всё же).
 
Меня одно интересует, зачем ты везде ссылок понавтыкал, если по факту тебе нужна только одна переменная для изменения (смешной доёб, но всё же).
код не валид его, возведение в степень будет превышать значение power
 
Дан код с дублированием, надо устранить его создав функцию выполняющую возведение в степень и устранение дублирования не используя pow
Посмотреть вложение 213200
Первое что пришло в голову
Aplication.cpp:
Expand Collapse Copy
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:
Expand Collapse Copy
// 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;
}
 
Последнее редактирование:
Первое что пришло в голову
Aplication.cpp:
Expand Collapse Copy
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:
Expand Collapse Copy
// 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++:
Expand Collapse Copy
#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;
}
как вариант
 
C++:
Expand Collapse Copy
#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++:
Expand Collapse Copy
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;
}
 
Назад
Сверху Снизу