Programação I
2006/2007
1ºano
Ficha de Trabalho nº8
Tema: Arrays em C
Tópicos: Declaração
de Arrays
Inicialização
automática de arrays
Matrizes e arrays
multi-dimensionais
Passagem
de arrays como parâmetros
Exercícios resolvidos
Exercício 1
Escreva um programa que realize a leitura dos salários pagos a um indivíduo durante um ano. Em seguida deverá mostrar os valores mensais e o total anual.
#include <stdio.h>
main()
{
float sal[12];
float
total;
int i;
for(i=0; i<=12; i++)
{
printf(“Introduza o salário do mês %d:”, i+1);
scanf(“%f”,&sal[i]);
}
puts(“Mês Valor”);
for(i=0, total=0.0; i<12; i++)
{
printf(“ %3d %9.2f\n”,i+1,sal[i]);
total+=sal[i];
}
printf(“Total Anual: %9.2f\n”,total);
}
Exercício 2 (pag 213)
Escreva um programa que desenhe um jogo do galo. Use um array bidimensional inicializado a espaços.
#include <stdio.h>
#define DIM 3
main()
{
char
Galo[DIM][DIM]={{‘ ‘,’ ‘,’ ‘},{‘ ‘,’ ‘,’ ‘},{‘ ‘,’ ‘,’ ‘}};
int i,j;
Galo[0][0]=’X’;
Galo[1][1]=’X’;
Galo[0][2]=’0’;
Galo[2][2]=’0’;
For (i=0;i<DIM;i++)
{
for(j=0;j<DIM;j++)
printf(“%c %c”,Galo[i][j],j==DIM-1?’ ‘:’|’);
if
(i!=DIM-1) printf(“\n--------\n”);
}
}
Exercícios a resolver:
Exercício 3
3 |
4 |
2 |
-1 |
0 |
7 |
1 |
-5 |
9 |
1000 |
1002 |
1004 |
1006 |
1008 |
1010 |
1012 |
1014 |
1016 |
vect
Supondo o array
anterior, de valores do tipo short int, e p um apontador para short int, responda às seguintes questões:
Qual o valor de vect,
vect+1 e de vect[6]?
p=vect;
Qual o valor de p, *p, &p[0] e de p[0]?
p+=3;
Qual o valor de p, *p, p[2], p+2 e de *(p+2)?
p=&vect[5];
*(p--)=10;
Qual o valor de p, p-vect,
*p+1, *(p+1) e de p[1]?
Exercício
4
Escreva uma função que leia um array de caracteres e contabilize o número de letras
maiúsculas e minúsculas lidas.
Exercício
5
a)
Escreva
um programa que permita registar as temperaturas médias de cada um dos meses de
um dado ano. Terminada a leitura, o programa deve apresentar todos os valores
de temperatura registados.
b)
Altere
o programa para que, após a leitura das temperaturas, seja facultada ao
utilizador a possibilidade de pesquisar a ocorrência ou não de uma dada
temperatura. Construa o algoritmo de modo a que a pesquisa termine assim que o
valor seja encontrado, evitando dessa forma percorrer todo o vector quando tal
não seja necessário.
c)
Altere
uma vez mais o programa de forma a que passe a apresentar a média da
temperatura anual, a temperatura mais elevada, a mais baixa e a amplitude
térmica (diferença entre a maior e a menor).
Exercício 6
a)
Escreva
uma função que leia n valores
inteiros (50 no máximo) para um array cujo endereço
entre como parâmetro, sendo n inicialmente indicado pelo utilizador. A função
deverá devolver o número de valores lidos.
b)
Implemente
uma função que mostre o conteúdo de um vector de inteiros.
c)
Implemente
uma função que troque os conteúdos de dois vectores que receba como parâmetros.
d)
Escreva
um programa que faça uso das duas funções anteriores.
Exercício 7
Escreva
um programa que leia para um vector apenas letras maiúsculas ou minúsculas,
devendo a leitura terminar quando for introduzido um caracter diferente dos
atrás descritos. De seguida escreva uma função que separe as maiúsculas das
minúsculas, colocando-as em arrays diferentes.
Imprima os dois vectores resultantes.
Exercício 8
a)
Escreva
uma função que leia valores inteiros positivos. A leitura deverá terminar com a
introdução de um valor menor ou igual a zero.
b)
Imprima
no ecrã a sequência.
c)
Escreva
uma função que inverta a ordem dos elementos do vector.
d)
Imprima
a nova sequência.
Exercícios extra-aulas
Exercício
9
Escreva um programa que permita
armazenar num array valores inteiros lidos do teclado
que sejam superiores a zero e inferiores a 50. A leitura deverá terminar quando
for lido um valor inferior a zero (este valor não deve ser armazenado).
Acrescente-lhe então funções que façam o seguinte:
a) devolva
a posição do valor mínimo contido no vector;
b) devolva
a posição do valor máximo contido no vector;
c) mostre
a diferença entre o valor máximo e o valor mínimo contidos no vector;
d) mostre
todos os valores do array.
Conclua o programa de forma a
que, após a leitura, mostre a diferença entre o valor máximo e mínimo lidos,
apresente todos os valores lidos e por fim mostre todos os valores situados no array entre as posições dos valores mínimo e máximo.
Exercício 10
Pretendem-se guardar, numa
pauta, as notas de todos os alunos do 1º ano de um determinado curso, a todas
as disciplinas. Utilize um array bidimensional
(número de disciplinas X número de
alunos) para armazenar a informação pretendida. Construa um programa,
devidamente modularizado, que disponibilize repetidamente ao utilizador um menu
que inclua as seguintes opções:
a) Inserir
pauta;
b) mostrar
taxa de aprovação e reprovação a uma determinada disciplina;
c) mostrar
qual a disciplina onde se verifica uma maior taxa de reprovações;
d) qual a
média de um determinado aluno;
e) qual o
aluno com melhor média.