Форум программистов, компьютерный форум CyberForum.ru

Функция возведения в степень. - C++

Восстановить пароль Регистрация
 
artemd55131
2 / 4 / 0
Регистрация: 26.06.2014
Сообщений: 60
09.07.2014, 03:02     Функция возведения в степень. #1
написал библиотеку для вычисления степени чисел.некорректно работает при возвращении переменной из step.h в main.cpp и переводе в другую.
step.h:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <cmath>
  int result;
int step(int choise, int step)
{
 
    for(int i = 0; i < step; i++){
        result *= choise;
    }
 
return result;
}
main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
#include "step.h"
#include <iostream>
int main(){
 
    int a;
    
step(2,3);
result <<a; //ещё пробовал result >> a
std::cout <<result;
system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
09.07.2014, 03:31     Функция возведения в степень. #2
обращаю внимание что это бред...
начнём с тела main:
C++
1
2
3
4
5
#include "step.h"
#include <iostream>
int main(){
 
    int a;
тут всё ок!
дальше
C++
1
step(2,3);
хм... странно
смотрим что же это за функция
C++
1
int step(int choise, int step)
ну я промолчу про всякие ссылки-указатели, здесь это не основная проблема, основанная проблема - сия функция нечто возвращает, и если копнуть в её код - то ужасно неэффективным способом степень числа (изучи уже блин логарифмы, например), ну ок, возвращает.... ок, а куда? а никуда, в пустоту, судя по вызову функции... что мы видели в начале перехода
C++
1
step(2,3);
глядим дальше и....
C++
1
result <<a;
зачем? переменная "a" так и не инициализированна,
C++
1
//ещё пробовал result >> a
соберись, это же бред, ты понимаешь написанное? задайся вопросом что это вообще значит
C++
1
system("pause");
и снова минус, как любитель C++, этого нет и не может быть в языке
olper
24 / 24 / 11
Регистрация: 02.12.2013
Сообщений: 75
09.07.2014, 04:58     Функция возведения в степень. #3
Цитата Сообщение от artemd55131 Посмотреть сообщение
вывод переменной в другую
мусье, извращенец

По существу "сформулированного в теме" предложения
Цитата Сообщение от artemd55131 Посмотреть сообщение
result <<a;
имелось ввиду вероятно
C++
1
result = a;
переменные не надо "выводить друг в друга", лучше их присваивать друг другу, или на худой конец копировать друг в друга... с оглядкой на тип переменных естественно.
А выводить их лучше в "поток" какой-нибудь и вводить тоже с потока какого-нибудь.


А по существу представленного кода, хотелось бы добавить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int result; // Глобальная, объявленная и определенная(!) в хедере.  Одноразовый хедер? 
int step(int choise, int step)
{
 
    for(int i = 0; i < step; i++){
        result *= choise;  // вспомним, result - глобальная, для одного вызова сгодится, 
                                 //но чем она была заполнена при создании???  
                                 // результат всегда рулетка                                 
 
    }
 
return result; // на ку-куй его возвращать? result - глобальная.
}
zss
Модератор
Эксперт С++
 Аватар для zss
6055 / 5658 / 1828
Регистрация: 18.12.2011
Сообщений: 14,451
Завершенные тесты: 1
09.07.2014, 07:56     Функция возведения в степень. #4
Подвожу итог:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
int step(int choise, int step)
{
    int result=1;
    for(int i = 1; i <= step; i++)
        result *= choise;
    return result;
}
int main()
{
 
    int a=step(2,3);
    std::cout <<a<<std::endl;
    system("pause");
    return 0;
}
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.07.2014, 08:11     Функция возведения в степень. #5
Цитата Сообщение от abit Посмотреть сообщение
и снова минус, как любитель C++, этого нет и не может быть в языке
А вот тут подробнее, пожалуйста
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
09.07.2014, 08:15     Функция возведения в степень. #6
Цитата Сообщение от abit Посмотреть сообщение
ну я промолчу про всякие ссылки-указатели
А можно развернуто? Про ссылки-указатели и их преимущество по сравнению с передачей по значению применительно к int ?
Croessmah
09.07.2014, 09:14
  #7

Не по теме:

Цитата Сообщение от soon Посмотреть сообщение
А вот тут подробнее, пожалуйста
скорее всего имеется ввиду отсутствие pause в linux

Roodey
4 / 4 / 1
Регистрация: 23.05.2013
Сообщений: 36
09.07.2014, 09:21     Функция возведения в степень. #8
uglyPinokkio, ну, как минимум, динамичесие переменные имеют преимущество перед статическими в плане занимаемой памяти. Хотя тут вопрос в целесообразности, в крупных программах использовать стоит динами, дабы утечки памяти не было. В чем-то мелком достаточно будет статики.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2014, 09:26     Функция возведения в степень.
Еще ссылки по теме:

C++ Написать функцию возведения в степень
C++ Программа для возведения числа в степень
Перегрузить функцию возведения в степень C++
Рекурсивная функция возведения в степень C++
C++ Класс возведения в степень

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
09.07.2014, 09:26     Функция возведения в степень. #9
Цитата Сообщение от Roodey Посмотреть сообщение
динамичесие переменные имеют преимущество перед статическими в плане занимаемой памяти
Это о чем? там нет статических переменных.
Yandex
Объявления
09.07.2014, 09:26     Функция возведения в степень.
Ответ Создать тему
Опции темы

Текущее время: 21:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru