#include <stdio.h>
#include <stdlib.h>

main(){
int esp,i,j,k,tam;
float soma, innum, mat[100][100], newmat[100][100];
FILE *ent, *sai;
char perc, sim, c, name[10], infile[25], outfile[25],forma, *nomes[100];

printf("\n*******  -----  Mat  -----  *******\n\n");
tam=1;
     /* Abrindo arquivos... */
printf("Arquivo de entrada -> ");
scanf("%s", infile);
ent=fopen(infile, "r");

if (ent == NULL)
 {
   printf("Arquivo nÆo abriu... Nome e diret¢rio corretos?\n");
   exit (EXIT_FAILURE);
   }

printf("Arquivo de sa¡da -> ");
scanf("%s", outfile);
sai=fopen(outfile, "w");

fscanf(ent, "%d", &esp);
printf("Sua matriz ‚ (U)pper ou (L)ower-triangular? ");
scanf(" %c", &forma);

printf("Vocˆ deseja os n£meros expressos como porcentagem (s/n)? ");
scanf(" %c", &perc);

printf("Vocˆ deseja os n£meros expressos como similaridade (s/n)? ");
scanf(" %c", &sim);


if (forma=='L' || forma=='l') {
for (i=0; i<esp; i++) {
 j=0;
 soma=0;
 fscanf(ent, "%s", &name);
   while (j != i) {
     fscanf(ent, "%f", &innum);
     soma +=innum;
     j++;
     }
    tam=10-strlen(name);
    printf("%d", tam);
    fprintf(sai, "%s ", name);
    for (k=0;k==tam;k++) fprintf(sai, " ");
    fprintf(sai, "%3.2lf ", soma);
  fprintf(sai, "\n");
  }
 }

if (forma=='U' || forma=='u') {

/*********** ler o arquivo e guardar nomes e valores *********/

for (i=0; i<esp; i++) {
 j=0;
 fscanf(ent, "%s", &name);
 nomes[i] = name;

   while (j != esp-i-1) {
     fscanf(ent, "%f", &innum);
     mat[i][j] = innum;
     j++;
   } //do while
} //do for

/*********** transformar uma matriz em outra **************/

for (i=0; i<esp-1; i++) {
  j=0;
  while (j != esp-i-1) {
    if ((perc == 's' || perc == 'S') && (sim == 's' || sim == 'S')) newmat[j+i+1][i] = (1-mat[i][j])*100;
    if ((perc == 's' || perc == 'S') && (sim == 'n' || sim == 'N')) newmat[j+i+1][i] = mat[i][j]*100;
    if ((perc == 'n' || perc == 'N') && (sim == 's' || sim == 'S')) newmat[j+i+1][i] = 1-mat[i][j];
    if ((perc == 'n' || perc == 'N') && (sim == 'n' || sim == 'N')) newmat[j+i+1][i] = mat[i][j];
    j++;
  } //do for j
} //do for i

fprintf(sai, "%d\n", esp);

/******** imprimir no arquivo ***********/

for (i=0; i<esp; i++) {

   fprintf(sai, "%-12ls", nomes[i]);

   j=0;

   while (j <= i && j < esp) {
    if (j != i) fprintf(sai, "%10.6lf ", newmat[i][j]);
    j++;
   } //do while
   fprintf(sai, "\n");
} //do for i

} //do if forma == U


fclose(ent);
fclose(sai);
}
