Professional Documents
Culture Documents
#include <cstring>
using namespace std;
const char QUESTION[] = "You are succesfully entered the system!\n";
struct datauser
{
int passw, account;
char name[20];
};
int main()
{
struct datauser a[4];
a[0].passw = 1234;
a[1].passw = 34353;
a[2].passw = 6678;
a[3].passw = 99999;
strcpy_s(a[0].name, "Yegor");
strcpy_s(a[1].name, "Tom");
strcpy_s(a[2].name, "Mike");
strcpy_s(a[3].name, "Admin");
int i = 0, newpass;
char login[20];
cout << "Hello, enter your login: ";
while (i < 3)
{
cin >> login;
for (i = 0; i < 4; i++)
{
if (strcmp(login, a[i].name) == 0) {
newpass = check(login, a[i].passw);
a[i].passw = newpass;
}
else if (strcmp(login, logs[3]) == 0) {
newpass = check(login, exam[3]);
if (newpass == 0)
{
for (int j = 0; j < 4; j++)
cout << j + 1 << " - " << logs[j] << " " << exam[j] << "\n";
cout << "Enter the number:";
cin >> newpass;
for (int j = 0; j < 4; j++)
if (newpass == j + 1)
{
cout << "Enter the password that you want set as a new one:";
cin >> newpass;
exam[j] = newpass;
cout << "The new password was set succefully!\nThe end of the
session.\nEnter your login:";
}
}
}
else
{
i++;
if (i == 3) {
cout << "You have tried to many times.\nEnd of the program.";
return 0;
}
cout << "There is no account with such a login. Try again.\n";
}
}
return 0;
}
The old one:
#include <iostream>
using namespace std;
const char QUESTION[] = "You are succesfully entered the system!\n";
////c) Додайте у список декілька нових вузлів Умова додавання (+) у варіанті;
////g) Поділіть список на два, задавши номер вузла, з якого починається другий список.
////список містить інформацію про книги (назва, автор, кількість сторінок, рік випуску, стиль).
#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
#include <stdio.h>
#include <string.h>
#include <malloc.h>
struct book
{
char nazva[20]; char avtor[15]; long int dov; long int year; char type[15]; int
num;
struct book* next; // посилання на наступний вузол
};
char bookN[10][20] = { "Сяйво","Нічна зміна","Перевтілення","Катерина","Довга
прогулянка","Інститут","Шторм сторіччя ","Майстер і Маргарита","Крихітка
Цахес","Талісман" };
struct book* head, *last, *current, *element, *head2;
void MakeNode(void); // Створення списку
void Druk(void); // Друк елементів списку
void AddNode(void); // Додавання нового елемента у список після вузла
void DelNode(void); // Вдалення вузла
void DelMem(struct book*); // Функція видалення останнього елемента
void DrukSplit(int); // Функція розділення списку
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color F0");
printf("Створюємо список книжок \n");
printf("Для закінчення введення списку натиснути -1 \n");
head = NULL; /*початок списку*/
last = NULL; /*останній елемент*/
current = NULL; /*поточний елемент*/
head2 = NULL;//при розділені списку напіл - буде виконувтаи роль першого елементу
для другої частини списку
MakeNode();
printf("Створений список \n");
Druk();
AddNode();
printf("Список після додавання вузлів: \n");
Druk();
DelNode();
printf("Список після видалення вузлів: \n");
Druk();
int num;
printf("Введіть на якому вузлі потрібно розділити список \n");
scanf("%d", &num);
printf("Список після розділення: \n");
DrukSplit(num);
return 0;
}
/* видалення вузла*/
void DelNode()
{
int k = 0;
char name[15];
current = head;
printf("Введіть прізвище автора , дані про книги якого , треба видалити\n");
scanf("%s", name);
while (current != NULL)
{
if (strcmp(name, head->avtor) == 0)//голова списку
{
element = head;
head = element->next;
free(element);
k++;
break;
}
else if (strcmp(name, current->next->avtor) == 0)//пошук прізвища після
голови списку
{
element = current->next;
current->next = element->next;
free(element);
k++;
break;
}
current = current->next;
}
if (k == 0)
{
printf("Автор з таким прізвищем не існує.\n");
}
}
-1 -1 -1 -1
Булгаков
#include <iostream>
#include <cstring>
#include <Windows.h>
using namespace std;
struct datauser
{
char login[20]; char password[20];
int num;
struct datauser* next; // посилання на наступний вузол
};
struct datauser* head, *last, *current, *element;
void MakeNode(void); // Створення списку
void Druk(void); // Друк елементів списку
void AddNode(void); // Додавання нового елемента у список після вузла
void DelNode(void); // Вдалення вузла
void DelMem(struct datauser*); // Функція видалення останнього елемента
void setparam(int, int);
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char log[20], pass[20];
int i = 0, num;
cout << "Для почтаку потрібно занести необхідну інформацію для аккаунтів\nДля
закінчення введення списку натиснути -1 \n";
head = NULL; /*початок списку*/
last = NULL; /*останній елемент*/
current = NULL; /*поточний елемент*/
MakeNode();
Druk();
cout << "Успіх!База користувачів створена!\nПерезавантажуємо систему...";
Sleep(4000);
system("cls");
cout << "Вітаємо у системі!\nБудь ласка, введіть Ваш логін:\n";
while (i < 3)
{
cin >> log;
current = head;
int count = 0;
while (current != NULL)
{
for (int j = 3; -1 < j; j--)
{
if (strcmp(log, current->login) == 0)
{
count++;
cout << "Вітаємо у системі " << current->login << "!
Введіть Ваш пароль:"; ////////////////////////////проверить
арфографию//////////////////////////////////////////////
cin >> pass;
if (strcmp(pass, current->password) == 0)
{
if (strcmp(log, "Admin") == 0)
{
cout << "Ви успішно увійшли у аккаунт!Що
ви бажаєте зробити?\n";
while (1)
{
cout << "0 - Переглянути список
аккаунтів.\n1 - Додати аккаунт.\n2 - Видалити аккаунт.\n3 - Змінити дані будь-якого
аккаунта.\n4 - Закінчити сесію.\n";
cin >> num;
if (num == 0) Druk();
else if (num == 1)
{
AddNode();
cout << "Список
користувачів: \n";
Druk();
}
else if (num == 2)
{
DelNode();
cout << "Список
користувачів після видалення вузлів: \n";
Druk();
}
else if (num == 3) {
int numb = 0;
Druk();
cout << "Параметри якого
аккаунту Ви хочете змінити:" << endl;
cin >> numb;
cout << "Що Ви хочете
змінити?\n1 - Логін\n2- Пароль" << endl;
cin >> num;
setparam(num, numb);
}
else if (num == 4) {
cout << "Завершення сесії."
<< endl;
break;
}
}
}
else {
cout << "Ви успішно увійшли у
аккаунт!\nЩо Ви хочете змінити?\n1 - Логін\n2- Пароль" << endl;
cin >> num;
setparam(num, current->num);
break;
}
}
else {
cout << "Не правильний пароль!\nУ Вас залишилось
" << j << " спроб.\n";////
if (j == 0)
{
cout << "Ви перевищили максимальну
кількість спроб.\nКінець сесії." << endl;
break;
}
}
}
}
current = current->next;
if (count == 0 && current == NULL)
{
i++;
if (i == 3) {
cout << "Ви перевищили максимальну кількість
спроб.\nКінець програми.";
return 0;
}
cout << "Немає аккаунту з таким ім'ям. Спробуйте знову.\n";
}
}
}
return 0;
}
/* видалення вузла*/
void DelNode()
{
int k = 0;
char name[15];
current = head;
cout << "Введіть логін, який потрібно видалити\n";
cin >> name;
while (current != NULL)
{
if (strcmp(name, head->login) == 0)//голова списку
{
element = head;
head = element->next;
free(element);
k++;
break;
}
else if (strcmp(name, current->next->login) == 0)//пошук прізвища після
голови списку
{
element = current->next;
current->next = element->next;
free(element);
k++;
break;
}
current = current->next;
}
if (k == 0)
{
cout << "Автор з таким прізвищем не існує.\n";
}
}
///* створення списку */
void MakeNode()
{
int k = 0;
while (1)
{
/*виділення пам’яті для нового елементу*/
if ((current = (struct datauser*)malloc(sizeof(struct datauser))) == NULL)
{
fprintf(stderr, "No free memory!\n");
exit(EXIT_FAILURE); /*помилка і завершення програми*/
}
else
{
cout << "Введіть логін і пароль для " << k+1 << " аккаунту:";
cin >> current->login >> current->password;
k++;
if (strcmp(current->login, "-1") == 0)
break;
current->next = NULL; /* формування вузла списку */
current->num = k; //Лічильник для подальшої ініціалізації списку
if (!(head))
head = current; /*якщо список пустий, новий елемент стає
початком*/
else
(last)->next = current; /*якщо не пустий, то останній елемент
вказує на новий*/
last = current; /*новий стає останнім*/
}
}
}
///* друк списку*/
void Druk(void)
{
current = head;
int k = 0;
while (current != NULL) /* поки не дійдемо до кінця списку */
{
current->num = k+1;
cout << current->login << "\t" << current->password << "\t" << current->num
<< endl;
k++;
current = current->next; //Перехід до наступного вузла
}
}
///* вивільнення пам’яті*/
void DelMem(struct datauser* lst)
{
if (lst)
{
if (lst->next)
DelMem(lst->next);/* рекурсивно звільняємо пам’ять */
free(lst);/*вивільняємо пам’ять голови списку*/
}
}
void AddNode()
{
struct datauser* addb = (struct datauser*)malloc(sizeof(struct datauser));
{
current = head;
cout << "Введіть данні нового аккаунту(Логін та пароль)>> ";
cin >> addb->login >> addb->password;
cout << "Введіть після якого вузла потрібно додати новий аккаунт(для
зручності)\n";
cin >> addb->num;
while (current != NULL)
{
if (addb->num == 0)
{
addb->next = head;
head = addb;
break;
}
if (current->num == addb->num)
{
element = current->next;
current->next = addb;
addb->next = element;
}
current = current->next;
}
}
}
void setparam(int num, int j)
{
current = head;
char log[20], pass[20];
while (current != NULL)
{
if (j == current->num) {
if (num == 1)
{
cout << "Введіть новий логін:";
cin >> log;
strcpy_s(current->login, log);
}
else
{
cout << "Введіть новий пароль:";
cin >> pass;
strcpy_s(current->password, pass);
}
}
current = current->next;
}
cout << "Зміни успішно запроваджені!" << endl;
}
SUCCESFUL VARIANT OF CODE:
#include <iostream>
#include <cstring>
#include <Windows.h>
using namespace std;
struct datauser
{
char login[20]; char password[20];
int num;
struct datauser* next; // посилання на наступний вузол
};
struct datauser* head, *last, *current, *element;
void MakeNode(void); // Створення списку
void Druk(void); // Друк елементів списку
void AddNode(void); // Додавання нового елемента у список після вузла
void DelNode(void); // Вдалення вузла
void DelMem(struct datauser*); // Функція видалення останнього елемента
void setparam(int);
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char log[20], pass[20];
int i = 0, num;
cout << "Для почтаку потрібно занести необхідну інформацію для аккаунтів\nДля
закінчення введення списку натиснути -1 \n";
head = NULL; /*початок списку*/
last = NULL; /*останній елемент*/
current = NULL; /*поточний елемент*/
MakeNode();
Druk();
cout << "Успіх!База користувачів створена!\nПерезавантажуємо систему...";
Sleep(400);
system("cls");
cout << "Вітаємо у системі!\nБудь ласка, введіть Ваш логін:\n";
while (i < 3)
{
cin >> log;
current = head;
int count = 0;
while (current != NULL)
{
for (int j = 3; -1 < j; j--)
{
if (strcmp(log, current->login) == 0)
{
count++;
i = 0;
cout << "Вітаємо у системі " << current->login << "!
Введіть Ваш пароль:";
cin >> pass;
if (strcmp(pass, current->password) == 0)
{
if (strcmp(current->login, "Admin") == 0)
{
cout << "Ви успішно увійшли у аккаунт!Що
ви бажаєте зробити?\n";
while (1)
{
cout << "Налаштування:\n0 -
Переглянути список аккаунтів.\n1 - Додати аккаунт.\n2 - Видалити аккаунт.\n3 - Змінити
дані будь-якого аккаунта.\n4 - Закінчити сесію.\n";
cin >> num;
if (num == 0) Druk();
else if (num == 1)
{
AddNode();
cout << "Список
користувачів: \n";
Druk();
}
else if (num == 2)
{
DelNode();
cout << "Список
користувачів після видалення вузлів: \n";
Druk();
}
else if (num == 3) {
int numb = 0;
Druk();
cout << "Параметри якого
аккаунту Ви хочете змінити:" << endl;
cin >> numb;
setparam(numb);
}
else if (num == 4) {
cout << "Завершення сесії."
<< endl;
break;
}
}
break;
}
else
{
cout << "Ви успішно увійшли у аккаунт!"<<
endl;
setparam(current->num);
break;
}
}
else {
cout << "Не правильний пароль!\nУ Вас залишилось
" << j << " спроби.\n";
if (j == 0)
{
cout << "Ви перевищили максимальну
кількість спроб.\nКінець сесії." << endl;
break;
}
}
}
}
if(current == NULL) break;
current = current->next;
}
if (count == 0)
{
i++;
if (i == 3) {
cout << "Ви перевищили максимальну кількість спроб.\nКінець
програми.";
return 0;
}
cout << "Немає аккаунту з таким ім'ям. Спробуйте знову.\n" << "Ви
використали " << i << " з 3 спроб." << endl;
}
}
return 0;
}
/* видалення вузла*/
void DelNode()
{
int k = 0;
char name[15];
current = head;
cout << "Введіть логін, який потрібно видалити\n";
cin >> name;
while (current != NULL)
{
if (strcmp(name, head->login) == 0)//голова списку
{
element = head;
head = element->next;
free(element);
k++;
break;
}
else if (strcmp(name, current->next->login) == 0)//пошук прізвища після
голови списку
{
element = current->next;
current->next = element->next;
free(element);
k++;
break;
}
current = current->next;
}
if (k == 0)
{
cout << "Автор з таким прізвищем не існує.\n";
}
}
......................................................................................................................................................
#include <iostream>
#include <cstring>
#include <Windows.h>
struct datauser
{
char login[20]; char password[20];
int num;
struct datauser* next; // посилання на наступний вузол
};
struct datauser* head, * last, * current, * element;
void MakeNode(void); // Створення списку
void Druk(void); // Друк елементів списку
void AddNode(void); // Додавання нового елемента у список після вузла
void DelNode(void); // Вдалення вузла
void DelMem(struct datauser*); // Функція видалення останнього елемента
void setparam(int);
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char log[20], pass[20];
int i = 0, num, j = 0, count = 0;
cout << "Для почтаку потрібно занести необхідну інформацію для аккаунтів\nДля
закінчення введення списку натиснути -1 \n";
head = NULL; /*початок списку*/
last = NULL; /*останній елемент*/
current = NULL; /*поточний елемент*/
MakeNode();
Druk();
cout << "Успіх!База користувачів створена!\nПерезавантажуємо систему...";
Sleep(4000);
system("cls");
while (1)
{
cout << "Ви хочете увійти у існуючий аккаунт або зареєструватися?\n1 -
Увійти\n2 - Зареєструватися\n3 - Завершити роботу системи\n";
cin >> j;
if (j == 2)
AddNode();
else if (j == 1)
{
cout << "Вітаємо у системі!\n";
i = 0;
while (i < 3)
{
cout << "Будь ласка, введіть Ваш логін : \n";
cin >> log;
current = head;
count = 0;
while (current != NULL)
{
for (int j = 3; -1 < j; j--)
{
if (_stricmp(log, current->login) == 0)
{
count++;
i = 0;
cout << "Вітаємо у системі " << current-
>login << "! Введіть Ваш пароль:";
cin >> pass;
if (_stricmp(pass, current->password) ==
0)
{
if (_stricmp(current->login,
"Admin") == 0)
{
cout << "Ви успішно увійшли
у аккаунт!Що ви бажаєте зробити?\n";
while (1)
{
cout <<
"Налаштування:\n0 - Переглянути список аккаунтів.\n1 - Додати аккаунт.\n2 - Видалити
аккаунт.\n3 - Змінити дані будь-якого аккаунта.\n4 - Закінчити сесію.\n";
cin >> num;
if (num == 0)
Druk();
else if (num == 1)
{
AddNode();
cout <<
"Список користувачів: \n";
Druk();
}
else if (num == 2)
{
DelNode();
cout <<
"Список користувачів після видалення вузлів: \n";
Druk();
}
else if (num == 3) {
int numb = 0;
cout <<
"Загальний список користувачів:\n";
Druk();
cout <<
"Параметри якого аккаунту Ви хочете змінити:" << endl;
cin >> numb;
setparam(numb);
}
else if (num == 4) {
cout <<
"Завершення сесії." << endl;
i = 3;
break;
}
}
break;
}
else
{
cout << "Ви успішно увійшли
у аккаунт!" << endl;
setparam(current->num);
i = 3;
break;
}
}
else {
cout << "Не правильний пароль!\nУ
Вас залишилось " << j << " спроби.\n";
if (j == 0)
{
cout << "Ви перевищили
максимальну кількість спроб.\nКінець сесії." << endl;
break;
}
}
}
}
if (current == NULL) break;
current = current->next;
}
if (count == 0)
{
i++;
if (i == 3) {
cout << "Ви перевищили максимальну кількість
спроб.\nКінець програми.";
return 0;
}
cout << "Немає аккаунту з таким ім'ям. Спробуйте
знову.\n" << "Ви використали " << i << " з 3 спроб." << endl;
}
}
}
else {
cout << "Завершення роботи системи.";
return 0;
}
}
return 0;
}
/* видалення вузла*/
void DelNode()
{
int k = 0;
char name[15];
current = head;
cout << "Введіть логін акаунту, який потрібно видалити\n";
cin >> name;
while (current != NULL)
{
if (_stricmp(name, head->login) == 0)//голова списку
{
element = head;
head = element->next;
free(element);
k++;
break;
}
else if (_stricmp(name, current->next->login) == 0)//пошук прізвища після
голови списку
{
element = current->next;
current->next = element->next;
free(element);
k++;
break;
}
current = current->next;
}
if (k == 0)
{
cout << "Автор з таким прізвищем не існує.\n";
}
}
///* створення списку */
void MakeNode()
{
int k = 0;
while (1)
{
/*виділення пам’яті для нового елементу*/
if ((current = (struct datauser*)malloc(sizeof(struct datauser))) == NULL)
{
fprintf(stderr, "No free memory!\n");
exit(EXIT_FAILURE); /*помилка і завершення програми*/
}
else
{
cout << "Введіть логін і пароль для " << k + 1 << " аккаунту:";
cin >> current->login >> current->password;
k++;
if (strcmp(current->login, "-1") == 0)
break;
current->next = NULL; /* формування вузла списку */
current->num = k; //Лічильник для подальшої ініціалізації списку
if (!(head))
head = current; /*якщо список пустий, новий елемент стає
початком*/
else
(last)->next = current; /*якщо не пустий, то останній елемент
вказує на новий*/
last = current; /*новий стає останнім*/
}
}
}
///* друк списку*/
void Druk(void)
{
current = head;
int k = 0;
while (current != NULL) /* поки не дійдемо до кінця списку */
{
current->num = k + 1;
cout << current->login << "\t" << current->password << "\t" << current->num
<< endl;
k++;
current = current->next; //Перехід до наступного вузла
}
}
///* вивільнення пам’яті*/
void DelMem(struct datauser* lst)
{
if (lst)
{
if (lst->next)
DelMem(lst->next);/* рекурсивно звільняємо пам’ять */
free(lst);/*вивільняємо пам’ять голови списку*/
}
}
void AddNode()
{
struct datauser* addb = (struct datauser*)malloc(sizeof(struct datauser));
{
current = head;
cout << "Введіть данні нового аккаунту(Логін та пароль)>> ";
cin >> addb->login >> addb-
>password;///////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////
addb->num = last->num;
while (current != NULL)
{
if (addb->num == 0)
{
addb->next = head;
head = addb;
break;
}
if (current->num == addb->num)
{
element = current->next;
current->next = addb;
addb->next = element;
}
current = current->next;
}
}
}
void setparam(int num)
{
current = head;
char log[20], pass[20];
int numb;
cout << "Що Ви хочете змінити?\n1 - Логін\n2 - Пароль\n3 - Видалити аккаунт" <<
endl;
cin >> numb;
while (current != NULL)
{
if (num == current->num) {
if (numb == 1)
{
cout << "Введіть новий логін:";
cin >> log;
strcpy_s(current->login, log);
break;
}
else if (numb == 2)
{
cout << "Введіть новий пароль:";
cin >> pass;
strcpy_s(current->password, pass);
break;
}
else if (numb == 3)
{
while (current != NULL)
{
if (num == head->num)//голова списку
{
element = head;
head = element->next;
free(element);
break;
}
else if (num == current->num)//пошук прізвища після
голови списку
{
element = current->next;
current->next = element->next;
free(element);
break;
}
current = current->next;
}
break;
}
}
current = current->next;
}
cout << "Зміни успішно запроваджені!" << endl;
}