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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2008, 15:00   #11
ams007
Пользователь
 
Регистрация: 19.11.2008
Сообщений: 35
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Потому что вы неправильно присваваете строки друг другу. Я тут немного подправила, но только с родительским классом. Правда, я ничего не поняла, что же вы конкретно хотели от цикла, поэтому он у меня такой, как нравится мне. Внимательно читайте комментарии. Будут вопросы - задавайте.

Вот именно это я и имел в виду, когда говорил про то, что
char *str - эт указатель, а char str[100] к примеру - это уже строка.

И про присваиване( ! ) строк тоже верно - пользуйтесь ф-ями strcpy(), strstr(), strcat().

Т.е. в Березине читаем про массивы ,строки и указатели.

ЗЫ: в предыдущем посте имел в виду именно то, что надо было внимательнее читать про то, что собирались сделать. С уважением, Ams
ams007 вне форума Ответить с цитированием
Старый 20.11.2008, 16:03   #12
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Счастье

Помощь еще нужна?!?!?!
Запросто помогу если надо!
StarWorm вне форума Ответить с цитированием
Старый 21.11.2008, 18:01   #13
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

конечно помощь нужна. Весь день пухтела и так и не добилась своего.
расскажу по порядку.
Цитата:
Правда, я ничего не поняла, что же вы конкретно хотели от цикла, поэтому он у меня такой, как нравится мне
ну в принципе основной смысл того что не получается это чтобы рядом со словом название появлялось название введенное с клавиатуры. А в общем должно постоянно вверху висеть надпись со списком учебных заведений с указанием типов и образований,к которым присваивается название. я на паскале сначала делала и все получилось. программу приложила для того чтоб наглядно видно было что я пытаюсь сделать на си. я все никак не могу видимо от логики паскаля отойти.

если все свои указатели * убираю и делаю char nn[100], то тогда у меня компилятор ругается на void _wkola::init()
Код:
{

		       t = ":wkola" ;
		       o = " srednee";

			}
а мне обязательно нужно именно в процедуре инициализации присвоить этим переменным буквенные значения.

про библиотеки. там есть лишние но у меня без библиотеки #include <string.h> ругаются на strcpy(n,nn); .а подключив ее все нормально, но присваивание все равно не получается. вместо моих букв введенных с клавы высвечиваются какие то сердечки и иероглифы, а иногда и какая то информация про билдер. из-за чего это?

ACE Valery, спаисбо огромное!
и все ранво ваша программа запускается и присвает,а я свою постаралась так же сделать и у меня вместо присвоенных букв иероглифы и сердечки.
оставила указатели *, т.к. в случае с char n[100] ругается.
может я еще что то упустила?
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 21.11.2008, 18:02   #14
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

Код:

#include <dos.h>
#include <iostream.h>
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#include <conio.h>
#include <string.h>
#include <windows.h>


	class	_uchebzaved
	{
		 public:
		char* n;
		char* o;
		char* t;




	       //	void getnazvanie(char* nn);

		void setnazvanie(char* nn);
		void gettip(char* nt);

		void getobrazovanie(char* no);
		void print();



		void init();



	};


	void _uchebzaved::init( )
		{
			n = new char[100];
			


			}

      //	void _uchebzaved::getnazvanie(char* nn)
      //	{
		    // nn = n;
	       //
			

		      //	}



	void _uchebzaved::setnazvanie(char* nn )
	{


		    strcpy(n,nn);



}



	void _uchebzaved::gettip(char* nt)
	{
		    nt = t;



}




	void _uchebzaved::getobrazovanie(char* no)
	{
		     no = o;



}






	void _uchebzaved::print()
	{
		    cout << " Uchebnoe zavedenie: ";
		    cout << t;
		    cout << " Obrazovanie";

		    cout << o;
		    cout << "\n Nazvanie:";
		    cout << n;



}

		class	_wkola: public _uchebzaved
	{



		 public:

		void init();

	};

	 void _wkola::init()
		{

		       t = ":wkola" ;
		       o = " srednee";

			}

		class	_vuz: public _uchebzaved
	{



		 public:
		 char* d;

		void init();
		void getdekan(char* nd);
		void setdekan(char* nd);
		void print();
	};

	 void _vuz::init()
		{
		       t = " tip: vuz";
		       o = " obrazovanie: viswee/viswee aspirantskor";

			}

	    void _vuz::getdekan(char* nd)
	      {
		   nd = d;


	      }

	    void _vuz::setdekan(char* nd)
	      {
		   d = nd;


	      }


	    void _vuz::print()
	      {
			    cout << "\n Uchebnoe zavedenie: ", t,"Obrazovanie",o;
		    cout << "\n Nazvanie:", n;
		      cout << "\n Dekan:", d;

	      }



		class	_univer: public _vuz
	{



		 public:

		void init();
		void print();

	};

	 void _univer::init()
		{
		       t = "vuz" ;
		       o = "viswee/viswee aspirantskoe";

			}

	    void _univer::print()
	      {
			    cout << "\n Uchebnoe zavedenie: ", t,"Obrazovanie",o;
			    cout << t;
			    cout << " Obrazovanie: ";
			    cout << o;
		    cout << "\n Nazvanie:";
		    cout << n;
		      cout << "\n Dekan:";

		      cout << d;

	      }

		class	_institut: public _vuz
	{



		 public:

		void init();
                void print();

	};

	 void _institut::init()
		{
		       t = "vuz";
		       o = "viswee";

			}


	    void _institut::print()
	      {
			    cout << "\n Uchebnoe zavedenie: ", t,"Obrazovanie",o;
			     cout << t;
			    cout << " Obrazovanie: ";
			    cout << o;
		   cout << "\n Nazvanie:";

		   cout << n;


				      cout << "\n Dekan:";
				      cout<< d;

	      }

	 typedef _uchebzaved *Uchebzaved;

	 typedef _wkola *Wkola;
	 typedef _vuz *VUZ;
	 typedef _univer *Univer;
	 typedef _institut *Institut;

void main()
{
	char*  nn;

		char*  nt;
			char*  no;
int input;
//char* nn = new char[100];
char* input_str;
int input_int;
  clrscr;
input = 0;

	     Uchebzaved  object = new _uchebzaved;

			Wkola object1 = new _wkola;

		Univer object2 = new _univer;

	Institut object3 = new _institut;



		object->init();
		object1->init();
		object2->init();
		object3->init();

while ( input != 11)

		     {
			object1->print();

		object2->print();
		
		object3->print();
      {
	cout<< " \n1. ystanovit nazvanie wkoli /  2. ystanovit nazvanie universiteta";
	cout<<  "\n 3. ystanovit nazvanie instituta / 4. ystanovit Dekana universiteta";
	cout<< "\n 5. ystanovit Dekana instituta / 6. ystanovit Uklon wkoli";
	cout<< "\n 7. ystanovit kolichestvo kafedr Universiteta / 8. ystanovit specializaciu aspiranturi Universiteta";
	cout<< "\n 9. ystanovit kolichestvo fakultetov Instityta / 10. ystanovit laboratoriuy Instituta";
	cout<< "\n 11. exit \n";
	  cin >> input;

switch (input)

{


case 1:


	cout<< "vvedite nazvanie: ";
cin >> input_str;

object->setnazvanie(nn);
break;

case 2:
 

	cout<< "vvedite nazvanie: ";
cin >> input_str;

object1->setnazvanie(nn);

break;

case 3:
 

	cout<< "vvedite nazvanie: ";
cin >> input_str;

object3->setnazvanie(nn);

break;

		
		

 }
 }
 }
 }
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 21.11.2008, 18:02   #15
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

вложение почему то вкладываться не хочет, приеду домой тогда приложу.
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 21.11.2008, 19:16   #16
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Насчет русского языка - я же говорила:
Код:
//следующие две строки для подключения русского языка 
//если он все-таки не отображается, то в запущенной программе
//правой кнопкой мыши щелкните на заголовке окна, выберите пункт
//меню "Свойства", вкладку "Шрифт" и выставите шрифт Lucida Console
           SetConsoleCP(1251); 
	SetConsoleOutputCP(1251);
Если же в билдере такое реализовать нельзя, то воспользуйтесь поиском по форуму. Проблема отображения русских букв тут обсуждалась приличное количество раз, и было дано много вариантов ее решения.
Насчет программы - сейчас попробую посмотреть.
Насчет форматирования кода и именования переменных - буду бить, сильно, больно и с пристрастием. У меня полчаса только на расстановку вашего кода уходит.

Вот вроде все. 100% правильность не гарантирую. Будут ошибки - жалуйтесь
Цитата:
Сообщение от Барби Посмотреть сообщение
и все ранво ваша программа запускается и присвает,а я свою постаралась так же сделать и у меня вместо присвоенных букв иероглифы и сердечки.
может я еще что то упустила?
Да, и очень многое(например, конструктор и несколько тем в учебнике - про строки, указатели и классы). Сейчас выложу переделанный код(простите, но мои нервы не выдержали и переменные я все-таки переобозвала по-своему).
Код:
#include <dos.h>
#include <iostream.h>
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#include <conio.h>
#include <string.h>
#include <windows.h>

