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

Работа со структурами и подструктурами, ввод строки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Преобразование температуры http://www.cyberforum.ru/cpp-beginners/thread1707799.html
У меня такая проблема написал я программу преобразования температуры из Цельсия в Фаренгейт А ВОТ написать так чтоб программа выполняла обратное вычисление не получилось т.е. чтоб прога требовала от пользователя ввести теперь уже кол-во фаренгейта.(одновременно) Вот прога. #include <iostream> #include <cmath> using namespace std; int main () { setlocale(LC_ALL, "Russian"); double C,F;...
C++ Ищу нормальную формулу для полета пули (прямо с одинаковой скоростью в указанном направлении) в игре перс стреляет пулями в сторону курсора у меня есть координаты курсора во время нажатия пкм float cx, cy; положение персонажа во время стрельбы float px, py; игровое время float time; x и y - положение пули пуля летит по вот такой уродской формуле: double distance = sqrt((сx - x)*(сx - x) + (сy - y)*(сy - y)); http://www.cyberforum.ru/cpp-beginners/thread1707795.html
C++ Ошибки с Regex
Доброго времени суток. Понадобилось немного поработать с регулярными выражениями, но почему-то в boost и стандартной TR1 возникают проблемы. Ни одна из элементарных программ, которые даны в примерах, не компилируются, и вылетает целая куча всяких ошибок. Пишу в Code Blocks c mingw. Boost компилил так: менял строчку в bootstrap.bat set toolset=msvc на set toolset=gcc. Потом собирал bootstrap.bat...
C++ Определить количество простых чисел
Простым называется число, которое имеет только два делителя – само число и единицу. Дано натуральное число n и последовательность натуральных чисел a1, a2, ..., an. Определить количество простых чисел – членов заданной последо - довності
C++ Построение кривой Безье на C или С++ http://www.cyberforum.ru/cpp-beginners/thread1707780.html
построение кривой безье произвольного порядка (исходные данные вводятся с клавиатуры)
C++ Связной список Помогите разобраться. Почему не получается использовать связной список где не используются указатели в качестве объекта для ввода данных(конкретнее в комментариях). 28 строка не присваивает значение указателя в указатель . . . . class list { public: int st; list* next; }; подробнее

Показать сообщение отдельно
Odinochka
0 / 0 / 0
Регистрация: 01.02.2016
Сообщений: 20
10.04.2016, 12:26     Работа со структурами и подструктурами, ввод строки
Здравствуйте, уважаемые форумчане.
Мне нужно добавить запись о кафедре в структуру, а если такая существует, то только об одном преподавателе. Добавление кафедры работает, а с преподавателем проблемы.
Поясню код, с 24 по 29 строчки я пытаюсь увеличить количество элементов массива объектов Sostav на 1 (для записи о преподавателе), путем его переопределения и записывания старых значений (массив а), на эти действия компилятор не ругается, но на 31 строчке вылетает исключение из файла iosfwd:
"Вызвано исключение: нарушение доступа для записи.
_Left было 0x730079."
А если ее убрать (31 строчку) и оставить только ввод переменных 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
struct Prepod
{
    string fio;
    int lek;
    int lab;
};
 
struct Kafedra
{
    string namekaf;
    string ayd;
    int kol;
    Prepod *Sostav;     // массив объектов структуры Prepod
};
 
int dobav(Kafedra info[], int N){  // функция добавления записи
    int ch = 0;
    string kaf1;
    cout << "Название кафедры: ";
    getline(cin, kaf1);
    for (int i = 0; i < N; i++)
        if (kaf1 == info[i].namekaf)
        {
            Prepod *a = new Prepod[info[i].kol]; //
            a = info[i].Sostav;
            delete[] info[i].Sostav;
            info[i].Sostav = new Prepod[info[i].kol + 1];
            info[i].Sostav = a;
            delete[] a;
            cout << "ФИО: ";
            getline(cin, info[i].Sostav[info[i].kol + 1].fio);   // та самая строчка
            cout << "Количество часов проводимых лекций: ";
            cin >> info[i].Sostav[info[i].kol + 1].lek;
            cout << "Количество часов проводимых лабораторных занятий: ";
            cin >> info[i].Sostav[info[i].kol + 1].lab;
            ch++;
            info[i].kol++;
        }
    if (ch == 0) {
        info[N].namekaf = kaf1;
        cout << "Номер аудитории: ";
        getline(cin, info[N].ayd);
        cout << "Количество преподавателей: ";
        cin >> info[N].kol;
        info[N].Sostav = new Prepod[info[N].kol];
        for (int i = 0; i < info[N].kol; i++) {
            cin.ignore();
            cout << "ФИО: ";
            getline(cin, info[N].Sostav[i].fio);
            cout << "Количество часов проводимых лекций: ";
            cin >> info[N].Sostav[i].lek;
            cout << "Количество часов проводимых лабораторных занятий: ";
            cin >> info[N].Sostav[i].lab;
        }
        N++;
    }
    return N;
}
 
int main()
{
        //.....
    Kafedra info[15];
        //.....
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru