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.