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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2012, 21:39   #1
Darcangel
Пользователь
 
Регистрация: 24.07.2009
Сообщений: 35
По умолчанию Необходимо участие опытных людей

Доброго времени суток. Дали мне код и говорят разберись
Задача заключается в описании что к чему и если есть ошибки указать и по возможности исправить
Зарание благодарен за Ваше внимание и помощь

Код:
#include <stdio.h>
#include <stdlib.h>		
#include <string.h> 		
#include <iostream.h>	
#include <fstream.h>	
#include <conio.h>	
#include <iomanip.h>	

enum dop_sr
	{ faks_modem = 0,
	  faks = 1,
	  modem = 2,
	  otsut = 3 };

class abonenti
	{
	public:
	abonenti () {
		memset(this -> familiya, 0, 10);
		this -> oplata = 0;
		this -> nomer = 0;
	}

char *viv_fam()
{ return this -> familiya; }
void vv_fam(char familiya[10])
{ strcpy(this -> familiya, familiya); }
float viv_nomer()
{ return this -> nomer; }
void vv_nomer(int nom)
{ this -> nomer = nom; }
int viv_oplata()
{ return this -> oplata; }
void vv_oplata(int oplata)
{ this -> oplata = oplata; }


private:
	char familiya[10];
	float oplata;
	int nomer;
	int Vvod();
};

class ATS : private abonenti
{
	private:
	enum dop_sr dopolnitelno;

	public:
	/*obrabotka dopolnitelnih ustroistv*/
	void Vvod_dop(char dopolnitelno[100] = "")
		{
		char temp[100];

		if (!strcmp(dopolnitelno, ""))
			{
			cin >> temp;
			}
		else
			{
			strcpy(temp, dopolnitelno);
			}
		if (!strcmp(temp, "faks_modem"))
			{
			 this -> dopolnitelno = faks_modem;
			}
		else
			{
			if (!strcmp(temp, "faks"))
				{
				this -> dopolnitelno = faks;
				}
				else
				{
				if (!strcmp(temp, "modem"))
					{
					this -> dopolnitelno = modem;
					}
					else
					{
					if (!strcmp(temp, "otsut"))
						{
						this ->dopolnitelno = otsut;
						}
						else
						{
						this -> dopolnitelno = faks_modem;
						}
					}
				}
			}
}

/*funkciya vivod dopolnitelnih ustroistv*/
void viv_dop()
	{
	if (this -> dopolnitelno ==  faks_modem) { cout << "faks_modem"; }
	if (this -> dopolnitelno ==  faks) { cout << "faks"; }
	if (this -> dopolnitelno ==  modem) { cout << "modem"; }
	if (this -> dopolnitelno ==  otsut) { cout << "otsut"; }
	}

/*funkciya vvod dannih*/
void Vvod()
	{
	char familiya[10];
	int nom;
	int oplata;
	char dopolnitelno[100];

	cout << "Vvedite familiyu abonenta:      ";
	cin >> familiya;  vv_fam(familiya);
	cout << "Vvedite nomer abonenta:         ";
	cin >> nom;  vv_nomer(nom);
	cout << "Vvedite razmer oplati:          ";
	cin >> oplata;  vv_oplata(oplata);
	cout << "Vvedite dopolnitelnie sredstva:\n";
	cout << "1-faks-modem, 2-faks, 3-modem, 4-otsutstvuet:";
	cin >> dopolnitelno;Vvod_dop(dopolnitelno);
	}

void Prosmotr(int id) {
	cout << "\r\nі" << setw(4) << id+1;
	cout << "і" << setw(10) << viv_fam();
	cout << "і" << setw(13) << viv_nomer();
	cout << "і" << setw(6)  << viv_oplata();
	cout << "і" << setw(13); viv_dop(); cout <<  "і";
	}

void Sohranenie(char filename[255])
	{
	ofstream  myfile;
	myfile.open(filename, ios::ate);
	myfile << this -> viv_fam() << ";"
	       << this -> viv_nomer() << ";"
	       << this -> viv_oplata() << ";"
	       << this -> dopolnitelno << endl;
	myfile.close();
	}

void Zapis_mas(char line[255])
	{
	char temp[10] = "";
	int familiya = 0;
	int oplata = 0;
	int nom = 0;
	int j = 0;

	for (int i = 0; i < 255; i++)
	{
		if (line[i] != ';' && line[i] != '\x0')
			{
			temp[j] = line[i]; j++;
			}
			else
			{
			if (familiya == 0) {
				vv_fam(temp);
				familiya++;
				memset(temp, 0, 10);
				j = 0;
				}
				else
				{
				if (nom == 0) {
					vv_nomer(atoi(temp));
					nom++;
					memset(temp, 0, 10);
					j = 0;
					}
					else
					{
					if (oplata == 0) {
						vv_oplata(atoi(temp));
						oplata++;
						memset(temp, 0, 10);
						j = 0;
						}
						else
						{
							switch(atoi(temp)) {
								case 0: Vvod_dop("faks_modem"); break;
								case 1: Vvod_dop("faks"); break;
								case 2: Vvod_dop("modem"); break;
								case 3: Vvod_dop("otsut"); break;
						}
						break;
					}
				}
			}
		}//if
	}//for
}

int p_fam(char familiya[10]) {
	if (!strcmp(familiya, viv_fam()))
	{
	return 1;
	}
	return 0;
	}

Последний раз редактировалось ACE Valery; 29.03.2012 в 17:16.
Darcangel вне форума Ответить с цитированием
Старый 29.03.2012, 15:53   #2
Darcangel
Пользователь
 
Регистрация: 24.07.2009
Сообщений: 35
По умолчанию

Код:
Viv_nom()
	{
	return viv_nomer();
	}

} mas_ats[150];

