Buscar

Trabalho GB - Algoritmos

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include <stdio.h>
#include <math.h>
////////////////////////////////////////////////////////////Variaveis globais//////////////////////////////////////////////////////////////////
int linha,coluna,selecao=0, selecao_op1=0, ordem,i,j,k=0,pares[10][10],par[100];
float m0[10][10],m1[10][10],m2[10][10],soma_matriz [10][10], bolha[100];
////////////////////////////////////////////////////////////Protótipo de funções////////////////////////////////////////////////////
void preencher (float matriz [10][10], int *local);
void imprimir (float matriz [10][10]);
void cabecalho ();
void diagonal_principal (float matriz [10][10]);
void diagonal_secundaria (float matriz [10][10]);
void acima_secundaria (float matriz [10][10]);
void abaixo_secundaria (float matriz [10][10]);
void det (float matriz [10][10]);
void soma (float m0[10][10],float m1[10][10],float m2[10][10],float soma_matriz[10][10]);
void multiplica (float m0[10][10],float m1[10][10],float soma_matriz[10][10]);
void menor_elemento (float m0 [10][10]);
void num_pares (int pares[10][10], int par[100]);
void desvio (float m0[10][10]);
void metodo_bolha(float bolha[100]);
main () {// Inicio main
int *local=0;
printf("\n**************************TRABALHO GB - ALGORITMOS***************************** \n Prof: VIVIANE TODT ALUNOS: ARIEL CAMPOS E WILLIAN RODRIGUES \n ");
while(1){
switch (selecao){ //Inicio switch - Tarefa 1: Mostrar uma matriz de ordem N no formato de uma tabela.
case 0:
cabecalho();
printf("\n \t Selecione a tarefa desejada: ");
scanf("%d",&selecao);
break;
case 1:
 switch (selecao_op1) {
 case 0:
 printf(" \n Digite respectivamente a quantidade de linhas e colunas da matriz (max. 10):\n ");
 scanf("%d %d",&linha,&coluna);
 preencher(m0,&local);
 selecao_op1=7;
 break;
 case 7:
 system("cls");
 printf(" \n opcao 0: Preencher novamente a matriz.");
 printf(" \n Opcao 1: Exibir matriz.");
 printf(" \n Opcao 2: Exibir a diagonal principal da matriz.");
 printf(" \n Opcao 3: Exibir a diagonal secundaria da matriz.");
 printf(" \n Opcao 4: Exibir os elementos posicionados acima da diagonal primaria.");
 printf(" \n Opcao 5: Exibir os elementos posicionados abaixo da diagonal secundaria.");
 printf(" \n opcao 6: Voltar ao MENU INICIAL \n\n");
 printf(" \n \t Digite a opcao desejada: ");
 scanf("%d",&selecao_op1);
 system("cls");
 break;
case 1:
 system("cls");
 imprimir(m0);
 system("pause");
 selecao_op1=7;
break;
case 2:
 system("cls");
 if (linha==coluna) diagonal_principal(m0);
 else printf(" \n Matriz deve ser quadrada para possuir diagonal principal. \n\n\n");
system("pause");
 selecao_op1=7;
break;
case 3:
 system("cls");
 if (linha==coluna) diagonal_secundaria(m0);
 else printf(" \n Matriz deve ser quadrada para possuir diagonal secundaria. \n\n\n");
system("pause");
 selecao_op1=7;
break;
case 4:
 system("cls");
 if (linha==coluna) acima_secundaria(m0);
 else printf(" \n Matriz deve ser quadrada para realizar operacao. \n\n\n");
system("pause");
 selecao_op1=7;
break;
case 5:
 system("cls");
 if (linha==coluna) abaixo_secundaria(m0);
 else printf(" \n Matriz deve ser quadrada para realizar operacao. \n\n\n");
system("pause");
 selecao_op1=7;
break;
case 6:
 system("cls");
 printf("\n\nAperte qualquer tecla para voltar a MENU INICIAL!!!\n\n");
 selecao=0;
 break;
default:
 system("cls");
 selecao_op1=7;
 break;
}
break;
case 2:
 system("cls");
 printf(" \n Ordem da matriz 2 ou 3 ? ");
 scanf("%d",&ordem);
 if (ordem==2) {linha=2; coluna=linha;}
 else if (ordem==3) {linha=3; coluna=linha;}
 else if (ordem!=2&&ordem!=3) printf(" \n Funcao invalida \n\n");
 if (ordem==2||ordem==3) {
 preencher(m0,&local);
 det (m0);}
 system("pause");
 selecao=0;
 system("cls");
break;
case 3:
 system("cls");
 printf(" \n Digite respectivamente a qnt de linhas e colunas da matriz: \n");
 scanf("%d %d",&linha,&coluna);
 printf(" \n Valores Matriz 0: \n");
 local=0;
 preencher (m0,&local);
 printf(" \n Valores Matriz 1: \n");
 local=1;
 preencher (m1,&local);
 printf(" \n Valores Matriz 2: \n");
 local=2;
 preencher (m2,&local);
 soma(m0,m1,m2,soma_matriz);
 system("pause");
 selecao=0;
 system("cls");
 break;
case 4:
 system("cls");
 printf(" \n Digite respectivamente a qnt de linhas e colunas da matriz: \n");
 scanf("%d %d",&linha,&coluna);
 printf(" \n Valores Matriz 0: \n");
 local=0;
 preencher (m0,&local);
 printf(" \n Valores Matriz 1: \n");
 local=1;
 preencher (m1,&local);
 multiplica(m0,m1,soma_matriz);
 system("pause");
 selecao=0;
 system("cls");
break;
case 5:
 system("cls");
 printf(" \n Digite respectivamente a qnt de linhas e colunas da matriz: \n");
 scanf("%d %d",&linha,&coluna);
 local=0;
 preencher (m0,&local);
 imprimir (m0);
 menor_elemento (m0);
 system("pause");
 selecao=0;
 system("cls");
break;
case 6:
 system("cls");
 printf(" \n Digite respectivamente a quantidade de linhas e colunas da matriz (max. 10):\n ");
 scanf("%d %d",&linha,&coluna);
 preencher(m0,&local);
 desvio(m0);
 system("pause");
 selecao=0;
 system("cls");
break;
case 7:
 system("cls");
 printf(" \n Digite respectivamente a qnt de linhas e colunas da matriz: \n");
 scanf("%d %d",&linha,&coluna);
 printf(" Numeros pares da matriz:\n ");
 num_pares (pares,par);
system("pause");
 selecao=0;
 system("cls");
break;
case 8:
 system("cls");
 printf("\n\nDigite quanto elementos serao fornecido:\n");
 scanf("%d",&linha);
 printf("Digite os valores:\n");
 metodo_bolha(bolha);
system("pause");
 selecao=0;
 system("cls");
 break;
case 9:
 system("cls");
 printf("\n\nsistema finalizado com sucesso!!!\n\n");
 exit(0);
 break;
default:
 system("cls");
 selecao=0;
break;
} //Final switch
}//Final while
} //Final main
/////////////////////////////////////////////////////////////////////Funções/////////////////////////////////////////////////////////////
void preencher (float matriz [10][10], int *local) {
int i,j;
printf("\n \t Digite %d valores. \n",linha*coluna);
for (i=0;i<linha;i++) {
 for (j=0;j<coluna;j++){
 printf("\n \t Posicao [%d][%d]:",i+1,j+1);
 if (*local==0) scanf("%f",&m0[i][j]);
 else if (*local==1) scanf("%f",&m1[i][j]);
 else if (*local==2) scanf("%f",&m2[i][j]);
 }}
}
void imprimir (float matriz [10][10]) {
int i,j;
for (i=0;i<linha;i++) {
 printf(" \t| ");
 for (j=0;j<coluna;j++){
 printf(" %.f ",matriz[i][j]); }
 printf(" | \n");}
}
void cabecalho (){
 printf("\n Tarefa 1: Inserir uma matriz de ordem n. \n ");
 printf("\n Tarefa 2: Calcular e mostrar o determinante de uma matriz de ordem 2 ou 3. \n");
 printf("\n Tarefa 3: Calcular e mostrar a soma de tres matrizes quaisquer. \n");
 printf("\n Tarefa 4: Calcular e mostrar a multiplicacao de duas matrizes. \n");
 printf("\n Tarefa 5: Calcular e mostrar o menor valor armazenado de uma matriz. \n");
 printf("\n Tarefa 6: Desvio-padrao dos valores armazenados de uma matriz.. \n");
 printf("\n Tarefa 7: Copiar para um vetor os numeros pares armazenados na matriz. \n");
 printf("\n Tarefa 8: Classificar elementos de um vetor \"Metodo Bolha \" \n ");
 printf("\n Tarefa 9: Sair do programa");
 printf(" \n________________________________________________________________________________ ");
}
void diagonal_principal (float matriz
[10][10]){
int i,j;
printf("\n\n\n\n \t Diagonal principal: \n");
for (i=0;i<linha;i++) {
 for (j=0;j<coluna;j++){
 if (i==j){printf(" %1.f\n ",matriz[i][j]); }
 }
 }
}
void diagonal_secundaria (float matriz [10][10]){
int i,j;
printf("\n\n \t Diagonal secundaria: \n");
for (i=0;i<linha;i++) {
 for (j=0;j<coluna;j++){
 if ((i+j+1)==coluna) printf(" %1.f\n",matriz[i][j]);
 }
 }
}
void acima_secundaria (float matriz [10][10]){
int i,j;
printf("\n\n \t Dados acima da diagonal secundaria: \n");
for (i=0;i<linha;i++) {
 for (j=0;j<coluna;j++){
 if (linha-1>i+j) printf(" %1.f\n ",matriz[i][j]);
 }
 }
}
void abaixo_secundaria (float matriz [10][10]){
int i,j;
printf("\n\n \t Dados abaixo da diagonal secundaria: \n");
for (i=0;i<linha;i++) {
 for (j=0;j<coluna;j++){
 if (linha-1<i+j) printf(" %.1f\n ",matriz[i][j]);
 }
 }
}
void det (float matriz [10][10]) {
int det,principal=0,secundaria=0,i,j;
if (linha==2){
 det=(matriz[0][0]*matriz[1][1])-(matriz[1][0]*matriz[0][1]);
 printf(" \n O determinante eh: %d \n\n", det); }
else if (linha==3) {
 principal=(matriz[0][0]*matriz[1][1]*matriz[2][2])+(matriz[0][1]*matriz[1][2]*matriz[2][0])+(matriz[0][2]*matriz[1][0]*matriz[2][1]);
 secundaria=(matriz[2][0]*matriz[1][1]*matriz[0][2])+(matriz[2][1]*matriz[1][2]*matriz[0][0])+(matriz[2][2]*matriz[1][0]*matriz[0][1]);
 det=principal-secundaria;
 printf(" \n O determinante eh: %d \n\n", det); }}
