Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <stdio.h>
- struct sessiya
- {
- char name[20];
- char surname[20];
- char otch[20];
- int ist;
- int prog;
- int matem;
- int phis;
- int srznach;
- };
- int proverka();
- int proverka2();
- int proverka3(int kolvo);
- sessiya* vvod(sessiya* vse, int kolvo);
- sessiya* pam(sessiya* vse, int kolvo);
- sessiya* udalenie(sessiya* vse, int kolvo);
- char* myStrCpy(char* str, int &start, char symbol_stop);
- int main()
- {
- SetConsoleOutputCP(1251);
- SetConsoleCP(1251);
- int menu;
- sessiya* vse = NULL;
- int kolvo = 0;
- FILE* fp = NULL;
- while (true)
- {
- printf("1.Ввод данных с клавиатуры\n2.Чтение данных из файла\n3.Удаление выбранного элемента массива\n4.Запись данных в файл\n5.Вывод данных\n6.Выход\nВаш выбор: ");
- menu = proverka();
- switch (menu)
- {
- case 1:
- vse = pam(vse, kolvo);
- vse = vvod(vse, kolvo);
- kolvo++;
- break;
- case 2:
- {
- fp = fopen("sessiya.txt", "rb"); //Открывает корневую папку для чтения
- if(fp == NULL)
- printf("Ошибка открытия файла!\n");
- else
- {
- fseek(fp, 0, SEEK_END);
- long lSize = ftell(fp);
- char* buffer = new char[lSize + 1];
- char klv[10];
- rewind(fp);
- if(fread(buffer, 1, lSize, fp))
- {
- buffer[lSize] = '\0';
- kolvo = 0;
- for(int i = 0; i < lSize; i++)
- if(buffer[i] == '&')
- kolvo++;
- if(vse != NULL)
- delete[] vse;
- vse = new sessiya[kolvo];
- int start = 0;
- for(int i = 0; i < kolvo; i++)
- {
- strcpy(vse[i].surname, myStrCpy(buffer, start, '\n'));
- strcpy(vse[i].name, myStrCpy(buffer, start, '\n'));
- strcpy(vse[i].otch, myStrCpy(buffer, start, '\n'));
- strcpy(klv, myStrCpy(buffer, start, '\n'));
- vse[i].ist = atoi(klv);
- strcpy(klv, myStrCpy(buffer, start, '\n'));
- vse[i].matem = atoi(klv);
- strcpy(klv, myStrCpy(buffer, start, '\n'));
- vse[i].prog = atoi(klv);
- strcpy(klv, myStrCpy(buffer, start, '&'));
- vse[i].phis = atoi(klv);
- }
- }
- }
- if(fp != NULL)
- fclose(fp);
- break;
- }
- case 3:
- vse = udalenie(vse, kolvo);
- kolvo--;
- break;
- case 4:
- {
- fp = fopen("sessiya.txt", "wb");
- char klv[10];
- for(int i = 0; i < kolvo; i++)
- {
- fwrite(vse[i].surname, sizeof(char), sizeof(char) * strlen(vse[i].surname), fp);
- fwrite("\n", 1, 1, fp);
- fwrite(vse[i].name, sizeof(char), sizeof(char) * strlen(vse[i].name), fp);
- fwrite("\n", 1, 1, fp);
- fwrite(vse[i].otch, sizeof(char), sizeof(char) * strlen(vse[i].otch), fp);
- fwrite("\n", 1, 1, fp);
- itoa(vse[i].ist, klv, 10);
- fwrite(klv, sizeof(char), sizeof(char) * strlen(klv), fp);
- fwrite("\n", 1, 1, fp);
- itoa(vse[i].matem, klv, 10);
- fwrite(klv, sizeof(char), sizeof(char) * strlen(klv), fp);
- fwrite("\n", 1, 1, fp);
- itoa(vse[i].prog, klv, 10);
- fwrite(klv, sizeof(char), sizeof(char) * strlen(klv), fp);
- fwrite("\n", 1, 1, fp);
- itoa(vse[i].phis, klv, 10);
- fwrite(klv, sizeof(char), sizeof(char) * strlen(klv), fp);
- fwrite("&", 1, 1, fp);
- //fprintf(fp, "%s\n%s\n%s\n%d\n%d\n%d\n%d\n", vse[i].surname, vse[i].name, vse[i].otch, vse[i].ist, vse[i].matem, vse[i].prog, vse[i].phis);*/
- }
- fclose(fp);
- }
- case 5:
- for (int i = 0; i < kolvo; i++)
- {
- if (vse[i].srznach >= 4)
- {
- printf("_____________________\n%d-%s %s %s \nИстория: %d\nМатематика: %d\nПрограммирование: %d\nФизика: %d\nПолучает стипендию\n", i + 1, vse[i].surname, vse[i].name, vse[i].otch, vse[i].ist, vse[i].matem, vse[i].prog, vse[i].phis);
- }
- else
- {
- printf("_____________________\n%d-%s %s %s \nИстория: %d\nМатематика: %d\nПрограммирование: %d\nФизика: %d\nНе получает стипендию\n", i + 1, vse[i].surname, vse[i].name, vse[i].otch, vse[i].ist, vse[i].matem, vse[i].prog, vse[i].phis);
- }
- }
- break;
- case 6:
- exit(1);
- default:
- break;
- }
- }
- return 0;
- }
- char* myStrCpy(char* str, int &start, char symbol_stop)
- {
- char* buffer = NULL;
- int bufferSize = 0;
- while(str[start + bufferSize] != symbol_stop)
- {
- bufferSize++;
- }
- buffer = new char[bufferSize + 1];
- for(int currentCursor = 0; currentCursor < bufferSize; currentCursor++)
- buffer[currentCursor] = str[start + currentCursor];
- buffer[bufferSize] = '\0';
- start += bufferSize + 1;
- return buffer;
- }
- sessiya* pam(sessiya* vse, int kolvo)
- {
- if (kolvo == 0)
- {
- vse = new sessiya[1];
- }
- else
- {
- sessiya* tmp = new sessiya[kolvo + 1];
- for (int i = 0; i < kolvo; i++)
- tmp[i] = vse[i];
- delete[] vse;
- vse = tmp;
- }
- return vse;
- }
- int proverka()
- {
- char ctl[15];
- bool ok = false;
- while (!ok)
- {
- scanf("%s", &ctl);
- ok = true;
- for (int i = 0; i < strlen(ctl); i++)
- {
- if (ctl[i] < '0' || ctl[i] > '9')
- {
- printf("Некорректные данные!");
- ok = false;
- break;
- }
- }
- if (atoi(ctl) > 0 && atoi(ctl) < 8)
- return atoi(ctl);
- else
- {
- printf("Введите заново: ");
- ok = false;
- }
- }
- }
- int proverka2()
- {
- char ctl[15];
- bool ok = false;
- while (!ok)
- {
- scanf("%s", &ctl);
- ok = true;
- for (int i = 0; i < strlen(ctl); i++)
- {
- if (ctl[i] < '0' || ctl[i] > '9')
- {
- printf("Некорректные данные!");
- ok = false;
- break;
- }
- }
- if (atoi(ctl) > 0 && atoi(ctl) < 6)
- return atoi(ctl);
- else
- {
- printf("Введите заново: ");
- ok = false;
- }
- }
- }
- int proverka3(int kolvo)
- {
- char ctl[15];
- bool ok = false;
- while (!ok)
- {
- scanf("%s", &ctl);
- ok = true;
- for (int i = 0; i < strlen(ctl); i++)
- {
- if (ctl[i] < '0' || ctl[i] > '9')
- {
- printf("Некорректные данные!");
- ok = false;
- break;
- }
- }
- if (atoi(ctl) > 0 && atoi(ctl) <= kolvo)
- return atoi(ctl);
- else
- {
- printf("Введите заново: ");
- ok = false;
- }
- }
- }
- sessiya* vvod(sessiya* vse, int kolvo)
- {
- printf("Введите фамилию: ");
- scanf("%s", vse[kolvo].surname);
- printf("Введите имя: ");
- scanf("%s", vse[kolvo].name);
- printf("Введите отчество: ");
- scanf("%s", vse[kolvo].otch);
- printf("Введите оценку по истории: ");
- vse[kolvo].ist = proverka2();
- printf("Введите оценку по математике: ");
- vse[kolvo].matem = proverka2();
- printf("Введите оценку по программированию: ");
- vse[kolvo].prog = proverka2();
- printf("Введите оценку по физике: ");
- vse[kolvo].phis = proverka2();
- vse[kolvo].srznach = ((vse[kolvo].matem + vse[kolvo].ist + vse[kolvo].phis + vse[kolvo].prog) / 4);
- return vse;
- }
- sessiya* udalenie(sessiya* vse, int kolvo)
- {
- printf("Введите номер элемента массива для удаления: ");
- int ud = proverka3(kolvo);
- int k = 0;
- sessiya* tmp = new sessiya[kolvo - 1];
- for (int i = 0; i < kolvo; i++)
- if (i != ud - 1)
- {
- tmp[k] = vse[i];
- k++;
- }
- delete[] vse;
- vse = tmp;
- return vse;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement