Advertisement
Graf_Spee

sem tad

Dec 12th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.82 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. void printa_matriz(int** mat, int dim){
  6.     int i, j;
  7.     printf("[   ]");
  8.     for(i=0;i<dim;i++){
  9.         printf("[%.3d]", i);
  10.     }
  11.     printf("\n");
  12.     for(i=0;i<dim;i++){
  13.         printf("[%.3d]", i);
  14.         for(j=0;j<dim;j++){
  15.             printf("[%.3d]", mat[i][j]);
  16.             if(j==dim-1){
  17.                 printf("\n");
  18.             }
  19.         }
  20.     }
  21. }
  22.  
  23. int descobre_tamanho(){
  24.     FILE* arq=fopen("Mapa.txt","r");
  25.     if(arq==NULL){
  26.         printf("Erro na leitura de arquivo\n");
  27.         return 0;
  28.     }
  29.     char linha[4];
  30.     int i=0;
  31.  
  32.     while(linha[0]!='-'){
  33.         fgets(linha,4,arq);
  34.         i++;
  35.     }
  36.     return i-1;
  37. }
  38.  
  39. void zera_matriz(int** mat, int dim){
  40.     int i, j;
  41.     for(i=0;i<dim;i++){
  42.         for(j=0;j<dim;j++){
  43.             mat[i][j]=0;
  44.         }
  45.     }
  46. }
  47.  
  48. int** leitura(int* dim){
  49.     FILE* arq=fopen("Mapa.txt","r");
  50.     if(arq==NULL){
  51.         printf("Erro na leitura de arquivo\n");
  52.         return NULL;
  53.     }
  54.     int i=descobre_tamanho();
  55.     *dim=i;
  56.     int j;
  57.     int** mat=(int**)malloc(sizeof(int*)*i);
  58.     for(j=0;j<30;j++){
  59.         mat[j]=(int*)malloc(sizeof(int)*i);
  60.     }//aloca a matriz
  61.     char linha[30];
  62.     int tam;
  63.     zera_matriz(mat,i);
  64.     i=0;
  65.  
  66.     while(fscanf(arq, "%s", linha) == 1){
  67.         printf("Linha: %s\n", linha);
  68.  
  69.         if(linha[0]!='-'){
  70.             if(strlen(linha)==4){//primeira parte
  71.                 mat[i][i]=(linha[2])-48;//se c=48 dรƒยก erro
  72.                 i++;
  73.             }else{//segunda parte
  74.                 i=0;
  75.                 tam=strlen(linha);
  76.                 printf("%d ", tam);
  77.                 while(i<tam-5){
  78.                     mat[linha[0]-65][linha[2]-65]=(mat[linha[0]-65][linha[2]-65])*10 + (linha[4+i]-48);
  79.                     mat[linha[2]-65][linha[0]-65]=mat[linha[0]-65][linha[2]-65];
  80.                     printf("%d ",mat[linha[0]-65][linha[2]-65]);
  81.                     i++;
  82.                 }
  83.             }
  84.         }
  85.     }
  86.     fclose(arq);
  87.     return mat;
  88. }
  89.  
  90.  
  91. void main(){
  92.     int dim;
  93.     int** mat=leitura(&dim);
  94.     printa_matriz(mat,dim);
  95.  
  96.     system("pause");
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement