В чем ошибка: при вводе или выводе?

145
02 марта 2018, 17:23
#include <cstdlib>
#include <algorithm>
#include <string>
#include <set>
#include <iostream>
#include <cstdio>
using namespace std;
void show(set<string> M)
{
    printf("\n \t Матрица А:\n ");
    for (set<string>::iterator ss=M.begin();ss!=M.end();++ss)
        cout<<*ss<<endl;
}
int main()
{
    system("chcp 1251>nul");
    string fam;
    set<string> A;
    A.insert(fam);
    cout<<"\n"<<"\t"<< "Ваша фамилия 1 - ";
    cin>>fam;
    A.insert(fam);
    cout<<"\t"<< "Ваша фамилия 2 - ";
    cin>>fam;
    A.insert(fam);
    cout<<"\t"<< "Ваша фамилия 3 - ";
    cin>>fam;
    A.insert(fam);
    cout<<"\t"<< "Ваша фамилия 4 - ";
    cin>>fam;
    A.insert(fam);
    cout<<"\t"<< "Ваша фамилия 5 - ";
    cin>>fam;
    A.insert(fam);
    cout<<"\t"<< "Ваша фамилия 6 - ";
    cin>>fam;
    A.insert(fam);
    cout<<"\t"<< "Ваша фамилия 7 - ";
    cin>>fam;
    A.insert(fam);
    cout<<"\t"<< "Ваша фамилия 8 - ";
    cin>>fam;
    A.insert(fam);
    cout<<"\t"<< "Ваша фамилия 9 - ";
    cin>>fam;
    A.insert(fam);
    cout<<"\t"<< "Ваша фамилия 10 - ";
    cin>>fam;
    A.insert(fam);
    cout<<"\t"<< "Ваша фамилия 11 - ";
    cin>>fam;
    cout<<"\t";
    show(A);
    system("pause");
    return 0;
}

Почему при вводе 11 фамилий выводится только 10 фамилий?

Answer 1

А зачем вы сначала добавляете строку в множество, а только потом вводите ее? Понятно, что первая строка пустая, а последняя - потеряна...

Так что - ни при вводе, ни при выводе, а при обработке :)

Я бы делал так:

#include <string>
#include <set>
#include <iostream>
using namespace std;
void show(const set<string>& M)
{
    cout << "\n \t Матрица А:\n ";
    for(set<string>::iterator ss = M.begin(); ss != M.end(); ++ss)
        cout<<*ss<<endl;
}
int main()
{
    // system("chcp 1251>nul");
    set<string> A;
    for(int i = 1; i <= 11; ++i)
    {
        string fam;
        cout<<"\n\tВаша фамилия " << i << " - ";
        cin>>fam;
        A.insert(fam);
    }
    show(A);
    system("pause");
    return 0;
}

Но учтите, что set не допускает одинаковые значения, так что если введете одинаковые фамилии - из них выведена будет только одна.

READ ALSO
Зависимости из NuGet в CMake

Зависимости из NuGet в CMake

Есть win проект на c++, который нужно перенести на linuxПервым шагом было решено перейти с солюшенов студии на CMake

117
Ошибка &ldquo;исключение нарушения доступа&rdquo; в С++

Ошибка “исключение нарушения доступа” в С++

Есть консольная программа, которая записывает в файл в бинарном формате таблицу или считывает ее же из бинарного файлаДля того чтобы записать...

140
Что такое .inc файлы [требует правки]

Что такое .inc файлы [требует правки]

Зачем нужныinc файлы, и что в них записывают?

124
Передача файла на usb устройство

Передача файла на usb устройство

Каким образом в c++ можно организовать копирование файла с компьютера на usb устройство (телефон/флешка), подключенный через usb?

133