From eea437dc84d2906b615fc243bb44cec57255fbe9 Mon Sep 17 00:00:00 2001 From: leo Date: Sun, 5 Mar 2023 18:36:32 -0300 Subject: First Commit --- Uni/primeiro_trab.c | 461 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 461 insertions(+) create mode 100644 Uni/primeiro_trab.c (limited to 'Uni/primeiro_trab.c') diff --git a/Uni/primeiro_trab.c b/Uni/primeiro_trab.c new file mode 100644 index 0000000..16f0e87 --- /dev/null +++ b/Uni/primeiro_trab.c @@ -0,0 +1,461 @@ +#include +#include +#include +#define tam 50 +#define altura 12 + +void bubble_sort(int array[tam], int col); +void create_matrix( int matrix[tam][tam], int x, int y); +void matrixcpy( int matrixcpy[tam][tam], int matrix[tam][tam], int x, int y ); +void show_matrix( int matrix[tam][tam], int x, int y ); +void change_lines( int matrix[tam][tam], int col, int linx, int liny ); +void change_colums( int matrix[tam][tam], int lin, int colx, int coly ); +int is_square_matrix( int x, int y ); +int change_diag( int matrix[tam][tam], int lin, int col ); +int is_sym_matrix( int matrix[tam][tam], int lin, int col ); +int is_magic_square( int matrix[tam][tam], int lin, int col ); +int is_latin_square( int matrix[tam][tam], int lin, int col ); +int is_permut_matrix(int matrix[tam][tam], int lin, int col); + +void clear_matrixwin(int startY, int startX, int maxY, int maxX); +void show_matrix_win2( int matrix[tam][tam], int x, int y); + +int yMax, xMax; +int startX, startY; + +int main(){ + int matrix[tam][tam], new_matrix[tam][tam]; + int lin, col, lin1, lin2; + + + /* printf("linha: coluna:\n"); + scanf("%d %d", &lin, &col); + create_matrix(matrix, lin, col); + matrixcpy(new_matrix, matrix, lin, col); + printf("%d\n", is_permut_matrix(new_matrix, lin, col)); + show_matrix(new_matrix, lin, col); + */ + initscr(); + noecho(); + cbreak(); + + const char * menu_itens[9] = { + "Ler Matriz", + "Trocar elementos da linha X pela linha Y", + "Trocar elementos da coluna X pela coluna Y", + "Trocar elementos da DP com DS", + "Verificar se a matriz e simetrica", + "Verificar se a matriz e um quadrado magico", + "Verificar se a matriz e quadrado latino", + "Verificar se a matriz e matriz de permutacao", + "Sair"}; + + int matrixwinY, matrixwinX; + int mwinyMax, mwinxMax; + + getmaxyx(stdscr, yMax, xMax); + getbegyx(stdscr, startY, startX); + + WINDOW * menuwin = newwin(altura, xMax, startY, startX); + WINDOW * matrixwin = newwin(yMax-altura, xMax/2, startY+altura, startX); + WINDOW * showwin = newwin(yMax-altura, xMax/2, startY+altura, startX+xMax/2); + + getmaxyx(matrixwin, mwinyMax, mwinxMax); + getbegyx(matrixwin, matrixwinY, matrixwinX); + + box(menuwin, 0, 0); + box(matrixwin, 0, 0); + box(showwin, 0, 0); + + + mvwprintw(matrixwin, 0, 1, "Sua-Matriz"); + mvwprintw(showwin, 0, 1, "Resultado"); + mvwprintw(menuwin, 0, 1, "Menu"); + + refresh(); + wrefresh(menuwin); + wrefresh(matrixwin); + wrefresh(showwin); + + keypad(menuwin, TRUE); + int seta; + int mark=0; + int tem_matriz=0; + //do{ + comeco: + matrixcpy(matrix, new_matrix, lin, col); + while(1){ + for(int i = 0; i<9; ++i){ + if(i==mark) + wattron(menuwin, A_REVERSE); + mvwprintw(menuwin, i+2, 1, menu_itens[i]); + wattroff(menuwin, A_REVERSE); + } + seta = wgetch(menuwin); + + switch(seta){ + case KEY_UP: + mark--; + + if(mark < 0) + mark = 8; + break; + + case KEY_DOWN: + mark++; + + if (mark >=9) + mark = 0; + break; + + default: + break; + } + if (mark==0) + tem_matriz=1; + + if (seta==10 && tem_matriz || mark==8 && seta==10) + break; + + } + + + + if(mark==0){ + clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + mvprintw(startY+altura+1,startX+1, "Digite quantas linhas e colunas a matriz tera, e pressione enter: "); + refresh(); + scanf("%d", &lin); + mvprintw(startY+altura+2,startX+1,"Linhas: %d", lin); + refresh(); + scanf("%d", &col); + mvprintw(startY+altura+3,startX+1,"Colunas: %d", col); + refresh(); + mvprintw(startY+altura+4,startX+1,"Pressione uma tecla para continuar..."); + getch(); + clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + create_matrix(matrix, lin, col); + matrixcpy(new_matrix, matrix, lin, col); + } + if(mark==1){ + clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + mvprintw(startY+altura+1,startX+1, "Digite o valor das linhas e clique enter"); + refresh(); + scanf("%d", &lin1); + mvprintw(startY+altura+2,startX+1,"Linha: %d", lin1); + refresh(); + scanf("%d", &lin2); + mvprintw(startY+altura+3,startX+1,"Linha: %d", lin2); + refresh(); + mvprintw(startY+altura+4,startX+1,"Pressione uma tecla para continuar..."); + getch(); + change_lines(matrix, col, lin1, lin2); + show_matrix(matrix, lin, col); + clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + show_matrix_win2(new_matrix, lin, col); + } + + if(mark==2){ + clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + mvprintw(startY+altura+1,startX+1, "Digite o valor das colunas e clique enter"); + refresh(); + scanf("%d", &lin1); + mvprintw(startY+altura+2,startX+1,"Linha: %d", lin1); + refresh(); + scanf("%d", &lin2); + mvprintw(startY+altura+3,startX+1,"Linha: %d", lin2); + refresh(); + mvprintw(startY+altura+4,startX+1,"Pressione uma tecla para continuar..."); + getch(); + change_colums(matrix, col, lin1, lin2); + show_matrix(matrix, lin, col); + clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + show_matrix_win2(new_matrix, lin, col); + } + + if(mark==3){ + + change_diag(matrix, lin, col); + show_matrix(matrix, lin, col); + clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + show_matrix_win2(new_matrix, lin, col); + } + if(mark==4){ + clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + + if(is_sym_matrix(matrix, lin, col)){ + mvprintw(yMax/2+6,xMax/4-11,"E uma matriz simetrica"); + refresh(); + }else{ + mvprintw(yMax/2+6,xMax/4-13,"Nao e uma matriz simetrica"); + refresh(); + } + } + if(mark==5){ + clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + + if(is_magic_square(matrix, lin, col)){ + mvprintw(yMax/2+6,xMax/4-10,"E um quadrado magico"); + refresh(); + }else{ + mvprintw(yMax/2+6,xMax/4-12,"Nao e um quadrado magico"); + refresh(); + } + } + if(mark==6){ + clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + + if(is_latin_square(matrix, lin, col)){ + mvprintw(yMax/2+6,xMax/4-10,"E um quadrado latino"); + refresh(); + }else{ + mvprintw(yMax/2+6,xMax/4-12,"Nao e um quadrado latino"); + refresh(); + } + } + if(mark==7){ + clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + + if(is_permut_matrix(matrix, lin, col)){ + mvprintw(yMax/2+6,xMax/4-12,"E uma matriz permutacao"); + refresh(); + }else{ + mvprintw(yMax/2+6,xMax/4-14,"Nao e uma matriz permutacao"); + refresh(); + } + } + + if(mark==8) + goto sair; + goto comeco; + sair: + //}while(mark != 8); + + //create_matrix(matrix, 3, 3); + //getch(); + //clear_matrixwin(startY+altura, startX,yMax-altura, xMax/2); + //create_matrix(matrix, 3, 3); + + + + + endwin(); + + + return 0; +} + +int is_permut_matrix(int matrix[tam][tam], int lin, int col){ + int soma = 1, soma1, soma2; + int teste[tam][tam]; + matrixcpy(teste, matrix, lin, col); + + for(int i=0; i