Неожиданный вывод при печати векторных элементов - PullRequest
0 голосов
/ 28 марта 2020

Я только начинаю работать с векторами, и я хотел создать вектор размером 3 с типом данных float и распечатать элементы. Вот что я сделал

#include<iostream>
#include<vector>

using namespace std;

int main() 
{ 
    int n;
    cin>>n;
    float ip;
    vector<float> v;
    for(int i=0;i<n;i++)
    {
        v.push_back(ip);
        cin>>ip;
    }

    for (auto i = v.begin(); i != v.end(); ++i) 
        cout << *i << " "; 
}

ИСПОЛНЕНИЕ 1-й вход - это размер вектора, следующие строки содержат данные

3
11,2
23,4
33,1

Ожидаемый результат

11,2 23,4 33,1

Что я на самом деле получаю

5.88233e-39 11,2 23,4
Я не понимаю, что это первое значение и как можно Я преодолеваю это, любая помощь приветствуется. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

когда вы просто пишете "float inp;" переменная inp имеет случайное значение, потому что она не инициализирована. затем вы добавляете это случайное значение к вашему вектору, и после этого вы читаете свой первый ввод. просто переключите строки внутри первой для l oop, и это должно работать.

0 голосов
/ 28 марта 2020

Число с e-34 означает, что это число настолько мало по величине, что по существу эквивалентно «0». Это часто происходит, когда вы выделяете структуру данных типа double, но не присваиваете ей значение. В вашей программе вы не присваиваете ip перед тем, как вставить его в свою структуру данных. Я предлагаю вам разобраться в логике c вашей программы в псевдокоде перед ее кодированием.

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