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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2009, 05:56   #1
and77k
 
Регистрация: 23.11.2009
Сообщений: 5
Вопрос Помощь по функциям С++

Преподы требуют написать программу по их шаблонам.
Не могу написать следующие функции:
Код:
int Group::Size() //возвращает длину массива
Код:
void PutPerson(int i, Person& man)// заносит объект man типа Person в массив
Код:
Person& GetPerson(int i)// возвращает объект Person из массива.
Вот моя программа:
LAB2.rar
Помогите написать.
and77k вне форума Ответить с цитированием
Старый 04.12.2009, 16:53   #2
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

Код программы желательно выложить здесь.
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума Ответить с цитированием
Старый 07.12.2009, 08:59   #3
and77k
 
Регистрация: 23.11.2009
Сообщений: 5
По умолчанию

Вот моя программа:
Код:
Croup.cpp
#include"group.h"
#include"person.h"

// инициализация и выделение памяти объекта
Group::Group(int Saze_array){
pGroup = new Person[Saze_array];
}
// удаление объекта
Group::~Group(){
	delete [] pGroup;
}
void Group::Print()
	int i; 
	for (i=0,i<=Saze_array,i++)	   
   { 
      cout << "Namber: " << Group[i].namber << endl; 
	  cout << "Name: " << Group[i].name << endl;
      cout << "Sex: " << Group[i].sex << endl;
	  cout << "Age: " << Group[i].age << endl;
 
   }

	int Group::Size()
	{
		sizeof(Group)/sizeof(int *)//по размеру массива
		return Saze;
	};
void PutPerson(int i, Person& man)

Person& GetPerson(int i)
Person.cpp

// конструктор
Person::Person(){
  namber=0; 	
  name="";
  sex=0;
  age=0.0;
}

// конструктор с параметрами
Person::Person(int nam,char *n,bool s,double a){
  namber=nam;
  name= new char[strlen(n)+1];
  strcpy(name,n);
  sex=s;
  age=a;
}

// деструктор
Person::~Person(){
  delete[] name;

} 
// Функция вывода на экран  
void Person::Print()
	   
   { 
      cout << "Namber: " << namber << endl; 
	  cout << "Name: " << name << endl;
      cout << "Sex: " << sex << endl;
	  cout << "Age: " << age << endl;
 
   }
// функция ввода данных
void Person::Input()
{
	int i;
	  cout << "Namber: ";
	  cin >>Person::namber;
	  cout << "Name: ";
	  cin >>Person::name;
      cout << "Sex: 0-man,1-women"; 
			cin >> i;
			i=Person::sex;
	  cout << "Age: "; 
	  cin >>Person::age;
	  
}
main.cpp

// Лабораторная работа №2
#include <iostream.h> 
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include "person.h"
#include "group.h"

void main() 

{
	


system("Pause");  		
}

Group.h
class Group {
private:
	// переменная для размера массива
	int Saze_array;
	// массив 
	Group[Saze_array];
	// указатель на массив
	Person *pGroup;
	 
public:
	// конструктор
	Group( int Saze_array);
	// деструктор 
	~Group();
// Функция вывода на экран  
void Print();
// возвращает размер массива
int Size();
// запись объекта в массив
void PutPerson(int i, Persom& man);
// возвращает объект из массива
Person& GetPerson(int i);
};

person.h
class Person {
private:
    //переменная для номера
	int namber;
    // переменная для имени
    char* name;
	// переменная для пола
	bool sex;
    // переменная для возраста
    double age;
public:
    // конструктор с параметрами
    Person(int nam,char *n,bool s, double a);
    // конструктор
    Person();
    // деструктор
    ~Person();
public:
    // функция вывода данных 
void Print(); 
	// функция ввода данных
void Input();


};
Помогите новичку!!!!
and77k вне форума Ответить с цитированием
Старый 07.12.2009, 10:51   #4
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

Код:
	int Group::Size()
	{
		sizeof(Group)/sizeof(int *)//по размеру массива
		return Saze;
	};
Это что? Вы ввели приватную переменную для хранения длины массива.

Код:
class Group {
private:
	// переменная для размера массива
	int Saze_array;
	// массив 
	Group[Saze_array];
	// указатель на массив
	Person *pGroup;
Вот и возвращайте её:

Код:
	int Group::Size()
	{
		return Saze_array;
	}//!!! В реализации функций, точка с запятой после закрывающей скобки не ставится.
Дальше. Массив так не объявляется. Нужно указать тип элементов, которые будут храниться в нем. Во-вторых, если Вы в конструкторе динамически выделяете память, то не нужно объявлять статически массив заданного размера. Достаточно указателя на массив.

Код:
Person *pGroup;
Запись нового элемента в массив:

1. Проверка наличия памяти,
2. Запись в массив,
3. Увеличение счетчика элементов.
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума Ответить с цитированием
Старый 08.12.2009, 05:12   #5
and77k
 
Регистрация: 23.11.2009
Сообщений: 5
По умолчанию

Спасибо за подсказки!
Т.е. в массиве будут хранится элементы типа Person?
Буду дальше думать!
and77k вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cправочник по API функциям Seodaiter Win Api 2 01.08.2009 19:03
Пропала подсказка к функциям... TwiX Общие вопросы Delphi 2 01.08.2009 02:53
Вопрос по функциям Antowka Паскаль, Turbo Pascal, PascalABC.NET 6 08.12.2008 22:45
Литература по API-функциям SeregaIRK Компоненты Delphi 2 19.09.2008 08:27
Помощь по функциям JOFRIF Помощь студентам 4 13.05.2008 17:57