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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2013, 20:55   #1
Ladis
 
Регистрация: 13.09.2013
Сообщений: 6
По умолчанию лаба с++ ооп (траблы с внешней функцией))

Не знаю что да как делать дальше, вообщем вот условия лаболаторной:

Разработать класс Stud (студент) содержащий поля фамилия, семестр, 4 оценки, конструкторы и деструктор, функцию вывода информации по объекту. Внешняя функция exam заносит в объект класса Stud результаты сессии. Создать несколько объектов класса Stud. Создать массив объектов.

Вот что написал
Код:
 class stud
{
	private: 
    static const int marks = 4;
	char name[50];
	int semester;
	int mark[marks];
public:
	stud();
	stud(char *, int );
	~stud();
	void show();
	void init(); 
	void exam(int *arr);
};



#include <iostream>
#include "cl_stud.h"
#include <locale.h>
using namespace std;



stud::stud()
{
	strcpy(name, "");	
	semester=0;

}
stud::~stud()
{
}
void stud::init()
{
	setlocale(LC_ALL, "rus");
	std::cout<<"Введите фамилию студента: ";
	std::cin>>name;
	std::cout<<"Введите номер семестра: ";
	std::cin>>semester;
}

void stud::show()
{
	setlocale(LC_ALL, "rus");
	std::cout<<"Студент: "<<name<<std::endl;
	std::cout<<"Семестр: "<<semester<<std::endl;
}




#include <iostream>
#include "cl_stud.h"
#include <locale.h>

int main()
{
	setlocale(LC_ALL, "rus");
	stud worker;
	int *p;
	p=new int [3];
	for(int i=0; i<3; i++)
	{
	worker.init();
	}
	for(int i=0; i<3; i++)
	{
	worker.show();
	}
	system("pause");
}
Вот дошёл до этой функции куда отметки надо вносить, как внешней передать массив с отметками, и что такое эта внешняя ф-ция, это есть дружественная функция, или вообще она отдельно от класса пишется? Может кто помочь с дописанием?)

Последний раз редактировалось Stilet; 14.09.2013 в 10:17.
Ladis вне форума Ответить с цитированием
Старый 13.09.2013, 23:44   #2
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Код:
#include "string"
#include "stdlib.h"
#include "iostream"

class Student
{
public:
    Student() : 
      _family(""), 
      _semester(0),
      _mathm(0),
      _physm(0),
      _geom(0),
      _hystm(0)
    {}

    Student(const std::string& family, 
            unsigned short semester, 
            unsigned short mathm,
            unsigned short physm,
            unsigned short geom,
            unsigned short hystm
            )
        : _family(family),
          _semester(semester),
          _mathm(mathm),
          _physm(physm),
          _geom(geom),
          _hystm(hystm)
    {        
    }

    ~Student()
    {
    }

    void print() const
    {
        std::cout<<"FAMILY:"<<_family<<std::endl;
        std::cout<<"SEMESTER:"<<_semester<<std::endl;
        std::cout<<"MATH:"<<_mathm<<std::endl;
        std::cout<<"PHYS:"<<_physm<<std::endl;
        std::cout<<"GEO:"<<_geom<<std::endl;
        std::cout<<"HYST:"<<_hystm<<std::endl;
    }

#define SET(field,type) \
    void field(type val)\
    {                   \
        _##field = val; \
    }                   
    SET(semester,unsigned short)
    SET(family,std::string)
    SET(mathm,unsigned short)
    SET(physm,unsigned short)
    SET(geom,unsigned short)
    SET(hystm,unsigned short)
#undef SET

private:
    Student(const Student&);
    Student& operator=(const Student&);
private:
    std::string _family;
    unsigned short _semester;
    unsigned short _mathm;
    unsigned short _physm;
    unsigned short _geom;
    unsigned short _hystm;
};


void exam(Student& stud
          ,std::string family
          ,unsigned short semester
          ,unsigned short mathm
          ,unsigned short physm
          ,unsigned short geom
          ,unsigned short hystm)
{
    stud.family(family);
    stud.semester(semester);
    stud.mathm(mathm);
    stud.physm(physm);
    stud.geom(geom);
    stud.hystm(hystm);
}

int main()
{
  Student* group = new Student[3];
  exam(group[0],"Ivanov",1,2,3,4,5);
  exam(group[1],"Petrov",2,5,4,3,2);
  exam(group[2],"Sidorov",1,3,3,4,5);
  for(int i = 0; i < 3; i++)
      group[i].print();
  return 0;
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 14.09.2013, 00:09   #3
Ladis
 
Регистрация: 13.09.2013
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Helloween Посмотреть сообщение
Код:
А можешь в моём начатом коде-чего нибудь переделать, чтобы с этой внешней ф-цией было и по условию там дальше? ). , бо это моя первая лаба на с++ и в твоём коде не понимаю многого ))

Код:

class stud
{
	int *v;
	int n;
	private: 
    //static const int marks = 4;
	char name[50];
	int semester;
	//int mark[marks];
public:
	stud();
	stud(int, int*);
	stud(char *, int );
	~stud();
	void show();
	void init(); 
    
};
void exam();
Код:
#include <iostream>
#include "cl_stud.h"
#include <locale.h>
using namespace std;



stud::stud()
{
	strcpy(name, "");	
	semester=0;

}

stud::stud(int nn, int *vv)
{
	nn=4;
	n=nn;
	v=new int[n];
		for(int i=0; i<n; i++)
			*(v+i)=*(vv+i);

}
stud::~stud()
{
}
void stud::init()
{
	setlocale(LC_ALL, "rus");
	std::cout<<"Введите фамилию студента: ";
	std::cin>>name;
	std::cout<<"Введите номер семестра: ";
	std::cin>>semester;
}

void stud::show()
{
	setlocale(LC_ALL, "rus");
	std::cout<<"Студент: "<<name<<std::endl;
	std::cout<<"Семестр: "<<semester<<std::endl;
}
Код:
#include <iostream>
#include "cl_stud.h"
#include <locale.h>

int main()
{
	setlocale(LC_ALL, "rus");
	stud worker;
	int *p;
	p=new int [3];
	for(int i=0; i<3; i++)
	{
	worker.init();
	}
	for(int i=0; i<3; i++)
	{
	worker.show();
	}
	system("pause");
}
И там написано типа создать несколько объектов и массив объектов, можно ли сделать так, чтобы эти все ф-ции в объект внести, и потом тупо его выводить через цикл, чтоб кол-во студентов вводить. И ещё, чтобы потом удобно было делать перегрузку операций, бо вот некст лаба: Для объектов разработанного класса Stud добавить следующие перегрузки операций:
++a - увеличивает первую и вторую оценки на один балл;
a++ - увеличивает третью и четвертую оценки на один балл;
с= a>b; - из 2 объектов a и b выбирается тот, который соответствует студенту с лучшими результатами за сессию;
a+=1; - выполняет перевод студента на следующий семестр учебы если все оценки за семестр не менее 4 баллов.
Ladis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вебсервер с внешней программой ArvI ASP.NET 3 15.02.2012 11:35
Работа с внешней dll Jrcfyf C# (си шарп) 6 20.01.2012 18:07
Связывание с внешней БД voam Microsoft Office Access 11 30.12.2009 18:25
Паскаль ООП. Примеры программ с использованием ООП SeЯgey Помощь студентам 5 13.05.2009 21:55