Ir ao conteúdo

Posts recomendados

Postado

<>

Ola,criei um algoritmo para calcular o tempo do atendimento dos clientes,mas não sei qual é o erro. Vou mandar o algoritmo feito pelo visualg + enunciado
 

Em um dia normal de trabalho, uma pizzaria funciona durante 16 horas, ou 960 minutos. Durante o dia a
pizzaria recebe pedidos via um aplicativo para celular. Para cada pedido são registrados o número do cliente
e o minuto do dia em que o pedido foi recebido. Um pedido do cliente número 12 no minuto 1 de
funcionamento seria registrado como:
R 12 1
onde R é o código de um pedido recebido.
Enquanto prepara o pedido de um cliente a pizzaria pode, é claro, receber novos pedidos de outros clientes.
Então, um pedido do cliente 23 no minuto 3 seria registrado como:
R 23 3
Ao finalizar um pedido, a pizzaria registra o evento como:
E 12 14
onde E é o código de um pedido enviado, 12 é o número do cliente e 14 é o minuto em que o pedido foi
finalizado.
Você pode assumir os seguintes fatos a respeito do problema:
 Um cliente pode fazer diversos pedidos durante o dia, mas ele não faz um novo pedido enquanto o
pedido anterior não foi finalizado;
 A pizzaria tem no máximo 100 clientes, numerados de 1 a 100;
 Algumas vezes, por alguma falha interna, a pizzaria deixa de finalizar e entregar alguns pedidos;
Sua tarefa: Escreva um algoritmo que determine o tempo total de atendimento dos clientes que fizeram
pedidos durante o dia.
Entradas: A primeira linha da entrada contém um inteiro N, o número de registros. Cada uma das N linhas
seguintes descreve um registro e contém um caractere (R, E) seguido de um número inteiro C (cliente) e do
inteiro M (minuto).
Saídas: Para cada cliente que efetuou um pedido no dia, o algoritmo deve produzir uma linha na saída
contendo dois inteiros: o número do cliente e o tempo total de atendimento para este cliente (o somatório dos
diversos pedidos). Se um cliente terminou o dia com um pedido não entregue, o tempo total de atendimento
para este cliente é -1.
Exemplos (entradas em azul e saída em vermelho):

4
R 2 25
R 3 26
E 2 31
E 3 32

Saida
2 6
3 6
11
R 12 1
R 23 3
R 45 6
E 45 7
R 45 8
E 23 9
R 23 10
E 23 12
R 34 13
E 12 14
E 34 15

Saida
12 13
23 8
34 2
45 -1

 

Algoritmo:

 

VAR
  i,j,k:inteiro
vet:vetor [0..11] de inteiro
 n,R,Enviado,number_cliente,min,minutos:inteiro
 
  ////////////////////////////////////////////////////////////
 inicio
//ENTRADA DE DADOS 1
 //Dígitos:11
//R 12 1
//R 23 3   
//R 45 6   
//E 45 7   
//R 45 8   
//E 23 9   
//R 23 10   
//E 23 12   
//R 34 13   
//E 12 14   
//E 34 15
 
//SAÍDA DE DADOS
//12 13
//23 8
//34 2
//45 -1  

//ENTRADA DE DADOS 2:
  //Dígitos:4
//R 2 25
//R 3 26
//E 2 31
//E 3 32

//SAÍDA
//2 6
//3 6

escreva ("Digite o número de dígitos:")   


// Lê o numero n de Registros.

leia (n)   

// Laço de repetição de 1 até n

para i<-1 ate n faca     

   ESCREVA ("Digite o tipo (R ou E), o N° do cliente e o minuto do pedido")     

   // Lê o número do cliente que é está compreendido entre 1 <= vet[number_cliente] <= 100. E se quiserem registrar o cliente 0 ou cliente 101, dá algum erro?

   leia (vet[number_cliente])       

   // Lê o minuto que o cliente é atendido no pedido Recebido, o qual deve estar compreendido entre 0 <= vet[min] < = 960 min.E se for feito um pedido em 1000 minutos?

   leia (vet[min])       

   //Lê a opção de pedido Recebido ou Enviado.

   LEIA(vet[i])

fimpara


// Exemplo de vetor vet[i] totalmente preenchido de 1 até n com "R" ou "Enviado" e abaixo encontram-se os correspondentes vetores de número do cliente e tempo de atendimento. Cada uma das posições do vetor TIPO é o vetor vet[i]?

TIPO = [R, R, R, Enviado, R, Enviado, R, Enviado, R, Enviado, Enviado]   

   number_cliente = [12, 23, 45, 45, 45, 23, 23, 23, 34, 12, 34]   

   min = [1, 3 , 6, 7, 8, 9, 10, 12, 13, 14, 15]
    

   para i <- 1 ate n faca
           

      se vet[i] = R entao         

         // Aqui você está contando os clientes cujos pedidos foram recebidos, e como você conta a quantidade de pedidos que um determinado cliente realizou?

         pedidos[i] <- number_cliente[i]
                 

         // Aqui embaixo Você está fazendo uma varredura da posição i + 1 em diante para verificar se o pedido recebido do cliente em i já foi entregue em algum atendimento em j.

         para j <- i + 1 ate n faca
             
            se vet[j] = Enviado entao
                              

               se number_cliente[i] = number_cliente[j] entao                 

                  // Se os número do pedido recebido em i for igual ao número do pedido enviado em j, você deve calcular o TOTAL de minutos gastos com aquele cliente em todos os pedidos realizados por ele.

                  []minutos <- min[j] - min[i]         

                  fimse           

                  fimse           

                  proximo j         

               fimpara

               // Se ao menos um número do pedido recebido pelo cliente em i não for entregue até o fim do dia em algum j, o tempo total gasto com aquele cliente é igual a -1.         

               minutos <- -1         

               proximo i     

               fimpara     

               pedidos = [12, 23, 45, 34]   

               minutos = [13,  8, -1,  2]     

               para k <- 1 ate n         

                  escreva (pedidos[k]  + minutos[k])     

               fimpara

               pedido Recebido ou de um pedido Entregue


fimalgoritmo

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...