C ++ строки и массивы - PullRequest
0 голосов
/ 25 июля 2011

У меня возникли проблемы с домашними заданиями на C ++.

Напишите программу для анализа цен на бензин за последние 10 дней. Сначала попросите пользователя ввести цены. Затем сделайте следующее: (а) Рассчитайте и отобразите среднюю цену за первые 5 дней и среднюю цену за вторые 5 дней. (б) Сравните две средние цены. Определите и сообщите, какой из них выше (или они одинаковые). (c) Сравните цену каждого дня (кроме дня 1) с ценой накануне. Определите, стало ли оно выше, ниже или осталось прежним. Подсчитайте и сообщите количество дней, в течение которых цена была выше, ниже и равна цене предыдущего дня, соответственно.

Я не уверен, как сравнить, как сравнить первые пять дней с последними пятью днями, и часть c, на которой я полностью потерян ....

Я не ищу кого-то, кто сделает за меня домашнее задание, но толчок в правильном направлении очень помог бы!

вот что я сделал до сих пор:

#include <iostream>
#include <fstream>
using namespace std;


int main()
{
double gasPrice[10];
double firstFive = 0.0;
double lastFive = 0.0;
double ffAvg = 0.0;
double lfAvg = 0.0;

for (int x = 0; x < 10; x = x + 1)
{
    gasPrice[x] = 0.0;
}

cout << "You will be asked to enter daily gas prices for 10 days."<< endl;

 ofstream gasprice;
 gasprice.open("gasprice.txt", ios::app);

 if (gasprice.is_open())
 {
for (int x = 0; x < 10; x = x + 1)
{
    cout << "Enter the gas price " << x+1 << ": ";
    getline(cin, gasPrice[x];
 }




if ( ffAvg > lfAvg)
{
     cout << "The first five days have a lower gas price " << ffAvg << lfAvg << endl;
     }

 else if ( ffAvg < lfAvg)
 {
       cout << "The last five days have a lower gas price " << ffAvg << lfAvg << endl;
     }

 system("pause ");
 return 0;
 }

Ответы [ 4 ]

1 голос
/ 25 июля 2011

Разбейте проблему на несколько этапов: во-первых, вам нужно получить от пользователя 10 входных цен и сохранить их в массиве размера 10.

Далее вам нужно вычислить среднюю цену за первые пять дней (т.е. для значений в индексе 0-4 вашего массива) и сохранить ее в ffAvg, вы можете сделать это с помощью следующего простого цикла for:

double sum;
for( int i = 0; i < 5; i++ )
{
       sum += gasPrice[i];
}
double ffAvg = sum / 5;

Затем вы делаете это со вторыми 5 днями, сохраняя среднее значение в lfAvg.

Следующая часть вашей задачи - сравнить средние значения, вы можете сделать это, используя операторы if и else if, например, если вы хотите сравнить с числами, num1 и num2 вы можете сделать следующее:

if( num1 > num2 )
{ /* Do something */ }

При этом будут сравниваться num1 и num2, а если num1 больше num2, он будет выполнять код в фигурных скобках.

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

Надеюсь, это поможет вам! :)

РЕДАКТИРОВАТЬ: Я также заметил, что вы не закрыли много своих браслетов, вы должны всегда делать это, чтобы компилятор мог работать должным образом. Каждый { должен иметь соответствующий }, иначе компилятор должен выдавать ошибки, а не компилироваться.

1 голос
/ 25 июля 2011

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

В любом случае, вы должны сравнивать не отдельные дни, а СРЕДНИЕ дни.Итак, сначала вам нужно вычислить СРЕДНЕЕ из первых пяти и СРЕДНЕЕ из вторых пяти дней, а затем сравнить это.

Для второй части вашего вопроса, агрегаторы для ваших итогов - это толчок, который я бы дал вам.

Надеюсь, это поможет.

0 голосов
/ 25 июля 2011

Сначала вы должны вычислить среднее значение за первые и последние 5 дней. Среднее значение определяется суммой, деленной на количество предметов. Таким образом, ваше среднее значение будет (gasPrice[0] + gasPrice[1] + gasPrice[2] + gasPrice[3] + gasPrice[4]) / 5.0.

Вы, вероятно, должны сделать это вычисление в цикле, похожем на тот, который у вас есть для получения входных данных. Цикл должен повторяться только 5 раз.

0 голосов
/ 25 июля 2011

Я рекомендую сделать следующее:

double average1=0.0;
for(int i=0;i<5;++i) {
   average1 += values[i];
}
average1/=5.0;

double average2=0.0;
for(int i=5;i<10;++i) {
   average2 += values[i];
}
average2/=5.0;

Кроме того, взгляните на std :: vector, это может помочь вам в дальнейших упражнениях: http://www.cplusplus.com/reference/stl/vector/

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