Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lista de Exercícios Nº 2 Linguagem de Programação 1 de 4 1) O dia da semana para uma data qualquer pode ser calculado pela seguinte fórmula: Dia da semana = RESTO(TRUNCA(2.6 * M – 0.1) + D + A + QUOCIENTE(A, 4) + QUOCIENTE(S, 4) – 2 * S, 7) onde: M representa o número do mês. Janeiro e fevereiro são os meses 11 e 12 do ano precedente, março é o mês 1 e dezembro é o mês 10. D representa o dia do mês. A representa o número formado pelos dois últimos algarismos do ano. S representa o número formado pelos dois primeiros algarismos do ano. Os dias da semana são numerados de zero a seis; domingo corresponde a 0, segunda a 1, e assim por diante. Faça então um programa que: - Leia um conjunto de datas (dia, mês, ano), conforme os exemplos apresentados a seguir. Assuma que todas as datas informadas serão datas válidas. Encerrar o processamento quando for informado a data dia 0 mês 0 ano 0, que não deverá ser processada. Usar uma struct para acomodar o dia, mês e ano da data. - Determine o dia da semana correspondente à data lida, segundo o método especificado anteriormente. Caso a fórmula apresentada anteriormente produza um valor negativo, some 7 a esse valor e prossiga normalmente com o processamento. - Escreva, para cada data lida, o dia, o mês, o ano e o nome do dia da semana calculado pelo seu programa, no formato indicado nos exemplos. Usar uma subrotina para determinar o número do dia da semana e outra para imprimir o nome do dia. Dicas: - O resto da divisão do número inteiro X pelo número inteiro Y é um inteiro dado, em linguagem C, por X%Y. - O quociente da divisão do número inteiro X pelo número inteiro Y é um inteiro dado, em linguagem C, por X/Y. Se um dos operandos (X ou Y ou ambos) for de tipo real (float ou double), então o resultado será um número real. - Para truncar um número real, descartando sua parte fracionária e convertendo o resultado para inteiro, basta colocar a expressão (int) antes do número ou variável real. Por exemplo, (int)3.1415 produz o valor 3; (int)vInfo produz o valor 10, caso a variável real vInfo possua o valor 10.424397. Exemplos: Valor informado Resultado a ser exibido 31 3 1991 31/03/1991: Domingo 5 12 1984 05/12/1984: Quarta-Feira 8 5 1998 08/05/1998: Sexta-Feira 2) Faça um programa que receberá os resultados dos alunos em uma disciplina, armazenando-os em um vetor. Para cada aluno deverão ser informados o seu RA (considerar os RAs do tipo utilizado na Fatec-SO), o nome do aluno (pode conter várias palavras, com tamanho total de até 40 caracteres), a nota final (um real de 0 a 10) e a quantidade de faltas (um número inteiro). Imprimir na tela o conteúdo digitado. Em seguida, ordenar o vetor em ordem decrescente de nota e, para alunos que possuam a mesma nota, considerar então o nome, em ordem crescente, ou seja, alunos de mesma nota aparecem no resultado final pela ordem alfabética do nome. Imprimir o vetor ordenado. Considerar que serão informados sempre os dados de 20 alunos. 3) Faça um programa que recebe o RA, a nota e o total de faltas de um aluno e os armazena em um arquivo. Em seguida o programa deverá solicitar ao usuário que informe o RA de um aluno. Se o aluno estiver cadastrado no arquivo, indicar se ele foi aprovado ou reprovado. Considere que o aluno é aprovado se a nota final é maior ou igual a 6.0 e o seu Lista de Exercícios Nº 2 Linguagem de Programação 2 de 4 total de faltas é menor ou igual a 10. Ao cadastrar os alunos, permitir apenas a gravação de notas entre 0 e 10 e não permitir total de faltas menor que zero. Ao consultar os dados, permitir ao usuário informar vários RAs, encerrando o programa quando o RA 000 for informado. 4) Faça um programa que lê o arquivo Triangulos.dat, onde cada registro contém 3 números reais que seriam as medidas dos lados de um triângulo. O seu programa deverá determinar se, para cada registro lido aquele conjunto de medidas pode ou não constituir os lados de um triângulo. Caso não possa, imprimir a mensagem “f1, f2 e f3 não formam um triangulo”, onde f1 é a menor medida e f3 é a maior medida. Se, por outro lado, as medidas puderem formar um triângulo, imprimir a área desse triângulo e seu tipo, conforme os exemplos mostrados a seguir. Exibir as medidas e a área sempre com 3 casas depois da vírgula. Dicas: a) O comprimento de cada lado de um triângulo é menor do que a soma dos comprimentos dos outros dois lados. b) Um triângulo equilátero possui seus 3 lados iguais. c) Um triângulo isósceles possui 2 de seus lados iguais. d) Um triângulo escaleno possui seus 3 lados com tamanhos diferentes. e) Os triângulos devem possuir medidas de comprimento maior que zero. f) A área de um triângulo pode ser calculada a partir das medidas de seus lados por meio do método do semiperímetro, às vezes chamado de método de Heron. Exemplo de entrada 1.0 1.0 1.0 2.0 3.0 4.0 3.0 4.0 5.0 2.0 3.0 3.0 4.0 3.0 2.0 1.0 2.0 3.0 4.5 3.82 6.97 9.85 2.38 7.42 0.00 -1.0 9.2 3.33 4.25 4.27 9.91 9.93 9.91 152.33 100.25 118.82 Saída esperada para o exemplo de entrada Tipo: Equilatero Area: 0.433 Tipo: Escaleno Area: 2.905 Tipo: Escaleno Area: 6.000 Tipo: Isosceles Area: 2.828 Tipo: Escaleno Area: 2.905 1.000 2.000 3.000 nao formam um triangulo Tipo: Escaleno Area: 7.879 2.380 7.420 9.850 nao formam um triangulo -1.000 0.000 9.200 nao formam um triangulo Tipo: Escaleno Area: 6.529 Tipo: Isosceles Area: 42.582 Tipo: Escaleno Area: 5950.976 Lista de Exercícios Nº 2 Linguagem de Programação 3 de 4 5) Considere o arquivo Atendimentos.dat descrito a seguir. Fazer um programa que recebe duas datas delimitando um período e totaliza os atendimentos ocorridos nesse intervalo, conforme o exemplo a seguir. Exemplo de conteúdo do arquivo. 1 18/02/2012 P 8 1 100 2 18/02/2012 P 6 4 100 3 18/02/2012 C 8 3 70 4 20/02/2012 P 7 2 100 5 20/02/2012 P 6 1 50 6 21/02/2012 C 6 5 50 7 22/02/2012 P 8 1 100 8 22/02/2012 P 7 4 70 9 22/02/2012 P 7 3 70 10 24/02/2012 P 8 5 50 11 26/02/2012 P 8 1 100 12 26/02/2012 C 8 3 70 13 28/02/2012 P 6 1 50 14 28/02/2012 P 7 2 100 15 28/02/2012 P 6 4 100 16 01/03/2012 P 7 3 70 17 01/03/2012 C 6 5 50 18 03/03/2012 P 7 4 70 19 03/03/2012 P 8 1 100 20 05/03/2012 P 8 5 50 Informe a data inicial do período: 19/02/2012 Informe a data final do período: 02/03/2012 Resultado (na tela): Data Particular Convênio Total 19/02/2012 0.00 0.00 0.00 20/02/2012 150.00 0.00 150.00 21/02/2012 0.00 50.00 50.00 22/02/2012 240.00 0.00 240.00 23/02/2012 0.00 0.00 0.00 24/02/2012 50.00 0.00 50.00 25/02/2012 0.00 0.00 0.00 Arquivo: Atendimentos.dat Estrutura Número do atendimento: int Data do atendimento: int/int/int Tipo do atendimento: char Código do médico: int Código do paciente: int Valor do atendimento: float Lista de Exercícios Nº 2 Linguagem de Programação 4 de 4 26/02/2012 100.00 70.00 170.00 27/02/2012 0.00 0.00 0.00 28/02/2012 250.00 0.00 250.00 29/02/2012 0.00 0.00 0.00 01/03/2012 70.00 50.00 120.00 02/03/2012 0.00 0.00 0.00 Totais => 860.00 170.00 1030.00
Compartilhar