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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2010, 13:44   #1
kolyan_zver
 
Регистрация: 12.06.2010
Сообщений: 9
По умолчанию КЛАССЫ В С++

Задание такое:
Программа обработки данных некоторого экскурсионного бюро. Известна информация про экскурсии (название экскурсии, время отправления, вид транспорта, максимально возможное кол-во человек в группе, продолжительность экскурсии, цена экскурсии).
В задание входит:
организовать возможность
- поиска данных про экскурсию за временем отправления;
- поиска данных про экскурсию за ее названием;
- сортировка данных про экскурсию за ценой.
Код:
#include "stdafx.h"
#include <iostream>
#include <fstream> 
#include <io.h> 
using namespace std;


struct exc{
	char     name[30];
	int		 hour;
	int      minute;
	char     transport[30];
	int      maxpeople;
	float    time;
	int      price;
}excursion;


bool FileExists(const char *fname)
{                 
			  return access(fname, 0) != -1; 
			}                              

void print(exc i1)
{
	setlocale(0,"Rus");
	char str8[] = "Название:";
	char str9[] = "Время отправления (часы): ";
	
	char str10[] = "Время отправления (минуты):";
	
	char str11[] = "Тип транспорта:";
	
	char str12[] = "Максимальное количество человек:";
	
	char str13[] = "Продолжительность (часы):";
	
	char str14[] = "Стоимость экскурсии: ($-USD):";
	
	cout<<str8<<endl;
	cout<<i1.name<<endl;
	cout<<str9<<endl;
	cout<<i1.hour<<endl;
	cout<<str10<<endl;
	cout<<i1.minute<<endl;
	cout<<str11<<endl;
	cout<<i1.transport<<endl;
	cout<<str12<<endl;
	cout<<i1.maxpeople<<endl;
	cout<<str13<<endl;
	cout<<i1.time<<endl;
	cout<<str14<<endl;
	cout<<i1.price<<endl;
	cout<<"*****************"<<endl;
}

void Add()
{
	setlocale(0,"Rus");
	char str7[] = "Добавление экскурсии:";
	
	char str8[] = "Название:";
	
	char str9[] = "Время отправления (часы): ";
	
	char str10[] = "Время отправления (минуты):";
	
	char str11[] = "Тип транспорта:";
	
	char str12[] = "Максимальное количество человек:";
	
	char str13[] = "Продолжительность (часы):";
	
	char str14[] = "Стоимость экскурсии ($-USD):";
	
	cout<<str7<<endl;
	

	
	cout<<str8<<endl;
	scanf("%s",excursion.name);
	cout<<str9<<endl;
	scanf("%d", &excursion.hour);
	cout<<str10<<endl;
	scanf("%d", &excursion.minute);
	cout<<str11<<endl;
	scanf("%s", &excursion.transport);
	cout<<str12<<endl;
	scanf("%d", &excursion.maxpeople);
	cout<<str13<<endl;
	scanf("%f", &excursion.time);
	cout<<str14<<endl;
	scanf("%d", &excursion.price);
    fstream f("file.dat",ios::app|ios::out);
    f.seekp(0,ios::end);
    f.write((char*)&excursion,sizeof excursion);
    f.close();
}
void sort()
{
	exc* i1;
	exc  tmp1, tmp2;
	int  col;
	if (!FileExists("file.dat")) return;
    fstream f("file.dat",ios::in);
    f.seekp(0,ios::beg);
	col = 0;
	while(!f.eof()){
		f.read((char*)&tmp1,sizeof tmp1);
		if (f.eof()) break;
		col++;
	}
	i1 = new exc[col];
	f.close();
    fstream d("file.dat",ios::in);
    d.seekp(0,ios::beg);
	int i = 0;
	while(!d.eof()){
		d.read((char*)&i1[i],sizeof i1[i]);
		if (d.eof()) break;
		i++;
	}
	bool ind = true;
	while (ind)
	{
		ind = false;
		for(i=0; i<(col-1); i++)
		{
			if(i1[i].price>i1[i+1].price)
			{
				tmp2.hour = i1[i].hour;
				tmp2.maxpeople = i1[i].maxpeople;
				tmp2.minute = i1[i].minute;
				strcpy(tmp2.name,i1[i].name);
				tmp2.price = i1[i].price;
				tmp2.time = i1[i].time;
				strcpy(tmp2.transport,i1[i].transport);
				
				i1[i].hour = i1[i+1].hour;
				i1[i].maxpeople = i1[i+1].maxpeople;
				i1[i].minute = i1[i+1].minute;
				strcpy(i1[i].name,i1[i+1].name);
				i1[i].price = i1[i+1].price;
				i1[i].time = i1[i+1].time;
				strcpy(i1[i].transport,i1[i+1].transport);

				i1[i+1].hour = tmp2.hour;
				i1[i+1].maxpeople = tmp2.maxpeople;
				i1[i+1].minute = tmp2.minute;
				strcpy(i1[i+1].name,tmp2.name);
				i1[i+1].price = tmp2.price;
				i1[i+1].time = tmp2.time;
				strcpy(i1[i+1].transport,tmp2.transport);
				ind = true;
			}
		}
	}
	for(i=0; i<col; i++)
	{
		print(i1[i]);
	}
	d.close();
}
void SearchByName()
{
	setlocale(0,"Rus");
	if (!FileExists("file.dat")) return;
	exc i1;
	char name[30];
	char str7[] = "Поиск экскурсии по названию:";
	char str8[] = "Введите название:";
	cout<<str7<<endl;
	cout<<str8<<endl;
	cin>>name;
    fstream f("file.dat",ios::in);
    f.seekp(0,ios::beg);
	while(!f.eof()){
		f.read((char*)&i1,sizeof i1);
		if (f.eof()) break;
		if (strcmp(name,i1.name)==0) 
			print(i1);
	}
	f.close();
}
void SearchByTime(){
	setlocale(0,"Rus");
	if (!FileExists("file.dat")) return;
	exc i1;
	int hour,minute;
	char str7[] = "Поиск экскурсии по времени:";
	
	char str8[] = "Введите часы:";
	
	char str10[] = "Минуты:";
	
	cout<<str7<<endl;
	cout<<str8<<endl;
	scanf("%d", &hour);
	cout<<str10<<endl;
	scanf("%d", &minute);
    fstream f("file.dat",ios::in);
    f.seekp(0,ios::beg);
	while(!f.eof()){
		f.read((char*)&i1,sizeof i1);
		if (f.eof()) break;
		if (i1.hour==hour && i1.minute==minute) 
			print(i1);

Последний раз редактировалось Stilet; 29.09.2010 в 08:22.
kolyan_zver вне форума Ответить с цитированием
Старый 26.09.2010, 21:00   #2
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

Не знаю но ктото тисал подобный вопрос на этом форуме.
Я тогда скомпилировал исполнительный файл и отсылал этому гражданину из форума. У вас хоть в институте меняют задание...
Посмотри файлы прикрепил может измениш что
Вложения
Тип файла: rar листинг.rar (242.0 Кб, 15 просмотров)
всему свое время как зиме и весне
и каждому солнцу свой неба кусок
Assemblerru вне форума Ответить с цитированием
Старый 28.09.2010, 22:53   #3
kolyan_zver
 
Регистрация: 12.06.2010
Сообщений: 9
По умолчанию

спасибо конечно))) но я еще далеко от такого
kolyan_zver вне форума Ответить с цитированием
Старый 28.09.2010, 23:26   #4
kolyan_zver
 
Регистрация: 12.06.2010
Сообщений: 9
По умолчанию

У меня получилось, но выбивает 2 ошибки и не получается их исправить. Помогите пожалуйста, буду очень благодарен.


#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <io.h>


using namespace std;

class exc
{
public:
char name[30];
int hour;
int minute;
char transport[30];
int maxpeople;
float time;
int price;
void print(exc i1);
void Add();
void sort();
void SearcByName();
void SearchByTime();
};
exc::exc(char *name, int hour1, int minute1, char *transport, int maxpeople1, float time1, int price1)
:hour(hour1)
:minute(minute1)
:maxpeople(maxpeople1)
:time(time1)
rice(price1)
{
strcpy(this->name,name);
strcpy(this->transport,transport);
}

void exc:rint(exc i1)
{
setlocale(0,"Rus");
char str8[] = "Название:";

char str9[] = "Время отправления (часы): ";

char str10[] = "Время отправления (минуты):";

char str11[] = "Тип транспорта:";

char str12[] = "Максимальное количество человек:";

char str13[] = "Продолжительность (часы):";

char str14[] = "Стоимость экскурсии: ($-USD):";

cout<<str8<<endl;
cout<<i1.name<<endl;
cout<<str9<<endl;
cout<<i1.hour<<endl;
cout<<str10<<endl;
cout<<i1.minute<<endl;
cout<<str11<<endl;
cout<<i1.transport<<endl;
cout<<str12<<endl;
cout<<i1.maxpeople<<endl;
cout<<str13<<endl;
cout<<i1.time<<endl;
cout<<str14<<endl;
cout<<i1.price<<endl;
cout<<"*****************"<<endl;
}
void exc::Add()
{
setlocale(0,"Rus");
char str7[] = "Добавление экскурсии:";

char str8[] = "Название:";

char str9[] = "Время отправления (часы): ";

char str10[] = "Время отправления (минуты):";

char str11[] = "Тип транспорта:";

char str12[] = "Максимальное количество человек:";

char str13[] = "Продолжительность (часы):";

char str14[] = "Стоимость экскурсии ($-USD):";

cout<<str7<<endl;



cout<<str8<<endl;
scanf("%s",excursion.name);
cout<<str9<<endl;
scanf("%d", &excursion.hour);
cout<<str10<<endl;
scanf("%d", &excursion.minute);
cout<<str11<<endl;
scanf("%s", &excursion.transport);
cout<<str12<<endl;
scanf("%d", &excursion.maxpeople);
cout<<str13<<endl;
scanf("%f", &excursion.time);
cout<<str14<<endl;
scanf("%d", &excursion.price);
// создаём или открываем файл
fstream f("file.dat",ios::app|ios:ut);
// позиционируемся в конец файла
f.seekp(0,ios::end);
// добавляем новую структуру
f.write((char*)&excursion,sizeof excursion);
f.close();
}
void exc::sort()
{
exc* i1;
exc tmp1, tmp2;
int col;
if (!FileExists("file.dat")) return;
// создаём или открываем файл
fstream f("file.dat",ios::in);
// позиционируемся в начало
f.seekp(0,ios::beg);
// считаем количество структур
col = 0;
while(!f.eof()){
f.read((char*)&tmp1,sizeof tmp1);
if (f.eof()) break;
col++;
}
i1 = new exc[col];
f.close();
// создаём или открываем файл
fstream d("file.dat",ios::in);
// позиционируемся в начало
d.seekp(0,ios::beg);
int i = 0;
while(!d.eof()){
d.read((char*)&i1[i],sizeof i1[i]);
if (d.eof()) break;
i++;
}
//сортировка
bool ind = true;
while (ind)
{
ind = false;
for(i=0; i<(col-1); i++)
{
if(i1[i].price>i1[i+1].price)
{
tmp2.hour = i1[i].hour;
tmp2.maxpeople = i1[i].maxpeople;
tmp2.minute = i1[i].minute;
strcpy(tmp2.name,i1[i].name);
tmp2.price = i1[i].price;
tmp2.time = i1[i].time;
strcpy(tmp2.transport,i1[i].transport);

i1[i].hour = i1[i+1].hour;
i1[i].maxpeople = i1[i+1].maxpeople;
i1[i].minute = i1[i+1].minute;
strcpy(i1[i].name,i1[i+1].name);
i1[i].price = i1[i+1].price;
i1[i].time = i1[i+1].time;
strcpy(i1[i].transport,i1[i+1].transport);

i1[i+1].hour = tmp2.hour;
i1[i+1].maxpeople = tmp2.maxpeople;
i1[i+1].minute = tmp2.minute;
strcpy(i1[i+1].name,tmp2.name);
i1[i+1].price = tmp2.price;
i1[i+1].time = tmp2.time;
strcpy(i1[i+1].transport,tmp2.transport);
ind = true;
}
}
}
for(i=0; i<col; i++)
{
print(i1[i]);
}
d.close();
}
void exc::SearcByName()
{
setlocale(0,"Rus");
if (!FileExists("file.dat")) return;
exc i1;
char name[30];
char str7[] = "Поиск экскурсии по названию:";

char str8[] = "Введите название:";


cout<<str7<<endl;
cout<<str8<<endl;
cin>>name;
// создаём или открываем файл
fstream f("file.dat",ios::in);
// позиционируемся в начало
f.seekp(0,ios::beg);
// читаем первую записанную структуру
while(!f.eof()){
f.read((char*)&i1,sizeof i1);
if (f.eof()) break;
if (strcmp(name,i1.name)==0)
print(i1);
}
f.close();
}
kolyan_zver вне форума Ответить с цитированием
Старый 28.09.2010, 23:27   #5
kolyan_zver
 
Регистрация: 12.06.2010
Сообщений: 9
По умолчанию

void exc::SearchByTime()
{
setlocale(0,"Rus");
if (!FileExists("file.dat")) return;
exc i1;
int hour,minute;
char str7[] = "Поиск экскурсии по времени:";

char str8[] = "Введите часы:";

char str10[] = "Минуты:";

cout<<str7<<endl;
cout<<str8<<endl;
scanf("%d", &hour);
cout<<str10<<endl;
scanf("%d", &minute);
// создаём или открываем файл
fstream f("file.dat",ios::in);
// позиционируемся в начало
f.seekp(0,ios::beg);
// читаем первую записанную структуру
while(!f.eof()){
f.read((char*)&i1,sizeof i1);
if (f.eof()) break;
if (i1.hour==hour && i1.minute==minute)
print(i1);
}
f.close();
}

int main()
{
setlocale(0,"Rus");
bool indicator;
indicator = true;
char str1[] = "Агенство \'Cупер экскурсия\'";

char str2[] = "Осуществите выбор:";

char str3[] = "1 -- добавить новую экскурсию";

char str4[] = "2 -- поиск данных по времени отправления";

char str5[] = "3 -- поиск данных по названию";

char str6[] = "4 -- вывести все экскурсии(отсортированы по возрастанию стоимости)";

char strx[] = "5 -- выход";


int choose;
while (indicator)
{
printf("%s\n", str1);
printf("%s\n", str2);
printf("%s\n", str3);
printf("%s\n", str4);
printf("%s\n", str5);
printf("%s\n", str6);
printf("%s\n", strx);
scanf("%d", &choose);

if (choose <1 || choose >5) {
cout<<"ERROR: ENTER CORRECT NUMBER"<<endl;
continue;
}
switch (choose)
{
case 1:
Add();
break;

case 2:
SearchByTime();
break;

case 3:
SearchByName();
break;
case 4:
sort();
break;
case 5: indicator = false;
break;
}

}
return 0;
}
kolyan_zver вне форума Ответить с цитированием
Старый 29.09.2010, 01:06   #6
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Ошибки где?
Carbon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы. MAKEDON Общие вопросы C/C++ 1 24.07.2009 18:35
классы elenSV Помощь студентам 0 11.05.2009 10:11
классы elenSV Помощь студентам 0 01.05.2009 19:33
классы elenSV Общие вопросы C/C++ 0 01.05.2009 11:57