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