class CEdInst //educational institution - учебное заведение
{
protected:
	char* m_name; //название
	char* m_education; //образование, которое дает учебное заведение
	char* m_type; //тип учебного заведения

public:
	CEdInst(); //конструктор
	//следующие две функции ОБЯЗАТЕЛЬНО нужны, если мы используем 
	//динамическую память(указатели)
	CEdInst(const CEdInst &obj); //конструктор копирования
	~CEdInst(); //деструктор
	
	char* getName();
	char* getEducation();
	char* getType();

	void setName(char* name);
	void setEducation(char* education);
	void setType(char* type);
		
	void Print();
};

//конструктор - функция, которая автоматически вызывается 
//при создании объекта
CEdInst::CEdInst()
{
	//ОБЯЗАТЕЛЬНО выделяем память под указатели!!!
	m_name = new char[100];
	m_education = new char[100];
	m_type = new char[100];

	strcpy(m_name, "Какое-то имя...");
	strcpy(m_education, "Какое-то образование...");
	strcpy(m_type, "Какой-то тип...");
}

//деструктор - функция, которая автоматически вызывается 
//при уничтожении объекта
CEdInst::~CEdInst()
{
	//ОБЯЗАТЕЛЬНО очищаем после себя память!!!
	delete [] m_name;
	delete [] m_education;
	delete [] m_type;
}

char* CEdInst::getName()
{
	return m_name;
}

char* CEdInst::getEducation()
{
	return m_education;
}

char* CEdInst::getType()
{
	return m_type;
}

void CEdInst::setName(char* name)
{
	strcpy(m_name, name);
}

void CEdInst::setEducation(char* education)
{
	strcpy(m_education, education);
}

void CEdInst::setType(char* type)
{
	strcpy(m_type, type);
}

void CEdInst::Print()
{
	cout<<"Тип учебного заведения: "
		<<m_type
		<<"\nНазвание учебного заведения: "
		<<m_name
		<<"\nОбразование: "
		<<m_education
		<<endl;
}


class CSchool: public CEdInst
{
public:
	CSchool();
};

CSchool::CSchool()
{
	CEdInst::CEdInst();
	strcpy(m_type, "Школа");
	strcpy(m_education, "Среднее");
}


void main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	int input = 0;
	char* nn = new char[100];
	
	CEdInst* edInst = new CEdInst;
	CSchool* school = new CSchool;

	while ( input != 11)
	{
		clrscr;

		edInst->Print();
		cout<<endl;
		school->Print();
		cout<<endl<<endl;

		cout<<"\t\t МЕНЮ";
		cout<< " \n1. Установить название какого-то учебного заведения\n";
		cout<< " \n2. Установить название школы\n";
		cout<< "\n11. Выход \n";
		cin >> input;
		switch (input)
		{
		case 1:
			cout<< "Введите название: ";
			cin >> nn;
			edInst->setName(nn);
			break;
		case 2:
			cout<< "Введите название: ";
			cin >> nn;
			school->setName(nn);
			break;
		 }
	}

	delete edInst;
	delete school;
 }
Остальные учебные заведения остается сделать по аналогии. Только попытайтесь не мой код изменять в соответствие с вашим, а ваш в соответствие с моим.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 21.11.2008 в 20:26.
ACE Valery вне форума Ответить с цитированием
Старый 21.11.2008, 23:11   #17
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

Цитата:
Если же в билдере такое реализовать нельзя
ехав в электричке домой, я осознала что я не в билдере,а в борланде пытаюсь написать. просто программа называется bc ну и я видимо от того что слово билдер я лучше выговариваю и стала ее так неправильно называть.

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

Цитата:
Только попытайтесь не мой код изменять в соответствие с вашим, а ваш в соответствие с моим.
а я всегда роюсь имеено в том что сама написала, мне ведь интересно поправить свои ошибки, а не взять просто чужой код. на выходных постараюсь сделать и выложу. спаисбо огромное за помощь и подсказки.
Вложения
Тип файла: rar WKOLA.rar (1.2 Кб, 8 просмотров)
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 01.12.2008, 13:55   #18
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

код успешно дописала, но попытавшись ввести вирутальную функцию компилятор снова ругается и причем не понимаю почему. Может кто заметил,где накосячила
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 01.12.2008, 13:56   #19
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

Код:
#include <dos.h>
#include <iostream.h>
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#include <conio.h>
#include <string.h>
#include <windows.h>

class _uchebzaved
{
public:
	char* n; 
	char* o; 
	char* t; 


	_uchebzaved(); 
	
	_uchebzaved(const _uchebzaved &obj); 
	~_uchebzaved(); 
	
	char* getnazvanie();
	char* getobrazovanie();
	char* gettip();

	void setnazvanie(char* nazvanie);
	void setobrazovanie(char* obrazovanie);
	void settip(char* tip);
		
       virtual 	void Print();
};

