
linersantos
(usa Ubuntu)
Enviado em 15/01/2021 - 13:53h
Ola, eu estou com um pequeno problema:
tenho uma matriz com 3 colunas enquanto os 2 primeiros elementos de linhas subsequentes forem iguais, eu preciso somar o ultimo elemento de cada linha. Se uma linha nao for igual a outra, o programa deve retornar o ultimo valor dessa linha. POr exemplo, se o arquivo for:
0 0 2
1 2 3
1 2 6
1 2 7
1 4 5
2 4 5
2 4 7
6 7 5
6 7 3
6 4 4
O programa deve retornar:
0 0 2
1 2 16
1 4 5
2 4 12
6 7 8
6 4 4
Segue abaixo o codigo que eu escrevi mas nao ta funcionando:
#include<stdio.h>
#include<stdlib.h>
static float matriz[100][100];
int main(){
FILE *a = fopen("/home/exp.dat","rf");
int i = 0;
float c,d,e;
float soma = 0;
while(!feof(a)){
fscanf(a,"%f %f %f\n",&c,&d,&e);
matriz[i][0]=c;
matriz[i][1]=d;
matriz[i][2]=e;
i++;
}
i = i-1;//até aqui foi só pra ler os dados e gravar numa matriz.
//O problema começa a partir daqui
for(int ix = 0;ix <= i; ix++){
//soma=matriz[ix][2];
if(matriz[ix+1][0] == matriz[ix][0] && matriz[ix+1][1] == matriz[ix][1]){
soma += matriz[ix+1][2];
}
else{
printf("%f %f %f\n",matriz[ix][0],matriz[ix][1],soma);
}
}
printf("%d\n",i);
fclose(a);
return 0;
}