<>
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