SUMA_MATR.c



// SUMA DE MATRICES (USO DE LA TECLA TAB)

#include <stdio.h>
#include <stdlib.h>
#include <curses.h>

struct ELE_MAT
{
	int ren, col, Valor;
};

struct ELE_MAT MA[3][3], MB[3][3], MR[3][3];
WINDOW *win; /** manejaremos una Unica ventana de pantalla completa **/
/*********************************************************************/

void IniVideo()
{
	win=initscr();
	clear();
	refresh();
	noecho();
	cbreak();
	keypad(win, TRUE);
}

Exit()
{
	refresh();
	endwin();
	exit(1);
}

MuestraTablero( )
{
	int x, y, aba=3, der=3, espx=3, espy=10, sep=0;

	for(x=0; x < 3; x++)
		for(y=0; y < 3; y++)
		{
			sep=0; move(aba+x*espx, der+y*espy+sep); printw("_____");
				MA[x][y].ren=aba+x*espx;
				MA[x][y].col=der+y*espy+sep;
				MA[x][y].Valor=0; 
			sep=35; move(aba+x*espx, der+y*espy+sep); printw("_____");
				MB[x][y].ren=aba+x*espx;
				MB[x][y].col=der+y*espy+sep;
				MB[x][y].Valor=0; 
			sep=70; move(aba+x*espx, der+y*espy+sep); printw("_____");
				MR[x][y].ren=aba+x*espx;
				MR[x][y].col=der+y*espy+sep;
				MR[x][y].Valor=0; 
		}
	move(aba+espx, der+30); printw("+");
	move(aba+espx, der+65); printw("=");
}

main ()
{
	int X, Y;
	int Tecla = 0;			// Para guardar el cOdigo de la tecla pulsada

	IniVideo();
	clear();
	MuestraTablero( );

	X=Y=0;
	move(MA[0][0].ren, MA[0][0].col);
	for(;;)
	{
		Tecla = getch();
		if ( Tecla != 9 && Tecla != 353)
		{
			MA[X][Y].Valor = Tecla - 48;			// MENOS 48 POR LO DEL ASCII
			move(MA[X][Y].ren, MA[X][Y].col); printw("_____");
			move(MA[X][Y].ren, MA[X][Y].col); printw("%d", MA[X][Y].Valor);
		}
		if (Tecla ==  353){}	// SHIFT-TAB
		if (Tecla ==  9)	// TAB
		{
			Y++;
			move(MA[X][Y].ren, MA[X][Y].col); printw("__{}_");
		}
		refresh();
	}
}