_uchebzaved::_uchebzaved()
{
	n = new char[100];
	o = new char[100];
	t = new char[100];

	strcpy(n, "");
	strcpy(o, "obrazovanie");
	strcpy(t, "tip");
}


_uchebzaved::~_uchebzaved()
{
	
	delete [] n;
	delete [] o;
	delete [] t;
}

char* _uchebzaved::getnazvanie()
{
	return n;
}

char* _uchebzaved::getobrazovanie()
{
	return o;
}

char* _uchebzaved::gettip()
{
	return t;
}

void _uchebzaved::setnazvanie(char* nazvanie)
{
	strcpy(n, nazvanie);
}

void _uchebzaved::setobrazovanie(char* obrazovanie)
{
	strcpy(o, obrazovanie);
}

void _uchebzaved::settip(char* tip)
{
	strcpy(t, tip);
}

void _uchebzaved::Print()
{
	cout<<"tip uchebnogo zavedeniya "
		<<t
		<<"\nnazvanie: "
		<<n
		<<"obrazovanie: "
		<<o
		<<endl;
}
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Старый 01.12.2008, 13:57   #20
Барби
Форумчанин
 
Аватар для Барби
 
Регистрация: 19.12.2007
Сообщений: 159
По умолчанию

Код:
class wkola: public _uchebzaved
{
public:
	wkola();

	wkola(const wkola &obj);
	~wkola();
        char* u;
	char* getuklon();
	void setuklon(char* uklon);
      	void Print();

};

wkola::wkola()
{
	u = new char[100];
	_uchebzaved::_uchebzaved();
	strcpy(t, "wkola");
	strcpy(o, "srednee");
	strcpy(u, ""); 

}
wkola::~wkola()
{
	
	delete [] u;


}
char* wkola::getuklon()
{
	return u;
}


void wkola::setuklon(char* uklon)
{
	strcpy(u, uklon);
}

void wkola::Print()
{
	cout<<"tip uchebnogo zavedeniya "
		<<t
		<<"\nnazvanie: "
		<<n
		<<"obrazovanie: "
		<<o		
		<<"\n   uklon: "
		<<u
		<<endl;
}


class vuz: public _uchebzaved
{
public:
	vuz(); 
	
	vuz(const vuz &obj); 
	~vuz(); 
	char* d;
	char* getdekan();

	void setdekan(char* dekan);
	   	void Print();



};

vuz::vuz()
{
	d = new char[100];

	_uchebzaved::_uchebzaved();
	strcpy(t, "vuz");
	strcpy(o, "viswee/aspirantskoe");
	strcpy(d, "");
	

}

vuz::~vuz()
{
	
	delete [] d;
	
}

char* vuz::getdekan()
{
	return d;
}
void vuz::setdekan(char* dekan)
{
	strcpy(d, dekan);
}

void vuz::Print()
{
	cout<<"tip uchebnogo zavedeniya "
		<<t
		<<"\nnazvanie: "
		<<n
		<<"   obrazovanie: "
		<<o
		<<"    dekan: "
		<<d
		<<endl;
}


class univer: public vuz
{
public:
	univer();

	univer(const univer &obj); 
	~univer(); 
	char* k;
	char* a;
	char* getkaf();
	char* getasp();
	void setkaf(char* kaf);
	void setasp(char* asp);
      	void Print();



};

univer::univer()
{


	_uchebzaved::_uchebzaved();
	strcpy(t, "vuz/univer");
	strcpy(o, "viswee aspirantskoe");
	strcpy(d, "");
	strcpy(k, "");
	strcpy(a, "");

}

univer::~univer()
{
	
	delete [] k;
	delete [] a;

	
}

char* univer::getkaf()
{
	return k;
}
void univer::setkaf(char* kaf)
{
	strcpy(k, kaf);
}


char* univer::getasp()
{
	return a;
}
void univer::setasp(char* asp)
{
	strcpy(a, asp);
}
void univer::Print()
{

	cout<<"tip uchebnogo zavedeniya "
		<<t
		<<"\nnazvanie: "
		<<n
		<<"   obrazovanie: "
		<<o
		<<"\ndekan: "
		<<d
		<<"     Kafedri: "
		<<k
		<<"     Aspirantura: "
		<<a
		<<endl;
}
Пока ремонтируют кукольный домик, живу на форуме.
Барби вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите убрать пустое место sstyle HTML и CSS 15 01.03.2010 16:58
Помогите убрать последствия вируса N!ckeL Безопасность, Шифрование 4 28.05.2008 16:55
Простые лабораторные работы на борланд делфи 7 (оплата веб мани) Eternity Помощь студентам 1 06.06.2007 13:36
подпрограмма в Борланд Паскаль Jasper Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2006 20:40