1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Где кроется ошибка при заполнении массива структур?

Тема в разделе "Вопросы новичков и не только", создана пользователем salvia, 9 июн 2010.

Статус темы:
Закрыта.
  1. salvia

    salvia Гость

    Репутация:
    0
    У меня ввод данных в массив не происходит, только вот не пойму почему, может быть кто-нибудь подскажет, в чем кроется ошибка? Я не успеваю ввести данные в массив, как у меня появляется:
    Enter hobby #1: Enter ooplevel #1: Enter fullname #2 Enter hobby #2: Enter ooplevel #2: Enter fullname #3 Enter hobby #3: Enter ooplevel #3:

    Функция getinfo принимает 2 аргумента: указатель на первый элемент массива структур student и кол-во элементов в массиве int.
    Функция запрашивает и сохраняет данные о студентах. Ввод прекращается либо после наполнения массива, либо при вводе пустой строки вместо имени студента.
    Функция возвращает дейсв. кол-во элементов.

    #
    Код:
    include <iostream>
    using namespace std;
    const int SLEN = 30;
    struct student {
    char fullname[SLEN];
    char hobby[SLEN];
    int ooplevel;
    };
    
    int getinfo(student pa[], int n);
    
    int main()
    {
    student ps[3]; 
    int number = getinfo(ps, 3);
    cout << "Number enter: " << number << endl;
    return 0;
    }
    
    int getinfo(student pa[], int n)
    {
    int i;
    for (i=0; i < n; i++)
    {
    cout << "Enter fullname #" << i + 1 << ": ";
    cin >> pa[i].fullname[SLEN];			
    cout << "Enter hobby #" << i + 1 << ": ";
    cin >> pa[i].hobby[SLEN];			  
    cout << "Enter ooplevel #" << i + 1 << ": ";
    (cin >> pa[i].ooplevel).get();		 
    if (cin >> pa[i].fullname[SLEN] == " ")
    break;
    }
    return i;
    }
    или так:

    Код:
    #include <iostream>
    using namespace std;
    const int SLEN = 30;
    struct student
    {
    char fullname[SLEN];
    char hobby[SLEN];
    int ooplevel;
    };
    
    int getinfo(student pa[], int n); 
    
    int main()
    {
    student ps[3]; 
    int number = getinfo(ps, 3);
    cout << "Number enter: " << number << endl;
    return 0;
    }
    
    int getinfo(student pa[], int n)
    {
    int i;
    for (i=0; i < n; i++)
    {
    cout << "Enter #" << i + 1 << ": ";
    while (cin >> pa[i].fullname[SLEN] >> pa[i].hobby[SLEN] && (cin >> pa[i].ooplevel).get() )
    {
    if (cin >> pa[i].fullname[SLEN] == " ")
    break;		 
    }	  
    }
    return i;
    }
     
  2. salvia

    salvia Гость

    Репутация:
    0
    Спасибо, rrrFer!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей