Форум программистов, компьютерный форум CyberForum.ru

Связка структур, разработка функций - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти наибольший элемент на главной и побочной диагоналях http://www.cyberforum.ru/cpp-beginners/thread1179130.html
сам не шарю вообще предмет не профильный нужно написать программу на с++ помогите пожалуйста вот задание Дана действительная квадратная матрица порядка n, все элементы которой различны. Найти наибольший элемент на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей. Матрица размещается в памяти динамически с помощью операции new, значение n...
C++ Максимальный элемент дерева Здравствуйте. Как мне реализовать код выводи максимального элемента в дереве? Я пока что делаю это так: int Tree::MaxLen(TreeNode *m) { if (m!=NULL) { MaxLen(m->right); cout << m->data << endl; } } http://www.cyberforum.ru/cpp-beginners/thread1179129.html
Считать первые 10 символов каждой строки C++
Здравствуйте! Помогите, пожалуйста, составить программу, которая бы считывала из файла по 10 символов с каждой строчки.Пытался сам,но знания в программировании невелики. #include <iostream> #include <fstream> using namespace std; int main() { const int M=10; char buf; ifstream input("input.txt");
Преобразовать массив, если в нем есть хоть один отрицательный элемент C++
Прошу помочь с решением. Даны целые массивы А, B и значения P и Q. Каждый массив пpеобpазовать по пpавилу: если в массиве есть хотя бы один отpицательный элемент, то все отpицательные, имеющие нечетный номеp, заменить на значение P (для массива A) и значение Q (для массива B). В пpотивном случае массивы оставить без изменения.
C++ Файловые операции ввода/вывода http://www.cyberforum.ru/cpp-beginners/thread1179071.html
Добрый день, подскажите, пожалуйста, как мне завести цикл для выполнения следующей задачи: Написать программу, которая считывает текст из файла и записывает в другой файл только те строки, которые содержат двузначные числа. Как выполнить проверку на наличие двузначных чисел в строке. И собственно, как объявить и обращаться к строкам?
C++ Операции с длинными целыми Здравствуйте! Подскажите пожалуйста почему не выводятся результаты вычислений. Numb.h#ifndef NUMB_H #define NUMB_H #include<iostream> using namespace std; #define MAX_EL 10000 #define SERO_CODE 48 namespace numbNamespace { подробнее

Показать сообщение отдельно
MonoRec
1 / 1 / 0
Регистрация: 24.11.2013
Сообщений: 84

Связка структур, разработка функций - C++

17.05.2014, 21:15. Просмотров 277. Ответов 5
Метки (Все метки)

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

Код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 файла на чтения? Так можно?


Код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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");
}
}}}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru