Jump to content
Sign in to follow this  
PedroMartins10

Ajuda Projecto Veiculos Electricos

Recommended Posts

PedroMartins10

Boa Noite,

Estou com algumas dificuldades na realização de um projecto sobre veiculos electricos, que consiste em: tenho varios Postos em que têm uma determinada coordenada e latitude e vou ter veiculos que tem uma certa autonomia,  estes veiculos tem GPS em que vao identificar o Posto + proximo e ver se está disponivel. A  minha dificuldade está em conseguir fazer uma funçao Andar na classe Veiculos e no main fazer com que isto funcione. Por outras palavras  não sei como fazer isto. Gostava de saber se alguem tem alguma opiniao ao projecto ou dica.

 

void main()
{


//LerDados();
//Lerficheiros();
LVe.LerF("Veiculos_Electricos.txt");
LPostos.LerF("Postos.txt");
MenuAdmin();
srand(time(NULL));
carregar_Postos();
carregar_VeiculosElectricos();
Lista<Postos> LPostos;
Lista<Veiculos_Electricos> LVe;
LPostos.Mostrar();
LVe.Mostrar();
//return;
int nit = 0;

//isto para pesquisar supostamente deve tar dentro do while

Postos *p = LPostos.Pesquisar(5);
if (p)
{
	cout << "Existe!" << endl;
	p->Mostrar();
}
else cout << "Nada existe!" << endl;


while(true)
{
	int nv = VeiculoTratar(10);
	cout << "Vou processar o Veiculo numero =  " << nv << endl;
	Veiculos_Electricos *V = LVe.GetNEL();
	Sleep(500);
	cout << "Estou a processar n. da iteracao = " << nit++ << endl;
	Sleep(500);
	V->Andar();

	//aqui devia ter agora

	if()
	{
		//1ºpesquisar na LPostos qual o ponto + proximo da Posicao de V
		//	2ºdesloca para o ponto P;
	}

	//para todos os elementos da Lista LVe retirar 1km de autonomia.
	//verficar se existe algum em estado critico
	//mostrartodos veiculos.


}

getchar();
}

Share this post


Link to post
Share on other sites
Localhost

Para ter o ponto mais próximo tens que utilizar o algoritmo de dijkstra. Põe as dúvidas de uma maneira mais concreta.


here since 2009

Share this post


Link to post
Share on other sites
PedroMartins10

Boas,

Mas não pode ser através da função pesquisa? Tipo tenho de criar uma matriz com latitude e longitude, onde estarao os Postos e Veiculos, mas não sei como fazer. E como faço para retirar 1km de autonomia na Lista dos Veiculos Electricos?

Share this post


Link to post
Share on other sites
TheDark

Continuas a ser demasiado genérico na exposição das tuas dúvidas.

Mas não pode ser através da função pesquisa?

Pode. O nome da função/método que chamas pouco interessa, desde que tenha acesso aos dados necessários e execute o algoritmo correcto.

tenho de criar uma matriz com latitude e longitude, onde estarao os Postos e Veiculos, mas não sei como fazer.

Não sabes como fazer o quê? Criar uma matriz? Obter os dados a colocar na matriz? Preencher a matriz? É complicado ajudar-te sem saber o que queres saber, ainda para mais sem conhecer as restantes estruturas de dados. Isto é ainda mais válido para a tua última pergunta.

Já agora, toma atenção à última linha da minha assinatura.


Desaparecido.

Share this post


Link to post
Share on other sites
PedroMartins10

Peço desculpa não estar a ser o mais concreto, mas deve-se ao facto de não saber bem o que fazer, mas vou tentar explicar melhor como tenho o projecto e aquilo que falta fazer. Para o desenvolvimento do projecto criei 3 classes(Veiculos_Electricos, GPS, Postos) e adoptei 1 classe Lista.h que foi disponibilizada, em que tenho varias funções desde gravar e ler ficheiros, inserir, alterar, remover, etc. Depois criei 2 ficheiros .txt com Postos com os dados nº posto, latitude,longitude, morada e codpostal; e outro com Veiculos Electricos(nº, autonomia e matricula). Objectivo do projecto e aquilo que não consigo fazer, é criar uma matriz com Postos e Veiculos e  para determinar o posto mais próximo tenho de fazer um Alg. que percorra todos os postos da lista de postos e ficar com o posto mais próximo que esteja livre. Depois durante a simulação para todos os elementos da lista de Veiculos retirar 1km de autonomia, verificar se existe algum em estado critico(qd tiver menos de 50km de autonomia) e mostrar todos os veiculos. Vou deixar o codigo do programa principal para que possas perceber melhor o projecto.  Se for preciso envio tb as classes. Eu enviei o pedido em privado pq ja tinha colocado em publico e como não tinha tido uma ajuda em concreto decidi enviar em privado porque tinha estado a pesquisar e vi que tinhas esclarecido algo sobre o jogo minas e que poderia ter algo relacionado com o meu projecto. Desde já peço desculpa não ter lido o que tinhas na ultima linha da assinatura.

#include "stdafx.h"
#include <time.h>

void MenuAdmin();


int Ano, Mes, Dia, Hora, Minuto, Segundo;
//int Ntotalc=1;
char user_act[Max];
extern char Nome[15];
char nome_utilizador[Max];
char hist[150];
int np;

Lista<Postos> LPostos;
Lista<Veiculos_Electricos> LVe;


void MenuPostos();
void MenuVeiculos_Electricos();





//historico-------------------------------------------------------------


void Data_Hora()
{
SYSTEMTIME dh;
GetSystemTime (&dh);
Dia=dh.wDay;
Mes=dh.wMonth;
Ano=dh.wYear;
Hora=dh.wHour;
Minuto=dh.wMinute;
Segundo=dh.wSecond;
}

void EscreverHistorico(char *str)
{Data_Hora();
char nf[Max];

strcpy(nf,"Historico");
strcat(nf,nome_utilizador);
strcat(nf,".txt");

ofstream f(nf,ios::app);

f<<Hora<<":"<<Minuto<<":"<<Segundo<<" | "<<Dia<<"/"<<Mes<<"/"<<Ano<<" : "<<str<<endl;

}

void PercorreHistorico()
{
char percorre;
    int i=0;
    int j=0;
system("cls");
    FILE *fich=fopen("Historico.txt","r");
    char historico[10000][100];
	do
{
	percorre=fgetc(fich);
	if(percorre=='\n')
	{
          historico[i][j]='\0';
          i++; 
	  j=0;
        }
        else
	{
	  historico[i][j]=percorre;
          j++;
	}							
}
    while(percorre!=EOF); 
    for (int y=0;y<i;y++) 
        printf("\n%s",historico[y]);
	system("pause");
	MenuAdmin();

     
}


void carregar_Postos()
{
ifstream f("Postos.txt");
if (!f.is_open())
{
	cout << "Nao consegui abrir" << endl;
	return;
}

int nel;
f >> nel;

while (!f.eof())
{
	char LAT[20], LONG[20], MORADA[20];
	int NP, CP;
	f>>NP>>LAT>>LONG>>MORADA>>CP;
	Postos *P = new Postos(NP, LAT, LONG, MORADA, CP);
	LPostos.InserirOrd(P);

}
f.close();
}


void carregar_VeiculosElectricos()
{
ifstream f("Veiculos_Electricos.txt");
if (!f.is_open())
{
	cout << "Nao consegui abrir" << endl;
	return;
}

int nel;
f >> nel;
while (!f.eof())
{
	char lixo[20],MATRICULA[20];
	int NV, AUTONOMIA;
	f>>NV,MATRICULA,AUTONOMIA;
	Veiculos_Electricos *V = new Veiculos_Electricos(NV, MATRICULA,AUTONOMIA);
	LVe.InserirOrd(V);

}
f.close();
}

//postos...........................................................................

void InserirPostos()
{
 system("cls");
 cout<<"\t\t\t"<<"Novo Posto\n";
 Postos *p= new Postos();
 p->LerDados();
 LPostos.InserirOrd(p);
 cout<<endl<<"Posto inserido"<<endl;
 system("pause");
 LPostos.GravaFicheiro("Postos.txt");
 MenuPostos();
}

void MostrarPostos()
{
system("cls");
cout<<"\t\t\t "<<"\n Postos \n\n"<<endl<<endl;
LPostos.Mostrar();
MenuPostos();
}

void AlterarPostos()
{
int np;
system("cls");
cout<<"\t\t\t "<<"Numero do Posto? ";
cout<<endl<<"Posto? ";
cin>>np;
LPostos.AlterarPostos(np);
cout<<endl;
system("pause");MenuPostos();


}

void RemoverPostos()
{
int np;
system("cls");
cout<<"\t\t\t "<<"Numero do Posto? ";
cout<<endl<<"Numero? ";
cin>>np;
    LPostos.RemoverListaPostos(np);
cout<<endl;
cout<<"";system("pause");MenuPostos();

}


void menuPostos()
{
system("cls");
cout<<"\n\tMENU POSTOS			                \n\n"<<endl;
cout<<"\n	1-Inserir					            "<<endl;
cout<<"\n	2-Mostrar            					"<<endl;
cout<<"\n	3-Alterar                               "<<endl;
cout<<"\n	4-Remover                               "<<endl;
cout<<"\n	0-Voltar				         	    \n\n"<<endl;

}

void MenuPostos()
{
int op;
menuPostos();
EscreverHistorico("Entrou no Menu Postos");
cout<<"\tOpcao: ";
cin>>op;
switch(op)
{
	case 1 : EscreverHistorico("Inseriu Postos"); InserirPostos(); break;
	case 2 : EscreverHistorico("Mostrou Postos"); MostrarPostos(); break;
	case 3 : EscreverHistorico("Alterou Postos"); AlterarPostos(); break;
	case 4 : EscreverHistorico("Removeu Postos"); RemoverPostos(); break;
	case 0 : EscreverHistorico("Voltou ao Menu Admin"); LPostos.GravaFicheiro("Postos.txt");MenuAdmin(); break;
	default : MenuPostos(); break;
}


}

//Veiculos electricos.....................................................................

void InserirVeiculos_Electricos()
{
 system("cls");
 cout<<"\t\t\t"<<"Novo Veiculo\n";
 Veiculos_Electricos *ve= new Veiculos_Electricos();
 ve->LerDados();
 LVe.InserirOrd(ve);
 cout<<endl<<"Veiculo Electrico inserido"<<endl;
 system("pause");
 LVe.GravaFicheiro("Veiculos_Electricos.txt");
 MenuVeiculos_Electricos();
}

void MostrarVeiculos_Electricos()
{
system("cls");
cout<<"\t\t\t "<<"\nVeiculos Electricos\n\n"<<endl<<endl;
LVe.Mostrar();
MenuVeiculos_Electricos();
}

void AlterarVeiculos_Electricos()
{
int nv;
system("cls");
cout<<"\t\t\t "<<"Numero do Veiculo? ";
cout<<endl<<"Numero? ";
cin>>nv;
LVe.AlterarVeiculosElectricos(nv);
cout<<endl;
system("pause");MenuVeiculos_Electricos();

}

void RemoverVeiculos_Electricos()
{
int nv;
system("cls");
cout<<"\t\t\t "<<"Numero do veiculo? ";
cout<<endl<<"Numero? ";
cin>>nv;
    LVe.RemoverListaVeiculosElectricos(nv);
cout<<endl;
cout<<"";system("pause");MenuVeiculos_Electricos();

}



void menuVeiculos_Electricos()
{
system("cls");
cout<<"\n\tMENU VEICULOS ELECTRICOS		                \n\n"<<endl;
cout<<"\n	1-Inserir					            "<<endl;
cout<<"\n	2-Mostrar				            	"<<endl;
cout<<"\n	3-Alterar                               "<<endl;
cout<<"\n	4-Remover                               "<<endl;
cout<<"\n	0-Voltar				         	\n\n"<<endl;

}

void MenuVeiculos_Electricos()
{
int op;
menuVeiculos_Electricos();
EscreverHistorico("Entrou no Menu Veiculos Electricos");
cout<<"\tOpcao: ";
cin>>op;
switch(op)
{
	case 1 : EscreverHistorico("Inseriu Veiculos Electricos"); InserirVeiculos_Electricos(); break;
	case 2 : EscreverHistorico("Mostrou Veiculos Electricos"); MostrarVeiculos_Electricos(); break;
	case 3 : EscreverHistorico("Alterou Veiculos Electricos"); AlterarVeiculos_Electricos(); break;
	case 4 : EscreverHistorico("Removeu Veiculos Electricos");RemoverVeiculos_Electricos(); break; 
	case 0 : EscreverHistorico("Voltou ao Menu Admin"); LVe.GravaFicheiro("Veiculos_Electricos.txt");MenuAdmin(); break;
	default : MenuVeiculos_Electricos(); break;
}


}

//------------------------------------------------------------------------------------------------------------------
void menuAdmin()
{	
system("cls");
cout<<"\n\tMENU ADMINISTRADOR			        \n\n"<<endl;
cout<<"\n	1-Postos					            "<<endl;
cout<<"\n	2-Veiculos Electricos					"<<endl;
cout<<"\n	3-Historico                             "<<endl;
cout<<"\n	0-SAIR				         	\n\n"<<endl;

}


void MenuAdmin()
{
int op;
menuAdmin();
EscreverHistorico("Entrei no MENU PRINCIPAL");
cout<<"\tOpcao: ";
cin>>op;
switch(op)
{
	case 1 : EscreverHistorico("Entrou no Menu Postos");MenuPostos(); break;
	case 2 : EscreverHistorico("Entrou no Menu Veiculos Electricos");MenuVeiculos_Electricos(); break;
	case 3 : EscreverHistorico("Entrou no Historico");PercorreHistorico(); break;
	case 0 : EscreverHistorico("Voltou ao Menu Principal");exit(0); break;
	default : MenuAdmin(); break;
}


}



//----------------------------Main

void LerPass(char *uti,char *pass)
{
char c;
for (int i=0;i<Max;i++)
		{
		    
			system("cls");
			cout<<"\n\t|UTILIZADOR: "<<uti<<endl;
			cout<<"\n\t|PASSWORD: ";
			for (int j=0;j<i;j++)
				cout<<"*";
			fflush(stdin);
			c=getch();
			if(c=='\r')
				break;
			else

				 if(c=='') 
				 {
					 if(i>0)
					 i-=1;
				 }
			     else
			        pass[i++]=c;

				    pass[i--]='\0';
		}

}


void LerDados()
{
system("cls");

char u[Max],p[Max];
cout<<"\n\t|UTILIZADOR: ";cin>>u;
LerPass(u,p);
if ((strcmp(u,"admin") && (strcmp(p,"1234"))))
{
	cout<<endl<<endl<<endl;
	cout<<"";system("pause>>NULL");
	/*LerDados();*/
}
}

//void Lerficheiros()
//{	
//	LVe.Ler_f("Veiculos_Electricos.txt");
//	LPostos.Ler_f("Postos.txt");
//}

int VeiculoTratar(int max)
{
return rand() % max;
}





//----------------------------------------------------------------------------------------



void main()
{


LerDados();
Lerficheiros();
LVe.LerF("Veiculos_Electricos.txt");
LPostos.LerF("Postos.txt");
MenuAdmin();
srand(time(NULL));
carregar_Postos();
carregar_VeiculosElectricos();
Lista<Postos> LPostos;
Lista<Veiculos_Electricos> LVe;
LPostos.Mostrar();
LVe.Mostrar();
//return;
int nit = 0;




Postos *p = LPostos.Pesquisar(5);
if (p)
{
	cout << "Existe!" << endl;
	p->Mostrar();
}
else cout << "Nada existe!" << endl;


while(true)
{
    

/*int nv = VeiculoTratar(10);
cout << "Vou processar o Veiculo numero =  " << nv << endl;
    Veiculos_Electricos *V = LVe.GetNEL();
Sleep(500);
cout << "Estou a processar n. da iteracao = " << nit++ << endl;
Sleep(500);
     
V->Andar();

if(V->)
{
}

for( ; ; ) ;*/


}

getchar();
}




Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.