Como fazer espelhamento em Matriz linguagem C? [RESOLVIDO]

1. Como fazer espelhamento em Matriz linguagem C? [RESOLVIDO]

tiago
felipe524

(usa KUbuntu)

Enviado em 13/11/2013 - 10:19h

Bom dia ,
Por favor, teria como alguem me ajudar a fazer um exercicio que carregue uma matriz quadrada (7 x 7) com números aleatórios entre 5 e 99. A diagonal principal deverá ficar vazia. O programa somente deverá carregar os elementos acima da diagonal principal e, através da técnica de espelhamento, carregar os elementos abaixo da diagonal principal.
Segue o codigo onde ja consigo carregar a matriz, seixar a diagonal principal sem numero, e preciso de ajuda para espelhar do outro lado... teria como me ajudar?
Fico no aguardo.

/*

Programador: Digite aqui o seu nome

Data: Digite aqui a data do programa

Descrição: Descreva aqui qual a função do programa

*/
// modelo de 24.02.2012

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#include <ctype.h>
#include <time.h>


// rotina para podermos utilizar cor do texto (textcolor)
// e cor do fundo (textbackground) em um único comando.
// para chama-la de dentro do programa use cores(x,y);
// onde x = numero da cor do texto (textcolor)
// y = numero da cor do fundo (textbackground)

void cores(int ForgC, int BackC){ // para chamar
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);;
SetConsoleTextAttribute(GetStdHandle(STD… wColor);
return;
}

// esta rotina é só para a cor do texto

void textcolor(int newcolor)
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(… &csbi);
SetConsoleTextAttribute(GetStdHandle(STD…
(csbi.wAttributes & 0xf0) | newcolor);
}

// rotina para podermos utilizar o comando gotoxy(linha,coluna)
// sem precisar carregar bibliotecas não disponíveis na Feevale.

void gotoxy(int x, int y) {
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
// -------------- AQUI COMEÇA NOSSO PROGRAMA PROPRIAMENTE DITO -----------------



main ()
{

int lin=7, col=7;

int mat[lin][col];
int i,j;

srand(time(NULL));

for (i=0; i<lin; i++) {
for (j=0; j<col; j++) {
mat[i][j] = rand()%99+1;
}
}





for (i=0; i<lin; i++)
{
for (j=0; j<col; j++)
{


textcolor(15);
if (i==j)
textcolor(0);


printf("%4d",mat[i][j]);
}
printf("\n\n");
}






getch();

}

Att,


  


2. Re: Como fazer espelhamento em Matriz linguagem C? [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 13/11/2013 - 11:08h

primeiramente seu código possui alguns erros, como por exemplo, vc está atribuindo valor a uma matriz de 2 dimensões e está passando apenas uma das dimensões o certo seria:

matriz[i][j] = variável;

vou dar essa colher de chá, via esse método de espelhamento eu não sei como fazer, mas da forma simples seria algo assim(supondo que vc já atribuiu os valores):



int main(void)
{
int linha=7,coluna=7;
int matriz[linha][coluna],i,j;
for(i=0;i<linha;i++)
{
for(j=0;j<coluna;j++)
{
if(i!=j)
{
printf("%d ",matriz[i][j]);
}
}
}
}



3. Re: Como fazer espelhamento em Matriz linguagem C? [RESOLVIDO]

tiago
felipe524

(usa KUbuntu)

Enviado em 13/11/2013 - 13:59h

Ja consegui fazer, era barbada, bastava fazer um for colocando ao contrario a matriz, e sim tem duas dimensões.

Att,


4. Re: Como fazer espelhamento em Matriz linguagem C? [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 13/11/2013 - 16:54h

mas... ao contrário? um for usando os contadores invertidos na verdade não irá mostrar a matriz transposta?

no caso espelhada que vc se refere seria transposta?

por favor poste também o código final para que outras pessoas que procurem por algo relacionado saibam como vc resolveu.


5. Re: Como fazer espelhamento em Matriz linguagem C? [RESOLVIDO]

William Costa
costawilliam

(usa Outra)

Enviado em 19/11/2013 - 14:13h

Cara, fiz esse código... segue

// modelo de 21.02.2013

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#include <ctype.h>
#include <math.h>

// rotina para podermos utilizar cor do texto (textcolor)
// e cor do fundo (textbackground) em um único comando.
// para chama-la de dentro do programa use cores(x,y);
// onde x = numero da cor do texto (textcolor)
// y = numero da cor do fundo (textbackground)

void cores(int ForgC, int BackC){ // para chamar
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
return;
}

// esta rotina é só para a cor do texto

void textcolor(int newcolor)
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
(csbi.wAttributes & 0xf0) | newcolor);
}

// rotina para podermos utilizar o comando gotoxy(linha,coluna)
// sem precisar carregar bibliotecas não disponíveis na Feevale.

void gotoxy(int x, int y) {
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}

/*

Programador: Digite aqui o seu nome

Data: Digite aqui a data do programa

Descrição: Descreva aqui qual a função do programa

*/


// -------------- AQUI COMEÇA NOSSO PROGRAMA PROPRIAMENTE DITO -----------------

main()
{
int linha=7, coluna=7;
int mat [linha][coluna];
int i,j;

for (i=0; i<linha; i++)
{
for (j=0; j<coluna; j++)
{
mat[i][j] = rand()%94+5;
}
}

for (i=0; i<linha; i++)
{
for (j=0; j<coluna; j++)
{
textcolor(15);
if (i==j)
{
textcolor(00);
}
/* if (i+j == linha-1)
{
textcolor(14);
} */
if (mat[i][j]!= mat[j][i])
{
mat[j][i]=mat[i][j];
}
printf ("%4d", mat[i][j]);
}
printf("\n\n");
}
//system ("cls");
getch();
}







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts