Advertisement
Guest User

C véi doido

a guest
Apr 27th, 2015
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.72 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void verificar(int **l, int tam, int num, int sinal);
  5. void inserir(int **l, int num, int tam);
  6. void imprimir(int **l, int tam);
  7. void inicializar(int **l, int tam);
  8. void remover (int **l, int tam, int num);
  9. int main ()
  10. {
  11.     int **mat, tam = 0, x = 0, num, i, sinal;
  12.     printf("Digite quantos vertices serao adicionados: ");
  13.     scanf("%d", &tam);
  14.     mat = malloc(tam* sizeof(int));
  15.     for(i=0;i<tam;i++)
  16.     {
  17.         mat[i]= malloc(tam * sizeof(int));
  18.     }
  19.     inicializar(mat, tam);
  20.     while(x!=5)
  21.     {
  22.         system("cls");
  23.         printf("Digite 1 para inserir um vertice \n");
  24.         printf("Digite 2 para remover um vertice \n");
  25.         printf("Digite 3 para imprimir a matriz\n");
  26.         printf("Digite 4 para sair \n\n\n");
  27.         scanf("%d", &x);
  28.         switch(x)
  29.         {
  30.             case 1:
  31.             {
  32.                 printf("Digite o vertice a ser inserido: ");
  33.                 scanf("%d", &num);
  34.                 sinal = 1;
  35.                 verificar(mat, tam, num, sinal);
  36.                 break;
  37.             }
  38.             case 2:
  39.             {
  40.                 printf("Digite o vertice a ser removido: ");
  41.                 scanf("%d", &num);
  42.                 sinal = 0;
  43.                 verificar(mat, tam, num, sinal);
  44.                 break;
  45.             }
  46.             case 3:
  47.             {
  48.                 system("cls");
  49.                 imprimir(mat, tam);
  50.                 system("pause");
  51.                 break;
  52.             }
  53.             case 4:
  54.             {
  55.                 free(mat);
  56.                 return 0;
  57.             }
  58.         }
  59.     }
  60.     return 0;
  61. }
  62.  
  63. void inserir(int **l, int tam, int num)
  64. {
  65.     int i;
  66.     if (**l==0)
  67.     {
  68.         l[0][0] = num;
  69.         return;
  70.     }
  71.     else
  72.     {
  73.         for(i=1;i<tam;i++)
  74.         {
  75.             if(l[i][0]==0)
  76.             {
  77.                 l[i][0] = num;
  78.                 break;
  79.             }
  80.         }
  81.     }
  82. }
  83.  
  84. void verificar(int **l, int tam, int num, int sinal)
  85. {
  86.     int i;
  87.     if(**l==0)
  88.     {
  89.         if(sinal == 1)
  90.         {
  91.             inserir(l, tam, num);
  92.         }
  93.         else
  94.         {
  95.             printf("\nImpossivel remover!\n");
  96.             system("pause");
  97.         }
  98.     }
  99.     else
  100.     {
  101.         for(i=0;i<tam;i++)
  102.         {
  103.             if(l[i][0] == num)
  104.             {
  105.                     if(sinal == 1)
  106.                     {
  107.  
  108.                         printf("\nVertice existente!\n");
  109.                         system("pause");
  110.                         break;
  111.                     }
  112.                     else
  113.                     {
  114.                         remover(l, tam, num);
  115.                         break;
  116.                     }
  117.  
  118.             }
  119.             else
  120.             {
  121.                 if(sinal == 1)
  122.                 {
  123.                     inserir(l, tam, num);
  124.                     break;
  125.                 }
  126.                 else
  127.                 {
  128.                     printf("\nVertice nao existente!\n");
  129.                     system("pause");
  130.                     break;
  131.                 }
  132.             }
  133.         }
  134.     }
  135. }
  136.  
  137. void imprimir(int **l, int tam)
  138. {
  139.     int i, j;
  140.     for(i=0;i<tam;i++)
  141.     {
  142.         for(j=0;j<tam;j++)
  143.         {
  144.             printf("%d\t", l[i][j]);
  145.         }
  146.         printf("\n");
  147.     }
  148. }
  149.  
  150. void inicializar(int **l, int tam)
  151. {
  152.     int i, j;
  153.     for(i=0;i<tam;i++)
  154.     {
  155.         for(j=0;j<tam;j++)
  156.         {
  157.             l[i][j] = 0;
  158.         }
  159.     }
  160.  
  161. }
  162.  
  163. void remover(int **l, int tam, int num)
  164. {
  165.     int i, j;
  166.     for(i=0;i<tam;i++)
  167.     {
  168.         for(j=0;j<tam;j++)
  169.         {
  170.             if(l[i][j]==num)
  171.             {
  172.                 l[i][j]=0;
  173.             }
  174.         }
  175.     }
  176.  
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement