2017-01-29 2 views
-1

Я провел пару часов, пытаясь понять, почему это возвращается как 0 Если кто-то может помочь, это будет здорово.Я пытаюсь написать простую программу расчета, но ответ продолжает возвращаться как 0

1 /*Written by Connor Green*/ 
    2 /*CISP 1010 01/28/17*/ 
    3 
    4 #include <iostream> 
    5 using namespace std; 
    6 
    7 int main() 
    8 
    9 
10 { 
11  int carton_size, number_cartons, eggs_per_omelette, number_of_omelettes; 
12 /*This will tell you how many omelettes you can make*/ 
13 
14 number_of_omelettes = carton_size * number_cartons/eggs_per_omelette; 
15 cout << "Welcome to the Egg Ordering Guide.\n"; 
16 cout << "How many eggs do you want per carton? (12, 18, or 25):\n"; 
17 cin >> carton_size; 
18 cout << "How many cartons?:\n"; 
19 cin >> number_cartons; 
20 cout << "How many eggs in an omelette? (2 or 3):\n"; 
21 cin >> eggs_per_omelette; 
22 cout << "You can make "; 
23 cout << number_of_omelettes; 
24 cout << " omelettes with this amount of eggs.\n"; 
25 
26 return 0; 
27 } 
+0

Какие входные данные вы использовали? Целочисленная математика будет делить дробные части. – Brick

+2

Почему вы рассчитываете, прежде чем вводить какие-либо данные? Программы C++ работают сверху вниз. Это не похоже на то, что вы пишете формулу, и программа волшебным образом использует эту формулу позже. – PaulMcKenzie

ответ

2

Это потому, что вы вычислить number_of_omelettesперед получать входные переменные для этого расчета. Перемещение, что вычисление только перед выводом его:

... 
number_of_omelettes = carton_size * number_cartons/eggs_per_omelette; 
cout << "You can make " << number_of_omelettes << " omelettes with this amount of eggs.\n"; 

Кроме того, нужно учитывать, что оператор деления / предшествует оператору умножение *, что может привести к нулю из-за целочисленное деление. Чтобы избежать этого, принудительно умножить предшествующее деление, используя круглые скобки:

number_of_omelettes = (carton_size * number_cartons)/eggs_per_omelette; 
+1

Спасибо. Я знал, что это действительно просто –