Advertisement
jeancinza

Matriz em C / Matrix on C

Aug 27th, 2014
3,117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Implemente um Programa em C, que lê uma Matriz inteira M[10,10] e a escreve. A seguir faça as
  3. seguintes operações:
  4. a) Troque a linha 2 com a linha 8
  5. b) Imprima a Matriz modificada
  6. c) Troque a coluna 4 com a coluna 9
  7. d) Imprima a Matriz modificada
  8. e) Troque a diagonal principal com a diagonal secundária
  9. f) Imprima a Matriz modificada
  10. g) Sorteie uma linha e a troque com outra linha sorteada (os valores não podem ser iguais, verifique isso)
  11. h) Imprima a Matriz modificada, bem como os valores das linhas sorteadas
  12. i) Insira em um Vetor V, os valores da diagonal principal
  13. j) Imprima o Vetor devidamente identificado
  14. k) Imprima a Matriz para verificação */
  15. #include<stdio.h>
  16. #include<conio.h>
  17. #include<stdlib.h>
  18. #define T 10
  19.  
  20. int main(){
  21. int x=0,Mat[T][T],v[T],ds[T],i=0,j=0,aux=0,sort=0,sort2=0;
  22. for(i=0;i<T;i++){
  23.     for(j=0;j<T;j++){
  24.       Mat[i][j]=rand()%51;  //inserindo valores aleatorios de 0-50 para a matriz
  25.       }
  26.     }
  27.     printf("\n-----Matriz %ix%i----\n",T,T);
  28.     for(i=0;i<T;i++){ //apresentando a randomica
  29.       for(j=0;j<T;j++){
  30.         printf("[%i]\t",Mat[i][j]);
  31.       }
  32.     }  
  33.     for(i=1,j=0;j<T;j++){ //a) Troque a linha 2 com a linha 8 V
  34.       aux = Mat[i][j];
  35.       Mat[i][j] = Mat[7][j];
  36.       Mat[7][j]= aux;
  37.     }
  38.     printf("\n\n\n-----Troque a linha 2 com a linha 8----\n");
  39.     for(i=0;i<T;i++){   //apresentando a matriz trocada. b) Imprima a Matriz modificada V
  40.       for(j=0;j<T;j++){
  41.         printf("[%i]\t",Mat[i][j]);
  42.       }
  43.     }
  44.     printf("\n\n\n-----Troque a coluna 4 com a coluna 9----\n");  // c) Troque a coluna 4 com a coluna 9    
  45.     for(j=0;j<T;j++){
  46.       aux = Mat[j][3];
  47.       Mat[j][3] = Mat[j][8];
  48.       Mat[j][8] = aux;
  49.     }      
  50.     for(i=0;i<T;i++){//d) Imprima a Matriz modificada
  51.       for(j=0;j<T;j++){
  52.         printf("[%i]\t",Mat[i][j]);                
  53.       }
  54.     }
  55.     for(i=0;i<T;i++){
  56.       for(j=0;j<T;j++){
  57.         if(i==j){v[i]=Mat[i][j];} //fazendo a Diagonal principal para o proximo for
  58.           if(i==9-j){ds[i]=Mat[i][j];} //fazendo a Diagonal secundaria para o proximo for              
  59.       }
  60.     } printf("\n");    
  61.     printf("\n\n\n-----Troque a diagonal principal com a diagonal secundaria----\n"); //e) Troque a diagonal principal com a diagonal secundária
  62.     //TIP: Diagonal principal, indice da linha é o mesmo que a coluna! (DP:i==j ) e DS:i+j==j)
  63.     for(i=0;i<T;i++){
  64.       for(j=0;j<T;j++){
  65.         if(i==j){printf("[%i]\t",ds[i]);Mat[i][j]=ds[i];} //Entendendo: Primeiro a verificação se é DP, depois imprime o valor da DP, e depois passa esse valor para a matriz modificada!
  66.           else if(i+j==9){printf("[%i]\t",v[i]);Mat[i][j]=v[i];}
  67.             else {printf("[%i]\t",Mat[i][j]);Mat[i][j]=Mat[i][j];} //f) Imprima a Matriz modificada
  68.       }
  69.     }
  70.     do{
  71.       sort=rand()%10; sort2=rand()%10; //Porque usei Do While; é necessário um valor randomico para fazer a verificação se é v1==v2.
  72.       sort=sort-1;  sort2=sort2-1; //Porque sort-1; o valor sorteado é de 0 a 10, mas em linhas, o 10 teria de ser a linha 9(que é a ultima da matriz).
  73.     }while((sort==sort2) || (sort<0 || sort2<0)); //g) Sorteie uma linha e a troque com outra linha sorteada (os valores não podem ser iguais, verifique isso)
  74.     for(j=0;j<T;j++){ //a verificação acima, de sort<0 || sort2<0 é porque se sort for -1 ele não vai achar a linha -1, uma vez que matriz começa com 0. (assim como o vetor).
  75.       aux = Mat[sort][j];
  76.       Mat[sort][j] = Mat[sort2][j];
  77.       Mat[sort2][j]= aux;
  78.     }
  79.     printf("\n\n\n-----Troque a linha sorteada com a outra, no caso linha %i com linha %i----\n",sort+1,sort2+1);  
  80.     for(i=0;i<T;i++){  
  81.       for(j=0;j<T;j++){
  82.         printf("[%i]\t",Mat[i][j]);  //h) Imprima a Matriz modificada, bem como os valores das linhas sorteadas */
  83.       }
  84.     }
  85.    
  86.     puts("\n\nO vetor contendo a diagonal principal e:");  
  87.     for(i=0;i<T;i++){
  88.       for(j=0;j<T;j++){
  89.         if(i==j){v[i]=Mat[i][j];} //i) Insira em um Vetor V, os valores da diagonal principal
  90.       }
  91.       printf("[%i] ",v[i]); //j) Imprima o Vetor devidamente identificado
  92.     }  
  93.     puts("\n\nPara verificacao, resultado da matriz final:"); //k) Imprima a Matriz para verificação
  94.     for(i=0;i<T;i++){  
  95.       for(j=0;j<T;j++){
  96.         printf("[%i]\t",Mat[i][j]);
  97.       }
  98.     }
  99. getch();
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement