2007-03-26

Array's em C (2)

  1. Dada uma matriz a[n][m] determinar a matriz que resulta de:
    1. Trocar o menor elemento de cada linha i pelo elemento maior;
    2. Deslocar a primeira coluna para a segunda, a segunda para a terceira, ... , a n-ésima para a primeira;
    3. ordenar a matriz considerando o seguinte critério: a linha i é maior do que a linha j se na coluna de menor índice em que os elementos diferem, o elemento da linha i é maior do que o da linha j.
  2. Dadas duas matrizes de inteiros a[n][m] e b[m][k] calcular a matriz c[n][k] correspondente ao produto matricial de a por b.
  3. Dada uma matriz quadrada de inteiros a[n][n]
    1. calcular a sua transposta.
    2. substituir cada componente de a[][] não pertencente aos limites (4 cantos: superior, inferior, esquerdo e direito) pela média aritmética dos seus 8 vizinhos.
  4. Dada uma matriz com 1000 linhas e 7 colunas representando 1000 sorteios do totoloto (para valores inteiros de 1 a 52) calcular:
    1. Para cada sorteio o número de pares de números consecutivos;
    2. Os 3 números que ocorrem mais vezes;
    3. A maior sequência de números consecutivos.
  5. Simulação do jogo do galo. O jogo do galo joga-se num tabuleiro de 3x3 e dois jogadores. Cada jogador coloca alternadamente um 1 ou um 2 numa das quadriculas e ganha o que colocar 3 peças em linha (horizontal, vertical ou diagonal principal). O tabuleiro é representado por uma variável indexada a[2][2] que contém as jogadas feitas, supondo-se que se o jogador i jogou numa certa posição então o conteúdo dessa posição é i, para i=1,2. Se uma posição ainda não foi jogada o conteúdo de a nessa posição é 0. Nenhum jogador pode jogar numa posição já preenchida e o jogo termina empatado se todas as posições estão ocupadas e nenhum jogador ganhou. Em cada jogada deve ser imprimido o tabuleiro, isto é, a. No início o programa deve pedir o nome de cada um dos jogadores e imprimir o nome do jogador que ganhar.
  6. Simulação do jogo 5 em linha.
  7. Objectivo do Jogo
    Dois jogadores preenchem alternadamente as posições dum tabuleiro N×N, N>4. Um joga com peças 0 e o outro joga com peças 1. Ganha o jogo, o primeiro jogador que conseguir colocar 5 peças consecutivas na mesma direcção: numa linha, coluna ou diagonal (faz 5 em linha). O jogo termina - empatado - se já não houverem posições para preencher com peças. Supõe-se que inicialmente todas as posições do tabuleiro contêm o símbolo X.
    Regras do Jogo

    Os dois jogadores jogam alternadamente. Em cada jogada, um jogador selecciona uma posição da matriz indicando apenas a coluna c (de 1 a N) em que pretende jogar. Se a coluna c estiver toda preenchida, e, ainda restarem posições livres noutra coluna, terá de escolher uma dessas colunas livres. A posição em que ficará a sua peça será a corresponde à linha de maior numeração ainda livre, nessa coluna. Isto é, para uma dada coluna c, a primeira posição a ser preenchida é a (c,N), a segunda a (c,N-1), a terceira a (c,N-2), ... No fim de cada jogada, o computador terá de avaliar se o jogador ganhou o jogo. Para isso, basta verificar se com a peça que jogou conseguiu fazer 5 em linha. Note que não é necessário percorrer todas as posições do tabuleiro, mas apenas as posições que estão na mesma linha, coluna ou diagonais da última peça jogada.

    O programa a desenvolver deve, em cada jogada:
    • mostrar o tabuleiro
    • indicar qual o jogador que deve jogar
    • pedir ao jogador que seleccione uma coluna
    • verificar se o jogador fez 5 em linha
    • verificar se o jogo terminou e indicar o vencedor
    • permitir a continuação do jogo

Estruturas em C (2)

(Manipulação duma base de dados de livros) Suponha que para cada livro existe informação sobre os seguintes campos:
Título
80 caracteres
Autor1
20 caracteres (Nome Próprio)
Autor2
20 caracteres (Apelido)
Ano de Edição
inteiro sem sinal
Tema
40 caracteres
  1. Defina uma estrutura em C para guardar a informação anterior e defina uma variável indexada que contenha 100 elementos dessa estrutura.
  2. Escreva funções que permitam:
    1. Introduzir um novo livro (pelo terminal);
    2. Leitura dos dados de um ficheiro, supondo que no ficheiro cada campo é guardado numa linha; para optimizar as pesquisas pode guardar a informação ordenada (lexicograficamente) pelo campo Autor2;
    3. Retirar a informação de um livro da base de dados;
    4. Guardar a informação da base de dados num ficheiro;
    5. Procurar um livro por: Título ou Autor2;
    6. Produzir os seguintes relatórios:
      1. listagem de todos os livros
      2. listagem de todos os livros de um autor;
      3. listagem de todos os livros de um tema;
      4. listagem de todos os livros editados num mesmo ano;
      Para cada um dos relatórios, deve ser pedido ao utilizador para seleccionar quais os campos que pretende que sejam listados.
  3. Escreva um interface que após lida a base de dados, usando a função definida em , permita ao utilizador selecionar uma das tarefas:
    1. Introduzir novo livro
    2. Procurar por autor
    3. Procurar por titulo
    4. Retirar um livro;
    5. Relatórios
    6. Terminar
    Se for selecionada a tarefa 5. o utilizador ainda deverá escolher qual dos relatórios e qual a informação a imprimir.

2007-03-16

Funções em C (1)

Crie programas e funções em linguagem C para resolver os seguintes problemas:

  1. Dado um valor e a taxa do iva, crie uma função que devolva o preço a pagar (preço com iva incluido)
  2. Dado um valor e a taxa de desconto, crie uma função que devolva o preço final a pagar
  3. Crie uma função que processe os salários dos trabalhadores independentes atendendo às seguintes condições:
    1. a função recebe o valor hora (em euros) a pagar e o tempo (horas)
    2. ao valor bruto tem de ser acrescido iva de 21%
    3. ao valor bruto tem de ser deduzido a taxa de IRS em 20%
    4. Deverá ser apresentado ao utilizador, o valor bruto, o valor a pagar do iva, o valor deduzido para o IRS e o valor liquido que o trabalhador recebe.

2007-03-15

Estruturas em C (1)

Gestão de Cursos ...


Crie uma base de dados em C, através de estruturas de forma a guardar os seguintes dados:
5
Programacao Imperativa
1
Calculo Infinitesimal I
1
Programacao Estruturada
1
Probabilidades e Estatistica
2
Modelos de Computacao
2

6
Joao Diogo Silva
2001018001
1
2
Mariana Pinto Matias
2001018003
4
1
4
2
3
Anabela Moreira
2004018014
3
1
3
2
Sonia Silva
1999018015
1
1
Manuel Pereira
2001019005
2
3
2
Carlos Santos
2004019007
3
1
2
3




No exemplo anterior Programacao Imperativa é a disciplina 1 e Programacao Estruturada
a disciplina 3. Note também que Programacao Imperativa será a primeira disciplina a ocorrer na estrutura
de dados Disc, enquanto Programacao Estruturada será a terceira.

Os quatro primeiros dígitos dos códigos dos alunos representam o ano, os três seguintes o código do curso e os três últimos identificam o
aluno. O primeiro número que está a seguir ao código do aluno indica o número de disciplinas em que está inscrito.
Os números seguintes identificam essas disciplinas.

Dada uma base de dados contendo informação sobre alunos e disciplinas de cursos duma faculdade, pretende-se consultá-la para:
  • obter o número de alunos inscritos a cada disciplina

    Output: o título da tabela é Numero de alunos inscritos. A seguir tem uma linha de intervalo e depois a informação pedida para cada disciplina, obedecendo ao formato nome_disciplina : total_inscritos

  • obter as disciplinas que têm mais alunos dum dado curso inscritos

    Output: o título é Disciplinas com mais alunos do curso codigo_curso , segue-se linha de intervalo, e depois os nomes das disciplinas.
    A linha final contem o número de disciplinas nas condições indicadas e o número de alunos inscritos em cada uma delas, seguindo o formato,
    Total = número_disciplinas Maximo = numero_de_alunos.

  • imprimir, por ordem alfabética, a lista de alunos dum dado curso que entraram num dado ano.

    Output: o título é Alunos do curso código_do_curso que entraram em ano. São indicados depois todos os alunos nas condições pretendidas, código_do_aluno nome_do_aluno, e finalmente, o número total desses alunos (Total = número_alunos). Existirá uma linha de intervalo a seguir ao título e antes da linha final.
    NB: O programa não deverá alterar a base de dados, nem copiar integralmente o seu conteúdo para outra estrutura de dados auxiliar.

  • para uma dada disciplina (identificada pelo seu nome), determinar os cursos que têm o maior número de alunos inscritos nessa disciplina ou um número que não difira desse mais do que k unidades, para k dado.
    NB: Para contar quantos alunos de cada curso estão inscritos à disciplina dada, o programa só deverá percorrer a estrutura Alunos uma única vez. Nessa passagem, deve identificar os cursos existentes.

Deverao ser criadas 2 estruturas que agreguem a informação que se pretende, uma chamada aluno e outra disciplina