Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mickzip

Problema com implementação c++

Recommended Posts

Olá a todos,

 

Estou tentando implementar um programa em c++ que se consiste no seguinte:

CODE
A B C D E F G

A 02 11 06 15 11 01

B 02 07 12 04 02 15

C 11 07 11 08 03 13

D 06 12 11 10 02 01

E 15 04 08 10 05 13

F 11 02 03 02 05 14

G 01 15 13 01 13 14

1. leia a Tabela 1, digitada pelo usuário, e informe ao usuario o tempo necessario para ir de uma cidade a outra. Observe que os nomes das cidades deverão ser fornecidos pelo usuário. Esta operacão devera ser realizada ate o momento que ele fornecer duas cidades iguais (origem e destino);

 

2. imprima a tabela sem repetições (apenas o triangulo superior ou inferior);

 

3. permita ao usuárioo informar varias cidades, ate inserir uma cidade com ne invalido (considere, por exemplo, a letra Z), e que imprima o tempo total para cumprir todo o percurso especificado entre as cidades fornecidas;

 

4. auxilie um usuário a escolher um roteiro de ferias, sendo que o usuario deve fornecer quatro cidades: a primeira é sua origem, a ultima é o seu destino e as outras duas caracterizam as cidades de descanso (no meio da viagem). Por isso, o programa deve fornecer ao usuário qual das duas opções e melhor, ou seja, qual fará com que o horário das duas viagens

(origem para descanso, descanso para destino) seja o mais próximo possvel.

 

até o momento o programa está da seguinte maneira

 

CODE
#include <cstdlib>

#include <iostream>

 

 

using namespace std;

 

const int TAM=7;

int mat[TAM][TAM];

char origem, destino;

int distancia=0, a, b, c, d, e, f, g;

 

void imprime(int i=0, int j=0 ){

for ( i=0; i<TAM; i++)

for (j=0; j<TAM; j++)

if (i==j)

{

mat[j]=distancia;

cout<<"\n\t"<<mat[j]<<"\n";}

if (i<j){

mat[j]=distancia;

cout<<"\n\t"<<mat[j]<<"\n";}

 

}

int main(int argc, char *argv[])

{

 

int origx, desty, i=0;

 

do

{

cout<<"DIGITE A CIDADE DE ORIGEM (A, B, C, D, E, F, G) --> ";

cin>>(origem);

cout<<"DIGITE A CIDADE DE DESTINO (A, B, C, D, E, F, G) --> ";

cin>>(destino);

cout<<"DIGITE A DISTANCIA --> ";

cin>>distancia;

cout<<'\n';

 

 

origx= int (origem) - (int)'A'; // Pega valor ASCII do caractere digitado e subtrai 65 e atribui o resutado a "origx"

desty= int (destino) - (int)'A'; // Pega valor ASCII do caractere digitado e subtrai 65 e atribui o resutado a "desty"

 

mat [origx][desty]=distancia;

mat [desty][origx]=distancia;

 

 

 

}while (origem!=destino);

 

system ("cls");

imprime(); // chamada a função

 

 

 

do{

cout<<"ROTEIRO DE FERIAS: ";

cout<<"DIGITE A CIDADE DE ORIGEM (A, B, C, D, E, F, G) --> ";

cin>>(origem);

cout<<"DIGITE A CIDADE DE DESTINO (A, B, C, D, E, F, G) --> ";

cin>>(destino);

 

//FALTA CODIGO

 

 

}while(origem!=destino);

 

 

 

system("PAUSE");

return EXIT_SUCCESS;

}

 

Não estou conseguindo nem fazer com que imprima no formato de uma tabela... o que estou fazendo de errado na hora de imprimir? Estou totalmente perdido...

Compartilhar este post


Link para o post
Compartilhar em outros sites

no procedimento imprimi! você pega dois parametros!

e qnd vai usar ele no main você naum passa parametro algum para o procedimento!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função imprime usa valores padrões para os dois parametros.

Então se nenhum valor for passado ele assumirá i e j = 0.

 

Voce precisa prestar atenção ao escopo dos laços.

É sempre recomendado usar as chaves para delimitar os comandos.

 

void imprime(int i=0, int j=0 ){
   for ( i=0; i<TAM; i++){
	  for (j=0; j<TAM; j++){
		 if (i==j){
			mat[i][j]=distancia;
			cout<<"\n\t"<<mat[i][j]<<"\n";
		 }

		 if (i<j){
			mat[i][j]=distancia;
			cout<<"\n\t"<<mat[i][j]<<"\n";
		 }
	  }
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.