21

Re: Cтворення бази даних за допомогою черги через структуру

Я ж кажу, функція перевірки працює ідеально і я не бачу сенсу її змінювати.

22 Востаннє редагувалося koala (12.11.2020 11:55:08)

Re: Cтворення бази даних за допомогою черги через структуру

А якщо буде завдання знайти кількість працівників підприємств, що належать певному власнику - як шукатимете? Перетворюватимете при кожному пошуку? Це числа. Числа мають зберігатися як числа, бо з ними можна робити операції, як із числами.

Ну і atof якраз невдалий вибір, воно при помилці 0 повертає. Ви помилку з 0 не розрізните.

Подякували: leofun011

23

Re: Cтворення бази даних за допомогою черги через структуру

Я на даний момент не бачу сенсу продовжувати цю дводенну дискусію. Мою проблему ігнорять і я так бачу що всім байдуже. Дам пораду на майбутнє: якщо ви пане koala та інші не маєте найменшого бажання допомогти користувачу який звернувся на ваш форум за допомогою, то скажіть йому про це зразу, а не витрачайте свій а тим більше його час деремно. А зараз рекомендую заморозити цю тему (так само як ви робите це завжди). Всім дякую за допомогу.

24 Востаннє редагувалося koala (12.11.2020 12:15:36)

Re: Cтворення бази даних за допомогою черги через структуру

ЧОРТ.
Вибачте, будь ласка. Я вчора почав писати відповідь, але мене відволікли, і мені здавалося, що я її відправив.

void AddNew(Factory** last, Factory** first)
{    
    if (first = NULL) //це не порівняння, це присвоєння

Ви записуєте в first NULL, а далі все працює не так, як ви очікували. Якщо це для вас становить проблему, стиль магістра Йоди використовуйте:

if (NULL == first) //так точно = і == переплутати неможливо, буде помилка.

А взагалі краще спершу вводьте temp, а потім заносьте його в чергу. Менше повторень - менше помилок.

Подякували: Mirek70981

25

Re: Cтворення бази даних за допомогою черги через структуру

Так, це була елементарна помилка. Введення працює добре, але коли переходиш в пункт 1 мого меню(там функція Show) програма всеодно припиняє роботу(вилітає).

void Show(Factory* first)
{
    Factory* tmp = first->next;
    while (tmp != NULL)
    {        
        cout << "\n" << tmp->name;
        cout << "\n" << tmp->ownership;
        cout << "\n" << tmp->area;
        cout << "\n" << tmp->workers;
        tmp = tmp->next;        
    }
    _getch();
}

26 Востаннє редагувалося koala (12.11.2020 13:47:04)

Re: Cтворення бази даних за допомогою черги через структуру

У цьому коді єдина можлива проблема - first==nullptr, але ви це перевіряєте перед викликом (до речі, перенесли б перевірку до функції).
Проблема формується десь у іншому місці. Ну і ця функція не виводить first, лише починаючи з first->next, але це не має призводити до падіння.

Ага.
У вас є зв'язний список, у якому є елементи *first і *last. Для того, щоб це працювало, має виконуватися
(*first)->next->...->next == *last, я правильно розумію? Але AddNew цього не забезпечує. Він лише виставляє *last=temp, а попередній елемент на temp не спрямовує.

- (*last) = temp;
+ (*last)->next = temp;
+ (*last) = temp;

чи навіть

- (*last) = temp;
+ (*last) = (*last)->next = temp;
Подякували: leofun011