Значения сравнения в цикле FOR не связываются с корректными векторными элементами после завершения цикла.- Обзор кода - PullRequest
0 голосов
/ 28 января 2019

У меня есть две проблемы, которым я верю.Они связаны с i) инициализацией векторов и ii) получением значений smallest и greatest, соответствующих правильным значениям в векторе.

Я пробовал пару вещей:

Когда я инициализирую smallest и greatest, я всегда сталкиваюсь с проблемой, что оба значения начинаются с 0 как их начальное значение.Я попытался вручную ввести значение, чтобы инициализировать обе переменные (smallest = distance[i], но на самом деле это не сработало, поскольку мои векторы изначально были пустыми.

#include "pch.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using std::cout;
using std::cin;
using std::vector;
using std::string;

int main()
{
// Read a sequence of double values into a vector

vector <double> distance = {};                  // declaring the vector named "distance"
double sum = 0;
double smallest;
double greatest;

for (double x = 0; cin >> x;) {     // read into distance, to terminate putting values in vector use anything that is not of variable type of vector
    distance.push_back(x);                  // put distance into vector
    cout << '\n';
    for (int i = 0; i < distance.size(); i = i + 1) {   // keeping track of elements in vector by displaying them
        cout << distance[i] << '\n';
    }

}

for (int i = 0; i < distance.size(); i = i + 1) {                   // adding up all values of vector by iterating through all elements
    sum = sum + distance[i];                
    }

cout << "The total sum of all the elements in the vecotr is: " << sum << 
'\n';   



for (int i = 0; i < distance.size(); i = i + 1) {           // determining the smallest value in the vector
    if (smallest > distance[i]) {
        smallest = distance[i];
    }


}

cout << "The smallest value in the vector is: " << smallest << '\n';

for (int i = 0; i < distance.size(); i = i + 1) {     // determining the greatest value in the vector
    if (greatest < distance[i]) {
        greatest = distance[i];
    }
}

cout << "The greatest value in the vector is: " << greatest << '\n';

cout << "The mean distance between two neigbouring cities is: " << sum / distance.size() << '\n'; 

}

Какие предложения / советыМожет ли кто-нибудь дать мне возможность работать через это?

1 Ответ

0 голосов
/ 28 января 2019

Вы можете просто присвоить правильное значение после заполнения вектора.

vector <double> distance = {};      // declaring the vector named "distance"
double sum = 0;
double smallest;
double greatest;

for (double x = 0; cin >> x;) {     // read into distance, to terminate putting values in vector use anything that is not of variable type of vector
    distance.push_back(x);          // put distance into vector
    cout << '\n';
    for (int i = 0; i < distance.size(); i = i + 1) {   // keeping track of elements in vector by displaying them
        cout << distance[i] << '\n';
    }
}
if(!distance.empty()){ // if distance vector is not empty
    smallest = distance[0];
    greatest = distance[0];
}

Другим распространенным методом является инициализация smallest и greatest значениями, представляющими соответственно + бесконечность и -infinity.Таким образом, после первой итерации цикла значение каждой переменной будет фактически distance[0].

#include <limits>

(...)

double smallest = std::numeric_limits<double>::max();
double greatest = std::numeric_limits<double>::min();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...