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",&notasAPC1[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",&notasGAAL[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.
Download

universidade estadual de mato grosso do sul