1 Cálculo do valor à vista



Documentos relacionados
Terceiro Exercício-Programa (EP3): Lojas PontoChic

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

MC Teste de Mesa e Comandos Repetitivos

Linguagem de Programação C. Fluxo de Saída Padrão. Linguagem de Programação C. printf. Fluxo de Saída Padrão. Algoritmos e Lógica de Programação

Estruturas de Repetição

Engenharia Econômica

Capítulo 6: Arquivos

TUTORIAL MATLAB Victor Breder 2016

Lista de Exercícios 04 Estruturas de Dados Homogêneas - Vetores

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Exercícios (if/ if else/ if elseif else)

Computação 2. Aula 8. Profª. Fabiany Arquivos

INF 1620 P2-14/10/05 Questão 1 Nome:

Capítulo 06: Arquivos

Lista 4 Introdução à Programação Entregar até 07/05/2012

Isomorfismos de Grafos, Grafos Planares e Árvores

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Programação. Folha Prática 4. Lab. 4. Departamento de Informática Universidade da Beira Interior Portugal Copyright 2010 All rights reserved.

Ficheiros binários 1. Ficheiros binários

Exercícios: Vetores e Matrizes

Comandos de Desvio 1

INF1005: Programação 1. Arquivos. 02/05/10 (c) Paula Rodrigues 1

Linguagem C: strings. Prof. Críston Algoritmos e Programação

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

PROGRAMAÇÃO DE COMPUTADORES I - BCC Lista de Exercícios do Módulo 1 - Preparação para a Prova 1

float vantagem(float candidato[], float concorrente[], int n);

Algoritmo e Pseudo-código

O que é Microsoft Excel? Microsoft Excel. Inicialização do Excel. Ambiente de trabalho

INF 1620 P3-27/11/04 Questão 1 Nome:

Planilha Eletrônica - Microsoft Excel -

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Medidas de Tendência Central. Introdução Média Aritmética Moda Mediana

Tipos de problemas de programação inteira (PI) Programação Inteira. Abordagem para solução de problemas de PI. Programação inteira

ESTRUTURAS CONDICIONAIS. Introdução à Ciência da ComputaçãoI Simone Senger de Souza

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Aula 05: Condicionais (Parte 2)

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

Exercícios: comandos de repetição

INF 1620 P4 30/06/07 Questão 1 Nome:

Exercícios: Comandos de Repetição

Curso técnico Integrado de Administração

Usando potências de 10

1. Estrutura de Dados

21 Strings O que são strings? 21.2 Leitura de Strings. Ronaldo F. Hashimoto e Carlos H. Morimoto

Referências. Programação de Computadores II. Cap. 7 Cadeias de Caracteres. Caracteres. Tópicos

1. Escreva um programa em Pascal que leia três valores inteiros e mostre-os em ordem crescente. Utilize seleção encadeada.

INF 1620 P1-18/09/04 Questão 1 Nome:

Manipulação de Arquivos em C

IND 1115 Inferência Estatística Aula 8

INF 1620 P3-29/06/04 Questão 1 Nome:

INF 1620 P3-02/07/02 Questão 1 Nome:

Estrutura switch if-else switch switch switch if-else-if switch switch case default break switch switch break Observações: case

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

O Jogo da Velha Dançarina

Aula 6 Oficina de Programação Estruturas Condicionais no C. Profa. Elaine Faria UFU

Departamento de Informática - PUC-Rio INF 1005 Programação I P1 22/09/2010 Nota

ANOVA. (Analysis of Variance) Prof. Dr. Guanis de Barros Vilela Junior

Exercícios de revisão da Linguagem C

Programação Estruturada

INF 1620 P1-17/09/05 Questão 1 Nome:

a) 2 b) 3 c) 4 d) 5 e) 6

Aula 3/4: Vetores/Matrizes e Ponteiros

O cilindro deitado. Eduardo Colli

INF 1620 P3-06/12/03 Questão 1 Nome:

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010

O valor nominal do título é de R$ 500,00, a taxa é de 1% ao mês e o prazo é de 45 dias = 1,5 mês.

FOLHA DE CÁLCULO VAMOS APRENDER

UNIVERSIDADE DO TOCANTINS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PRÁTICA EM PROGRAMAÇÃO DE SISTEMAS

Programação: Estruturas de seleção

RESOLUÇÃO CARGOS DE NÍVEL MÉDIO

Somando os termos de uma progressão aritmética

Introdução à Programação. Expressões Booleanas e Comandos Condicionais

Transcrição:

MAC-5 Introdução à Computação para Ciências Exatas e Tecnologia IO Segundo Exercício Programa Entregar até 7/0/2007 Comprar à vista ou comprar à prazo? Várias lojas já possuem alguns planos de crediário para atrair mais clientes, e ainda possibilitam criar outros planos que sejam compatíveis com as disponibilidades financeiras de seus clientes. O objetivo deste exercício-programa é poder calcular algumas opções de crédito descritas a seguir. Considere que todos os planos de pagamento têm prestações e juros fixos, e que a primeira prestação é paga sempre no ato da compra. Suponha também que os juros são sempre positivos e de no máximo 200% ao mês. As fórmulas dadas também consideram que os juros estão na forma fracionária, ou seja, um juro de 5% corresponde nas fórmulas a um valor de 0.05. Cálculo do valor à vista Como saber o valor à vista correspondente a um plano de pagamento? Ou seja, determinar o valor à vista v, dados o número n de prestações, o valor p de cada prestação e o valor j dos juros mensais cobrados. Sabe-se que vale a igualdade v = p + p + j + p ( + j) 2 + + p ( + j) n. Como a soma acima é a soma de uma progressão geométrica, a fórmula pode ser simplificada para v = p ( ) + j j ( + j) n. () 2 Cálculo do valor das prestações Outro problema é calcular o valor das prestações p, quando são conhecidos o valor à vista v, o número de prestações n e os juros cobrados j. O cálculo pode ser facilmente deduzido de (): p = vj + j /( + j) n. 3 Cálculo do número de prestações Dados um valor à vista v, um valor dos juros mensais j e um valor máximo de prestação pmax, determinar o número de meses (ou seja, de prestações) n e o valor exato da prestação a ser paga p. O valor exato p a ser encontrado é fixo e é o maior possível (menor ou igual a pmax). Mas, há uma restrição: um plano de crediário não pode ultrapassar 8 anos (96 meses). O método que você deve implementar é o seguinte:. Considerando j e pmax, calcule o menor n para o qual o valor à vista correspondente é maior ou igual a v. Como o número de prestações tem que ser no máximo 96, para que tal n exista, é necessário e suficiente que v pmax j ( ) + j ( + j) 96.

2. Tendo encontrado o valor de n (no item anterior), precisamos encontrar p pmax para o qual v = p ( ) + j j ( + j) n. 4 Funções a Serem Implementadas O seu programa deve conter, obrigatoriamente, pelo menos as seguintes funções.. double potencia (double x, int n); /* Recebe um número real x e um inteiro n >= 0, e devolve o valor */ /* da n-ésima pot^encia de x. */ 2. double valor_vista (double p, double j, int n); /* Recebe o valor da prestaç~ao p, o valor dos juros j e o número de */ /* prestaç~oes n, e devolve o valor à vista correspondente. */ 3. double valor_prestacao (double v, double j, int n); /* Recebe o valor à vista v, o valor dos juros j e o número de */ /* prestaç~oes n, e devolve o valor da prestaç~ao a ser pago. */ 4. int num_prest (double v, double pmax, double j); /* Recebe o valor à vista v, o valor máximo a ser pago em cada */ /* prestaç~ao pmax, e o valor dos juros cobrado j. */ /* Caso seja possível o pagamento do valor à vista v, a funç~ao */ /* devolve o número n de prestaç~oes, conforme descrito na */ /* Seç~ao 3; caso contrário, devolve 0. */ 5 Entrada e Saída Os dados de entrada devem ser lidos de um arquivo, cujo nome deve ser, obrigatoriamente, entrada.txt. A primeira linha desse arquivo deve conter um número inteiro positivo, indicando o número de problemas que devem ser analisados. Cada uma das linhas seguintes desse arquivo corresponde a um problema, e contém um caractere seguido de três números reais, ou de dois números reais e um terceiro número inteiro. Mais precisamente, existem três possibilidades:. Se o primeiro caractere é um v, os números correspondem, na ordem, ao valor da prestação, ao valor dos juros e ao número de meses. Neste caso, desejamos calcular o valor à vista correspondente. 2. Se o primeiro caractere é um p, os números correspondem, na ordem, ao valor à vista a ser pago, ao valor dos juros e ao número de meses. Neste caso, desejamos calcular o valor da prestação. 3. Se o primeiro caractere é um n, os números correspondem, na ordem, ao valor à vista a ser pago, ao valor máximo da prestação e ao valor dos juros. Neste caso, desejamos calcular, se possível, o número de meses e o valor exato da prestação. A saída também deverá ser escrita num arquivo, chamado, obrigatoriamente, saida.txt. O arquivo de saída deve conter um cabeçalho com pelo menos o seu nome e número USP. A cada linha do arquivo de entrada devem corresponder cinco linhas do arquivo de saída, da seguinte forma: as três primeiras linhas mostram os dados de entrada, a quarta linha a resposta calculada e a quinta linha fica em branco. Os valores correspondentes ao valor à vista e ao valor da prestação deverão ser escritos na forma R$ xxx,xx e o valor da taxa de juros na forma xxx.xx%. 2

5. Exemplo de Entrada e Saída Suponha que o arquivo entrada.txt tenha o conteúdo a seguir. 8 v 70.00 3.2 5 p 850.05 3.2 5 n 850.05 70.0 3.2 v 70 5 p 980.26 5 n 980.25 70.0 v 90 50 2 p 50 50 2 n 50 90 50 n 40 90 50 v 000 200 0 p 499.97 200 0 n 499.97 000 200 n 200 00 0 n 2080 000 5 n 20805.8 000 5 n 20305.67 000 5 n 20800.67 000 5 O conteúdo correspondente de um possível arquivo saida.txt é mostrado a seguir. Como os valores obtidos abaixo envolvem operações com números reais, podem ocorrer pequenas divergências entre os resultados abaixo e os seus resultados, devido aos erros de arredondamento. ****************************************************** * Nome do aluno... Numero USP... * *... * ****************************************************** Valor da taxa de juros : 3.20% Valor a vista : R$ 850,05 Valor a vista : R$ 850,05 Valor da taxa de juros : 3.20% Valor a vista : R$ 850,05 Valor maximo da prestacao : R$ 70,00 Valor da taxa de juros : 3.20% Valor da prestacao: R$ 70,00 Valor da taxa de juros :.00% Valor a vista : R$ 980,26 Valor a vista : R$ 980,26 3

Valor da taxa de juros :.00% Valor a vista : R$ 980,25 Valor maximo da prestacao : R$ 70,00 Valor da taxa de juros :.00% Valor da prestacao: R$ 70,00 Valor da prestacao : R$ 90,00 Numero de meses : 2 Valor a vista : R$ 50,00 Valor a vista : R$ 50,00 Numero de meses : 2 Valor da prestacao : R$ 90,00 Valor a vista : R$ 50,00 Valor maximo da prestacao : R$ 90,00 Numero de meses : 2 Valor da prestacao: R$ 90,00 Valor a vista = R$ 40,00 Valor maximo da prestacao : R$ 90,00 Numero de meses : 2 Valor da prestacao: R$ 84,00 Valor da prestacao : R$ 000,00 Valor da taxa de juros : 200.00% Numero de meses : 0 Valor a vista : R$ 499,97 Valor a vista : R$ 499,97 Valor da taxa de juros : 200.00% Numero de meses : 0 Valor da prestacao : R$ 000,00 Valor a vista : R$ 499,97 Valor da taxa de juros : 200.00% Numero de meses : 0 Valor da prestacao: R$ 000,00 Valor a vista : R$ 200,00 Valor maximo da prestacao : R$ 00,00 Valor da taxa de juros : 0.00% Nao e possivel realizar esse plano de crediario. Valor a vista : R$ 2080,00 Nao e possivel realizar esse plano de crediario. 4

Valor a vista = R$ 20805,80 Numero de meses: 96 Valor da prestacao: R$ 000,00 Valor a vista = R$ 20305,67 Numero de meses: 70 Valor da prestacao: R$ 999,80 Valor a vista = R$ 20800,67 Numero de meses: 96 Valor da prestacao: R$ 999,75 6 Uso de Arquivos para Entrada e Saída Para criar um arquivo com os dados de entrada, como o entrada.txt, do exemplo na Seção 5., você pode usar o próprio ambiente do sistema dev-c++. Para isso, abra um arquivo novo, digite os dados do exemplo, e salve o arquivo com o nome entrada.txt. O trecho de programa a seguir lê os dados do arquivo entrada.txt, e escreve a saída no arquivo saida.txt. #include <stdio.h> /* declaracoes das funcoes... */ int main () { FILE *arqentra, *arqsai; int n, np, i; double v, p, pmax, j; char codigo; /* declaracoes de outras variaveis... */ arqentra = fopen ("entrada.txt", "r"); if (arqentra == NULL) { printf ("ERRO: nao foi possivel abrir arquivo entrada.txt\n"); return ; arqsai = fopen ("saida.txt", "w"); if (arqsai == NULL) { printf ("ERRO: nao foi possivel criar arquivo saida.txt\n"); return ; /*... */ /* escreve cabecalho no arquivo de saida */ fprintf (arqsai, "******************************************\n"); fprintf (arqsai, "* Nome do aluno... Numero USP... *\n"); fprintf (arqsai, "*... *\n"); fprintf (arqsai, "******************************************\n"); 5

/*... */ fscanf (arqentra, "%d ", &np); for (i = ; i <= np; i++) { fscanf (arqentra, "%c", &codigo); switch (codigo) { case v : fscanf (arqentra, "%lf %lf %d ", &p, &j, &n); /* Calcula o valor a vista e imprime... */ break; case p : fscanf (arqentra, "%lf %lf %d ", &v, &j, &n); /* Calcula o valor da prestacao e imprime... */ break; case n : fscanf (arqentra, "%lf %lf %lf ", &v, &pmax, &j); /* Calcula, se possivel, o numero de prestacoes e */ /* o valor exato da prestacao, e imprime... */ break; default: printf ("Codigo invalido : %c\n", codigo); fclose (arqentra); fclose (arqsai); return 0; /* definicoes das funcoes... */ 7 Observações Gerais. Para testar o seu programa, crie um arquivo entrada.txt contendo, pelo menos, os dados do exemplo na Seção 5.. 2. Só utilize os recursos da linguagem C que forem vistos em aula até a data de entrega. 3. Você pode considerar que os valores de entrada (valores à vista, prestações, número de prestações e juros) são sempre positivos, e dentro dos intervalos descritos no enunciado. 4. Continuam valendo as observações do primeiro exercício-programa. 6