Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Стоян
3 / 3 / 0
Регистрация: 29.09.2012
Сообщений: 15
#1

Заполнение строк в структурах - C++

10.11.2012, 23:11. Просмотров 516. Ответов 2
Метки нет (Все метки)

При выполнении программы: для первого элемента массива stud1 структуры student всё проходит нормально, все последующие итерации пропускают элемент структуры name. Предполагаю, что где-то хватается конец строки, не могу понять где... 23 строка, возможно что-то там, но никак не разберусь!

Скриншоты выполнения

Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
                            // подключаем необходимые библиотеки
#include <iostream>         // библиотека "ввода-вывода"
#include <windows.h>        // библиотека для включения русского языка
 
using namespace std;        // указываем используемое пространство имен
 
struct student              // объявляем структуру с тремя элементами
{
    char name [30];     // элемент 1: строка на 256 символов
    char group [10];        // элемент 2: строка на 10 символов
    int ses [5];            // элемент 3: массив из 5 элементов
};
 
int main ()
{
    student stud1[3];           // объявляем элемент с типом данных созданной структуры
    SetConsoleCP(1251);         // подключаем русский язык в консоли
    SetConsoleOutputCP(1251);   // подключаем русский язык для вывода в консоли
    for (int i=0; i<3; i++)
    {
        cout << "Введите данные студента № " << i+1 << endl;
        cout << "Введите фамилию и инициалы студента: ";        // приглашение ввести имя и инициалы студента
        cin.getline(stud1[i].name, 30);                     // ввод данных в строку name структуры student, массив stud1
        cout << "Введите номер группы: ";                       // приглашение ввести номер группы
        cin.getline(stud1[i].group, 10);                        //  ввод данных в строку group структуры student, массив stud1
        cout << "Введите успешность студента, 5 оценок по предметам: " << endl;     // приглашение ввести успешность
        for (int j=0; j<5; j++)     // цикл для заполнения массива ses структура student, массив stud1
            cin >> stud1[i].ses[j]; // заполняем массив ses
    }
    for (int i=0; i<3; i++)
    {
        cout << "\n\nДанные студента №" << i+1 << endl;         // вывод сообщения на экран
        cout << "ФИО: " << stud1[i].name << endl;       // вывод ФИО студента  из строки name структуры student, массив stud1
        cout << "Группа: " << stud1[i].group << endl;   // вывод группы студента  из строки group структуры student, массив stud1
        cout << "Успешность: ";                         // вывод успешности студента
        for (int j=0; j<5; j++)                         // через цикл
            cout << stud1[i].ses[j] << " ";             // выводиться массив ses структуры student, массив stud1
    }
    cout << endl;                                   // вывод конца строки
    return 0;                                       // в случае успешного выполнения программы функция возврашает 0
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2012, 23:11     Заполнение строк в структурах
Посмотрите здесь:

Указатели в структурах C++
C++ Заполнение лидирующими нолями при неравном размере строк
C++ Не получается заполнение двумерного массива случайными числами с указанием количества строк и столбцов.
C++ Константы в структурах
Заполнение списка с возможностью перестановки его строк C++
Операция new в структурах C++
C++ Строки в структурах
Рекурсия в структурах C++
Функции в структурах C++
Условие в структурах C++
C++ Указатели в структурах
C++ Заполнение строк структуры помеченные буквами A, B, C и D

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
10.11.2012, 23:24     Заполнение строк в структурах #2
Возможно ли, что на момент прохождения строчки 23 в потоке cin всё ещё лежит Enter, нажатый после предыдущего ввода?
Стоян
3 / 3 / 0
Регистрация: 29.09.2012
Сообщений: 15
10.11.2012, 23:32  [ТС]     Заполнение строк в структурах #3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Возможно ли, что на момент прохождения строчки 23 в потоке cin всё ещё лежит Enter, нажатый после предыдущего ввода?
СПАСИБО! СПАСИБО ОГРОМНОЕ! Как же я вам благодарен, на такой "элементарщине" запоролся, даже самому не вериться.
Проблему решил добавлением cin.get() в конце цикла ввода, который забрал ввод лишнего конца строки из потока на себя.
Yandex
Объявления
10.11.2012, 23:32     Заполнение строк в структурах
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru