Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

danielswater

Prova de logica

Recommended Posts

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.