Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Implemente um Programa em C, que lê uma Matriz inteira M[10,10] e a escreve. A seguir faça as
- seguintes operações:
- a) Troque a linha 2 com a linha 8
- b) Imprima a Matriz modificada
- c) Troque a coluna 4 com a coluna 9
- d) Imprima a Matriz modificada
- e) Troque a diagonal principal com a diagonal secundária
- f) Imprima a Matriz modificada
- g) Sorteie uma linha e a troque com outra linha sorteada (os valores não podem ser iguais, verifique isso)
- h) Imprima a Matriz modificada, bem como os valores das linhas sorteadas
- i) Insira em um Vetor V, os valores da diagonal principal
- j) Imprima o Vetor devidamente identificado
- k) Imprima a Matriz para verificação */
- #include<stdio.h>
- #include<conio.h>
- #include<stdlib.h>
- #define T 10
- int main(){
- int x=0,Mat[T][T],v[T],ds[T],i=0,j=0,aux=0,sort=0,sort2=0;
- for(i=0;i<T;i++){
- for(j=0;j<T;j++){
- Mat[i][j]=rand()%51; //inserindo valores aleatorios de 0-50 para a matriz
- }
- }
- printf("\n-----Matriz %ix%i----\n",T,T);
- for(i=0;i<T;i++){ //apresentando a randomica
- for(j=0;j<T;j++){
- printf("[%i]\t",Mat[i][j]);
- }
- }
- for(i=1,j=0;j<T;j++){ //a) Troque a linha 2 com a linha 8 V
- aux = Mat[i][j];
- Mat[i][j] = Mat[7][j];
- Mat[7][j]= aux;
- }
- printf("\n\n\n-----Troque a linha 2 com a linha 8----\n");
- for(i=0;i<T;i++){ //apresentando a matriz trocada. b) Imprima a Matriz modificada V
- for(j=0;j<T;j++){
- printf("[%i]\t",Mat[i][j]);
- }
- }
- printf("\n\n\n-----Troque a coluna 4 com a coluna 9----\n"); // c) Troque a coluna 4 com a coluna 9
- for(j=0;j<T;j++){
- aux = Mat[j][3];
- Mat[j][3] = Mat[j][8];
- Mat[j][8] = aux;
- }
- for(i=0;i<T;i++){//d) Imprima a Matriz modificada
- for(j=0;j<T;j++){
- printf("[%i]\t",Mat[i][j]);
- }
- }
- for(i=0;i<T;i++){
- for(j=0;j<T;j++){
- if(i==j){v[i]=Mat[i][j];} //fazendo a Diagonal principal para o proximo for
- if(i==9-j){ds[i]=Mat[i][j];} //fazendo a Diagonal secundaria para o proximo for
- }
- } printf("\n");
- printf("\n\n\n-----Troque a diagonal principal com a diagonal secundaria----\n"); //e) Troque a diagonal principal com a diagonal secundária
- //TIP: Diagonal principal, indice da linha é o mesmo que a coluna! (DP:i==j ) e DS:i+j==j)
- for(i=0;i<T;i++){
- for(j=0;j<T;j++){
- 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!
- else if(i+j==9){printf("[%i]\t",v[i]);Mat[i][j]=v[i];}
- else {printf("[%i]\t",Mat[i][j]);Mat[i][j]=Mat[i][j];} //f) Imprima a Matriz modificada
- }
- }
- do{
- sort=rand()%10; sort2=rand()%10; //Porque usei Do While; é necessário um valor randomico para fazer a verificação se é v1==v2.
- 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).
- }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)
- 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).
- aux = Mat[sort][j];
- Mat[sort][j] = Mat[sort2][j];
- Mat[sort2][j]= aux;
- }
- printf("\n\n\n-----Troque a linha sorteada com a outra, no caso linha %i com linha %i----\n",sort+1,sort2+1);
- for(i=0;i<T;i++){
- for(j=0;j<T;j++){
- printf("[%i]\t",Mat[i][j]); //h) Imprima a Matriz modificada, bem como os valores das linhas sorteadas */
- }
- }
- puts("\n\nO vetor contendo a diagonal principal e:");
- for(i=0;i<T;i++){
- for(j=0;j<T;j++){
- if(i==j){v[i]=Mat[i][j];} //i) Insira em um Vetor V, os valores da diagonal principal
- }
- printf("[%i] ",v[i]); //j) Imprima o Vetor devidamente identificado
- }
- puts("\n\nPara verificacao, resultado da matriz final:"); //k) Imprima a Matriz para verificação
- for(i=0;i<T;i++){
- for(j=0;j<T;j++){
- printf("[%i]\t",Mat[i][j]);
- }
- }
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement