UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL COMPUTAÇÃO, LICENCITURA APC1 – P3 RESOLUÇÃO Nome: ___________________________________________ RGM: ______ Data: 17/09/2015 *entregar os algoritmos e as implementações. 1 – O curso de Computação, Licenciatura da UEMS deseja saber algumas informações das disciplinas de APC1 e GAAL. Suponha que há seis alunos matriculados em APC1 e cinco alunos matriculados em GAAL. São quatro vetores para este controle de alunos, sendo um para cadastro das matrículas e um para cadastro das notas em cada disciplina, ou seja, cada disciplina tem dois vetores, um para matrícula e um para nota (correspondente à matrícula do aluno). Os números das matrículas são do tipo de dado inteiro e as notas do tipo de dado real. Exemplo: matAPC1 notasAPC1 25 10 31 12 3 17 1 2 3 4 5 6 9.5 8.0 10.0 5.0 6.5 2.5 1 2 3 4 5 6 matGAAL notasGAAL 10 18 14 6 19 1 2 3 4 5 8.6 9.5 10.0 3.5 4.5 1 2 3 4 5 Preencha as matrículas dos alunos com validação, ou seja, ao cadastrar cada matrícula, não permitir números de matrículas repetidos. Preencha as notas correspondentes. (2,0) Calcule e mostre as matrículas que aparecem nos dois vetores, ou seja, as matrículas que cursam as duas disciplinas. (1,0) Calcular e mostrar a maior e a menor nota de cada disciplina. (1,0) Calcular e mostrar a média aritmética das notas de cada disciplina. (1,0) Gerar um terceiro vetor de onze posições, composto pela junção dos elementos dos vetores de matrículas das duas disciplinas. Ordenar e mostrar este vetor. (2,0) Algoritmo: Implementação (vetores com tamanhos menores para facilitar o seu teste): #include<stdio.h> main() { int matAPC1[3],matGAAL[2],matAPC1GAAL[5],i,j,achou,aux; float notasAPC1[3],notasGAAL[2],maior,menor,media,soma; for(i=0;i<=2;i++)//cadastros das matric. e notas de APC1 { printf("\nDig. a matr%ccula. do %d%c aluno de APC1: ",161,i+1,167); do { achou=0; scanf("%d",&matAPC1[i]); if(i>0) { for(j=0;j<i;j++) { if(matAPC1[i]==matAPC1[j]) { printf("\nMatric. repetida! Digite novamente:"); achou=1; }//fim i }//fim for j }//fim if }while(achou==1); printf("\nDig. a nota do %d%c aluno de APC1: ",i+1,167); scanf("%f",¬asAPC1[i]); }//fim for i for(i=0;i<=1;i++)//cadastros das matric. e notas de GAAL { printf("\nDig. a matr%ccula. do %d%c aluno de GAAL: ",161,i+1,167); do { achou=0; scanf("%d",&matGAAL[i]); if(i>0) { for(j=0;j<i;j++) { if(matGAAL[i]==matGAAL[j]) { printf("\nMatric. repetida! Digite novamente:"); achou=1; }//fim i }//fim for j }//fim if }while(achou==1); printf("\nDig. a nota do %d%c aluno de GAAL: ",i+1,167); scanf("%f",¬asGAAL[i]); }//fim for i for(i=0;i<=2;i++)//matriculas que aparecem nos dois vetores { for(j=0;j<=1;j++) { if(matAPC1[i]==matGAAL[j]) printf("\nAluno de matric. %d est%c em APC1 e GAAL",matAPC1[i],160); } } maior=menor=notasAPC1[0]; for(i=0;i<=2;i++) { if(notasAPC1[i]>maior) maior=notasAPC1[i]; if(notasAPC1[i]<menor) menor=notasAPC1[i]; } printf("\nMaior nota em APC1: %f",maior); printf("\nMenor nota em APC1: %f",menor); maior=menor=notasGAAL[0]; for(i=0;i<=1;i++) { if(notasGAAL[i]>maior) maior=notasGAAL[i]; if(notasGAAL[i]<menor) menor=notasGAAL[i]; } printf("\nMaior nota em GAAL: %f",maior); printf("\nMenor nota em GAAL: %f",menor); soma=0; for(i=0;i<=2;i++) soma=soma+notasAPC1[i]; media=soma/3; printf("\nM%cdia das notas de APC1: %f",130,media); soma=0; for(i=0;i<=1;i++) soma=soma+notasGAAL[i]; media=soma/2; printf("\nM%cdia das notas de GAAL: %f",130,media); //junção do APC1 e GAAL em APC1GAAL for(i=0;i<=4;i++) { if(i<=2) matAPC1GAAL[i]=matAPC1[i]; else matAPC1GAAL[i]=matGAAL[i-3]; } //mostrando APC1GAAL for(i=0;i<=4;i++) { if(i==0) printf("\nAPC1GAAL: \t\t\t%d",matAPC1GAAL[i]); else printf("\t %d",matAPC1GAAL[i]); } //ordenando APC1GAAL for(i=0;i<=4;i++) { for(j=0;j<=3;j++) { if(matAPC1GAAL[j]>matAPC1GAAL[j+1]) { aux=matAPC1GAAL[j]; matAPC1GAAL[j]=matAPC1GAAL[j+1]; matAPC1GAAL[j+1]=aux; } } } //mostrando APC1GAAL ordenado for(i=0;i<=4;i++) { if(i==0) printf("\nAPC1GAAL Ordenado: \t%d",matAPC1GAAL[i]); else printf("\t %d",matAPC1GAAL[i]); } } 2 - Dada uma matriz A de ordem m x n, a matriz transposta dela será representada por AT de ordem “invertida” n x m. Essa ordem invertida significa que para transformarmos uma matriz em matriz transposta, basta trocar os elementos das linhas pelo das colunas e vice-versa. Veja o exemplo: Dada a matriz A = x 3. 3 x 2, a matriz transposta representada por At, será: AT = 2 Criar e preencher (ou inicializar) uma matriz A de ordem 3 x 2 e depois criar uma rotina (codificação) que preencha outra matriz AT de ordem 2 x 3 e como sendo a transposta de A. (3,0) Algoritmo: Implementação: #include<stdio.h> main() { int a[3][2]={{0,6},{-1,2},{5,0}}, at[2][3], i, j; for(i=0;i<=1;i++)//preenchendo at { for(j=0;j<=2;j++) { at[i][j]=a[j][i]; } } for(i=0;i<=2;i++) //mostrando a { for(j=0;j<=1;j++) { printf("\na[%d][%d]: %d",i,j,a[i][j]); } } printf("\n\n"); for(i=0;i<=1;i++)//mostrando at { for(j=0;j<=2;j++) { printf("\nat[%d][%d]: %d",i,j,at[i][j]); } } } BOA SORTE! Jamais considere seus estudos como uma obrigação, mas como uma oportunidade invejável para aprender a conhecer a influência libertadora da beleza do reino do espírito, para seu próprio prazer pessoal e para proveito da comunidade à qual seu futuro trabalho pertencer.