Member 13478360 Ответов: 2

Привет, я пытаюсь решить проблему для автомобильной мельницы. В чем мои ошибки? Так как я не могу получить правильный ответ.


ВОТ В ЧЕМ ВОПРОС.

Enter the miles used (-1 to quit): 287
Enter gallons: 13
MPG this tankful: 22.076923
Total MPG: 22.076923
Enter the miles used (-1 to quit): 200
Enter gallons: 10
MPG this tankful: 20.000000
Total MPG: 21.173913
Enter the miles used (-1 to quit): 120
Enter gallons: 5
MPG this tankful: 24.000000
Total MPG: 21.678571
Enter miles (-1 to quit): -1


Что я уже пробовал:

#include <iostream>
#include "conio.h"
using namespace std;
void main()

{
	cout.setf(ios::fixed);
	cout.setf(ios::showpoint);
	cout.precision(6);

	float miles = 0; float gallons = 0; float milage = 0; float TMG = 0; float TM = 0; float TG = 0;

	cout << "Enter Miles(-1 to quit): ";
	cin >> miles;
	while (miles != -1)
	{
		
		cout << "Enter gallons: ";
		cin >> gallons;
		milage = miles / gallons;
		cout << "Milage this tankful is: " << milage << endl;
		
		if (TMG == 0)
		{
			cout << "Total Milage is: " << milage << endl;
		}
		else
		{
			cout << "Total Milage is: " << TMG << endl;
		}
		
		TM = TM + miles;
		TG = TG + gallons;
		TMG = TM / TG;
		cout << "Enter Miles(-1 to quit): ";
		cin >> miles;
	}

	_getche();
}

2 Ответов

Рейтинг:
2

OriginalGriff

Храните только ваши мили и галлоны: и храните их как целые числа - это то, что пользователь вводит их как.
Итак, вам нужны четыре переменные: tripMiles, tripGallons, totalMiles, totalGallons.
Каждый раз, когда пользователь вводит значения поездки, распечатайте из них MPG:

cout << "MPG this tankful is: " << (float) tripMiles / (float(tripGallons) << endl;
И добавьте значения поездки к итоговым значениям. Выведите суммарную миль на галлон подобным образом:
cout << "Total MPG: " << (float) totalMiles / (float(totalGallons) << endl;


Кроме того, вам нужно перечитывать мили каждый раз, когда вы находитесь за пределами петли, а не только за ее пределами.


Member 13478360

Мне очень жаль, что я этого не понял. Не могли бы вы отредактировать его в коде, а затем вставить.

OriginalGriff

Нет, потому что это будет делать за тебя домашнее задание, а мы этого не делаем.
У вас есть все подсказки, которые вам нужны, просто немного подумайте, и все получится.

Member 13478360

не могли бы вы тогда подробнее рассказать о моей ошибке?

CPallini

5.

Рейтинг:
1

Patrice T

Цитата:
В чем мои ошибки? Так как я не могу получить правильный ответ.

Давайте угадаем, что вы получаете второй ответ после третьего ввода, четвертый ответ после пятого ввода.
Вещи неуместны в вашем коде. Используйте отладчик, чтобы увидеть, что и когда делается.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Member 13478360

Нет, дело не в этом. Если я ввожу те же значения, что и в вопросе, то получаю не тот же самый ответ

Patrice T

"не то же самое" не информативно.
Покажите результаты, которые вы получаете. Не у всех есть готовый к запуску компилятор c++.

CPallini

5.

Patrice T

спасибо