int Vvod()
	{
	int count;
	clrscr();
	cout << "Vvedite kolichestvo elementov:\n ";
	cin >> count;

	for(int i = 0; i < count; i++)
		{
		mas_ats[i].Vvod();
		cout << "---------------\r\n";
		}
	return count;
}

void Prosmotr(int count, int wait = 1)
	{
	clrscr();
	cout << "\r\n____________________________________________________";
	cout << "\r\nіNom і Familiya і    Oplata   і NomerіDopolnitelno і";
	cout << "\r\n____________________________________________________";
	for (int i = 0; i < count; i++)
		{
		mas_ats[i].Prosmotr(i);
			if (i + 1 != count)
			{
			cout << "\r\n____________________________________________________";
			}
		}
			cout << "\r\n____________________________________________________";
		       //	}
		if(wait)
		{
		getch();
		}
}

int Udalenie(int count) {
	clrscr();
	int id;
	Prosmotr(count, 0);
	cout << "\nVvedite nomer udaluaemoi zapisi: "; cin >> id;
	for (int i = id; i < count; i++)
		{
		mas_ats[i+1] = mas_ats[i + 2];
		}
	return count - 1;
}

void Sohranenie(int count) {
	clrscr();
	char filename[255];
	cout << "Vvedite imya faila:   ";
	cin >> filename;

	for (int i = 0; i < count; i++)
		{
		mas_ats[i].Sohranenie(filename);
		}

}

int Zapis_mas(int count = 0) {
	clrscr();
	char filename[255];
	cout << "Vvedite imya faila dlya otcritiya: ";
	cin >> filename;

	char line[255];

	ifstream myfile;
	myfile.open(filename);
		while (myfile.good())
			{
			myfile >> line;
			if (strlen(line))
				{
				mas_ats[count].Zapis_mas(line);
				count++;
				}
			}
	myfile.close();
	return count;
}

void Poisk(int count) {
	char search[10];
	int found = 0;
	clrscr();
	cout << "Vvedite familiu:\n ";
	cin >> search;

	for(int i = 0; i < count; i++)
		{
		if (mas_ats[i].p_fam(search))
			{
			found++;
			if (found == 1)
				{

				cout << "\r\n____________________________________________________";
				cout << "\r\nіNom і Familiya і    Oplata   і NomerіDopolnitelno і";
				cout << "\r\n____________________________________________________ґ";
				}
			if (found > 1)
				{
				cout << "\r\n____________________________________________________";
				}
			mas_ats[i].Prosmotr(i);
			}
		}

	if (found > 0)
		{
		cout << "\r\n____________________________________________________";
		}
		else
		{
		cout << "Po vashemy zaprosu nichego ne naideno!\n";
		}
		getch();
}

void sort_mas(int count)
	{
	ATS tmp;
	for (int i = 0; i < count; i++)
		{
		for (int j = 0; j < count - i - 1; j++)
			{
			if(mas_ats[j].Viv_nom() > mas_ats[j + 1].Viv_nom())
				{
				tmp = mas_ats[j];
				mas_ats[j] = mas_ats[j + 1];
				mas_ats[j + 1] = tmp;
				}
			}
		}

	Prosmotr(count);
	}

void Max_nom(int count)
	{
	float max = 0;
	for (int i = 1; i < count; i++)
		{
		if (mas_ats[i].Viv_nom() > mas_ats[max].Viv_nom())
			{
			max = i;
			}
		}

	clrscr();

	cout << "\r\n____________________________________________________";
	cout << "\r\nіNom і Familiya і    Oplata   і NomerіDopolnitelno і";
	cout << "\r\n____________________________________________________ґ";

	mas_ats[max].Prosmotr(max);
	cout << "\r\n____________________________________________________";
	getch();
}

int main() {
	int count;

	for (;;)
		{
		clrscr();
		cout << "_______________________________________\n";
		cout << "Vibirite nomer operacii, nagmite Enter:\n";
		cout << "_______________________________________\n";
		cout << "1 - Vvod dannih v massiv;\n";
		cout << "2 - Prosmotr elementov massiva;\n";
		cout << "3 - Udalenie zadannogo elementa;\n";
		cout << "4 - Sohranenie elementov v fail;\n";
	       //	cout << "5 - Zagruzka elementov iz faila\n";
		cout << "5 - Dobavlenie elementov iz faila;\n";
		cout << "6 - Otcheti;\n";
		cout << "7 - Vihod iz programmi.\n";
		cout << "_______________________________________\n";

		switch (getch())
			{
			case 49: count = Vvod(); break;
			case 50: Prosmotr(count); break;
			case 51: count = Udalenie(count); break;
			case 52: Sohranenie(count); break;
		      //	case 53: count = Zapis_mas(0); break;
			case 53: count = Zapis_mas(count); break;
			case 54: {
				clrscr();
				cout << "Vibirite deistvie:\n";
				cout << "1 - Poisk po familii;\n";
				cout << "2 - Sortirovka po nomeru;\n";
				cout << "3 - Poisk maksimalnogo elementa;\n";
				cout << "4 - Vernutsa v glavnoe menu.\n";

				switch(getch()) {
					case 49: Poisk(count); break;
					case 50: sort_mas(count); break;
					case 51: Max_nom(count); break;
					case 52: break;
				}
			} break;
			case 55: return 0;
		}

	}// endless for

}
ПРОДОЛЖЕНИЕ ТЕМЫ

Последний раз редактировалось ACE Valery; 29.03.2012 в 17:16.
Darcangel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Совет опытных и интересующихся Naatikin Помощь студентам 3 01.11.2010 10:08
требуются 2 опытных программиста puzik_off Свободное общение 35 07.06.2010 11:20