Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка массива до и после определенного элемента http://www.cyberforum.ru/cpp-beginners/thread1112776.html
Есть одномерный массив из 20 последовательных элементов. Нужно: перемешать элементы массива, выбрать случайный элемент и отсортировать массив до этого элемента по возрастанию, после него - по...
C++ Составить программу, которая строит новую таблицу по двум исходным Заданы две таблицы:СОТРУДНИКИ и ОТДЕЛЫ. Составить программу, которая строит новую таблицу, включающую номер, фамилию и зарплату сотрудника, номер отдела, название отдела и количество сотрудников в... http://www.cyberforum.ru/cpp-beginners/thread1112770.html
C++ Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек
Определить радиус и центр окружности, проходящей, по крайней мере, через три различные точки заданного множества точек на плоскости и, содержащей внутри наибольшее количество точек этого множества
Подгонка решения задачи под тесты Timus Online Judge, С++ C++
На Timus Online Judge столкнулся с довольно простой задачей, с которой у меня возникли некоторые проблемы. Задача: Программист Денис c детства мечтал побывать в Антарктиде, но почему-то...
C++ Списки языка C++ Удаление нужного элемента http://www.cyberforum.ru/cpp-beginners/thread1112742.html
Все не могу реализовать удаление нужного мне элемента из писка памогите написать функцию удаления введенного элемента. #include<iostream> #include<fstream> #include<string> #include<conio.h>...
C++ Рекурсия. Вывести на экран все перестановки чисел от 1 до n в лексикографическом порядке. При помощи рекурсии по данному числу n выведите на экран все перестановки чисел от 1 до n в лексикографическом порядке. Нужен текст программы, пример выполнения, блок схема. подробнее

Показать сообщение отдельно
Niklitel
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 17

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

06.03.2014, 16:19. Просмотров 263. Ответов 0
Метки (Все метки)

Пожалуйста помогите разобраться, не могу понять почему не работает программа.
Нужно преобразовать текстовый файл в двоичный и читать данные из двоичного.

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


Текстовый файл:
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru