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

activado

Criar Matrizes

10 mensagens neste tópico

Ola a todos. Gostava que me ajudassem no seguinte ponto: como hei-de fazer para criar uma matriz n*m , em que ao inicializar o compilador pergunte o numero de linhas e de colunas e esta seja feita de acordo com esse numero introduzido.(Estou a trabalhar na resoluçao do problema do Caixeiro Viajante )

Agradecia desde ja a ajuda

Abraços a todos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se estás a usar c99, basta pedires ao utilizador as dimensões antes de inicializares a matriz, e colocas esses valores numa variável que indica a sua dimensão.

Em C ANSI, vais precisar de usar o malloc (ou algo parecido).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

estou a usar ANSI. Mas como escreve o codigo para essa matriz? Sabes mais dicas boas para utilizar no caixeiro viajante?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Queres que o compilador crie com esse tamanho?

Faz uns #define's no inicio do código para definir o seu tamanho.

O que o Rui Carlos sugeriu foi para criar as matrizes em runtime, o que é que pretendes afinal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

criar uma matriz, de modo a o compilador quantas colunas e linhas deseja, e o compilador assim o fazer, ou seja, criar uma matriz que seja do tamanho que depois o utilizador introduza

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

criar uma matriz, de modo a o compilador quantas colunas e linhas deseja, e o compilador assim o fazer, ou seja, criar uma matriz que seja do tamanho que depois o utilizador introduza

Usas o malloc() para alocar a quantidade de memória que necessitas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ou seja, pelo que percebi, crio uma matriz onde  as variaveis de tamanho da coluna e da linha seja colocado pelo utilizador aquando de o compilador o perguntar. e para reservar memoria para tal uso a funçao malloc??

Desculpa pela insistencia

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, o teu problema é não saber bem o que é o compilador.

O compilador é o programa responsável por transformar o teu código fonte num executável.

Depois, o executável é corrido, e na interacção que se segue o compilador é deixado de lado, porque é uma interacção entre o teu programa e o utilizador.

O compilador é chamado bem antes.

O que tu pretendes é que o teu programa consiga alocar a memória dinamicamente, e para isso usas o malloc().

Por exemplo:

  int *a;
  a=(int*)malloc(4*(sizeof(int)));

Cria um vector de inteiros com 4 posições. (O mesmo que fazer int a[4])

Mas repara que deste modo o valor "4" poderia ter sido lido antes pelo utilizador.

O que tu agora pretendes é expandir isto para uma matriz.

Para isso, lembra-te que uma matriz é um vector de vectores. (e que um vector é um apontador para um inteiro)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

So mais uma duvida: vou por este caso: tenho um conjunto de cidades e de distancias entre elas. Tendo a respectiva formula factorial das combinaçoes posiveis, como heide fazer para que o programa me diga qual a combinaçao que deu menor numero?(ou seja, distancia menor percorrida entre todas as cidades, voltando de onde partiu, e sem passar duas vezes na mesma)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depois de teres o dfs feito é só guardar qual o melhor resultado até ao momento.

Se te interessar o caminho, tens que guardar o melhor caminho até ao momento e o resultado, caso contrário basta-te uma variável acumuladora. Não é muito fácil de explicar sem saber em que fase estás.

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