Loading...
Jovanna avatar Jovanna 186 Точки

С++Advanced,лекция2, Task1-MinBy - четене на втори ред от конзолен вход

Здравейте,

как от вектора values, който е "едномерен", и получен като return стойност от функцията:

std::vector<std::string> readWhitespaceSeparatedValuesLine() {
    std::vector<std::string> values;

 

вадим позиция [0][0],  която вярно е на втори ред, първи елемент от вход, за да swich-нем по нея?

int minCharacteristic = readWhitespaceSeparatedValuesLine()[0][0] - '0';

    switch (minCharacteristic)
    {
    case 1:

... ...

Поздрави!

Тагове:
0
C++ Programming
Jovanna avatar Jovanna 186 Точки

ето го кода за четене на вход:

std::vector<std::string> readWhitespaceSeparatedValuesLine() {
    std::vector<std::string> values;

    std::string line;
    std::getline(std::cin, line);

    std::istringstream lineIn(line);

    std::string value;
    while (lineIn >> value) {
        values.push_back(value);
    }

    return values;
}
 

Каква е логиката на:

readWhitespaceSeparatedValuesLine()[0][0] ;  ?

0
MartinPaunov avatar MartinPaunov 77 Точки

Здравей,

Предполагам става въпрос за този ред 

int minCharacteristic = readWhitespaceSeparatedValuesLine()[0][0] - '0';

Функцията връща вектор от стрингове, когато достъпим вектора с оператора [0] - вземаме стринга на нулева позиция.

Този стринг сам по себе си е съставен от последователност от символи - char.

С оператора [0] можем да вземем символът на индекс 0 от този стринг.

В този код се взема първият стринг във вектора и от този стринг се взема символът на индекс [0].

След това се изважа '0' което предполагам значи, че този символ ще е число между 0 и 9 и така вземаме тази стойност, а не аски стойността.

Edit: Погледнах условието на задачата това всъщност е вторият ред от входните данни, което значи, че във вектора ще има стринг например ("3"). когато се викне функцията с оператора [0] върху вектора се взема този стринг, но това е стринг все още и за да може да се вземе неговата стойност единият от начините е да се достъпи нулевият индекс, като char с аски стойност 51 от този символ се изважда символът '0' което е равно на 48 и числовият резултат е 3, но този път като целочислена стойност. Тъй като в задачата е ясно, че втория ред може да съдържа стойности от 1 до 3. Това е просто още един начин по който може да се прочете входа.

Позрави

2
23/09/2018 10:59:06
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.