danielswater 0 Denunciar post Postado Outubro 2, 2009 Galera boa noite E o seguinte, fiz uma prova de logica na facu esses dias e me ferrei bonito. Segue o enunciado: A TELEFONIA TABAJARA deseja calcular as contas telefônicas de seus assinantes através do computador. A cobrança de seus serviços é feita da seguinte maneira: Assinatura telefone residencial (código 1): R$ 30,00 (100 pulsos incluídos) telefone comercial (código 2): R$ 50,00 (100 pulsos incluídos) Serviço local: R$ 0,09 por pulso excedente (acima de 100 pulsos) Serviço despertador: R$ 5,00 por vez. Na entrada de dados teremos: código do assinante; tipo do telefone (comercial ou residencial); número de pulsos registrados para chamadas locais e número de serviços de despertador prestados. Baseado no que foi estudado na disciplina, faça um programa que leia os dados de um conjunto de assinantes (o código do assinante igual a zero encerra a entrada de dados). Calcule e mostre: o total da conta de cada assinante; valor da maior conta e o código do assinante que a pagou; o valor médio arrecadado por assinante. Agora o que estou fazendo: algoritmo "semnome" // Função : // Autor : // Data : 01/10/2009 // Seção de Declarações var CONTA, CODIGO,TOTALRES, TOTALCOM, TELRES,TELCOM, RES,COM ,MAIORCONTA, VALORMEDIO: REAL NUMPULSOS, CODASS,DESPERTADOR :INTEIRO inicio TOTALCOM <-0 TOTALRES <-0 CONTA <-0 RES <- 0 COM <- 0 MAIORCONTA <- 0 // Seção de Comandos ESCREVA (" DIGITE O CODIGO DO ASSINANTE OU 0 PARA SAIR ") LEIA (CODIGO) ENQUANTO CODIGO <> 0 FACA ESCREVA (" DIGITE 1 PARA TELEFONE RESIDENCIAL OU 2 PARA COMERCIAL ") LEIA (CODASS) SE CODASS = 1 ENTAO RES <- CODASS SENAO SE CODASS = 2 ENTAO COM <- CODASS FIMSE FIMSE ESCREVA (" DIGITE O NUMERO DE PULSOS ") LEIA (NUMPULSOS) SE NUMPULSOS <= 100 ENTAO TOTALRES <- 30 TOTALCOM <- 50 SENAO TOTALRES <- 30 + NUMPULSOS / 9 TOTALCOM <- 50 + NUMPULSOS / 9 FIMSE ESCREVA (" DIGITE A QUANTIDADE DE SERVIÇO DESPERTADOR ") LEIA (DESPERTADOR) TOTALRES <- TOTALRES + DESPERTADOR * 5 TOTALCOM <- TOTALCOM + DESPERTADOR * 5 SE (CODASS = 1) E (NUMPULSOS <= 100) ENTAO CONTA <- TOTALRES SENAO SE (CODASS = 1) E (NUMPULSOS > 100) ENTAO CONTA <- TOTALRES + NUMPULSOS / 9 FIMSE FIMSE SE (CODASS = 2) E (NUMPULSOS <= 100) ENTAO CONTA <- TOTALCOM SENAO SE (CODASS = 2) E (NUMPULSOS > 100) ENTAO CONTA <- TOTALCOM + NUMPULSOS / 9 FIMSE FIMSE VALORMEDIO <- CONTA / 2 ESCREVA (" DIGITE O CODIGO DO ASSINANTE OU 0 PARA SAIR ") LEIA (CODIGO) FIMENQUANTO ESCREVA (" A MEDIA DA CONTA E: ", VALORMEDIO) ESCREVA (" O TOTAL DA CONTA E: ", CONTA) fimalgoritmo Gostaria de saber se tem alguma coisa errada com o total da conta, pois no visualg ele da um resultado sempre de 10 a mais do que deveria Outra coisa que se alguem puder me ajudar eu agradeceria muito e me explicar como eu acho a maior conta, isso e coisa que nao me entra, assim como devemos atribuir +1 em algumas variaveis Por favor pessoal me deem uma luz valeu Obs: Ja fiz a prova e fui pessimo Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 2, 2009 Vamos por partes, primeiro vamos ver qnt o cara gastou: aux = 0; // digamos que aki é o empresarial total = 0; Leia (tipo_tel); Se (tipo_Tel = 1) Então aux = 1; //ou seja se o tipo n for 1 sera o tipo que q é empresarial Fim_se Se aux = 1 Então total = 30; Senão total = 50; Fim_Se Leia (pulsos); Se pulsos > 100 Então total = (total + ((pulsos - 100) * 0,09)); Fim_se Leia (despertador); total = (total + (despertador * 5)); Escreva("Total: " + total); Tendeu? Compartilhar este post Link para o post Compartilhar em outros sites
danielswater 0 Denunciar post Postado Outubro 2, 2009 Vamos por partes, primeiro vamos ver qnt o cara gastou: aux = 0; // digamos que aki é o empresarial total = 0; Leia (tipo_tel); Se (tipo_Tel = 1) Então aux = 1; //ou seja se o tipo n for 1 sera o tipo que q é empresarial Fim_se Se aux = 1 Então total = 30; Senão total = 50; Fim_Se Leia (pulsos); Se pulsos > 100 Então total = (total + ((pulsos - 100) * 0,09)); Fim_se Leia (despertador); total = (total + (despertador * 5)); Escreva("Total: " + total); Tendeu? quitZAUMMM Valeu por meu ajudar Ate entendi mas tenho 2 duvidas: aux = 0; total = 0; Porque temos que atribuir o 0 nessas variaveis sendo que no decorrer do algoritmo elas vao ter os respectivos valores? (30 e 1)? Ali no exemplo você colocou como se a pessoa tivesse digitado 1 e que esse 1 seria armazenado na variavel aux certo? e se a pessoa tivesse digitado 2, 3, 5...enfim, aonde ficaria armazenado esses valores?? Brigadao mesmo por estar me ajudando cara, você n tem ideia de como isso e importante p mim Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 2, 2009 Bom zerar as variaveis é uma boa pratica de programação. Até pq dependendo da linguagem elas podem vir com sujeira. No programa eu estou considerando que o usuario é amigavel, ou seja para o tipo de cliente ele vai digitar somente ou 1 ou 2. Se digitar 1 aux receberá 1, oq indicará q é do tipo residencial, se ele digitar 2, eu n faço nd e a variavel aux terá o valor 0, que eu representei como se fosse o tipo empresarial. Como o proprio nome diz 'aux' esta fazendo o papel de uma variavel auxiliar. tendeu?? []s Compartilhar este post Link para o post Compartilhar em outros sites
danielswater 0 Denunciar post Postado Outubro 2, 2009 Ok agora eu entendi porque atribuir 0. Entao mesmo que eu não atribua 0 o resultado vai ser o mesmo certo? Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 2, 2009 Bom acho q o Visualg n te trará sujeira de memoria. + como disse é uma boa pratica. Pq qnd começar a brincar com linguagem C, verá q isso vai fazer diferença ;D []s Compartilhar este post Link para o post Compartilhar em outros sites
danielswater 0 Denunciar post Postado Outubro 2, 2009 Bom acho q o Visualg n te trará sujeira de memoria. + como disse é uma boa pratica. Pq qnd começar a brincar com linguagem C, verá q isso vai fazer diferença ;D []s Ok, perfeito, acho bom eu já começar a acostumar com isso. Agora se puder, me tire uma duvida. O visualg ta me dando um erro nessa linha: total = (total + ((pulsos - 100) * 0,09)) Ele fala que esperava encontrar ')'. Ja troquei o = por <- , ja substitui a , do 0,09 por "." e ele continua dando esse erro de sintaxe E aproveitando, porque precisa colocar o sinal de + na linha "Escreva("Total: " + total);" Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 2, 2009 Bom parenteses não esta errado. faz como te falei separa as contas e junta elas depois. E sobre o escreva é como te falei, n sei a sintaxe correta no visualg, acho q n vai precisar do '+' []s Compartilhar este post Link para o post Compartilhar em outros sites
danielswater 0 Denunciar post Postado Outubro 2, 2009 Cara consegui graças a sua ajuda, ficou assim: algoritmo "semnome" // Função : // Autor : // Data : 2/10/2009 // Seção de Declarações var PULSOS, CODIGO, TEL, DESPERTADOR: inteiro TOTAL, TOTALMEDIA, MAIORCONTA, MEDIA: REAL inicio // Seção de Comandos TOTAL <- 0 MEDIA <- 0 MAIORCONTA <- 0 ESCREVA (" DIGITE O CODIGO DO ASSINANTE OU 0 PARA SAIR ") LEIA (CODIGO) ENQUANTO CODIGO <> 0 FACA ESCREVA (" DIGITE 1 PARA RESIDENCIAL OU 2 PARA COMERCIAL ") LEIA (TEL) SE TEL = 1 ENTAO TOTAL <- 30 SENAO TOTAL <- 50 FIMSE ESCREVA (" DIGITE A QUANTIDADE DE PULSOS ") LEIA (PULSOS) ESCREVA (" DIGITE A QUANTIDADE DE SERVIÇOS DESPERTADOR ") LEIA (DESPERTADOR) SE PULSOS > 100 ENTAO TOTAL <- TOTAL + PULSOS - 100 (* 0,09) FIMSE TOTAL <- TOTAL + DESPERTADOR * 5 MEDIA <- MEDIA + 1 SE TOTAL > MAIORCONTA ENTAO MAIORCONTA <- TOTAL FIMSE ESCREVA (" DIGITE O CODIGO DO ASSINANTE OU 0 PARA SAIR ") LEIA (CODIGO) FIMENQUANTO //MOSTRANDO A MEDIA// TOTALMEDIA <- TOTAL / MEDIA //MOSTRANDO A SAIDA// ESCREVA (" O TOTAL DA CONTA E ", TOTAL) ESCREVA (" O VALOR MEDIO ARRECADADO E ", TOTALMEDIA) ESCREVA (" O VALOR DA MAIOR CONTA E ", MAIORCONTA) ESCREVA (" O CODIGO DA MAIOR CONTA E", fimalgoritmo Agora o que ta pegando e como eu mostro o codigo do assinante que fez a maior conta Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 5, 2009 Do mesmo jeito que você está armazenando o valor da maior conta, você vai armazenar o código do cliente dessa maior conta, assim: SE MAIORCONTA > TOTAL ENTAO MAIORCONTA <- TOTAL CODIGOCLI <- CODIGO FIMSE []s Compartilhar este post Link para o post Compartilhar em outros sites