void soma(float m0[10][10],float m1[10][10],float m2[10][10],float soma_matriz[10][10]){
int i,j;
 for(i=0;i<linha;i++){
 for(j=0;j<coluna;j++){
 soma_matriz[i][j]=(m0[i][j]+m1[i][j]+m2[i][j]);
 } }
 printf("\n\n\n\n \t Soma das matrizes: \n");
 imprimir(soma_matriz);
}
void multiplica (float m0[10][10],float m1[10][10],float soma_matriz[10][10]) {
int i,j;
 for(i=0;i<linha;i++){
 for(j=0;j<coluna;j++){
 soma_matriz[i][j]=m0[i][j]*m1[i][j]; } }
 printf("\n\n\n\n \t Soma das matrizes: \n");
 imprimir(soma_matriz);
}
void menor_elemento (float m0 [10][10]) {
int i, j;
short int menor=32766;
 for(i=0;i<linha;i++){
 for(j=0;j<coluna;j++){
 if(m0[i][j]<menor) menor=m0[i][j];
 }}
 printf(" \n Menor elemento da matriz eh: %d \n\n", menor);
}
 void num_pares (int pares[10][10], int par[100]) {
 k=0;
 printf("\n \t Digite %d valores. \n",linha*coluna);
 for (i=0;i<linha;i++) {
 for (j=0;j<coluna;j++){
 printf("\n \t Posicao [%d][%d]:",i+1,j+1);
 scanf("%d",&pares [i][j]); }}
 for (i=0;i<linha;i++){
 for (j=0;j<coluna;j++){
 if (pares[i][j]%2==0){
 par[k]=pares[i][j];
 k++; } } }
 printf(" \n Matriz inserida: \n");
 for (i=0;i<linha;i++) {
 for (j=0;j<coluna;j++){
 printf(" |%d| ",pares[i][j]); }
}
 printf(" \n\n Elementos pares da matriz: \n\n");
 for (i=0;i<=k-1;i++){
 printf(" %d ",par[i]);
 }
printf("\n");
 }
 void desvio (float m0[10][10]){
 int i,j,somatorio=0;
 float m=0,dp=0,desvio1;
 for (i=0;i<linha;i++){
 for(j=0;j<coluna;j++){
 m=(m+m0[i][j]);
 }
 }
 m=m/(linha*coluna);
 printf("media: %f\n",m);
 for (i=0;i<linha;i++){
 for(j=0;j<coluna;j++){
 dp=(pow((m0[i][j]-m),2))+dp;
 desvio1=sqrt((dp/(linha*coluna)));
 }}
 printf("desvio padrao: %f",desvio1);
 }
 void metodo_bolha(float bolha[100]){
 int i,j,aux;
for(i=0;i<linha;i++){
 scanf("%f",&bolha[i]);}
for (i=0;i<linha;i++)
{
printf("vetor: %f\n", bolha[i]);
}
for(i=0;i<linha;i++){
 for( j=i+1;j<linha;j++){
 if(bolha[i]>bolha[j]){
 aux=bolha[i];
 bolha[i]=bolha[j];
 bolha[j]=aux;
 }
 }}
 printf("\n vetor:\n");
 for (i=0;i<linha;i++)
{
printf("vetor em ordem crescente: %f\n", bolha[i]);
}
 }

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais