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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2016, 14:13   #1
LLlyRuK
Новичок
Джуниор
 
Регистрация: 03.01.2016
Сообщений: 2
По умолчанию классы наследование

написал прогр которая сортирует студентов по успеваемости,и находит студентов получивших не менее 2х пятерок
вот файл
Цитата:
10
1 АлександрАА Телекомун УПС-10 5 5 4 3 5 3 3 3 3 3
2 КонвонЮИ Телекомун УПС-10 4 4 4 4 4 4 4 4 4 5
3 КачанАА Телекомун УСП-10 4 3 4 3 4 5 3 4 5 3
4 БыковАА Телекомун УСП-10 4 4 4 4 4 4 4 4 4 5
5 ТорковВА Телекомун УСП-10 3 3 3 3 3 3 3 3 4 4
6 ЙорковСС Телекомун УЦС-3 5 4 3 4 4 5 3 1 5 2
7 КоркиюЮИ Телекомун УЦС-3 4 3 3 3 3 3 3 3 3 4
8 ЯрковЯВ Телекомун УЦС-3 5 5 5 5 5 5 5 5 5 5
9 ДунканГБ Телекомун УЦС-3 4 4 4 4 4 4 4 4 3 3
10 ТочкинАА Телекомун УЦС-3 5 3 3 3 3 3 3 3 3 4
Помогите вывести группу с лучшим средним балом


Код:
#include "stdafx.h"
#include <iostream> 
#include <math.h>
#include <string.h>
#define  kol_b 10
#pragma warning(disable : 4996)
FILE*f;
class student
{
	unsigned int nomer;
	char fio[21];
	char fakultet[16];
		char team[7];
public:
	void scan_f() // Ввод с файла
	{
		fscanf(f, "\n%2d %s %s %s",&nomer, fio, fakultet,team);
	}
	void prin()// вывод 
	{
		printf("\n%2d %-21s %-16s %-7s", nomer, fio, fakultet,team);
	}
	void print_f()//запись в файл 
	{
		fprintf(f, "\n%2d %-21s %-16s %-7s", nomer, fio, fakultet,team);
	}
};
class usp :public student
{
	unsigned int srbal[10];
public:
	void print_fa()//запись в файл 
	{
		print_f();
		for (unsigned int j = 0; j < kol_b; j++)
			fprintf(f, " %d", srbal[j]);
	}
	void printu() //Вывод
	{
		prin();
		for (unsigned int j = 0; j < kol_b; j++)
		printf(" %d", srbal[j]);
	}
	void scan_uf() // Ввод с файла
	{
		scan_f();
		for (unsigned int j = 0; j < kol_b; j++)
		fscanf(f, "%d", &srbal[j]);
	}
	void s_otl() //задание 1
	{
		unsigned int kol = 0;
		for (unsigned int j = 0; j < kol_b; j++)
		if (srbal[j] == 5)
		{
			kol++;
			if (kol == 2)
			{
				prin();
				break;
			}
		}
	}
	unsigned int sum() // сумма всех оценок студента
	{
	   unsigned int summ = 0;
		for (unsigned int j = 0; j < kol_b; j++)
			summ += srbal[j];
		return summ;
	}	
};

int main()
{
	setlocale(LC_ALL, "Russian");
    usp*M,*t;
	char name_f[10];
	unsigned int k_dan,z,k;
	printf("Введите имя файла-");
	scanf("%s", name_f);
	if ((f = fopen(name_f, "rt")) != NULL)
	{
		fscanf(f, "%d", &k_dan);
		M = new usp[k_dan];		
		for (unsigned int i = 0; i < k_dan; i++)
		{
			M[i].scan_uf();
			M[i].printu();
		}
		fclose(f);
		do
		{
			printf("\nВыберите действие:\n1-Вывести информацию о студентах, сдавших на отл не менее 2-х сессий \n
                            2-Отсортировать список по успеваемости и записать в файл\n3-группа с наилучшим средним баллом\n4-Выход\n");
			scanf("%d", &z);
			switch (z)
			{
			case 1:
				printf("\n Студенты, сдавших на отл не менее 2-х сессий:");
				for (unsigned int i = 0; i < k_dan; i++)
					M[i].s_otl();
				break;
			case 2:
				for (unsigned int j = 1; j <= k_dan - 1; j++)
				for (unsigned int i = 0; i <= k_dan - 1 - j; i++)
				if (M[i].sum() > M[i + 1].sum())
				{
					usp dop = M[i];
					M[i] = M[i + 1];
					M[i + 1] = dop;
				}
				for (unsigned int i = 0; i < k_dan; i++)
					M[i].printu();
				f = fopen(name_f, "w");
				for (unsigned int i = 0; i < k_dan; i++)
					M[i].print_fa();
				fclose(f);
				break;
			case 3:	
				???
				break;
			}
		}
			while (z != 4);
		delete[]M;
	}
	else
		printf("Ошибка открытия файла\n");
	printf("\n");
	system("pause");
	return 0;
}

Последний раз редактировалось Stilet; 03.01.2016 в 18:00.
LLlyRuK вне форума Ответить с цитированием
Старый 03.01.2016, 18:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я м.б. не в свое дело лезу, но может тебе сделать на основе бинарного файла?
И иерархию соблюсти:
1) Главный класс - список групп
2) Класс группы - список учеников
3) Класс ученика - список оценок.
Не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.01.2016, 19:04   #3
LLlyRuK
Новичок
Джуниор
 
Регистрация: 03.01.2016
Сообщений: 2
По умолчанию

там 2 класса по заданию должно быть студент и успеваемость студента
LLlyRuK вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БД "Учёт успеваемости студентов" Borland C++ ilianem Помощь студентам 3 17.04.2014 10:52
Постройте эмпирические функции распределения (абсолютные и накопленные частоты) успеваемости в группе из 20 студентов: 4, 4,5,3,4, Victorials2648 Microsoft Office Excel 4 28.03.2014 08:05
Сформировать массив записей с информацией об успеваемости студентов с 5-ти предметов. gudok2 Помощь студентам 2 16.05.2013 08:05
срочно!!!Курсовая "Проектирование ис учета и контроля успеваемости студентов (Delphi 7+MS Access)))" irrok Фриланс 2 09.01.2009 08:59
Программа учёта успеваемости студентов-такое задание Amen Помощь студентам 1 31.01.2008 20:11