2017-02-10 2 views
-6

У меня есть домашнее задание типичного расстояния, пройденного в моем классе C++. Однако в этой задаче учитель сказал, что я не могу использовать цикл «для», и мне разрешено использовать «while loop», поэтому я застрял в этом коде.Как исправить эту программу на C++?

Проблема заключается в том, что часы должны отображать расстояние, пройденное индивидуально, но оно отображает общее количество пройденного расстояния в каждый час.

#include <iostream> 
using namespace std; 

int main() 
{ 
    double distance, 
      speed, 
      time, 
      counter=1; 


    cout << "This program will display the total distance travel each hour.\n\n"; 

    cout << " What is the speed of the vehicle in mph? "; 
    cin >> speed; 

    while(speed < 0) 
    { 
     cout << " Please enter a positive number for the speed: "; 
     cin >> speed; 
    } 

    cout << " How many hours has it traveled? "; 
    cin >> time; 

    while(time < 1) 
    { 
     cout << " Please enter a number greater than 1 for the hours: "; 
     cin >> time; 
    } 


    cout << endl; 
    cout << " Hour" << "\t\t" << " Distance Traveled" << endl; 
    cout << " ------------------------------------" << endl; 

    while(counter <= time) 
    { 
     distance = speed * time; 
     cout << counter << "\t\t" << distance << endl; 
     counter++; 

    } 

    return 0; 
} 
+2

Цикл while и цикл for - это в основном одно и то же. Вы знаете, как это сделать с циклом for? – NathanOliver

+0

Да, я сделал это с циклом for, но, как я уже сказал, мой учитель просит меня использовать цикл while. –

+0

Возможно, это только я, но я не могу понять, что это значит: «* Проблема в том, что часы должны отображать расстояние, пройденное индивидуально, но оно отображает общее количество пройденного расстояния за каждый час. *« Что такое разница между перечислением часов по отдельности и перечислением суммы, пропущенной в каждый час? –

ответ

-1

Пожалуйста, попробуйте, если это действительно так же просто, как расстояние = скорость * время. Похоже, вы получили переменные counter и time перепутаны. Просто используйте counter с каждым шагом и это локальное значение time.

#include <iostream> 
using namespace std; 

int main() 
{ 
    double distance, 
      speed, 
      time, 
      counter=1; 


    cout << "This program will display the total distance travel each hour.\n\n"; 

    cout << " What is the speed of the vehicle in mph? "; 
    cin >> speed; 

    while(speed < 0) 
    { 
     cout << " Please enter a positive number for the speed: "; 
     cin >> speed; 
    } 

    cout << " How many hours has it traveled? "; 
    cin >> time; 

    while(time < 1) 
    { 
     cout << " Please enter a number greater than 1 for the hours: "; 
     cin >> time; 
    } 


    cout << endl; 
    cout << " Hour" << "\t\t" << " Distance Traveled" << endl; 
    cout << " ------------------------------------" << endl; 

    while(counter <= time) 
    { 
     distance = speed * counter; 
     cout << counter << "\t\t" << distance << endl; 
     counter++; 

    } 

    return 0; 
} 

Тест

This program will display the total distance travel each hour. 

What is the speed of the vehicle in mph? 50 
How many hours has it traveled? 5 

Hour  Distance Traveled 
------------------------------------ 
1  50 
2  100 
3  150 
4  200 
5  250 
+0

Спасибо, что помогли мне, извините, что беспокою вас. –

+0

@HugoFederico Удачи ... Надеюсь, код работает для вас. –

1

Предполагая, что вы хотите, чтобы вычислить расстояние, пройденное за каждый час соответственно (от того, что я мог понять из кода); Это потому, что каждый раз, когда вы повторяете цикл while для counter <= time, вы вычисляете расстояние за этот промежуток времени. Скажите, что время = 1 час, ваш код вычисляет пройденное расстояние за 1 час и отображает его. Когда время составляет 2 часа, он вычисляет пройденное расстояние за 1 час и 2 часа (общее расстояние составляет 2 часа) соответственно.

Ex:

time = 2, speed = 60 kmph 

напечатает

1 60 
2 120 

где 120 является общее расстояние в 2-х часов, а не расстояние от 1 часа до 2 часов.

Если вам нужно рассчитать пройденное расстояние в каждый час, ваше время должно быть постоянным и составлять 1 час (предполагая, что скорость остается постоянной за время). Для того, чтобы использовать, что в то время как петли, использование:

distance = (speed * counter) - (speed *(counter - 1)) 

пройденное расстояние в п-й час общее расстояние в п часов минус расстояние, проходимое в (N-1) часов.

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