Re: Cтворення бази даних за допомогою черги через структуру
Я ж кажу, функція перевірки працює ідеально і я не бачу сенсу її змінювати.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Cтворення бази даних за допомогою черги через структуру
Для відправлення відповіді ви повинні увійти або зареєструватися
Я ж кажу, функція перевірки працює ідеально і я не бачу сенсу її змінювати.
А якщо буде завдання знайти кількість працівників підприємств, що належать певному власнику - як шукатимете? Перетворюватимете при кожному пошуку? Це числа. Числа мають зберігатися як числа, бо з ними можна робити операції, як із числами.
Ну і atof якраз невдалий вибір, воно при помилці 0 повертає. Ви помилку з 0 не розрізните.
Я на даний момент не бачу сенсу продовжувати цю дводенну дискусію. Мою проблему ігнорять і я так бачу що всім байдуже. Дам пораду на майбутнє: якщо ви пане koala та інші не маєте найменшого бажання допомогти користувачу який звернувся на ваш форум за допомогою, то скажіть йому про це зразу, а не витрачайте свій а тим більше його час деремно. А зараз рекомендую заморозити цю тему (так само як ви робите це завжди). Всім дякую за допомогу.
ЧОРТ.
Вибачте, будь ласка. Я вчора почав писати відповідь, але мене відволікли, і мені здавалося, що я її відправив.
void AddNew(Factory** last, Factory** first)
{
if (first = NULL) //це не порівняння, це присвоєння
Ви записуєте в first NULL, а далі все працює не так, як ви очікували. Якщо це для вас становить проблему, стиль магістра Йоди використовуйте:
if (NULL == first) //так точно = і == переплутати неможливо, буде помилка.
А взагалі краще спершу вводьте temp, а потім заносьте його в чергу. Менше повторень - менше помилок.
Так, це була елементарна помилка. Введення працює добре, але коли переходиш в пункт 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();
}
У цьому коді єдина можлива проблема - 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;
Для відправлення відповіді ви повинні увійти або зареєструватися