Крылья
Профиль
Группа: Участник
Сообщений: 19
Регистрация: 4.4.2012
Репутация: нет Всего: нет
|
могу сказать одно или я что-то не понимаю или просто туплю вот код: Код | // С3_11.cpp: определяет точку входа для консольного приложения. //
#include "stdafx.h" #include <fstream> #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string> #include <vector> #include <sstream> #include <conio.h> #include <locale.h> using namespace std;
const int length = 17; const int buf = 100;
template <class Gr, class fio> struct fio_s{ Gr group; fio familia[length+1]; fio name[length+1]; fio otchestvo[length+1]; fio_s *next; fio_s *prev; }; template <class Gr, class fio> class Date{ public: fio_s<Gr, fio> * element_beg; fio_s<Gr, fio> * element_end; //--------------------------------------------------------------------------------- //формирую первый элемент моего полного списка учеников fio_s<Gr, fio> * first(){ FILE * file; while ((file = fopen("Spisok.bin", "r")) == NULL) { cout << "ERROR OPEN\n"; return 0; }; fio_s<Gr, fio> * pv = new fio_s<Gr, fio>; fscanf_s(file, "%i", &(pv->group)); fgets(pv->familia, length, file); fgets(pv->name, length, file); fgets(pv->otchestvo, length, file); fclose(file); return pv; }; Date(){ element_beg = first(); element_end = element_beg; //element->group = 0;//this->familia = 0;this->name = 0;this->otchestvo = 0; //this->element->next = 0; //this->element->prev = 0; }; ~Date(){
}; //--------------------------------------------------------------------------------- //поиск элемента по заданному ключу...(на данный момент по фамилии...) fio_s<Gr, fio> * find(fio_s<Gr, fio> * const mod_beg, fio_s<Gr, fio> * const mod_key){ fio_s<Gr, fio> *pv = mod_beg; while(pv != NULL){ if (pv->group == mod_key->group){ if (!(strcmp(pv->familia, mod_key->familia))){ break; }; }; pv = pv->next; }; return pv; }; //--------------------------------------------------------------------------------- //Добавление всех оставшихся ученика из файла в конец списка void add(fio_s<Gr, fio> *const mod_beg, fio_s<Gr, fio> ** mod_end){ //fio_s<Gr, fio> * pv = new fio_s<Gr, fio>; FILE * file; while ((file = fopen("Spisok.bin", "r")) == NULL) { cout << "ERROR OPEN\n"; return ; }; int i = 0; while (!feof(file)){ fio_s<Gr, fio> *pv = new fio_s<Gr, fio>; fscanf_s(file, "%i", &(pv->group)); fgets(pv->familia, length, file); fgets(pv->name, length, file); fgets(pv->otchestvo, length, file); if (i != 0){ pv->next = 0; pv->prev = *mod_end; (*mod_end)->next = pv; *mod_end = pv; }; char bufer[buf+1]; fgets(bufer, buf, file); i++; //fseek(file, '\n', SEEK_CUR); }; fclose(file); }; //--------------------------------------------------------------------------------- //Удаление элемента по ключу bool remove(fio_s<Gr, fio> **mod_beg, fio_s<Gr, fio> ** mod_end){ fio_s<Gr, fio> *pv = new fio_s<Gr, fio>; cout << " Пожалуйста вводите правильно, иначе программа вас не поймет!! " << endl << " Также вводите ФИО с большой буквы!!" << endl << endl; cout << " Введите группу ученика : "; cin >> pv->group; cout << " Введите фамилию ученика : "; cin >> pv->familia; cout << " Введите имя ученика : "; cin >> pv->name; cout << " Введите отчество ученика : "; cin >> pv->otchestvo; pv->next = 0; pv->prev = 0; if (fio_s<Gr, fio> *mod_key = find(*mod_beg, pv)){ if (mod_key == *mod_beg){ *mod_beg = (*mod_beg)->next; (*mod_end)->next = 0; } else if (mod_key == *mod_end){ *mod_end = (*mod_end)->prev; (*mod_end)->next = 0; } else { (mod_key->prev)->next = mod_key->next; (mod_key->next)->prev = mod_key->prev; }; delete mod_key; return true; }; return false; }; //--------------------------------------------------------------------------------- //Добавление нового ученика в конец списка void add_man(fio_s<Gr, fio> * const mod_beg,fio_s<Gr, fio> **mod_end){ fio_s<Gr, fio> *pv = new fio_s<Gr, fio>; cout << " Пожалуйста вводите правильно, иначе программа вас не поймет!! " << endl << " Также вводите ФИО с большой буквы!!" << endl << endl; cout << " Введите группу ученика : "; cin >> pv->group; cout << " Введите фамилию ученика : "; cin >> pv->familia; cout << " Введите имя ученика : "; cin >> pv->name; cout << " Введите отчество ученика : "; cin >> pv->otchestvo; pv->next = 0; pv->prev = 0; (*mod_end)->next = pv; *mod_end = pv; }; //--------------------------------------------------------------------------------- //Вывод на экран void output(fio_s<Gr, fio> * const mod_beg){ cout << "Вывод всего списка " << endl << endl;//вывод группа - фио cout << "^Group - ^surname ^name ^patronymic" << endl; fio_s<Gr, fio> *pv = mod_beg; while(pv != NULL){ printf("%5i", pv->group); cout << " - "; printf("%17s", pv->familia); printf("%17s", pv->name); printf("%17s", pv->otchestvo); pv = pv->next; cout << endl; }; cout << endl << endl << "Нажмите Enter "; _getch(); }; //--------------------------------------------------------------------------------- //Меню работы со списком вывод на экран int menu_spi(){ char bufer[buf]; int chislo; do { cout << " 1 - Добавить нового студента в список" << endl; cout << " 2 - Удалить студента из списка" << endl; //если будет время сделать вывод по группам cout << " 3 - Вывести весь список" << endl; cout << " 4 - Выход в главное меню " << endl; cin >> bufer; chislo = atoi(bufer); }while (!chislo); return chislo; }; //--------------------------------------------------------------------------------- //Меню работы со списком передача функциям void menu_spisok(){ while (1){ system("cls"); cout << " В данной программе не предусмотренны ошибки пользователя, пожалуйста будте аккуратны при изменении данных!" << endl << endl; switch(menu_spi()){ case 1:{add_man(element_beg, &element_end); break;}; case 2:{remove(&element_beg, &element_end); break;}; case 3:{output(element_beg); break;}; case 4:{return;}; default: cout << "Надо вводить числа от 1 до 4!!!" << endl; break; }; }; }; //--------------------------------------------------------------------------------- //работа со списком void working_with_a_list(){ add(element_beg, &element_end); menu_spisok(); }; //---------------------------------------------------------------------------------
void write_s(){ FILE *file; while ((file = fopen("Spisok.bin", "r")) == NULL) { cout << "ERROR OPEN\n"; return; };
while (!feof(file)){ fio_s<Gr, fio> *pv = new fio_s<Gr, fio>; fscanf_s(file, "%i", &(pv->group)); fgets(pv->familia, length, file); fgets(pv->name, length, file); fgets(pv->otchestvo, length, file); if (((element_beg->group) == (pv->group))&&((element_beg->familia) == (pv->familia))&&((element_beg->name) == (pv->name))&&((element_beg->otchestvo) == (pv->otchestvo))) { };
}; fclose(file); }; void print_s(){ /*cout << "Вывод первого элемента " << endl << endl;//вывод группа - фио cout << "^Group - ^surname ^name ^patronymic" << endl; fio_s<Gr, fio> *pv = new printf("%5i", this->element->group); cout << " - "; printf("%17s", this->element->familia); printf("%17s", this->element->name); printf("%17s", this->element->otchestvo); //cout << this->group << " - " << this->familia << this->name << this->otchestvo << endl; cout << endl << endl << "Нажмите Enter "; _getch();*/ }; };
int main() { setlocale(LC_ALL, "Russian"); cout << " В данной программе не предусмотренны ошибки пользователя, пожалуйста будте аккуратны при изменении данных!" << endl << endl; //--------------------------------------------------------------------------------- //работа со списком учеников Date<int, char> Mod; Mod.working_with_a_list(); //Mod.print_s(); //--------------------------------------------------------------------------------- //работа с датами return 0; }
|
ОС винда 7 64х если я правильно поняла про что ты спрашиваешь(я во многом еще дурак  ), если что то стоит с# 2008 а где посмотреть IDE??
|