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

преобразование текстового файла в двоичный, чтение данных из двоичного с++ - C++

Восстановить пароль Регистрация
 
Niklitel
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 17
06.03.2014, 16:19     преобразование текстового файла в двоичный, чтение данных из двоичного с++ #1
Пожалуйста помогите разобраться, не могу понять почему не работает программа.
Нужно преобразовать текстовый файл в двоичный и читать данные из двоичного.

Сама задача такова :
На основе сводной экзаменационной ведомости, включающей фамилии студентов и оценки по дисциплинам (математика, физика, программирование, история), подсчитать средний балл для каждого студента и вывести:
Название дисциплины, по которой получено наибольшее количество "пятерок", и фамилии студентов, получивших по этому предмету "двойку".


Текстовый файл:
3
Hopi 2 3 3 5
Jkol 5 5 5 5
dfkjgkl 2 2 2 2


Код
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <fstream>
const int p = 15, k=4;
struct dannye
{   char fam [p];
    int oc[k];
};
int main ()
{
	setlocale(LC_ALL, "rus");
	using namespace std;
	int kol5[k] = {NULL};
	int n;
	char *predmet[] = {"MATEM", "PROGA","ISTOR","FIZIKA"};
    FILE *in,*out; 
	in = fopen ("студенты.txt", "r" ); 
	out = fopen ( "fileb.dat", "w+b" );
 	fscanf (in, "%d",&n);
	fwrite ( &n, sizeof(n), 1, out );
	dannye* dan = new dannye [n];
	int i = 0;
	while ( fscanf (in,"%s", &dan[i].fam) != EOF )
	{
		for (int j=0; j<k; j++){
			fscanf ( in, "%d", &dan[i].oc[j] );
		}		 		
		i++;
		fwrite ( &dan, sizeof(dannye), 1, out );
	}
	memset(dan, 0, sizeof(dannye)*n);
	fclose (in);
	fclose (out);
	out = fopen ( "fileb.dat", "r+b");
	fread ( &dan, sizeof(dannye), n+1, out );
	for (int i=0; i<n; i++){
		float s=0;
		for (int j=0; j<k; j++) {
			s=s+dan[i].oc[j];
       }
		s=s/k;
		if (i!=0) {
		cout<<"Студент  "<<dan[i].fam<<"  средний балл  = "<<s<<endl;
		}
	}
	int max=0, jmax, d=5, h=2,s=0;	
	for (int j=0; j<k; j++) {
		s=0;
		for (int i=0; i<n; i++) {
			if (dan[i].oc[j]==d) {
				s=s+1;
				kol5[j]=s;
			}
		}
		if (max<kol5[j]) {
		max=kol5[j];
		jmax=j;
		}
	}
	for (int j=0; j<k; j++) {		
			if(max==kol5[j]) {
				cout<<"Предмет, по которому набрано больше пятерок  "<<predmet[j]<<endl;
				for (int i=0; i<n; i++) {
					if(dan[i].oc[j]==h) {
						cout<<"Фамилия студента, получившего двойку по данному предмету:  "<<dan[i].fam<<endl;
					}
				}
			}
	}	
	getch ();
	return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2014, 16:19     преобразование текстового файла в двоичный, чтение данных из двоичного с++
Посмотрите здесь:

Конвертирование текстового файла в двоичный C++
C++ как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла?
C++ чтение двоичного файла
чтение из текстового файла C++
C++ Частотный словарь из слов текстового файла в виде дерева двоичного поиска
C++ Из заданного двоичного файла создать новый двоичный файл, у которого байты переставлены в обратном порядке
Чтение данных из текстового файла C++
C++ Чтение текстового файла и его данных в разные переменные

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 18:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru