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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2010, 18:53   #1
{qwerty
Новичок
Джуниор
 
Регистрация: 11.10.2010
Сообщений: 2
По умолчанию Гаражная стоянка

Условие задачи:
Гаражная стоянка имеет одну стояночную полосу, причем единственный въезд и единственный выезд находятся в одном конце полосы. Если владелец автомашины приходит забрать свой автомобиль, который не является ближайшим к выходу, то все автомашины, загораживающие проезд, удаляются, машина данного владельца выводится со стоянки, а другие машины возвращаются на стоянку в исходном порядке. Написать программу, которая моделирует процесс прибытия и отъезда машин. Прибытие или отъезд задается командной строкой, которая содержит признак прибытия или отъезда и номер машины. При выезде автомашины со стоянки сообщение должно содержать число случаев, когда машина удалялась со стоянки для обеспечения выезда других автомобилей.

Помогите, пожалуйста, реализовать вывод числа случаев, когда машина покидала стоянку.
Вот мой код:

Код HTML:
#include "stdafx.h"
#include "conio.h"
#include <iostream>
using namespace std;
struct garage
{
	int d;
	garage *prev;	
};
garage * first(int d);
int push(garage **t, int d);
int pop(garage **t);



// Начальное формирование стека
garage* first(int d)
{
	garage *pv = (garage*)calloc(1,sizeof(garage));
	pv->d = d;
	pv->prev = 0;
	return pv;
}

// Занесение в стек
int push(garage **t, int i)
{
	garage *pv = (garage*)calloc(1,sizeof(garage));
	pv->d = i;
	pv->prev = *t;
	*t = pv;
	return 0;
}


// Выборка из стека
int pop (garage **t)
{
	int number = (*t)->d;
	garage *pv = *t;
	*t = (*t)->prev;
	free(pv);
	return number;
}
void function(garage **t, int number)
{
	garage *pv=*t,*t2=(garage*)calloc(1,sizeof(garage)),*p;
	int k=0;
	while(pv->d!=number)
	{
		cout<<"номер выезжающей машины "<<pv->d<<endl;
		push(&t2,pv->d);
		pv=pv->prev;
		
	}
	cout<<"номер нужной машины "<<pv->d<<endl;
	pv=p=t2;
	while(pv->prev!=0)
	{
		cout<<"номер прибывающей машины "<<pv->d<<endl;
		p=pv->prev;
		free(pv);
		pv=p;
	}
	free(pv);
}
int main()
{
	setlocale(LC_ALL,"Russian");
	int n,priznak,number,i,menu=0;
	garage* t = first(1);
	cout<<"введите количество машин:"<<endl;
	cin>>n;
	do{
		cout<<"В гараже "<<n<<" машин"<<endl;
		cout<<"Номер машины, которая покидает гараж: ";
		cin>>number;
		if(number>=n)
			cout<<"Такой машины в гараже нет!"<< endl;
		else if(n==1)
				cout<<"в гараже одна машина"<<endl;
				else 
				{
					for (int i = 2; i<=n; i++)
					push(&t, i);
					function(&t,number);
					n--;
				} 
			 
			cout<<"Хотите повторить? ДА - 1"<<endl;
			cin>>menu;
		}while(menu == 1 && number != 0);
	
	getch();
	return 0;
}
{qwerty вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Гаражная стоянка d91me Помощь студентам 2 02.05.2009 20:35