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

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

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

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

08.06.2010, 20:58. Просмотров 370. Ответов 1
Метки нет (Все метки)

У меня ввод данных в массив не происходит, только вот не пойму почему, может быть кто-нибудь подскажет, в чем кроется ошибка? Я не успеваю ввести данные в массив, как у меня появляется:
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.
Функция запрашивает и сохраняет данные о студентах. Ввод прекращается либо после наполнения массива, либо при вводе пустой строки вместо имени студента.
Функция возвращает дейсв. кол-во элементов.

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
#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;
            }


или так:

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
#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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2010, 20:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Где кроется ошибка при заполнении массива структур? (C++):

ошибка при заполнении массива - C++
хочу заполнить массивы класса (и сразу же записать в файл), если выбрать количество записей - 1, то все работает нормально, но больше...

Ошибка при заполнении массива - C++
Объявляю и пытаюсь заполнить так: TArray__1&lt;System::Byte&gt; *buffer; buffer = new TArray__1 &lt;System::Byte&gt; (6); buffer='r'; ...

Ошибка при заполнении массива - C++
Помогите пожалуйста решить проблему: Это программа для игры в крестики нолики. В первой функции void instruction() необходимо вывести...

Ошибка при заполнении динамического массива - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int N, i, a, l; int head = -1; char ch; int *s = new int ; ...

Ошибка исполнения при заполнении массива - C++
Программа работы с квадратными матрицами. Используются динамические массивы. Задание из вуза. Использование функций запрещено по...

Ошибка при заполнении массива малыми числами - C++
Привет всем! В программе необходимо использовать массив с малыми числами, порядка 1.47243e-331. Элементы массива описаны как &quot;long...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
вандал
126 / 126 / 1
Регистрация: 20.11.2009
Сообщений: 498
08.06.2010, 22:58 #2
у тебя просто массив задан fullname[SLEN] как char поэтому вводи 1 символ и нажимай энтер а если хочешь чтобы слово хранилось то тогда либо ставь типа string либо создавай цикл считывания с экрана и запись

Добавлено через 6 минут
вот версия со стрингом может подойдет.
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
#include <iostream>
using namespace std;
const int SLEN = 30;
struct student {
        string fullname;
        string hobby;
        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 << ": " << endl;
                
                cin >> pa[i].fullname;            
                cout << "Enter hobby #" << i + 1 << ": " << endl;
                cin >> pa[i].hobby;               
                cout << "Enter ooplevel #" << i + 1 << ": " << endl;
                (cin >> pa[i].ooplevel).get();          
                //if (cin >> pa[i].fullname[SLEN] == " ")
                //                break;
                }
                return i;
                        }
Добавлено через 40 секунд
у тебя просто массив задан fullname[SLEN] как char поэтому вводи 1 символ и нажимай энтер а если хочешь чтобы слово хранилось то тогда либо ставь типа string либо создавай цикл считывания с экрана и запись
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2010, 22:58
Привет! Вот еще темы с ответами:

Массивы структур (при обращении к элементу массива выскакивает ошибка) - C++
#include &lt;iostream&gt; using namespace std; class Lancuch { public: char cos; Lancuch * nastepny; }; Lancuch *...

Ошибка (access violation) при обращении к элементу динамического массива структур - C++
Добрый день! Все прекрасно работает если в структуре статические массивы. Но так уж получилось, что есть необходимость задавать размерность...

Ошибка при заполнении - C++
Помогите определить где ошибка, так как какое число я не ввожу выводится в конце именно оно. Как мне кажется я ошибаюсь при заполнении...

Ошибка при заполнении матрицы - C++
доброго времени суток! Будьте добры помогите! Вот код: T_complex** calc_Fullfield(T_complex *fr, double fr_begin, double fr_end,...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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