#c
#c
Вопрос:
Мне нужно написать программу, которая получит 2 целых числа. Затем программа отобразит следующее: a. Сумма всех целых чисел, которые делятся на 4 и 6 между двумя введенными числами. b. Среднее значение всех целых чисел, которые делятся на 3 и 7 между двумя введенными числами.
Я попытался выполнить приведенный ниже код:
#include <iostream>
using namespace std;
int Sum46(int a, int b)
{
int sum = 0;
for (int i = a; i <= b; i ) {
if (i % 4 == 0 amp;amp; i % 6 == 0) {
sum = sum i;
}
}
return sum;
}
int Sum37(int j, int k)
{
int sum1 = 0;
for (int i = j; i <= k; i ) {
if (i % 3 == 0 amp;amp; i % 7 == 0) {
sum1 = sum1 i;
}
}
return sum1;
}
int Count(int f, int g)
{
int inputCount = 0;
for (int i = f; i < g; i ) {
if (i % 3 == 0 amp;amp; i % 7 == 0) {
inputCount ;
}
}
return inputCount;
}
int Ave(int t, int u)
{
int total = 0;
total = t / u;
return total;
}
void display(int o, int l)
{
cout << "The sum of all integers that are both divisible by 4 and 6 between two numbers is " << o << endl;
cout << "The sum of all integers that are both divisible by 3 and 7 between two numbers is " << l << endl;
}
int main()
{
int num1, num2;
int probA, probB, comp, bilang;
cout << "Input first number : ";
cin >> num1;
cout << "Input second number : ";
cin >> num2;
probA = Sum46(num1, num2);
comp = Sum37(num1, num2);
bilang = Count(num1, num2);
probB = Ave(comp, bilang);
display(probA, probB);
return 0;
}
Мой ожидаемый результат должен быть
Введите первое число: 4 Введите второе число: 12
Сумма всех целых чисел, которые оба делятся на 4 и 6 между двумя числами, равна 12 Сумма всех целых чисел, которые оба делятся на 3 и 7 между двумя числами, равна 0 «поскольку 12 — это единственное число, которое делится на 4 и 6, и ни одно число не делится на 3 и 7для введенных чисел «.
Но фактические результаты — это ввод первого числа: 4 Ввод второго числа: 12 «Это единственный результат, и я не смог создать какой-либо вывод функций»
Комментарии:
1. Если
Count()
возвращает0
, вы получаете исключение деления на ноль.2. При отладке в Visual Studio это показало мне, что @JohnnyMopp был правильным. в функции ave() оба параметра равны 0.
Ответ №1:
Вы должны проверить случай, когда u равно 0.
Измените это:
int Ave(int t, int u)
{
int total = 0;
total = t / u;
return total;
}
К этому:
int Ave(int t, int u)
{
if( u == 0 )
return -1;
return t/u;
}
Комментарии:
1. возвращает значение -1
2. -1 — это код ошибки по умолчанию для библиотек C . Вы можете вернуть то, что хотите. Может быть, 0 здесь лучше. Но вам определенно нужно перехватить деление через 0. Например, вы могли бы создать исключение с разделением на 0. Но это строка, в которой ваш код прерывается.
3. Я вижу, спасибо за информацию. Кстати, как я могу вернуть функцию Ave в моей функции отображения?
4. Возможно, вы захотите не отображать функцию. Вместо этого просто отобразите свои результаты непосредственно в main. Либо это, либо передача дополнительных параметров.