2017-01-20 8 views
3

Я новичок в функциях, и я действительно пытаюсь понять, как они работают, мой учитель дал нам проблему, когда мы должны были передать число функции между диапазоном 1-12 и функция тогда предназначалась для того, чтобы делать временные истории этого числа, поэтому я попросил пользователя ввести число, и если число меньше 1 и больше, чем 12 выход, иначе передайте номер функции, а затем я использовал цикл for для сделайте умножение для меня (насколько мне известно), но ничего не происходит? Я сомневаюсь, что я делаю что-то действительно глупое, любая помощь очень ценится.Умножение с функциями в C++

#include <iostream> 
using namespace std; 

int TimesTables (int num); 

int main(int argc, const char * argv[]) { 
    int number; 
    cout << "enter a number to multiply by, with a range of 1-12: "; 
    cin >> number; 
    if (number < 1 && number > 12) 
     return EXIT_FAILURE; 
    else { 
     int tables = TimesTables(number); 
     cout << tables; 
    } 
    return 0; 
} 
int TimesTables (int num) { 

    for (int i = 0; num <=12; i ++) 
     num = num * i; 
    return num; 
} 
+4

Похоже, вам, возможно, потребуется узнать, как использовать отладчик для выполнения вашего кода. С хорошим отладчиком вы можете выполнить свою программу по очереди и посмотреть, где она отклоняется от ожидаемого. Это важный инструмент, если вы собираетесь заниматься программированием. Дальнейшее чтение: ** [Как отлаживать небольшие программы] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver

ответ

1
for (int i = 0; num <=12; i ++) 
    num = num * i; 

Здесь i начинается с 0, так что любое умножение вы впоследствии не влияет на результат (num). Кроме того, вы хотите, чтобы перейти от 1 до 12, так что вы должны начать с 0 и заканчивается в 12 - 1, или начать с 1 и заканчивается в 12.

Так изменить:

for (int i = 0; num <=12; i ++) 

к этому :

for (int i = 1; i <=12; i ++) 

, так как вы хотите остановиться, когда i достигает 12, а не num, i является счетчик !

+1

Благодарим вас за помощь – Dean

+0

Добро пожаловать @Dean. И, кстати, нет глупой ошибки, вы учитесь, так что было бы хорошо спросить - вот почему я поддержал вас, потому что я там кое-что сделал! Я также обновил свой ответ простой методикой отладки новичка, которая может помочь вам в следующий раз! PS - не забудьте принять * ответ. – gsamaras

+1

Этот код не работает, gsamaras. Однако вы могли бы это увидеть сами, если бы вы это запустили. –

4

Запуск i от 0 собирается установить num 0, и, следовательно, любое умножение после этого.

Ваша петля также довольно сомнительна. Почему вы проверяете num <= 12, а не i <= 12?

не Если ваш цикл принимают вид

for (int i = 1; i <=12; i ++){ 
    // Print num * i 
    cout << num * i; 
} 
// There's no need to return anything back to the caller 
+0

Спасибо, очень глупая ошибка на моя часть, но если я ничего не верну, я получаю сообщение об ошибке «control достигает en of non void function», я думал, что мне понадобится возврат? особенно потому, что я пытаюсь вернуть num back to main и выводить результат. – Dean

+0

Я думаю, что будет полезно возвращать 'num', поскольку это то, что их учитель дал им указание сделать, поэтому он имеет отношение к потоку курса. Кстати, кажется, что ваш ответ пришел немного раньше, чем у меня, поэтому я немного обновил мой, чтобы он немного отличался от вашего. +1. – gsamaras

+0

также теперь, когда я запускаю программу, он просто возвращает мне ошибку и показывает мне все указатели? плохо обходите с ним еще и попытайтесь исправить это, еще раз спасибо за вашу помощь, ребята, высоко ценят! – Dean

 Смежные вопросы

  • Нет связанных вопросов^_^