Usuario solicitou um sistema de reserva de passagens e deseja que ao final do dia seja emitido um relatorio com todas as transações diaria por voo (até 100 lugares) contendo as seguintes informações:
Numero pedido, nome do cliente, pedido para 1a classe (X ou branco), pedido para 2a classe (X ou branco), aceita permuta (S ou N), contador da 1a classe (0 até 50), contador da 2a classe (0 até 50), tipo de passagem emitida (1a ou 2a ou proximo voo).
exemplo da saida:
pedido | cliente | 1a | 2a | P |R1|R2| ação
001 | cliente A | X | | N | 1 | 0 | 1a classe
Reserva é 1a classe ?
| Reserva é 2a classe ?
| | Contador 1a classe esta disponivel R1C
<50 ?
| | | Contador 2a classe esta
disponivel R2C < 50 ?
| | | |
Aceita trocar de classe?
| | | | |
S - S -
-
- S S N
S * Atualizar 1a classe R1C=R1C+1
* Emitir passage 1a classe
- S - S
-
S - N S S * Atualizar 2a classe R2C=R2C+1
* Emitir passage 2a classe
- - N N -
S - N - N
- S - N N * Indicar outro voo
N
N - -
-
S
S - - -
* Impossível
--------------------------
Simplificando um pouco:
Reserva é 1a classe ?
| Contador 1a classe esta disponivel R1C
<50 ?
| | Contador 2a classe esta
disponivel R2C < 50 ?
| | | Aceita trocar de classe?
| | | |
S S - -
N S N S * Atualizar 1a classe R1C=R1C+1
* Emitir passage 1a classe
N - S -
S N S S * Atualizar 2a classe R2C=R2C+1
* Emitir passage 2a classe
- N N -
S N - N
N - N N * Indicar outro voo
---------------------------------------------------------------
Simplificando/Complicando outro pouco:
- Reserva === 1a classe => classe
- lotado === Contador (classe) >= 50 ?
| Contador outra classe < 50 ? == contador ((classe+1)modulo 2)<50
| | Aceita trocar de classe?
| | |
0 - -
1 1 1 * Contador ((classe+lotado)modulo 2) +1
* Emitir passagem da (classe+lotado)modulo 2
1 0 -
1 - 0 * Indicar outro voo
Obs: outra classe === (classe+1)modulo 2
---------------------------------------------------------------
Sinal do Javascript === para comparar se valores são iguais, o significado original deve ser:
os dois valores são iguais que nem meeeesmo che! ... ou algo parecido.
Módulo 2 é o resto da divisão de um número pelo número 2
ver http://pt.wikipedia.org/wiki/Operação_módulo
Casos usados no problema:
0 módulo 2 => 0
1 módulo 2 => 1
2 módulo 2 => 0