Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2022, 20:26   #1
Huseyn AX
Пользователь
 
Регистрация: 14.11.2021
Сообщений: 43
По умолчанию Прекращения ввода в функции C++

Код:
#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);
void display1(student st);
void display2(const student *ps);
void display3(const student [], int n);

int main()
{
    cout << "Enter class size: ";
    int class_size;
    cin >> class_size;
    while(cin.get() != '\n'){
        continue;
    }
    student *ptr_stu = new student[class_size];
    int entered = getinfo(ptr_stu, class_size);
    for (int i = 0; i < entered; i++)
    {
        display1(ptr_stu[i]);
        display2(&ptr_stu[i]);
    }
    display3(ptr_stu, entered);
    delete [] ptr_stu;
    cout << "Done\n";
    return 0;
}
int getinfo(student pa[], int n)
{
    int sum = 0;
    for(int i = 0; i < n; i++)
    {
        cout << "Enter your name: ";
        cin.getline(pa->fullname, 30);
        cout << "Enter your hobby: ";
        cin.getline(pa->hobby, 30);
        cout << "Enter your ooplevel: ";
        cin >> pa->ooplevel;
        cin.get();
        sum++;
    }
    return sum;
}
void display1(student st)
{
    cout << "Name: " << st.fullname << endl;
    cout << "Hobby: " << st.hobby << endl;
    cout << "Ooplevel: " << st.ooplevel << endl;
}
void display2(const student *ps)
{
    cout << "Name: " << ps->fullname << endl;
    cout << "Hobby: " << ps->hobby << endl;
    cout << "Ooplevel: " << ps->ooplevel << endl;
}
void display3(const student pa[], int n)
{
    for(int i = 0; i < n; i++)
    {
        cout << "Name: " << pa[i].fullname << endl;
        cout << "Hobby: " << pa[i].hobby << endl;
        cout << "Ooplevel: " << pa[i].ooplevel << endl;
    }
}
Здраствуйте я написал этот код для того чтобы она просила ввод через функцию и показала структуры через функции с другими способами показа(из книги упражнения) ну вот проблема в том что я пишу до определенной части и потом ввод сразу прекращается и я не могу полностью написать значения в массив структур и потом показывает содержимое а в содержимом непонятные строки по типу локация файла, вот и все я проверял код 5 раз все вроде бы норм, заранее спасибо за вашу помощь, и извините если есть какие тупые ошибки в коде(
Huseyn AX вне форума Ответить с цитированием
Старый 02.07.2022, 21:46   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

А так?
Код:
        cout << "Enter your name: ";
        cin.getline(pa[i].fullname, 30);
        cout << "Enter your hobby: ";
        cin.getline(pa[i].hobby, 30);
        cout << "Enter your ooplevel: ";
        cin >> pa[i].ooplevel;
А в чем смысл считать sum, если возможности считать менее n элементов все равно нет?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация ввода функции через TextBox Dasha98 C# (си шарп) 0 28.04.2017 19:48
Си++ Функции ввода-вывода с консоли Karina* Помощь студентам 0 27.04.2012 18:38
Функции ввода для консольных устройств atenon Общие вопросы C/C++ 1 02.02.2012 20:25
Есть ли альтернатива функции ввода scanf()? arcer Общие вопросы C/C++ 4 24.08.2010 22:29