Você está na página 1de 3

Programação I – 2009/10

Eng. Informática / Informática de Gestão


Ficha de Trabalho nº 6
Tema: Arrays
Tópicos: Declaração de vectores
Acesso aos elementos de um vector
Passagem de vectores como parâmetros

Exercícios resolvidos

Exercício 1
Escreva um programa, constituído apenas pela função main(), que realize a leitura dos
salários pagos a um indivíduo durante um ano. Em seguida deverão ser mostrados os
valores mensais e o total anual.
#include <stdio.h>
main(){
float sal[12], 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: %.2f\n”,total);
}
Exercício 2
Escreva agora um programa bem estruturado que resolva igualmente o problema
anterior: defina funções para cada uma das tarefas envolvidas.
#include <stdio.h>
#define MESESdoANO 12

void lerSalarios(float sal[]){


int i;
for(i=0; i<MESESdoANO; i++){
printf(“Introduza o salário do mês %d: ”, i+1);
scanf(“%f”,&sal[i]);
}
}

void mostrarSalarios(float sal[]){


int i;
puts(“Mês Valor”);
for(i=0; i<MESESdoANO; i++)
printf(“%3d %9.2f\n”,i+1,sal[i]);
}

1/3
float somarSalarios(float sal[]){
float total=0.0;
int i;
for(i=0; i<MESESdoANO; i++) total+=sal[i];
return total;
}

main(){
float salarios[MESESdoANO];
lerSalarios(salarios);
mostrarSalarios(salarios);
printf(“Total Anual: %.2f\n”, somarSalarios(salarios));
}

Exercícios a resolver:
A partir de agora estruture correctamente os seus programas. Devem incorporar funções
que implementem as diferentes tarefas que se pretendem ver realizadas.
Exercício 3
Recupere o programa que escreveu para o exercício 10 da ficha anterior.
a)Introduza-lhe as devidas alterações de forma a que uma data passe a ser sempre
representada, não por três variáveis independentes, mas por um vector de três
inteiros.
b)Acrescente-lhe agora uma função que permita comparar duas datas que entrem
como parâmetros. Deve devolver: 0 se forem iguais; >0 se a primeira é posterior à
segunda; <0 se a primeira é anterior à segunda.
c)Acrescente-lhe mais uma função que recebendo, como parâmetros, a data actual e a
data de nascimento de alguém, determine a idade actual dessa pessoa. Faça a devida
validação das datas.
d)Altere, por fim, a função main() de forma a que a mesma faça uso das duas funções
anteriores.
Exercício 4
Escreva um programa (estruturado em funções) que leia caracteres até ser introduzido o
carácter ‘#’, ou até serem lidos 10 caracteres, o que acontecer primeiro. O programa
deve depois mostrar os caracteres por ordem inversa, e mostrar o número de letras
maiúsculas e o número de letras minúsculas lidas.
Exercício 5
a)Escreva um programa que lhe permita registar as temperaturas médias de cada um
dos meses ao longo de um 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).

2/3
Exercício 6
a)Escreva uma função que leia nvalores inteiros (50 no máximo) para um vector 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 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 vectores 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ício extra-aulas
Exercício 9
Escreva um programa que permita armazenar num vector valores inteiros lidos do
teclado que estejam contidos no intervalo entre 0 e 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 vector.
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 vector 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 Xnú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)preencher 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.

3/3

Você também pode gostar