Как мне распечатать весь вектор? - PullRequest
1 голос
/ 02 февраля 2020

Я хочу, чтобы все элементы в векторе "listofnums" печатались. Я попытался поместить "cout << listofnums [i]" в for l oop, думая, что он напечатает каждый элемент, когда он повторяется, и это не сработало. Поставить кут за пределы l oop мне тоже не помогло. </p>

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

int main(){
    //variables
    int a, b, i = 0; // a & b inputs, i for iterating
    int likedigits = 0; //counts the number of like digits


    //entering number range
    cout << "Enter the first number" << endl;
    cin >> a;
    cout << "Enter the second number" << endl;
    cin >> b;


    //making a vector to contain numbers between a and b
    vector<int> listofnums((b-a)+1); 
    for (i <= (b-a); i++;) {  
        int initialvalue = a;
        listofnums[i] = initialvalue;                                 
        initialvalue++;                                               
    }


    cout << listofnums << endl;
    return 0;
}

Ответы [ 2 ]

3 голосов
/ 02 февраля 2020

Для начала оператор for

 for (i <= (b-a); i++;) {  

написан неправильно. Вы имеете в виду

 for ( ;i <= (b-a); i++) {  

В этом (обновленном) для l oop

 for ( ;i <= (b-a); i++) {  
    int initialvalue = a;
    listofnums[i] = initialvalue;                                 
    initialvalue++;                                               
}

все элементы вектора имеют значение a, поскольку переменная initialvalue определяется в каждой итерации , Поместите объявление переменной вне, l oop.

   int initialvalue = a;
   for (i <= (b-a); i++;) {  
        listofnums[i] = initialvalue;                                 
        initialvalue++;                                               
    }

. Для вывода вектора вы можете использовать, например, основанный на диапазоне для l oop

for ( const auto &item : listofnums )
{
    std::cout << item << ' ';
}
std::cout << '\n';

Вот демонстрационная программа.

#include <iostream>
#include <tuple>
#include <vector>
#include <algorithm>

int main()
{
    int a = 0, b = 0; 

    std::cout << "Enter the first number: ";
    std::cin >> a;
    std::cout << "Enter the second number: ";
    std::cin >> b;

    std::tie( a, b ) = std::minmax( { a, b } );

    std::vector<int> listofnums( b - a + 1 ); 

    int initialvalue = a;

    for ( auto &item : listofnums ) item = initialvalue++;

    for ( const auto &item : listofnums )
    {
        std::cout << item << ' ';
    }
    std::cout << '\n';

    return 0;
}

Вывод может выглядеть следующим образом

Enter the first number: 10
Enter the second number: 5
5 6 7 8 9 10 
1 голос
/ 02 февраля 2020

Теперь работает - с советом Влада из Москвы и изменением первого на l oop на некоторое время l oop:

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

int main(){
    //variables
    int a, b, i = 0; // a & b inputs, i for iterating

    //entering number range
    cout << "Enter the first number" << endl;
    cin >> a;
    cout << "Enter the second number" << endl;
    cin >> b;


    //making a vector to contain numbers between a and b
    vector<int> listofnums((b-a)+1); 
    int initialvalue = a;
    while (i <= (b-a)) {  
        listofnums[i] = initialvalue;                                 
        initialvalue++; 
        i++;
    }

    for ( const auto &item : listofnums ){
        std::cout << item << ' ';
    }

    std::cout << '\n';

    return 0;
}

...