Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2014, 20:56   #1
MyLifeStyle
Пользователь
 
Регистрация: 29.04.2014
Сообщений: 25
Восклицание Связка структур

Есть проблема. Есть 3 бинарных файла Subjects.txt Student.txt Mark.txt
Есть 3 структуры:

Код:
struct Student
{
    char Student_Name[20];
    char Student_Surname[20];
    char Student_Code[10];
    char Student_Groupe[10];
	int age;
};

struct Subject
{
    char Subject_Name[20];
    char Subject_Code[10]; 
    char Subject_Groupe[10];  
};

struct Mark
{
	char Stu_code[10];
	char Sub_code[10];
	float mark;
};
Например вожу:
Студента:
Student_Name:Maks
Student_Surname:Maksim
Student_Code:1001
Student_Groupe:1002
age:20

Предмет:
Subject_Name:Rus
Subject_Code:2001

Оценку:
Stu_code[10]:1001
Sub_code[10]:2001
mark:10

После работы функции void see_marks()

Ответ:
Student_Name:Maks
Student_Surname:Maksim
Student_Code:1001
Student_Groupe:1002
age:20
Subject_Name:Rus
mark:10

Все работает как надо.
Но есть проблема. Если у удалю предмет или студента.
Например:
Удаляю

Subject_Name:Rus
Subject_Code:2001

После работы функции получаю.

Student_Name:Maks
Student_Surname:Maksim
Student_Code:1001
Student_Groupe:1002
age:20
Subject_Name:<<<$@#<<<@#@>
mark:10
Как это исправить?
Также, если отсортирую структуру то функция не работает!
Еще один вопрос правильно ли я открыл 3 файла на чтения? Так можно?


Код:
void see_marks()
{ifstream fi("Subjects.txt", ios::binary);
if(!fi) cout<<"Error with file\n"<<endl;
else {fi. seekg(0,ios::end);
int size=fi.tellg();
size=size/sizeof(Subject);
Subject * Subjects=new Subject[size];
fi.seekg(0, ios::beg);
fi.read ((char*)Subjects,sizeof(Subject)*size);
ifstream fi("Students.txt", ios::binary);

if(!fi) cout<<"Error with file\n";
else {fi. seekg(0,ios::end);
int size=fi.tellg();
size=size/sizeof(Student);
Student * Student_1= new Student[size];
fi.seekg(0, ios::beg);
fi.read ((char*)Student_1,sizeof(Student)*size);

ifstream fi("Marks.txt", ios::binary);
if(!fi) cout<<"Error with file\n"<<endl;
else {fi. seekg(0,ios::end);
int size=fi.tellg();
size=size/sizeof(Mark);
Mark * Marks=new Mark[size];
fi.seekg(0, ios::beg);
fi.read ((char*)Marks,sizeof(Mark)*size);



for( int i=0; i < size; i++)

if(!strncmp(Student_1[i].Student_Code, Marks[i].Stu_code,sizeof(Marks[i].Stu_code)/sizeof(char)))

{	
cout<<" Student Name: "<<Student_1[i].Student_Name<<"\n Student Surname: "<<Student_1[i].Student_Surname<<"\n Student Code: "<<Student_1[i].Student_Code;
	cout<<"\n Student Groupe: "<<Student_1[i].Student_Groupe<<"\n Student Age: "<<Student_1[i].age;
		cout<<"\n Student mark: "<<Marks[i].mark;
			cout<<"\n Subject Name: "<<Subjects[i].Subject_Name<<endl;;


}
system("pause");
}
}}}

Последний раз редактировалось MyLifeStyle; 17.05.2014 в 21:13.
MyLifeStyle вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление структур из массива структур Infini Помощь студентам 2 02.03.2013 22:31
Связка TP и Asm vasiliy_09_05 Помощь студентам 11 28.12.2012 12:09
Связка функций alexsampler Microsoft Office Excel 2 27.01.2012 12:26
связка с пхп маГГ85 JavaScript, Ajax 2 25.12.2011 02:18
Связка С# и MySQL dampirik SQL, базы данных 3 09.01.2010 20:41