• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jcaxias

[Resolvido] Ajuda em funcoes + vector

2 mensagens neste tópico

Boas, sou novo aqui.

Espero n estar a infrigir nenhuma regra ao criar isto aqui...penso que nao.

/*******************************************
*
*******************************************/

#include<iostream>	//cin, cout
#include<iomanip>	
#include<string>	//string
#include<fstream>
#include<vector>
#include<algorithm>
#include<cassert>
#include"Cliente.h"

using namespace std;

void adiciona_cliente(vector<Cliente>& vec_clientes, const string& nomeFicheiro);
void preencheVector(vector<Cliente>& vec_clientes, const string& nomeFicheiro);
//void preencheVector2(vector<Filme>& vec_filmes, const string& nomeFicheiro);



int main()
{
bool repetir_menu_1;
bool repetir_menu_clientes;
char resposta_menu_1;
char resposta_menu_clientes;
const string nomeFicheiro="clientes.dat";

vector<Cliente> vec_clientes;

//const string nomeFicheiro2="filmes.dat";


cout << "CICLONE" << endl;

do
{
	cout << "\n1) Menu de clientes" << endl;
	cout << "2) Menu de registo de ocorrencias" << endl;
	cout << "3) Menu de facturacao" << endl;
	cout << "4) Terminar programa" << endl;
	cout << "\nInsira a sua escolha(1-4): ";
	cin >> resposta_menu_1;
	cin.ignore(10000,'\n');

	switch(resposta_menu_1)
	{
	case '1':
		{
		repetir_menu_1 = true;
		cout << "Menu de clientes" << endl;
		cout << "\n\n1) Adicionar novo cliente" << endl;
		cout << "2) Apresentar dados de um cliente" << endl;
		cout << "3) Remover cliente" << endl;
		cout << "4) Voltar ao menu anterior" << endl;

		cin >> resposta_menu_clientes;
		cin.ignore(10000,'\n');

		switch(resposta_menu_clientes)
		{
		case '1':
			{
			repetir_menu_clientes = true;
			adiciona_cliente(vec_clientes, nomeFicheiro);
			}
			break;
		case '2':
			repetir_menu_clientes = true;
			break;
		case '3':
			repetir_menu_clientes = true;
			break;
		case '4':
			cout << "\n\nOptou por voltar ao menu anterior. \n";
			repetir_menu_clientes = false;
			break;
		default:
		cout << "\nIntroduzio uma opcao errada" << endl;
		}
		break;
		}
	case '2':
		repetir_menu_1 = true;
		break;
	case '3':
		repetir_menu_1 = true;
		break;
	case '4':
		cout << "\n\nOptou por terminar o programa. Obrigado.\n\n";
		repetir_menu_1 = false;
		break;
	default:
		cout << "\n\nEscolheu uma opcao errada.\n";
		repetir_menu_1 = true;
	}
}
while(repetir_menu_1);

}

void menu_adiciona_cliente(vector<Cliente>& vec_clientes,const string& nomeFicheiro)
{

			string morada=0;
			string matricula=0;
			char classe=0;

			int numero_cliente;
			int i=0, j=0;
			string nome_cliente;

			vector<Cliente>::iterator posicao;           // posicao do cliente no vector

			cout << "Insira o nome do Cliente que pretende adicionar[max. = 20 letras]:\n";
			getline(cin,nome_cliente);
			cout << "\nInsira a morada do cliente que pretende adicionar\n";
			getline(cin,morada);
			cout << "Insira a matricula do veiculo do Cliente que pretende adicionar[ex XX-XX-XX]:\n";
			getline(cin,matricula);
			cout << "\nInsira a classe do veiculo do cliente que pretente adicionar\n";
			cin>> classe;

				for(i=1;i<999;i++)
				{				
					if(j==-5)
						break;

						posicao = find(vec_clientes.begin(), vec_clientes.end(), Cliente(i,"","","",0));         

					if (posicao == vec_clientes.end())          //   se foi encontrado
					{
						j=-5;
						numero_cliente=i;
						cout<<"\nO cliente "<<nome_cliente<<" foi adicionado com sucesso com o numero "<<numero_cliente<<".\n";
					}
				}	

				vec_clientes.push_back(Cliente(numero_cliente,nome_cliente,morada,matricula,classe));


			ofstream corrSaida(nomeFicheiro.data());

			assert( corrSaida.is_open() );


			for(int i=0;i<(int)vec_clientes.size();i++)
			{
				//if(i==(int)vec_socios.size())
					//corrSaida << endl;

			vec_clientes.at(i).escreve_ficheiro(corrSaida, i);
			}
			corrSaida.close();

			}



void preencheVector(vector<Cliente>& vec_clientes, const string& nomeFicheiro)
{
  ifstream corrEnt(nomeFicheiro.data());
  assert( corrEnt.is_open() );
       Cliente um_cliente;
   for (;
  {
     um_cliente.le(corrEnt);

 vec_clientes.push_back(um_cliente);

 if ( corrEnt.eof() ) break;

  }

  corrEnt.close();
}

o objectivo (para já) e´que ele escreva o nome, morada, bla bla bla num ficheiro.

ja onsegui fazer isso qnd escrevi o codigo td na funçao main e como tal  nao vou  postar o codigo do Cliente.h para isto n ficar gigante.

mas o adicionar cliente tem que ser com uma função...e é isso que me esta a lixar.

da erro :S

sugestoes?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora