С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 3
Регистрация: 15.08.2016
Сообщений: 97

Траблы с указателями

21.04.2017, 23:45. Показов 452. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу рукописную, динамическую очередь в которой храняться структурные переменные.

У меня есть структура:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct Enterprisiz
{
    char secondName[20];
    char firstName[20];
    char therdName[20];
    int earOfBirthday;
    char gender[20];
    char sityOfBirthday[20];
    char workPothison[20];
    int selary;
    Enterprisiz *adr, *previousPointer;
    Enterprisiz() {
        adr = NULL;
        previousPointer = NULL;
    }
 
};
 
Enterprisiz *first, *top, *nextPointer;

Я заполняю ее поля и помещаю в очередь.

Мне нужно организовать функцию для корректировки данных. Т.е. Пользователь вводит порядковый номер структурной переменной и поле данной структ. пер. которое хочет изменить.

Функция которая ищет нужный адрес структурной переменной вот:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Enterprisiz* searchElementOfQueue(Enterprisiz *nextPointer, int number) {
 
 
    int siz = -1;
    
    nextPointer = first;
 
    do {
 
        if (nextPointer->adr == NULL) break;
        nextPointer = nextPointer->adr;
        siz++;
    } while (siz!=number);
 
 
    return nextPointer;
}
функция которая отвечает за корректировку полей по данному адресу вот:


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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
void correctOfData(Enterprisiz* nextPointer) {
 
    
    int number;
    char fild[20];
    char yesNo;
 
 
    do {
 
        do {
            cout << "Enter number of people of which you want changing whis interval 0 to " << sizeQueue(nextPointer) << " ->";
            cin >> number;
            cout << endl << endl;
            if ((number > sizeQueue(nextPointer)) || (number < 0))system("cls");
        } while ((number > sizeQueue(nextPointer)) || (number < 0));
 
        system("cls");
 
        nextPointer = searchElementOfQueue(nextPointer ,number);
 
        do {
            cout << "Number of people of which you want changingwhis interval 0 to " << sizeQueue(nextPointer) << " -> " << number << endl;
            cout << endl << endl;
            cout << "Enter name of struct field of which you want correkt-> ";
            cin >> fild;
            cout << endl << endl;
 
 
 
 
 
            if (!strcmp(fild, "secondName")) {
                cout << "second NAME-> ";
                cin >> nextPointer->secondName;
            }
 
            if (!strcmp(fild, "firstName")) {
                cout << "first NAME-> ";
                cin >> nextPointer->firstName;
            }
 
            if (!strcmp(fild, "therdName")) {
                cout << "therd NAME-> ";
                cin >> nextPointer->therdName;
            }
 
            if (!strcmp(fild, "earOfBirthday")) {
                cout << "ear of Birthday-> ";
                cin >> nextPointer->earOfBirthday;
            }
 
            if (!strcmp(fild, "gender")) {
                cout << "gender-> ";
                cin >> nextPointer->gender;
            }
 
            if (!strcmp(fild, "sityOfBirthday")) {
                cout << "sity of Birthday-> ";
                cin >> nextPointer->sityOfBirthday;
            }
 
            if (!strcmp(fild, "workPothison")) {
                cout << "work Pothison-> ";
                cin >> nextPointer->workPothison;
            }
 
            if (!strcmp(fild, "selary")) {
                cout << "selary-> ";
                cin >> nextPointer->selary;
            }
 
            cout << "If you end correct FILD of " << number << " people list pres -y- if you want changing somthing else in this list press -n- -> ";
            cin >> yesNo;
 
            if (yesNo == 'y') {
                system("cls");
                break;
            }
 
        } while (1);
 
        cout << "If you end correct STRUCT pres -y- if you want changing some STRUCT press -n- -> ";
        cin >> yesNo;
 
        if (yesNo == 'y') {
            system("cls");
            break;
        }
    } while (1);
}
Когда я изменяю по одной структурной переменой за 1 вызов данной функции и вывожу ее на экран, она выводится мне измененная. Когда я следующий раз вызываю функцию по изменению структурной переменной и изменяю уже другую структ перм, и вывожу ее на экран- она тоже показывается в измененном виде.

А проблема вот в чем. Как вы видите, функция по изменению полей структ перм предлогает за 1 вызов функции изменять сколько хотите (сколько есть) структ переменных. Так вот, когда я изменяю вызвав 1 раз эту функцию несколько полей в одной структ перм, а потом в другой то у меня, при выводе на дисплей (если мы рассматриваем 2 структ перм) 1 структ перм выводиться так же, без изменений (хоть я ее изменял), а во второй видны все изменения которые я сделал (которые предназначались для 1 и 2 структ перм).

Возможно я заблудился в 3х соснах, взгляд замылен. Нужно мнение со стороны.

Добавлено через 1 час 31 минуту
Ремарка, указатель всегда указывает на посл элемент

Добавлено через 11 минут
Вопрос снят. Проблема решена. Нужен было немного отвлечься от кода и позаниматься чем то другим просто
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.04.2017, 23:45
Ответы с готовыми решениями:

Траблы с кодировками
Задание звучит так: из заданной строчки вывести слова, в которых нет повторных букв struct IsGoodString : public...

траблы с fstream
Всем привет! Начинаю работать над дз по проге и никак не могу разобраться с одной фишкой с fstream. Вот мои код: #include...

Траблы с массивом
Помогите решить: Дан массив вещественных чисел X=(x1,x2,..,xn). Записать элементы заданного массива Х в массив Y следующим образом: в...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2017, 23:45
Помогаю со студенческими работами здесь

Небольшие траблы
Решите, пожалуйста, люди добрые, два небольших тестика. ☺

Траблы с cin.get
Народ, почему в условии в cin.get (!'\n') выдаёт ошибку while (!(cin &gt;&gt; v)|| cin.get(!'\n')) //проверка на ввод чисел { ...

Траблы с зацикливанием в while
народ, помогите на цикле while идет зацикливание #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #define NMAX 10...

C++ траблы с вводом
Как бы так описать проблемку... Как можно сделать ввод с клавиатуры от 0 до 5 цифр? Важно что число заранее не известно, т.е. может и...

траблы с сортировкой
вот собственно задание первые два я сделал, а третье чет с косяком =\ в одномерном массиве, состоящем из n вещественных элементов,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru