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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2009, 16:22   #1
ge4r
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию Классы и структуры С++

День добрый
Нужны несколько подсказок\направляющих толчков и тп

Код:
#include "stdafx.h"

struct Student
{
    char* Name;
    double MeanMark;
    int Group;
};

class CStudentList
{
public:
    void AddTail (const Student& src);
    void AddHead (constStudent& src);
    int GetCount () const;
    void InsertAt (int nIndex,const Student& src);
    void RemoveAt (int nIndex);
    Student GetAt (int nIndex) const;
};



int _tmain(int argc, _TCHAR* argv[])
{
     
    return 0;
}

вот,описал структуру студент и класс

теперь вопросы:
методы описываются как и в паскале, просто процедурами функциями?
как в спп работать с динамической структурой данных...точнее интересует синтаксис,ибо с указателями и дин.массивами уже работа
ge4r вне форума Ответить с цитированием
Старый 16.10.2009, 18:01   #2
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
методы описываются как и в паскале, просто процедурами функциями?
В С++ нет процедур, только функции, хотя функция которая не возвращает значение в какой-то мере пародия на процедуру.

Цитата:
как в спп работать с динамической структурой данных...точнее интересует синтаксис,ибо с указателями и дин.массивами уже работа
Ну например выделяем память для указателя на структуру
Код:
Student *stud=new Student;
...
delete stud;
Или для указателя на объек класса CStudentList

Код:
CStudentList *stud=new CStudentList;
...
delete stud;

Последний раз редактировалось profi; 16.10.2009 в 18:05.
profi вне форума Ответить с цитированием
Старый 16.10.2009, 18:44   #3
ge4r
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию

спс,буду пробовать...)
ge4r вне форума Ответить с цитированием
Старый 18.10.2009, 13:11   #4
ge4r
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 18
По умолчанию

помогите,пожалуйста найти косяк...он где-то в функции ремув

Код:
// KT_Lab_2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

struct CStudent
{
	char src_Name[30];
	int src_AvBall, src_NumGroup;
	CStudent *src_Link;
	CStudent ();
};

class CStudentList
{
	private:
		CStudent *CStdList_Head;
		CStudent CStdList_NULL;
	public:
		CStudentList ();
		~CStudentList ();
		void AddTail (const CStudent &src);
		void AddHead (const CStudent &src);
		int GetCount () const;
		int InsertAt (int nIndex, const CStudent &src);
		int Remove (int nIndex);
		CStudent GetAt (int nIndex);
};

CStudent::CStudent ()
{
	src_Link = NULL;
}

CStudentList::CStudentList ()
{
	CStdList_Head = NULL;
	memcpy(CStdList_NULL.src_Name, "empty", 6);
	CStdList_NULL.src_AvBall = -1;
	CStdList_NULL.src_NumGroup = -1;
	CStdList_NULL.src_Link = NULL;
};

CStudentList::~CStudentList ()
{
	CStudent *CStdList_Temp = CStdList_Head;
	while (CStdList_Head != NULL)
		{
			CStdList_Head = CStdList_Head->src_Link;
			delete CStdList_Temp;
			CStdList_Temp = CStdList_Head;
		}
};

void CStudentList::AddTail (const CStudent &src)
{
	CStudent *CStdList_Temp = CStdList_Head;
	if (! CStdList_Temp)
	{
		CStudent *CStdList_Head = new CStudent;
		*CStdList_Head = src;
	} else
	{
	while (CStdList_Temp->src_Link != NULL)
		CStdList_Temp = CStdList_Temp->src_Link;
	CStudent *CStdList_New = new (CStudent);
	*CStdList_New = src;
	CStdList_Temp->src_Link = CStdList_New;
	}
};

void CStudentList::AddHead (const CStudent &src)
{
	CStudent *CStdList_Temp = CStdList_Head;
	CStudent *CStdList_New = new (CStudent);
	*CStdList_New = src;
	CStdList_New->src_Link = CStdList_Temp;
	CStdList_Head = CStdList_New;
};

int CStudentList::GetCount() const
{
	int CStdList_Count = 0;
	CStudent *CStdList_Temp = CStdList_Head;
	while (CStdList_Temp != NULL)
	{
		CStdList_Temp = CStdList_Temp->src_Link;
		CStdList_Count++;
	};
	return (CStdList_Count);
};

int CStudentList::InsertAt (int nIndex, const CStudent &src)
{
	int i=0;
	
	
		CStudent *CStdList_Temp = CStdList_Head;
		CStudent *CStdList_Temp2;
		if (CStdList_Temp->src_Link == NULL) return -1;
		else
		{
		
		while ((i != nIndex) && (CStdList_Temp->src_Link != NULL))
	
	{
		i++;
		CStdList_Temp2 = CStdList_Temp;
		CStdList_Temp = CStdList_Temp->src_Link;
	}
		}
	if (i == nIndex)
	{
		CStudent *CStdList_New = new (CStudent);
		*CStdList_New = src;
		CStdList_Temp2->src_Link = CStdList_New;
		CStdList_New->src_Link = CStdList_Temp;
		return 0;
	}
	else
	{
	return -1;
	}
};

int CStudentList::Remove (int nIndex)
{
	int i=0;
	CStudent *CStdList_Temp = CStdList_Head;
	CStudent *CStdList_Temp2;
	if (CStdList_Temp->src_Link == NULL) return -1; //си матерится на эту строку
		else
		{
	while ((i != nIndex) && (CStdList_Temp->src_Link != NULL))
	{
		i++;
		CStdList_Temp2 = CStdList_Temp;
		CStdList_Temp = CStdList_Temp->src_Link;
	}
		}
	if (i == nIndex)
	{
		CStdList_Temp2->src_Link = CStdList_Temp->src_Link;
		delete (CStdList_Temp);
		return 0;
	}
	else
	{
	return -1;
	
	}
};

CStudent CStudentList::GetAt (int nIndex)
{
	int i=0;
	CStudent *CStdList_Temp = CStdList_Head;
	while ((i != nIndex) && (CStdList_Temp->src_Link != NULL))
	{
		i++;
		CStdList_Temp = CStdList_Temp->src_Link;
	}
	if (i == nIndex)
	{
		return *CStdList_Temp;
	}
	else
	{
	return CStdList_NULL;
	}
};

void Insert (CStudent &src)
{
	printf ("Creating new record.\n");
	printf ("Insert a name: ");
	scanf ("%s", src.src_Name);
	printf ("Insert an average ball: ");
	scanf ("%d", &src.src_AvBall);
	printf ("Insert a number of group: ");
	scanf ("%d", &src.src_NumGroup);
	printf ("Creating completed.\n");
};

void View (const CStudent &src)
{
	printf ("Student %s.\n",src.src_Name );
	printf ("Average ball: %d.\n",src.src_AvBall);
	printf ("Number of group: %d.\n",src.src_NumGroup);
};
ge4r вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы StudentPolitech Общие вопросы C/C++ 2 27.05.2009 22:44
Классы в С++ Stager Помощь студентам 4 05.05.2009 10:05
классы elenSV Помощь студентам 0 01.05.2009 19:33
классы ShenDy Общие вопросы C/C++ 1 12.04.2008 14:01