eu vou passar a questão que estou tentando resolver e depois faço os comentarios:
Faça um programa que:
(a) Peça para o usuário entrar com o nome e a posição (coordenadas X e Y) de N
cidades e as armazene em um vetor de estruturas (N é informado pelo usuário);
(b) Crie uma matriz de distâncias entre cidades de tamanho N x N;
(c) Calcule as distâncias entre cada uma das cidade e armazene na matriz;
(d) Exiba na tela a matriz de distâncias obtida;
(e) Quando o usuário digitar o número de duas cidades o programa deverá retornar a
distância entre elas.
ok, andei pesquisando sobre como alocar matrizes e meu codigo ficou meio assim:
struct *cidade
{
char nome[50];
int coordenada_x;
int coordenada_y;
};
int main()
{
int i;
int k;
int num_cidade;
struct cidade **p;
printf("Insira a quantidade de cidade:\n");
scanf("%d",&num_cidade);
p = (struct cidade **)calloc(sizeof(struct cidade), num_cidade *);
for(i=0;i<num_cidade;i++)
{
p[i] = (int *) malloc (num_cidade * sizeof (int))
}
for(i=0;i<num_cidade;i++)
{
printf("Insira o nome da cidade da linha e coluna %d da matriz:\n",i+1);
fgets((p->nome[i]),50,stdin);
printf("Insira a coordenada X da cidade %d:\n",i+1);
scanf("%d",&(p->coordenada_x));
printf("Insira a coordenada Y da cidade %d:\n",i+1);
scanf("%d",&(p->coordenada_y));
}
tem mais algumas coisas para baixo mas acredito que esta tudo errado, algumas duvidas... a alocação esta certa ? quando o usuario inseri os valores de coordenada_x e coordenada_y, eles são a linha e coluna da matriz alocada, certo ? como eu faço para passar esse valores para a matriz ? sendo que imaginando aqui como seria a matriz, quando fossem iguais seria 0, isso eu resolvo de boa mas e quando se repete ? por exemplo...
linha 1 e coluna 2 tem valor 50, depois iria cair em linha 2 coluna 1, o valor deveria ser o mesmo do anterior, certo ?
eu não quero que alguém faça o codigo e já deixe pronto, eu realmente estou me questionando muito nessa questão porque eu consigo imaginar X problemas. Sem falar que as vezes to pensando e imagino uma forma totalmente diferente, então gostaria de saber se o que ta feito ai ate agora é o caminho certo ou eu estou pensando de maneira errada?
Obg e desculpe se ficou meio longo :D
Acho que errei na hora de botar o codigo ali dentro do [code.. vou upar no pastebin caso ajude na visualização.
Pergunta
Thales15
Boa tarde,
eu vou passar a questão que estou tentando resolver e depois faço os comentarios:
Faça um programa que:
(a) Peça para o usuário entrar com o nome e a posição (coordenadas X e Y) de N
cidades e as armazene em um vetor de estruturas (N é informado pelo usuário);
(b) Crie uma matriz de distâncias entre cidades de tamanho N x N;
(c) Calcule as distâncias entre cada uma das cidade e armazene na matriz;
(d) Exiba na tela a matriz de distâncias obtida;
(e) Quando o usuário digitar o número de duas cidades o programa deverá retornar a
distância entre elas.
ok, andei pesquisando sobre como alocar matrizes e meu codigo ficou meio assim:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct *cidade
{
char nome[50];
int coordenada_x;
int coordenada_y;
};
int main()
{
int i;
int k;
int num_cidade;
struct cidade **p;
printf("Insira a quantidade de cidade:\n");
scanf("%d",&num_cidade);
p = (struct cidade **)calloc(sizeof(struct cidade), num_cidade *);
for(i=0;i<num_cidade;i++)
{
p[i] = (int *) malloc (num_cidade * sizeof (int))
}
for(i=0;i<num_cidade;i++)
{
printf("Insira o nome da cidade da linha e coluna %d da matriz:\n",i+1);
fgets((p->nome[i]),50,stdin);
printf("Insira a coordenada X da cidade %d:\n",i+1);
scanf("%d",&(p->coordenada_x));
printf("Insira a coordenada Y da cidade %d:\n",i+1);
scanf("%d",&(p->coordenada_y));
}
tem mais algumas coisas para baixo mas acredito que esta tudo errado, algumas duvidas... a alocação esta certa ? quando o usuario inseri os valores de coordenada_x e coordenada_y, eles são a linha e coluna da matriz alocada, certo ? como eu faço para passar esse valores para a matriz ? sendo que imaginando aqui como seria a matriz, quando fossem iguais seria 0, isso eu resolvo de boa mas e quando se repete ? por exemplo...
linha 1 e coluna 2 tem valor 50, depois iria cair em linha 2 coluna 1, o valor deveria ser o mesmo do anterior, certo ?
eu não quero que alguém faça o codigo e já deixe pronto, eu realmente estou me questionando muito nessa questão porque eu consigo imaginar X problemas. Sem falar que as vezes to pensando e imagino uma forma totalmente diferente, então gostaria de saber se o que ta feito ai ate agora é o caminho certo ou eu estou pensando de maneira errada?
Obg e desculpe se ficou meio longo :D
Acho que errei na hora de botar o codigo ali dentro do [code.. vou upar no pastebin caso ajude na visualização.
http://pastebin.com/28Hz7SKU
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.