1 Востаннє редагувалося pika1989 (27.08.2015 23:14:52)

Тема: Заповнення масиву рядків із пробілами між словами

Задача: дано два паралельних одновимірних масиви: масив назв товарів(string) та масив цін. Їх потрібно паралельно заповнити і відсортувати відповідно до цін: або за спаданням, або за зростанням.
Щоб ввести рядок із пробілами (тут Name -> mas1), використовую getline, але після першого ж введення все ламається і далі вже запитує лише ціну.

Ось код введення:

template <typename T1, typename T2>
void inputGoods(T1 mas1[], T2 mas2[], int size)
{
    for (int i = 0; i < size; i++)
    {
        cout << "\n\t---Goods " << i + 1 << "---\n";
        cout << "\nName: ";
        getline(cin,mas1[i]);
        cout << "\nPrice: ";
        cin >> mas2[i];
    }
}

І ось таке в результаті:

Прихований текст

http://i.imgur.com/sTe0ygX.png?1

Що не так? Як зробити правильно?

2

Re: Заповнення масиву рядків із пробілами між словами

Після

cin >> mas2[i];

в буфері лишається знак нового рядка. Прочитайте його, наприклад, через cin.ignore(INT_MAX);

Подякували: pika19891

3

Re: Заповнення масиву рядків із пробілами між словами

дякую, вийшло