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

Заполнение полей массива - C++

Восстановить пароль Регистрация
 
Jeese
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 13
30.07.2015, 13:21     Заполнение полей массива #1
Доброе время суток!
Не могу понять, в чем ошибка!
Мне нужно чтобы преподавателей можно было добавлять до тех пор, пока пользователь не захочет вернуться в меню. Т. е. после каждого заполнения Ф.И. и предмета выскакивал вопрос: Вернуться в меню или добавить еще одного?
Пока что не могу даже заполнить фамилию. В чем дело, подскажите, знатоки!

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
42
43
44
45
46
47
48
49
50
51
52
#include <cstdlib>
#include <iostream>
#include <stdio.h>
 
 
#define _NumTeacher 100                             // Кол-во преподавателей в БД
 
using namespace std;
 
struct Teach
{
  char *Surname;                                    // Фамилия преподавателя
  char *Name;                                       // Имя преподавателя
  char *Subject;                                    // Предмет
};
 
int menu();
void AddTeacher(int, Teach);
 
int main(int argc, char *argv[])
{
    Teach teacher[_NumTeacher];
    int variant = menu();
    int NumEnd=0;
    AddTeacher(NumEnd, teacher[_NumTeacher]);
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
int menu()
{
  int variant;
 
  system("cls");
  cout << "\tTeacher's Data Base\n\n";
  cout << "Choose an option\n"
       << "1. Add a teacher\n"
       << "2. Delete a teacher\n"
       << "3. Search a teacher\n"
       << "4. Change a teacher\n" << endl;
  cin >> variant;
  return variant;
};
 
void AddTeacher(int NumEnd, Teach teacher[_NumTeacher])
{
    char *Surname, *Name, *Subject;
    cout << "Insert teacher's surname: ";
    cin  >> teacher[_NumTeacher].Surname;
    NumEnd++;
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ture
 Аватар для ture
404 / 297 / 120
Регистрация: 27.11.2014
Сообщений: 1,004
30.07.2015, 16:59     Заполнение полей массива #2
Jeese, я не раз слышал, не помню уже от кого, что указатели надо инициализировать.
Jeese
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 13
30.07.2015, 18:23  [ТС]     Заполнение полей массива #3
Прости, не понял. Можешь по другому выразиться?
Renji
1532 / 980 / 238
Регистрация: 05.06.2014
Сообщений: 2,948
31.07.2015, 07:18     Заполнение полей массива #4
char *Surname это не строка, а указатель на строку. Причем, по умолчанию указывает к черту на рога. В C++ правильно писать string Surname. Ну а если писать не правильно, а как ваш преподаватель Си учит (да, он преподает Си без плюсов), то либо char Surname[сколько не жалко], либо char*Surname=new char[сколько не жалко]. При этом размер строки будет ограничен этим "сколько не жалко". А операции сравнения типа str1<str2 будут работать весьма неожиданным образом.
Yandex
Объявления
31.07.2015, 07:18     Заполнение полей массива
Ответ Создать тему
Опции темы

Текущее время: 22:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru