Warnings na passagem da matriz nas funções.

1. Warnings na passagem da matriz nas funções.

Bruno Ramiro
BrunoR

(usa Ubuntu)

Enviado em 27/11/2016 - 11:30h

Bom dia,

retirei umas funções de um código meu, para fazer alguns testes, e em umas funções está acusando algo na passagem de parâmetro. Segue os warnings/notes e o código. Alguém pode me explicar o motivo, e como solucionar? :)

teste.c: In function ‘main’:
teste.c:30:40: warning: passing argument 3 of ‘calculaDistancias’ from incompatible pointer type [-Wincompatible-pointer-types]
calculaDistancias (teste, constante, matriz);
^
teste.c:10:6: note: expected ‘double **’ but argument is of type ‘double (*)[3]’
void calculaDistancias (tCoordenadas *listaCoordenadas, int numero_Coordenadas,
^
teste.c:31:27: warning: passing argument 2 of ‘vizinhoMaisProximo’ from incompatible pointer type [-Wincompatible-pointer-types]
vizinhoMaisProximo(vet, matriz, constante);
^
teste.c:12:6: note: expected ‘double **’ but argument is of type ‘double (*)[3]’
void vizinhoMaisProximo (int *vetPontosOrdenadosVizProx, double **matriz, int n
^

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#define constante 3
typedef struct {
int x, y;
}tCoordenadas;

void calculaDistancias (tCoordenadas *listaCoordenadas, int numero_Coordenadas, double **matriz);
int indiceDoMenorElemento (double **matriz, int numero_Coordenadas, int linhaQueQuero);
void vizinhoMaisProximo (int *vetPontosOrdenadosVizProx, double **matriz, int numero_Coordenadas);


int main (){

srand(time(NULL));

tCoordenadas teste[constante];
int i, j;
double matriz[constante][constante];
int vet[constante];

for (i = 0; i < constante; i++) {
teste[i].x = rand() % 100;
teste[i].y = rand() % 100;
}


calculaDistancias (teste, constante, matriz);
vizinhoMaisProximo(vet, matriz, constante);


return 0;
}


void calculaDistancias (tCoordenadas *listaCoordenadas, int numero_Coordenadas, double **matriz){

int i, j;

for (i = 0; i < numero_Coordenadas; i++) {
for (j = 0; j < numero_Coordenadas; j++){
if(i < j) matriz[i][j] = sqrt(pow((listaCoordenadas[j].x - listaCoordenadas[i].x), 2) + pow((listaCoordenadas[j].y - listaCoordenadas[i].y),2));
else if(i == j) matriz[i][j] = 0;
else matriz[i][j] = matriz[j][i];
}
}
}
int indiceDoMenorElemento (double **matriz, int numero_Coordenadas, int linhaQueQuero){

double aux;
int i, indice = 0;

aux = matriz[linhaQueQuero][0];

for (i = 1; i < numero_Coordenadas; i++) {
if (aux < matriz[linhaQueQuero][i]) {
aux = matriz[linhaQueQuero][i];
indice = i;
}
}

return i;
}

void vizinhoMaisProximo (int *vetPontosOrdenadosVizProx, double **matriz, int numero_Coordenadas){

int i;

vetPontosOrdenadosVizProx[0] = 0;
for (i = 1; i < numero_Coordenadas; i++){
vetPontosOrdenadosVizProx[i] = indiceDoMenorElemento(matriz, numero_Coordenadas, vetPontosOrdenadosVizProx[i-1]);
}
}



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts