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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2013, 13:03   #1
vik24rus
Пользователь
 
Регистрация: 14.04.2013
Сообщений: 15
По умолчанию Работа со структурами и чтением из файла

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


1. ведомость в порядке невозрастания среднего балла;
2. ведомость, упорядоченную в алфавитном порядке;
3. название дисциплины, по которой получено наибольшее количество "двоек", и фамилии студентов, получивших по этому предмету "двойку";
4. название дисциплины, по которой получено наибольшее количество "пятерок", и фамилии студентов, получивших по этому предмету "двойку".

Сначало что я написал и как понимаю:
Файл со студентами выглядит вот так-
Ололев А 5 5 5 5
Куцынов Г 2 3 4 2
Ололоева Ж 2 2 2 2
Иванов С 3 3 5 3
Максимов В 4 4 4 4
Капушо Л 4 4 3 4
Гладко А 2 4 2 4
Поляков Д 3 2 3 2
Михайлов К 5 2 3 4
Пупыркин В 2 2 2 5
все через 1н пробел.

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

#include "stdafx.h"
#include <iostream>
#include "locale"
#include "fstream"
#include "string"

#include <sstream>


using namespace std;




struct Student
{

	char familia;
	char name;
	int math;
	int physics;
	int coding;
	int history; 
} ; 




int _tmain(int argc, _TCHAR* argv[])
{
setlocale( LC_ALL,"Russian" );

string s;  //основная строка
string s1; // вспомогательная строка при чтении файла
int prob=0;// для избавления от пробела в начале ,после чтения данных из файла
int chisloStudentov=0; // число студентов в файле
int i; //номер структуры для записи

ifstream file ("students.txt"); //Открываем файл для считывания информации 
                                //порядок предметов для считывания оценок математика, физика, программирование, история

if ( !file ) 
{
	cerr << "don't open file students.txt,  crash!\n";
	system("pause");
	return -1;
}


while(!file.eof()) 
{   
	
	getline(file,s1);
	
	if (prob==0 )
	{
		s = s + s1;
	}
	else
	{
		s = s + ' ' + s1;
	}
	
	prob++;
	chisloStudentov++;
}

Student *Students = new Student[chisloStudentov]; //указатель на массив структур



	

istringstream iss(s);
string token;

while(getline(iss, token, ' ')) //!!!!!!!!!!!дописать atoi , для заполнения в структуру
{
	//cout << token<< '\n'; 
	for (i = 0; i < chisloStudentov  ; i++)
	{
		
		  //заполнение где не требуется  atoi
		Students[i].familia=token; 
		Students[i].name;
	
	}
}



file.close(); // Закрываем файл 
delete []Students; //удаляем наши структуры
	getchar();
	getchar();
	return 0;
}
Тоесть читается файл и количество студентов, исходя из их числа создается массив структур. Потом вот этой штукой :
istringstream iss(s);
string token;

while(getline(iss, token, ' ')
разбиваем считанный файл на пробелы, и записываем данные в нужные поля структуры ,причем если данное - это число в момент переноса с помощью atoi переводим его из char в int. Затык в том что я не могу присвоить структуре данные-ошибка говорит строка это не char и сам алгоритм переноса (то есть сначало первые два слова это фамилия и имя, а затем оценки) не могу предумать

Тема закрыта! Решил.

Последний раз редактировалось vik24rus; 23.04.2013 в 14:38.
vik24rus вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с чтением файла. the27mart Общие вопросы C/C++ 4 18.11.2012 22:36
проблема с чтением из файла salwator Помощь студентам 1 23.12.2010 12:11
Проблема с чтением из файла slamm PHP 12 16.01.2010 16:40
проблема с чтением из файла Tesmont Общие вопросы C/C++ 0 20.05.2009 19:39