Libro 1
Libro 1
𝑟𝑖𝑜∗ 𝑐𝑟𝑒𝑎𝑟𝑈𝑠𝑢𝑎𝑟𝑖𝑜(𝑠𝑡𝑟𝑖𝑛𝑔 𝑡𝑖𝑝𝑜, 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒, 𝑠𝑡𝑟𝑖𝑛𝑔 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎) { 𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗ 𝑛𝑢𝑒𝑣𝑜 = 𝑛𝑒𝑤 𝑈𝑠𝑢𝑎𝑟𝑖𝑜; 𝑛𝑢𝑒𝑣𝑜−>𝑡𝑖𝑝𝑜 = 𝑡𝑖𝑝𝑜; 𝑛
𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎) { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑛𝑜𝑚𝑏𝑟𝑒: "; 𝑐𝑖𝑛 >> 𝑛𝑜𝑚𝑏𝑟𝑒; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(𝑛𝑢𝑚𝑒𝑟𝑖𝑐_𝑙𝑖𝑚𝑖𝑡𝑠<𝑠𝑡𝑟𝑒𝑎𝑚𝑠𝑖𝑧𝑒>::𝑚𝑎𝑥(), ′\𝑛′); // 𝐿𝑖𝑚𝑝𝑖𝑎
𝑛𝑢𝑙𝑙𝑝𝑡𝑟) { 𝑖𝑓 (𝑎𝑐𝑡𝑢𝑎𝑙−>𝑛𝑜𝑚𝑏𝑟𝑒 == 𝑛𝑜𝑚𝑏𝑟𝑒 && 𝑎𝑐𝑡𝑢𝑎𝑙−>𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎 == 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎) { 𝑟𝑒𝑡𝑢𝑟𝑛 𝑡𝑟𝑢𝑒; } 𝑎𝑐𝑡𝑢𝑎𝑙 = 𝑎
𝑓𝑒𝑟𝑚𝑒𝑟𝑎𝑣𝑜𝑖𝑑 𝑚𝑎𝑛𝑒𝑗𝑎𝑟𝑀𝑒𝑛𝑢𝐸𝑛𝑓𝑒𝑟𝑚𝑒𝑟𝑎(𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒& 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒, 𝑣𝑒𝑐𝑡𝑜𝑟<𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒>& 𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎) { 𝑖𝑛𝑡 𝑜𝑝𝑐𝑖𝑜𝑛; 𝑑𝑜 { 𝑐𝑜𝑢𝑡 <<
𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛𝑎 𝑜𝑝𝑐𝑖𝑜𝑛: "; 𝑐𝑖𝑛 >> 𝑜𝑝𝑐𝑖𝑜𝑛; 𝑠𝑤𝑖𝑡𝑐ℎ (𝑜𝑝𝑐𝑖𝑜𝑛) { 𝑐𝑎𝑠𝑒 1: 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑎𝑟𝐷𝑎𝑡𝑜𝑠𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒);
𝐴𝑠𝑖𝑔𝑛𝑎𝑛𝑑𝑜 𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑 𝑦 𝑚𝑒𝑑𝑖𝑐𝑜..." << 𝑒𝑛𝑑𝑙; 𝑎𝑠𝑖𝑔𝑛𝑎𝑟𝐸𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑𝑌𝑀𝑒𝑑𝑖𝑐𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 6:
𝑝𝑐𝑖𝑜𝑛 != 8);}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑚𝑜𝑠𝑡𝑟𝑎𝑟 𝑒𝑙 𝑚𝑒𝑛𝑢 𝑦 𝑔𝑒𝑠𝑡𝑖𝑜𝑛𝑎𝑟 𝑒𝑙 𝑖𝑛𝑔𝑟𝑒𝑠𝑜 𝑑𝑒 𝑢𝑠𝑢𝑎𝑟𝑖𝑜𝑠𝑣𝑜𝑖𝑑 𝑚𝑜𝑠𝑡𝑟𝑎𝑟𝑀𝑒𝑛𝑢𝐼𝑛𝑔𝑟𝑒𝑠𝑜(𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗& 𝑙𝑖𝑠𝑡𝑎𝑀
𝑒𝑟𝑚𝑒𝑟𝑖𝑎" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "5. 𝑆𝑎𝑙𝑖𝑟" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛𝑎 𝑜𝑝𝑐𝑖𝑜𝑛: "; 𝑐𝑖𝑛 >> 𝑜𝑝𝑐𝑖𝑜𝑛; 𝑖𝑓 (𝑐𝑖𝑛.𝑓𝑎𝑖𝑙()) {
𝑖𝑎𝑟 𝑒𝑙 𝑏𝑢𝑓𝑓𝑒𝑟 𝑑𝑒𝑙 𝑡𝑒𝑐𝑙𝑎𝑑𝑜 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒; 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑛𝑜𝑚𝑏𝑟𝑒); 𝑤ℎ𝑖𝑙𝑒 (!𝑒𝑠𝑁𝑜𝑚𝑏𝑟𝑒𝑉𝑎𝑙𝑖𝑑𝑜(𝑛𝑜𝑚𝑏𝑟𝑒)) { 𝑐𝑜𝑢𝑡 << "𝑁𝑜𝑚𝑏𝑟𝑒
𝑟𝑖𝑜∗ 𝑐𝑟𝑒𝑎𝑟𝑈𝑠𝑢𝑎𝑟𝑖𝑜(𝑠𝑡𝑟𝑖𝑛𝑔 𝑡𝑖𝑝𝑜, 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒, 𝑠𝑡𝑟𝑖𝑛𝑔 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎) { 𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗ 𝑛𝑢𝑒𝑣𝑜 = 𝑛𝑒𝑤 𝑈𝑠𝑢𝑎𝑟𝑖𝑜; 𝑛𝑢𝑒𝑣𝑜−>𝑡𝑖𝑝𝑜 = 𝑡𝑖𝑝𝑜; 𝑛
𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎) { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑛𝑜𝑚𝑏𝑟𝑒: "; 𝑐𝑖𝑛 >> 𝑛𝑜𝑚𝑏𝑟𝑒; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(𝑛𝑢𝑚𝑒𝑟𝑖𝑐_𝑙𝑖𝑚𝑖𝑡𝑠<𝑠𝑡𝑟𝑒𝑎𝑚𝑠𝑖𝑧𝑒>::𝑚𝑎𝑥(), ′\𝑛′); // 𝐿𝑖𝑚𝑝𝑖𝑎
𝑛𝑢𝑙𝑙𝑝𝑡𝑟) { 𝑖𝑓 (𝑎𝑐𝑡𝑢𝑎𝑙−>𝑛𝑜𝑚𝑏𝑟𝑒 == 𝑛𝑜𝑚𝑏𝑟𝑒 && 𝑎𝑐𝑡𝑢𝑎𝑙−>𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎 == 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎) { 𝑟𝑒𝑡𝑢𝑟𝑛 𝑡𝑟𝑢𝑒; } 𝑎𝑐𝑡𝑢𝑎𝑙 = 𝑎
𝑓𝑒𝑟𝑚𝑒𝑟𝑎𝑣𝑜𝑖𝑑 𝑚𝑎𝑛𝑒𝑗𝑎𝑟𝑀𝑒𝑛𝑢𝐸𝑛𝑓𝑒𝑟𝑚𝑒𝑟𝑎(𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒& 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒, 𝑣𝑒𝑐𝑡𝑜𝑟<𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒>& 𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎) { 𝑖𝑛𝑡 𝑜𝑝𝑐𝑖𝑜𝑛; 𝑑𝑜 { 𝑐𝑜𝑢𝑡 <<
𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛𝑎 𝑜𝑝𝑐𝑖𝑜𝑛: "; 𝑐𝑖𝑛 >> 𝑜𝑝𝑐𝑖𝑜𝑛; 𝑠𝑤𝑖𝑡𝑐ℎ (𝑜𝑝𝑐𝑖𝑜𝑛) { 𝑐𝑎𝑠𝑒 1: 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑎𝑟𝐷𝑎𝑡𝑜𝑠𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒);
𝐴𝑠𝑖𝑔𝑛𝑎𝑛𝑑𝑜 𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑 𝑦 𝑚𝑒𝑑𝑖𝑐𝑜..." << 𝑒𝑛𝑑𝑙; 𝑎𝑠𝑖𝑔𝑛𝑎𝑟𝐸𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑𝑌𝑀𝑒𝑑𝑖𝑐𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 6:
𝑝𝑐𝑖𝑜𝑛 != 8);}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑚𝑜𝑠𝑡𝑟𝑎𝑟 𝑒𝑙 𝑚𝑒𝑛𝑢 𝑦 𝑔𝑒𝑠𝑡𝑖𝑜𝑛𝑎𝑟 𝑒𝑙 𝑖𝑛𝑔𝑟𝑒𝑠𝑜 𝑑𝑒 𝑢𝑠𝑢𝑎𝑟𝑖𝑜𝑠𝑣𝑜𝑖𝑑 𝑚𝑜𝑠𝑡𝑟𝑎𝑟𝑀𝑒𝑛𝑢𝐼𝑛𝑔𝑟𝑒𝑠𝑜(𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗& 𝑙𝑖𝑠𝑡𝑎𝑀
𝑒𝑟𝑚𝑒𝑟𝑖𝑎" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "5. 𝑆𝑎𝑙𝑖𝑟" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛𝑎 𝑜𝑝𝑐𝑖𝑜𝑛: "; 𝑐𝑖𝑛 >> 𝑜𝑝𝑐𝑖𝑜𝑛; 𝑖𝑓 (𝑐𝑖𝑛.𝑓𝑎𝑖𝑙()) {
𝑛𝑎)) { 𝑐𝑜𝑢𝑡 << "𝐴𝑐𝑐𝑒𝑠𝑜 𝑐𝑜𝑛𝑐𝑒𝑑𝑖𝑑𝑜 𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜" << 𝑒𝑛𝑑𝑙; 𝑚𝑎𝑛𝑒𝑗𝑎𝑟𝑀𝑒𝑛𝑢𝑀𝑒𝑑𝑖𝑐𝑜(𝑟𝑒𝑐𝑒𝑡𝑎𝑠); 𝑐𝑟𝑒𝑑𝑒𝑛
𝑛𝑐𝑒𝑑𝑖𝑑𝑜 𝑎𝑙 𝑒𝑛𝑓𝑒𝑟𝑚𝑒𝑟𝑜" << 𝑒𝑛𝑑𝑙; 𝑚𝑎𝑛𝑒𝑗𝑎𝑟𝑀𝑒𝑛𝑢𝐸𝑛𝑓𝑒𝑟𝑚𝑒𝑟𝑎(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒, 𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎); 𝑐𝑟𝑒𝑑𝑒𝑛𝑐𝑖𝑎𝑙𝑒𝑠𝑉𝑎𝑙𝑖𝑑𝑎𝑠
4: { 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒, 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎; 𝑝𝑒𝑑𝑖𝑟𝐷𝑎𝑡𝑜𝑠(𝑛𝑜𝑚𝑏𝑟𝑒, 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎); 𝑎𝑔𝑟𝑒𝑔𝑎𝑟𝑈𝑠𝑢𝑎𝑟𝑖𝑜(𝑙𝑖𝑠𝑡𝑎𝐸𝑛𝑓𝑒𝑟𝑚𝑒𝑟𝑎𝑠, "𝑒
𝑎𝑡𝑎𝑚𝑖𝑒𝑛𝑡𝑜;};// 𝐸𝑠𝑡𝑟𝑢𝑐𝑡𝑢𝑟𝑎 𝑝𝑎𝑟𝑎 𝑎𝑙𝑚𝑎𝑐𝑒𝑛𝑎𝑟 𝑙𝑜𝑠 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒𝑠 𝑦 𝑠𝑢 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜𝑚𝑎𝑝<𝑠𝑡𝑟𝑖𝑛𝑔, 𝑣𝑒𝑐𝑡𝑜𝑟<𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀𝑒𝑑𝑖𝑐𝑜>> ℎ𝑖𝑠𝑡𝑜
𝑁𝑜𝑚𝑏𝑟𝑒.𝑓𝑖𝑛𝑑(𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒) != ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑃𝑜𝑟𝑁𝑜𝑚𝑏𝑟𝑒.𝑒𝑛𝑑()) { 𝑟𝑒𝑡𝑢𝑟𝑛 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑃𝑜𝑟𝑁𝑜𝑚𝑏𝑟𝑒[𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒]; } 𝑒𝑙𝑠𝑒 {
𝑎𝑡𝑜 𝑑𝑑/𝑚𝑚/𝑎𝑎𝑎𝑎): " << ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙[𝑖].𝑓𝑒𝑐ℎ𝑎𝐶𝑜𝑛𝑠𝑢𝑙𝑡𝑎 << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝑀𝑜𝑡𝑖𝑣𝑜 𝑑𝑒 𝑐𝑜𝑛𝑠𝑢𝑙𝑡𝑎: " << ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙[𝑖].𝑚𝑜𝑡𝑖𝑣𝑜𝐶𝑜𝑛𝑠𝑢
){ 𝑖𝑓 (𝑖𝑛𝑑𝑖𝑐𝑒 < ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑃𝑜𝑟𝑁𝑜𝑚𝑏𝑟𝑒[𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒].𝑠𝑖𝑧𝑒()) { ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑃𝑜𝑟𝑁𝑜𝑚𝑏𝑟𝑒[𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒][𝑖𝑛𝑑𝑖𝑐𝑒] = 𝑛𝑢𝑒𝑣
𝑐𝑜𝑢𝑡 << "𝐸𝑙 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜 𝑒𝑠𝑡𝑎 𝑣𝑎𝑐𝑖𝑜." << 𝑒𝑛𝑑𝑙; } 𝑒𝑙𝑠𝑒 { 𝑓𝑜𝑟 (𝑠𝑖𝑧𝑒_𝑡 𝑖 = 0; 𝑖 < ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙.𝑠𝑖𝑧𝑒(); ++𝑖) { 𝑠𝑖𝑧𝑒_𝑡 𝑏𝑎𝑠𝑒𝐼𝑛
𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑚𝑎𝑛𝑒𝑗𝑎𝑟 𝑙𝑎 𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑐𝑖𝑜𝑛 𝑑𝑒𝑙 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜𝑣𝑜𝑖𝑑 𝑚𝑎𝑛𝑒𝑗𝑎𝑟𝐴𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑐𝑖𝑜𝑛𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀𝑒𝑑𝑖𝑐𝑜() { 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎
𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒); } 𝑖𝑓 (ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑃𝑜𝑟𝑁𝑜𝑚𝑏𝑟𝑒.𝑓𝑖𝑛𝑑(𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒) != ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑃𝑜𝑟𝑁𝑜𝑚𝑏𝑟𝑒.𝑒𝑛𝑑()) { 𝑣𝑒𝑐𝑡𝑜𝑟<𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀
𝑎𝑙𝑀𝑒𝑑𝑖𝑐𝑜& 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜 = ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙[𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜𝐼𝑛𝑑𝑒𝑥]; // 𝑂𝑏𝑡𝑒𝑛𝑒𝑟 𝑒𝑙 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜 𝑎 𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟 𝑠𝑤𝑖𝑡𝑐ℎ (𝑐𝑎𝑚𝑝𝑜) { 𝑐𝑎𝑠𝑒 0:
𝑐𝑎𝑠𝑒 3: 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑢𝑒𝑣𝑜 𝑡𝑟𝑎𝑡𝑎𝑚𝑖𝑒𝑛𝑡𝑜: "; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(); 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜.𝑡𝑟𝑎𝑡𝑎𝑚𝑖𝑒𝑛𝑡𝑜)
𝑝𝑖𝑡𝑎𝑙> ℎ𝑜𝑠𝑝𝑖𝑡𝑎𝑙𝑒𝑠 = { {"𝐻𝑜𝑠𝑝𝑖𝑡𝑎𝑙 𝐺𝑒𝑛𝑒𝑟𝑎𝑙 𝐶𝑒𝑛𝑡𝑟𝑎𝑙", "123−456−789"}, {"𝐶𝑙𝑖𝑛𝑖𝑐𝑎 𝑆𝑎𝑛 𝑃𝑒𝑑𝑟𝑜", "987−654−321"}, {"𝐻𝑜𝑠𝑝
(); 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑖𝑓 (!𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑒𝑚𝑝𝑡𝑦() && 𝑖𝑠𝑎𝑙𝑝ℎ𝑎(𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒[0])) { 𝑛𝑜𝑚𝑏𝑟𝑒𝑉𝑎𝑙𝑖𝑑𝑜 =
𝑒𝑙 𝑏𝑢𝑓𝑓𝑒𝑟 𝑑𝑒 𝑒𝑛𝑡𝑟𝑎𝑑𝑎 𝑐𝑜𝑢𝑡 << "𝑂𝑝𝑐𝑖𝑜𝑛 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑡𝑒𝑛𝑡𝑒 𝑛𝑢𝑒𝑣𝑎𝑚𝑒𝑛𝑡𝑒." << 𝑒𝑛𝑑𝑙; } 𝑒𝑙𝑠𝑒 { 𝑜𝑝𝑐𝑖𝑜𝑛𝑉𝑎𝑙𝑖𝑑𝑎
𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒 << "\𝑛"; 𝑎𝑟𝑐ℎ𝑖𝑣𝑜 << "𝑀𝑒𝑑𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑜: " << 𝑟𝑒𝑐𝑒𝑡𝑎.𝑚𝑒𝑑𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑜 << "\𝑛"; 𝑎𝑟𝑐ℎ𝑖𝑣𝑜 << "𝐷𝑜𝑠𝑖𝑠: " << 𝑟𝑒
𝑐𝑜𝑣𝑜𝑖𝑑 𝑚𝑎𝑛𝑒𝑗𝑎𝑟𝑀𝑒𝑛𝑢𝑀𝑒𝑑𝑖𝑐𝑜(𝑣𝑒𝑐𝑡𝑜𝑟<𝑅𝑒𝑐𝑒𝑡𝑎>& 𝑟𝑒𝑐𝑒𝑡𝑎𝑠) { 𝑖𝑛𝑡 𝑜𝑝𝑐𝑖𝑜𝑛; 𝑣𝑒𝑐𝑡𝑜𝑟<𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀𝑒𝑑𝑖𝑐𝑜> ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙; 𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀𝑒𝑑𝑖𝑐
𝑠𝑒 𝑢𝑛𝑎 𝑜𝑝𝑐𝑖𝑜𝑛: "; 𝑐𝑖𝑛 >> 𝑜𝑝𝑐𝑖𝑜𝑛; 𝑖𝑓 (𝑐𝑖𝑛.𝑓𝑎𝑖𝑙()) { // 𝐿𝑖𝑚𝑝𝑖𝑎𝑟 𝑒𝑙 𝑏𝑢𝑓𝑓𝑒𝑟 𝑑𝑒 𝑒𝑛𝑡𝑟𝑎𝑑𝑎 𝑐𝑖𝑛.𝑐𝑙𝑒𝑎𝑟(); 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(
𝑏𝑟𝑒𝑉𝑎𝑙𝑖𝑑𝑜(𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒)) { 𝑛𝑜𝑚𝑏𝑟𝑒𝑉𝑎𝑙𝑖𝑑𝑜 = 𝑡𝑟𝑢𝑒; } 𝑒𝑙𝑠𝑒 { 𝑐𝑜𝑢𝑡 << "𝑁𝑜𝑚𝑏𝑟𝑒 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝑆𝑜𝑙𝑜 𝑠𝑒 𝑝𝑒𝑟𝑚𝑖𝑡𝑒𝑛 𝑙𝑒𝑡𝑟𝑎
𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑛𝑢𝑒𝑣𝑜𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜.𝑡𝑟𝑎𝑡𝑎𝑚𝑖𝑒𝑛𝑡𝑜); 𝑎𝑔𝑟𝑒𝑔𝑎𝑟𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙(𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒, 𝑛𝑢𝑒𝑣𝑜𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜); 𝑐𝑜𝑢
𝑢𝑡 << "𝑁𝑜 𝑠𝑒 𝑒𝑛𝑐𝑜𝑛𝑡𝑟𝑜 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜 𝑝𝑎𝑟𝑎 " << 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒 << 𝑒𝑛𝑑𝑙; } 𝑏𝑟𝑒𝑎𝑘; } 𝑐𝑎𝑠𝑒 3:
𝑢𝑎𝑟𝑖𝑜𝑠 𝑝𝑟𝑒𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑑𝑜𝑠 𝑎𝑔𝑟𝑒𝑔𝑎𝑟𝑈𝑠𝑢𝑎𝑟𝑖𝑜(𝑙𝑖𝑠𝑡𝑎𝑀𝑒𝑑𝑖𝑐𝑜𝑠, "𝑚𝑒𝑑𝑖𝑐𝑜", "𝐴𝑛𝑎", "123456"); 𝑎𝑔𝑟𝑒𝑔𝑎𝑟𝑈𝑠𝑢𝑎𝑟𝑖𝑜(𝑙𝑖𝑠𝑡𝑎𝐸𝑛𝑓𝑒𝑟𝑚𝑒𝑟𝑎𝑠, "𝑒𝑛
Tabla 3
Distribución de personas según el nivel de satisfacción con los productos recibidos anteriormente
Distribución de personas según su nivel de satisfacción con los productos recibidos anteriormente
Niveles de satisfacción fi hi pi
Muy satisfecho 28 0.16 15.56%
Satisfecho 120 0.67 66.67%
Neutral 28 0.16 15.56%
Insatisfecho 0 0.00 0.00%
Muy insatisfecho 4 0.02 2.22%
Total general 180 1.00 100%
Fuente: Inti S.A.C.
Tabla 4
Interpretación de la distribución de personas según el nivel de satisfacción con los productos recibidos anteriormente
𝑓_2=120 De las 180 personas, 120 se sienten satisfechas con los productos recibidos anteriormente de sus
ℎ_3=0.16 0.16 es la proporción de personas que se sienten neutrales con los productos recibidos de sus com
𝑃_5=2.22 2.22% de las personas se sienten muy insatisfechos con los productos recibidos anteriormente de
Fuente: Elaboración propia
Figura 2
Distribución porcentual de personas según el nivel de satisfacción con los productos recibidos anteriormente
60.00%
Porcentaje de Personas
50.00%
40.00%
30.00%
10.00%
2.22%
0.00%
0.00%
Muy satisfecho Satisfecho Neutral Insatisfecho Muy insatisfecho
Niveles de satisfación
Se observa que el 15.56% de las personas se encuentran muy satisfechas con los productos recibidos anteriormente de sus com
en línea y un 66.67%, están satisfechas. Asimismo, un 15.56% de las personas se sienten neutrales, 0% de las personas se
encuentran insatisfechas y 2.22% de las personas están muy insatisfechas. Esto indica que la mayoría de las personas tienen un
de satisfacción positivo con los productos recibidos.
Se observa que el 15.56% de las personas se encuentran muy satisfechas con los productos recibidos anteriormente de sus com
en línea y un 66.67%, están satisfechas. Asimismo, un 15.56% de las personas se sienten neutrales, 0% de las personas se
encuentran insatisfechas y 2.22% de las personas están muy insatisfechas. Esto indica que la mayoría de las personas tienen un
de satisfacción positivo con los productos recibidos.
𝑐𝑜𝑙𝑎𝑠#𝑖𝑛𝑐𝑙𝑢𝑑𝑒 <𝑠𝑡𝑎𝑐𝑘> // 𝑃𝑎𝑟𝑎 𝑝𝑖𝑙𝑎𝑠𝑢𝑠𝑖𝑛𝑔 𝑛𝑎𝑚𝑒𝑠𝑝𝑎𝑐𝑒 𝑠𝑡𝑑;// 𝐸𝑠𝑡𝑟𝑢𝑐𝑡𝑢𝑟𝑎 𝑝𝑎𝑟𝑎 𝑎𝑙𝑚𝑎𝑐𝑒𝑛𝑎𝑟 𝑙𝑜𝑠 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒 𝑙𝑜𝑠 𝑢𝑠𝑢𝑎𝑟𝑖𝑜𝑠𝑠𝑡𝑟𝑢𝑐𝑡 𝑈𝑠𝑢
𝑡ℎ()) 𝑟𝑒𝑡𝑢𝑟𝑛 𝑡𝑟𝑢𝑒; 𝑖𝑓 (!𝑖𝑠𝑎𝑙𝑝ℎ𝑎(𝑠𝑡𝑟[𝑖𝑛𝑑𝑒𝑥]) && 𝑠𝑡𝑟[𝑖𝑛𝑑𝑒𝑥] != ′ ′) 𝑟𝑒𝑡𝑢𝑟𝑛 𝑓𝑎𝑙𝑠𝑒; 𝑟𝑒𝑡𝑢𝑟𝑛 𝑒𝑠𝑆𝑜𝑙𝑜𝐿𝑒𝑡𝑟𝑎𝑠𝑌𝐸𝑠𝑝𝑎𝑐𝑖𝑜𝑠(𝑠𝑡𝑟, 𝑖𝑛𝑑𝑒𝑥 + 1);}
𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑚𝑎𝑛𝑒𝑗𝑎𝑟 𝑙𝑎 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 𝑑𝑒 𝑟𝑒𝑐𝑒𝑡𝑎𝑠𝑣𝑜𝑖𝑑 𝑎𝑠𝑖𝑔𝑛𝑎𝑟𝑅𝑒𝑐𝑒𝑡𝑎(𝑣𝑒𝑐𝑡𝑜𝑟<𝑅𝑒𝑐𝑒𝑡𝑎>& 𝑟𝑒𝑐𝑒𝑡𝑎𝑠) { 𝑅𝑒𝑐𝑒𝑡𝑎 𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐𝑒𝑡𝑎; 𝑏𝑜𝑜𝑙
𝑤ℎ𝑖𝑙𝑒 (!𝑒𝑛𝑡𝑟𝑎𝑑𝑎𝑉𝑎𝑙𝑖𝑑𝑎); // 𝑉𝑎𝑙𝑖𝑑𝑎𝑟 𝑚𝑒𝑑𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑜 𝑑𝑜 { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑚𝑒𝑑𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑜: "; 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐𝑒𝑡𝑎.𝑚𝑒
𝑉𝑎𝑙𝑖𝑑𝑎) { 𝑐𝑜𝑢𝑡 << "𝐷𝑜𝑠𝑖𝑠 𝑖𝑛𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑎. 𝑆𝑜𝑙𝑜 𝑠𝑒 𝑝𝑒𝑟𝑚𝑖𝑡𝑒𝑛 𝑙𝑒𝑡𝑟𝑎𝑠, 𝑛𝑢𝑚𝑒𝑟𝑜𝑠 𝑦 𝑒𝑠𝑝𝑎𝑐𝑖𝑜𝑠. 𝑉𝑢𝑒𝑙𝑣𝑎 𝑎 𝑖𝑛𝑔𝑟𝑒𝑠𝑎𝑟." << 𝑒𝑛𝑑𝑙; } }𝑤
; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(); // 𝐿𝑖𝑚𝑝𝑖𝑎𝑟 𝑒𝑙 𝑏𝑢𝑓𝑓𝑒𝑟 𝑑𝑒 𝑒𝑛𝑡𝑟𝑎𝑑𝑎 } } 𝑤ℎ𝑖𝑙𝑒 (!𝑒𝑛𝑡𝑟𝑎𝑑𝑎𝑉𝑎𝑙𝑖𝑑𝑎); // 𝑉𝑎𝑙𝑖𝑑𝑎𝑟 𝑐𝑎𝑑𝑎 𝑐𝑢𝑎𝑛𝑡𝑎𝑠 ℎ𝑜𝑟𝑎𝑠 𝑑𝑒𝑏𝑒 𝑡𝑜𝑚
𝑒(); // 𝐿𝑖𝑚𝑝𝑖𝑎𝑟 𝑒𝑙 𝑏𝑢𝑓𝑓𝑒𝑟 𝑑𝑒 𝑒𝑛𝑡𝑟𝑎𝑑𝑎 } } 𝑤ℎ𝑖𝑙𝑒 (!𝑒𝑛𝑡𝑟𝑎𝑑𝑎𝑉𝑎𝑙𝑖𝑑𝑎); 𝑟𝑒𝑐𝑒𝑡𝑎𝑠.𝑝𝑢𝑠ℎ_𝑏𝑎𝑐𝑘(𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐𝑒𝑡𝑎); 𝑐𝑜𝑢𝑡 << "𝑅𝑒𝑐𝑒𝑡𝑎 𝑎𝑠𝑖
𝑙𝑜𝑎𝑡 𝑡𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎; 𝑓𝑙𝑜𝑎𝑡 𝑝𝑟𝑒𝑠𝑖𝑜𝑛; 𝑓𝑙𝑜𝑎𝑡 𝑠𝑎𝑡𝑢𝑟𝑎𝑐𝑖𝑜𝑛; // 𝐴𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛𝑒𝑠 𝑖𝑛𝑡 𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑𝐴𝑠𝑖𝑔𝑛𝑎𝑑𝑎; 𝑠𝑡𝑟𝑖𝑛𝑔 𝑚𝑒𝑑𝑖𝑐𝑜𝐴𝑠𝑖𝑔𝑛𝑎
𝑒𝑙𝑢𝑙𝑎𝑟, 𝑖𝑛𝑡 𝑖𝑛𝑑𝑒𝑥 = 0) { // 𝑆𝑒 𝑎𝑠𝑢𝑚𝑒 𝑞𝑢𝑒 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝑡𝑒𝑙𝑒𝑓𝑜𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜 𝑡𝑖𝑒𝑛𝑒 9 𝑑𝑖𝑔𝑖𝑡𝑜𝑠 𝑖𝑓 (𝑐𝑒𝑙𝑢𝑙𝑎𝑟.𝑙𝑒𝑛𝑔𝑡ℎ() != 9) 𝑟𝑒𝑡𝑢𝑟𝑛 𝑓𝑎𝑙𝑠𝑒
𝑟𝑒, 𝑖𝑛𝑑𝑒𝑥 + 1);}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑣𝑎𝑙𝑖𝑑𝑎𝑟 𝑠𝑖 𝑒𝑙 𝑔𝑒𝑛𝑒𝑟𝑜 𝑖𝑛𝑔𝑟𝑒𝑠𝑎𝑑𝑜 𝑒𝑠 𝑣𝑎𝑙𝑖𝑑𝑜 (𝑀 𝑜 𝐹)𝑏𝑜𝑜𝑙 𝑒𝑠𝐺𝑒𝑛𝑒𝑟𝑜𝑉𝑎𝑙𝑖𝑑𝑜(𝑐ℎ𝑎𝑟 𝑔𝑒𝑛𝑒𝑟𝑜) { 𝑟𝑒𝑡𝑢𝑟𝑛 𝑔
𝑖𝑒𝑛𝑡𝑒& 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒) { 𝑐𝑜𝑢𝑡 << "𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑎𝑛𝑑𝑜 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒..." << 𝑒𝑛𝑑𝑙; // 𝐼𝑛𝑔𝑟𝑒𝑠𝑎𝑟 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑐𝑜𝑢𝑡 << "𝑁𝑜𝑚𝑏𝑟𝑒: "; 𝑐𝑖𝑛.𝑖
𝑎𝑏𝑒𝑡𝑖𝑐𝑜𝑠." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝐴𝑝𝑒𝑙𝑙𝑖𝑑𝑜: "; 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑎𝑝𝑒𝑙𝑙𝑖𝑑𝑜); } // 𝐼𝑛𝑔𝑟𝑒𝑠𝑎 𝑙𝑎 𝑓𝑒𝑐ℎ𝑎 𝑑𝑒 𝑛𝑎𝑐𝑖𝑚𝑖𝑒𝑛𝑡𝑜 𝑐𝑜𝑢𝑡 <<
>> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑒𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙; 𝑖𝑓 (!𝑒𝑠𝐸𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙𝑉𝑎𝑙𝑖𝑑𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑒𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙)) { 𝑐𝑜𝑢𝑡 << "𝐸𝑠𝑡𝑎𝑑𝑜 𝑐𝑖𝑣𝑖𝑙 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜
(𝑐𝑖𝑛, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑑𝑖𝑟𝑒𝑐𝑐𝑖𝑜𝑛); // 𝐼𝑛𝑔𝑟𝑒𝑠𝑎 𝑒𝑙 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝑐𝑒𝑙𝑢𝑙𝑎𝑟 𝑑𝑜 { 𝑐𝑜𝑢𝑡 << "𝐶𝑒𝑙𝑢𝑙𝑎𝑟 (9 𝑑𝑖𝑔𝑖𝑡𝑜𝑠): "; 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑐𝑒𝑙𝑢𝑙𝑎
𝑐𝑜𝑢𝑡 << "2. 𝐴𝑝𝑒𝑙𝑙𝑖𝑑𝑜" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "3. 𝐹𝑒𝑐ℎ𝑎 𝑑𝑒 𝑛𝑎𝑐𝑖𝑚𝑖𝑒𝑛𝑡𝑜" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "4. 𝐺𝑒𝑛𝑒𝑟𝑜" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "5
𝑐𝑜𝑢𝑡 << "𝑁𝑜𝑚𝑏𝑟𝑒 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑠𝑜𝑙𝑜 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒𝑠 𝑎𝑙𝑓𝑎𝑏𝑒𝑡𝑖𝑐𝑜𝑠." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝑁𝑢𝑒𝑣𝑜 𝑛𝑜𝑚𝑏𝑟𝑒
𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 3: 𝑐𝑜𝑢𝑡 << "𝑁𝑢𝑒𝑣𝑎 𝑓𝑒𝑐ℎ𝑎 𝑑𝑒 𝑛𝑎𝑐𝑖𝑚𝑖𝑒𝑛𝑡𝑜 (𝑓𝑜𝑟𝑚𝑎𝑡𝑜 𝑑𝑑/𝑚𝑚/𝑎𝑎𝑎𝑎): "; 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑓𝑒
} } 𝑤ℎ𝑖𝑙𝑒 (!𝑒𝑠𝐺𝑒𝑛𝑒𝑟𝑜𝑉𝑎𝑙𝑖𝑑𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑔𝑒𝑛𝑒𝑟𝑜)); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 5: 𝑐𝑜𝑢𝑡 << "𝑁𝑢𝑒𝑣𝑜 𝑒𝑠𝑡𝑎𝑑𝑜 𝑐𝑖𝑣𝑖𝑙 (𝑆
𝑖𝑓 (!𝑒𝑠𝐷𝑛𝑖𝑉𝑎𝑙𝑖𝑑𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑑𝑛𝑖)) { 𝑐𝑜𝑢𝑡 << "𝐷𝑁𝐼 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝐼𝑛𝑡𝑒𝑛𝑡𝑒 𝑛𝑢𝑒𝑣𝑎𝑚𝑒𝑛𝑡𝑒." << 𝑒𝑛𝑑𝑙; } }
𝐶𝑒𝑙𝑢𝑙𝑎𝑟𝑉𝑎𝑙𝑖𝑑𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑐𝑒𝑙𝑢𝑙𝑎𝑟)); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 9: 𝑐𝑜𝑢𝑡 << "𝑁𝑢𝑒𝑣𝑜 𝑐𝑜𝑟𝑟𝑒𝑜 𝑒𝑙𝑒𝑐𝑡𝑟𝑜𝑛𝑖𝑐𝑜: "; 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒
𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒 𝑑𝑜 { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒: "; 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑖𝑓 (!𝑒𝑠𝑁𝑜𝑚𝑏𝑟𝑒𝑉𝑎𝑙𝑖𝑑𝑜(
𝑛𝑢𝑚𝑒𝑟𝑜 𝑝𝑎𝑟𝑎 𝑒𝑙 𝑝𝑒𝑠𝑜: "; } 𝑐𝑜𝑢𝑡 << "𝑇𝑎𝑙𝑙𝑎 (𝑚): "; 𝑤ℎ𝑖𝑙𝑒 (!(𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑡𝑎𝑙𝑙𝑎)) { 𝑐𝑖𝑛.𝑐𝑙𝑒𝑎𝑟(); 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(𝑛𝑢𝑚𝑒𝑟𝑖𝑐_𝑙𝑖
𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(𝑛𝑢𝑚𝑒𝑟𝑖𝑐_𝑙𝑖𝑚𝑖𝑡𝑠<𝑠𝑡𝑟𝑒𝑎𝑚𝑠𝑖𝑧𝑒>::𝑚𝑎𝑥(), ′\𝑛′); 𝑐𝑜𝑢𝑡 << "𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑝𝑎𝑟𝑎 𝑙𝑎 𝑝
𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "| " << 𝑙𝑒𝑓𝑡 << 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 8) << "𝐷𝑎𝑡𝑜𝑠 𝑑𝑒 𝑡𝑟𝑖𝑎𝑗𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒:" << " |" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << 𝑠𝑡𝑟𝑖𝑛𝑔(𝑎𝑛𝑐ℎ𝑜, ′−
" << 𝑙𝑒𝑓𝑡 << 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 31) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑠𝑎𝑡𝑢𝑟𝑎𝑐𝑖𝑜𝑛 << " |" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << 𝑠𝑡𝑟𝑖𝑛𝑔(𝑎𝑛𝑐ℎ𝑜, ′−′) << 𝑒𝑛𝑑𝑙;}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎
12) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑎𝑝𝑒𝑙𝑙𝑖𝑑𝑜 << " |" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "| 𝐹𝑒𝑐ℎ𝑎 𝑑𝑒 𝑛𝑎𝑐𝑖𝑚𝑖𝑒𝑛𝑡𝑜: " << 𝑙𝑒𝑓𝑡 << 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 26) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑓𝑒𝑐ℎ
𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑐𝑒𝑙𝑢𝑙𝑎𝑟 << " |" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "| 𝐶𝑜𝑟𝑟𝑒𝑜 𝑒𝑙𝑒𝑐𝑡𝑟𝑜𝑛𝑖𝑐𝑜: " << 𝑙𝑒𝑓𝑡 << 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 24) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑐𝑜𝑟𝑟𝑒𝑜 << " |" <
𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒: "; 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑛𝑜𝑚𝑏𝑟𝑒); } 𝑐𝑜𝑢𝑡 << "𝐸𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑𝑒𝑠 𝑑𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠\𝑛"; 𝑐𝑜𝑢𝑡 << "1. 𝑀𝑒𝑑𝑖𝑐𝑖𝑛𝑎 𝑔𝑒𝑛𝑒𝑟𝑎
𝑎𝑑𝑎 = 𝑠𝑡𝑜𝑖(𝑖𝑛𝑝𝑢𝑡); 𝑖𝑓 (𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑𝐴𝑠𝑖𝑔𝑛𝑎𝑑𝑎 >= 1 && 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑𝐴𝑠𝑖𝑔𝑛𝑎𝑑𝑎 <= 10) { 𝑏𝑟𝑒𝑎𝑘;
𝑐𝑜𝑢𝑡 << "𝑁𝑢𝑚𝑒𝑟𝑜 𝑓𝑢𝑒𝑟𝑎 𝑑𝑒 𝑟𝑎𝑛𝑔𝑜. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑣𝑎𝑙𝑖𝑑𝑜 𝑑𝑒 𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒
𝑒.𝑚𝑒𝑑𝑖𝑐𝑜𝐴𝑠𝑖𝑔𝑛𝑎𝑑𝑜); } 𝑐𝑜𝑢𝑡 << "𝐸𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑 𝑦 𝑚𝑒𝑑𝑖𝑐𝑜 𝑎𝑠𝑖𝑔𝑛𝑎𝑑𝑜𝑠 𝑐𝑜𝑛 𝑒𝑥𝑖𝑡𝑜." << 𝑒𝑛𝑑𝑙;}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑎𝑠𝑖𝑔𝑛𝑎𝑟 𝑢𝑛 𝑙𝑢𝑔𝑎𝑟 𝑒𝑛
𝑐𝑜𝑢𝑡 << "𝑁𝑖𝑣𝑒𝑙𝑒𝑠 𝑑𝑒 𝑢𝑟𝑔𝑒𝑛𝑐𝑖𝑎\𝑛" << "1. 𝑅𝑒𝑠𝑢𝑐𝑖𝑡𝑎𝑐𝑖𝑜𝑛\𝑛" << "2. 𝐸𝑚𝑒𝑟𝑔𝑒𝑛𝑐𝑖𝑎\𝑛" << "3. 𝑈𝑟𝑔𝑒𝑛𝑐𝑖𝑎\𝑛" << "4
𝑐𝑖𝑎; } 𝑎𝑢𝑡𝑜 𝑖𝑡 = 𝑓𝑖𝑛𝑑_𝑖𝑓(𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎.𝑏𝑒𝑔𝑖𝑛(), 𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎.𝑒𝑛𝑑(), [&𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒](𝑐𝑜𝑛𝑠𝑡 𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒 &𝑝) { 𝑟𝑒𝑡𝑢𝑟𝑛 𝑝.𝑛𝑖𝑣𝑒𝑙𝑈𝑟𝑔𝑒𝑛𝑐𝑖𝑎
𝑜(𝑛𝑜𝑚𝑏𝑟𝑒)) { 𝑐𝑜𝑢𝑡 << "𝑁𝑜𝑚𝑏𝑟𝑒 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑠𝑜𝑙𝑜 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒𝑠 𝑎𝑙𝑓𝑎𝑏𝑒𝑡𝑖𝑐𝑜𝑠." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑
atisfacción
2.22%
Muy insatisfecho
𝑎 𝑎𝑙𝑚𝑎𝑐𝑒𝑛𝑎𝑟 𝑙𝑜𝑠 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒 𝑙𝑜𝑠 𝑢𝑠𝑢𝑎𝑟𝑖𝑜𝑠𝑠𝑡𝑟𝑢𝑐𝑡 𝑈𝑠𝑢𝑎𝑟𝑖𝑜 { 𝑠𝑡𝑟𝑖𝑛𝑔 𝑡𝑖𝑝𝑜; // ′𝑚𝑒𝑑𝑖𝑐𝑜′ 𝑜 ′𝑒𝑛𝑓𝑒𝑟𝑚𝑒𝑟𝑎′ 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒; 𝑠𝑡𝑟𝑖𝑛𝑔 𝑐𝑜𝑛𝑡𝑟𝑎
𝑟𝑒𝑡𝑢𝑟𝑛 𝑒𝑠𝑆𝑜𝑙𝑜𝐿𝑒𝑡𝑟𝑎𝑠𝑌𝐸𝑠𝑝𝑎𝑐𝑖𝑜𝑠(𝑠𝑡𝑟, 𝑖𝑛𝑑𝑒𝑥 + 1);}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑟𝑒𝑐𝑢𝑟𝑠𝑖𝑣𝑎 𝑝𝑎𝑟𝑎 𝑣𝑎𝑙𝑖𝑑𝑎𝑟 𝑞𝑢𝑒 𝑢𝑛𝑎 𝑐𝑎𝑑𝑒𝑛𝑎 𝑐𝑜𝑛𝑡𝑖𝑒𝑛𝑒 𝑠𝑜𝑙𝑜 𝑙𝑒𝑡𝑟𝑎𝑠, 𝑛𝑢𝑚𝑒
𝑒𝑐𝑒𝑡𝑎>& 𝑟𝑒𝑐𝑒𝑡𝑎𝑠) { 𝑅𝑒𝑐𝑒𝑡𝑎 𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐𝑒𝑡𝑎; 𝑏𝑜𝑜𝑙 𝑒𝑛𝑡𝑟𝑎𝑑𝑎𝑉𝑎𝑙𝑖𝑑𝑎; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(); // 𝑃𝑎𝑟𝑎 𝑙𝑖𝑚𝑝𝑖𝑎𝑟 𝑐𝑢𝑎𝑙𝑞𝑢𝑖𝑒𝑟 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟 𝑝𝑒𝑛𝑑𝑖𝑒𝑛𝑡𝑒 𝑒
𝑚𝑒𝑑𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑜: "; 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐𝑒𝑡𝑎.𝑚𝑒𝑑𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑜); 𝑒𝑛𝑡𝑟𝑎𝑑𝑎𝑉𝑎𝑙𝑖𝑑𝑎 = 𝑒𝑠𝑆𝑜𝑙𝑜𝐿𝑒𝑡𝑟𝑎𝑠𝑁𝑢𝑚𝑒𝑟𝑜𝑠𝑌𝐸𝑠𝑝𝑎𝑐𝑖𝑜𝑠(𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐
𝑒𝑠𝑝𝑎𝑐𝑖𝑜𝑠. 𝑉𝑢𝑒𝑙𝑣𝑎 𝑎 𝑖𝑛𝑔𝑟𝑒𝑠𝑎𝑟." << 𝑒𝑛𝑑𝑙; } } 𝑤ℎ𝑖𝑙𝑒 (!𝑒𝑛𝑡𝑟𝑎𝑑𝑎𝑉𝑎𝑙𝑖𝑑𝑎); // 𝑉𝑎𝑙𝑖𝑑𝑎𝑟 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝑑𝑖𝑎𝑠 𝑑𝑜 { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒
𝑎𝑙𝑖𝑑𝑎); // 𝑉𝑎𝑙𝑖𝑑𝑎𝑟 𝑐𝑎𝑑𝑎 𝑐𝑢𝑎𝑛𝑡𝑎𝑠 ℎ𝑜𝑟𝑎𝑠 𝑑𝑒𝑏𝑒 𝑡𝑜𝑚𝑎𝑟𝑠𝑒 𝑑𝑜 { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑐𝑎𝑑𝑎 𝑐𝑢𝑎𝑛𝑡𝑎𝑠 ℎ𝑜𝑟𝑎𝑠 𝑑𝑒𝑏𝑒 𝑡𝑜𝑚𝑎𝑟𝑠𝑒: "; 𝑐𝑖𝑛 >
𝑝𝑢𝑠ℎ_𝑏𝑎𝑐𝑘(𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐𝑒𝑡𝑎); 𝑐𝑜𝑢𝑡 << "𝑅𝑒𝑐𝑒𝑡𝑎 𝑎𝑠𝑖𝑔𝑛𝑎𝑑𝑎 𝑐𝑜𝑛 𝑒𝑥𝑖𝑡𝑜." << 𝑒𝑛𝑑𝑙;}// 𝐸𝑠𝑡𝑢𝑐𝑡𝑢𝑟𝑎 𝑝𝑎𝑟𝑎 𝑎𝑙𝑚𝑎𝑐𝑒𝑛𝑎𝑟 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒 ℎ𝑜𝑠𝑝𝑖𝑡𝑎𝑙𝑒𝑠
𝑡 𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑𝐴𝑠𝑖𝑔𝑛𝑎𝑑𝑎; 𝑠𝑡𝑟𝑖𝑛𝑔 𝑚𝑒𝑑𝑖𝑐𝑜𝐴𝑠𝑖𝑔𝑛𝑎𝑑𝑜; 𝑖𝑛𝑡 𝑛𝑖𝑣𝑒𝑙𝑈𝑟𝑔𝑒𝑛𝑐𝑖𝑎;};// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑟𝑒𝑐𝑢𝑟𝑠𝑖𝑣𝑎 𝑝𝑎𝑟𝑎 𝑣𝑎𝑙𝑖𝑑𝑎𝑟 𝑠𝑖 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝐷
9 𝑑𝑖𝑔𝑖𝑡𝑜𝑠 𝑖𝑓 (𝑐𝑒𝑙𝑢𝑙𝑎𝑟.𝑙𝑒𝑛𝑔𝑡ℎ() != 9) 𝑟𝑒𝑡𝑢𝑟𝑛 𝑓𝑎𝑙𝑠𝑒; 𝑖𝑓 (𝑖𝑛𝑑𝑒𝑥 == 𝑐𝑒𝑙𝑢𝑙𝑎𝑟.𝑙𝑒𝑛𝑔𝑡ℎ()) 𝑟𝑒𝑡𝑢𝑟𝑛 𝑡𝑟𝑢𝑒; 𝑖𝑓 (!𝑖𝑠𝑑𝑖𝑔𝑖𝑡(𝑐𝑒𝑙𝑢𝑙𝑎𝑟[𝑖𝑛𝑑𝑒𝑥])) 𝑟
𝐹)𝑏𝑜𝑜𝑙 𝑒𝑠𝐺𝑒𝑛𝑒𝑟𝑜𝑉𝑎𝑙𝑖𝑑𝑜(𝑐ℎ𝑎𝑟 𝑔𝑒𝑛𝑒𝑟𝑜) { 𝑟𝑒𝑡𝑢𝑟𝑛 𝑔𝑒𝑛𝑒𝑟𝑜 == ′𝑀′ || 𝑔𝑒𝑛𝑒𝑟𝑜 == ′𝑚′ || 𝑔𝑒𝑛𝑒𝑟𝑜 == ′𝐹′ || 𝑔𝑒𝑛𝑒𝑟𝑜 == ′𝑓′;}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝
𝐼𝑛𝑔𝑟𝑒𝑠𝑎𝑟 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑐𝑜𝑢𝑡 << "𝑁𝑜𝑚𝑏𝑟𝑒: "; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(); // 𝐿𝑖𝑚𝑝𝑖𝑎𝑟 𝑒𝑙 𝑏𝑢𝑓𝑓𝑒𝑟 𝑑𝑒𝑙 𝑡𝑒𝑐𝑙𝑎𝑑𝑜 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑛𝑜𝑚𝑏𝑟𝑒); 𝑤ℎ
} // 𝐼𝑛𝑔𝑟𝑒𝑠𝑎 𝑙𝑎 𝑓𝑒𝑐ℎ𝑎 𝑑𝑒 𝑛𝑎𝑐𝑖𝑚𝑖𝑒𝑛𝑡𝑜 𝑐𝑜𝑢𝑡 << "𝐹𝑒𝑐ℎ𝑎 𝑑𝑒 𝑛𝑎𝑐𝑖𝑚𝑖𝑒𝑛𝑡𝑜 (𝑓𝑜𝑟𝑚𝑎𝑡𝑜 𝑑𝑑/𝑚𝑚/𝑎𝑎𝑎𝑎): "; 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑓𝑒𝑐ℎ𝑎𝑁𝑎
{ 𝑐𝑜𝑢𝑡 << "𝐸𝑠𝑡𝑎𝑑𝑜 𝑐𝑖𝑣𝑖𝑙 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 ′𝑆′, ′𝐶′, ′𝑉′ 𝑜 ′𝐷′." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝐸𝑠𝑡𝑎𝑑𝑜 𝑐𝑖𝑣𝑖𝑙 (𝑆/𝐶/𝑉/𝐷): ";
𝐶𝑒𝑙𝑢𝑙𝑎𝑟 (9 𝑑𝑖𝑔𝑖𝑡𝑜𝑠): "; 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑐𝑒𝑙𝑢𝑙𝑎𝑟; 𝑖𝑓 (!𝑒𝑠𝐶𝑒𝑙𝑢𝑙𝑎𝑟𝑉𝑎𝑙𝑖𝑑𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑐𝑒𝑙𝑢𝑙𝑎𝑟)) { 𝑐𝑜𝑢𝑡 << "𝐶𝑒𝑙𝑢𝑙𝑎𝑟 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑
𝑐𝑜𝑢𝑡 << "4. 𝐺𝑒𝑛𝑒𝑟𝑜" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "5. 𝐸𝑠𝑡𝑎𝑑𝑜 𝑐𝑖𝑣𝑖𝑙" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "6. 𝐷𝑁𝐼" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "7. 𝐷𝑖𝑟𝑒𝑐𝑐𝑖𝑜
𝑜𝑠." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝑁𝑢𝑒𝑣𝑜 𝑛𝑜𝑚𝑏𝑟𝑒: "; } } 𝑤ℎ𝑖𝑙𝑒 (!𝑒𝑠𝑁𝑜𝑚𝑏𝑟𝑒𝑉𝑎𝑙𝑖𝑑𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑛𝑜𝑚𝑏𝑟𝑒)); 𝑏𝑟
𝑚𝑎𝑡𝑜 𝑑𝑑/𝑚𝑚/𝑎𝑎𝑎𝑎): "; 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑓𝑒𝑐ℎ𝑎𝑁𝑎𝑐𝑖𝑚𝑖𝑒𝑛𝑡𝑜; 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 4: 𝑐𝑜𝑢𝑡 << "𝑁𝑢�
𝑐𝑎𝑠𝑒 5: 𝑐𝑜𝑢𝑡 << "𝑁𝑢𝑒𝑣𝑜 𝑒𝑠𝑡𝑎𝑑𝑜 𝑐𝑖𝑣𝑖𝑙 (𝑆/𝐶/𝑉/𝐷): "; 𝑑𝑜 { 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑒𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙; 𝑖𝑓 (!𝑒𝑠
𝑒𝑛𝑡𝑒 𝑛𝑢𝑒𝑣𝑎𝑚𝑒𝑛𝑡𝑒." << 𝑒𝑛𝑑𝑙; } } 𝑤ℎ𝑖𝑙𝑒 (!𝑒𝑠𝐷𝑛𝑖𝑉𝑎𝑙𝑖𝑑𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑑𝑛𝑖)); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 7: 𝑐𝑜𝑢𝑡 <<
𝑁𝑢𝑒𝑣𝑜 𝑐𝑜𝑟𝑟𝑒𝑜 𝑒𝑙𝑒𝑐𝑡𝑟𝑜𝑛𝑖𝑐𝑜: "; 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑐𝑜𝑟𝑟𝑒𝑜; 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 10: 𝑐𝑜𝑢𝑡 << "𝑆𝑎𝑙𝑖𝑒𝑛𝑑𝑜 𝑑𝑒 𝑙𝑎 𝑎𝑐𝑡𝑢𝑎
𝑐𝑖𝑛, 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑖𝑓 (!𝑒𝑠𝑁𝑜𝑚𝑏𝑟𝑒𝑉𝑎𝑙𝑖𝑑𝑜(𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒)) { 𝑐𝑜𝑢𝑡 << "𝐸𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑏𝑒 𝑐𝑜𝑛𝑡𝑒𝑛𝑒𝑟 𝑠𝑜𝑙𝑜 𝑙𝑒𝑡𝑟𝑎𝑠." << 𝑒
𝑎𝑙𝑙𝑎)) { 𝑐𝑖𝑛.𝑐𝑙𝑒𝑎𝑟(); 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(𝑛𝑢𝑚𝑒𝑟𝑖𝑐_𝑙𝑖𝑚𝑖𝑡𝑠<𝑠𝑡𝑟𝑒𝑎𝑚𝑠𝑖𝑧𝑒>::𝑚𝑎𝑥(), ′\𝑛′); 𝑐𝑜𝑢𝑡 << "𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛
𝑣𝑎𝑙𝑖𝑑𝑎. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑝𝑎𝑟𝑎 𝑙𝑎 𝑝𝑟𝑒𝑠𝑖𝑜𝑛 𝑎𝑟𝑡𝑒𝑟𝑖𝑎𝑙: "; } 𝑐𝑜𝑢𝑡 << "𝑆𝑎𝑡𝑢𝑟𝑎𝑐𝑖𝑜𝑛 𝑑𝑒 𝑜𝑥𝑖𝑔𝑒𝑛𝑜 (%): "; 𝑤ℎ𝑖𝑙𝑒 (!(𝑐𝑖𝑛 >>
𝑛𝑡𝑒:" << " |" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << 𝑠𝑡𝑟𝑖𝑛𝑔(𝑎𝑛𝑐ℎ𝑜, ′−′) << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "| 𝑃𝑒𝑠𝑜 (𝑘𝑔): " << 𝑙𝑒𝑓𝑡 << 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 17) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡
𝑢𝑡 << 𝑠𝑡𝑟𝑖𝑛𝑔(𝑎𝑛𝑐ℎ𝑜, ′−′) << 𝑒𝑛𝑑𝑙;}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑚𝑜𝑠𝑡𝑟𝑎𝑟 𝑙𝑜𝑠 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒 𝑒𝑛 𝑢𝑛 𝑐𝑢𝑎𝑑𝑟𝑜𝑣𝑜𝑖𝑑 𝑚𝑜𝑠𝑡𝑟𝑎𝑟𝐷𝑎𝑡𝑜𝑠𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒(𝑐𝑜
<< 𝑙𝑒𝑓𝑡 << 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 26) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑓𝑒𝑐ℎ𝑎𝑁𝑎𝑐𝑖𝑚𝑖𝑒𝑛𝑡𝑜 << " |" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "| 𝐺𝑒𝑛𝑒𝑟𝑜: " << 𝑙𝑒𝑓𝑡 << 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 −
< 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 24) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑐𝑜𝑟𝑟𝑒𝑜 << " |" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << 𝑠𝑡𝑟𝑖𝑛𝑔(𝑎𝑛𝑐ℎ𝑜, ′−′) << 𝑒𝑛𝑑𝑙;}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑎𝑠𝑖𝑔𝑛𝑎𝑟 𝑒𝑠𝑝𝑒𝑐
𝑒𝑠 𝑑𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠\𝑛"; 𝑐𝑜𝑢𝑡 << "1. 𝑀𝑒𝑑𝑖𝑐𝑖𝑛𝑎 𝑔𝑒𝑛𝑒𝑟𝑎𝑙\𝑛"; 𝑐𝑜𝑢𝑡 << "2. 𝑂𝑏𝑠𝑡𝑒𝑡𝑟𝑖𝑐𝑖𝑎\𝑛"; 𝑐𝑜𝑢𝑡 << "3. 𝑃𝑜𝑑𝑜𝑙𝑜𝑔𝑖𝑎\𝑛"; 𝑐𝑜𝑢𝑡 << "4. 𝑃𝑒
𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑𝐴𝑠𝑖𝑔𝑛𝑎𝑑𝑎 <= 10) { 𝑏𝑟𝑒𝑎𝑘; } 𝑒𝑙𝑠𝑒 { 𝑐𝑜𝑢𝑡 << "𝑁𝑢𝑚𝑒𝑟𝑜 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑣
𝑑𝑒 𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑢𝑚𝑒𝑟𝑜 𝑐𝑜𝑟𝑟𝑒𝑠𝑝𝑜𝑛𝑑𝑖𝑒𝑛𝑡𝑒 𝑎 𝑙𝑎 𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑 𝑎𝑠𝑖𝑔𝑛𝑎𝑑𝑎: "; } } 𝑐𝑜𝑢𝑡 <
." << 𝑒𝑛𝑑𝑙;}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑎𝑠𝑖𝑔𝑛𝑎𝑟 𝑢𝑛 𝑙𝑢𝑔𝑎𝑟 𝑒𝑛 𝑙𝑎 𝑙𝑖𝑠𝑡𝑎 𝑑𝑒 𝑒𝑠𝑝𝑒𝑟𝑎 𝑎𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒𝑣𝑜𝑖𝑑 𝑙𝑢𝑔𝑎𝑟𝐸𝑛𝐿𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎(𝑣𝑒𝑐𝑡𝑜𝑟<𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒> &𝑙
𝑚𝑒𝑟𝑔𝑒𝑛𝑐𝑖𝑎\𝑛" << "3. 𝑈𝑟𝑔𝑒𝑛𝑐𝑖𝑎\𝑛" << "4. 𝑈𝑟𝑔𝑒𝑛𝑐𝑖𝑎 𝑚𝑒𝑛𝑜𝑟\𝑛" << "5. 𝑆𝑖𝑛 𝑢𝑟𝑔𝑒𝑛𝑐𝑖𝑎\𝑛" << "𝐼𝑛𝑑𝑖𝑞𝑢𝑒 𝑒𝑙 𝑛𝑖𝑣𝑒𝑙 𝑑𝑒 𝑢
(𝑐𝑜𝑛𝑠𝑡 𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒 &𝑝) { 𝑟𝑒𝑡𝑢𝑟𝑛 𝑝.𝑛𝑖𝑣𝑒𝑙𝑈𝑟𝑔𝑒𝑛𝑐𝑖𝑎 > 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑛𝑖𝑣𝑒𝑙𝑈𝑟𝑔𝑒𝑛𝑐𝑖𝑎; }); 𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎.𝑖𝑛𝑠𝑒𝑟𝑡(𝑖𝑡, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑐𝑜𝑢𝑡 <<
𝑖𝑐𝑜𝑠." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒: "; 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑛𝑜𝑚𝑏𝑟𝑒); } 𝑎𝑢𝑡𝑜 𝑖𝑡 = 𝑓𝑖𝑛𝑑_𝑖𝑓(𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎.𝑏𝑒𝑔
𝑡𝑟𝑎𝑠𝑒𝑛𝑎 = 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎; 𝑛𝑢𝑒𝑣𝑜−>𝑠𝑖𝑔𝑢𝑖𝑒𝑛𝑡𝑒 = 𝑛𝑢𝑙𝑙𝑝𝑡𝑟; 𝑟𝑒𝑡𝑢𝑟𝑛 𝑛𝑢𝑒𝑣𝑜;}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑎ñ𝑎𝑑𝑖𝑟 𝑢𝑛 𝑢𝑠𝑢𝑎𝑟𝑖𝑜 𝑎 𝑙𝑎 𝑙𝑖𝑠𝑡𝑎𝑣𝑜𝑖𝑑 𝑎𝑔𝑟𝑒𝑔
𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒ñ𝑎 (𝑑𝑒𝑏𝑒 𝑡𝑒𝑛𝑒𝑟 𝑎𝑙 𝑚𝑒𝑛𝑜𝑠 6 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒𝑠): "; 𝑐𝑖𝑛 >> 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎; 𝑤ℎ𝑖𝑙𝑒(𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎.𝑙𝑒𝑛𝑔𝑡ℎ() < 6) { 𝑐𝑜𝑢𝑡 << "𝐿𝑎 𝑐𝑜
𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑙𝑖𝑏𝑒𝑟𝑎𝑟 𝑚𝑒𝑚𝑜𝑟𝑖𝑎 𝑑𝑒 𝑙𝑎 𝑙𝑖𝑠𝑡𝑎 𝑑𝑒 𝑢𝑠𝑢𝑎𝑟𝑖𝑜𝑠𝑣𝑜𝑖𝑑 𝑙𝑖𝑏𝑒𝑟𝑎𝑟𝑀𝑒𝑚𝑜𝑟𝑖𝑎(𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗& 𝑐𝑎𝑏𝑒𝑧𝑎) { 𝑤ℎ𝑖𝑙𝑒 (𝑐𝑎𝑏𝑒𝑧𝑎 != 𝑛𝑢𝑙𝑙𝑝𝑡𝑟) {
𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "1. 𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑎𝑟 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "2. 𝑇𝑟𝑖𝑎𝑗𝑒" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "3. 𝐴𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟 𝑑𝑎𝑡𝑜𝑠
𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜 𝑑𝑒 𝑡𝑟𝑖𝑎𝑗𝑒..." << 𝑒𝑛𝑑𝑙; 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑎𝑟𝑇𝑟𝑖𝑎𝑗𝑒(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 3: 𝑐𝑜𝑢𝑡 << "𝐴𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑛𝑑𝑜 𝑑𝑎
𝑒𝑝𝑒𝑛𝑑𝑖𝑒𝑛𝑑𝑜 𝑠𝑢 𝑛𝑖𝑣𝑒𝑙 𝑑𝑒 𝑒𝑚𝑒𝑟𝑔𝑒𝑛𝑐𝑖𝑎..." << 𝑒𝑛𝑑𝑙; 𝑙𝑢𝑔𝑎𝑟𝐸𝑛𝐿𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎(𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 7
𝑒𝑛𝑡𝑒& 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒) { 𝑖𝑛𝑡 𝑜𝑝𝑐𝑖𝑜𝑛; 𝑣𝑒𝑐𝑡𝑜𝑟<𝑅𝑒𝑐𝑒𝑡𝑎> 𝑟𝑒𝑐𝑒𝑡𝑎𝑠; 𝑑𝑜 { 𝑐𝑜𝑢𝑡 << "∗∗∗" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝑃𝑜𝑙𝑖𝑐𝑙𝑖𝑛𝑖𝑐𝑜 𝑆𝑎𝑛 𝑉𝑖𝑐𝑒𝑛
𝑛.𝑐𝑙𝑒𝑎𝑟(); 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(𝑛𝑢𝑚𝑒𝑟𝑖𝑐_𝑙𝑖𝑚𝑖𝑡𝑠<𝑠𝑡𝑟𝑒𝑎𝑚𝑠𝑖𝑧𝑒>::𝑚𝑎𝑥(), ′\𝑛′); 𝑐𝑜𝑢𝑡 << "𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛
𝑖𝑐𝑜𝑠." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒: "; 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑛𝑜𝑚𝑏𝑟𝑒); } 𝑎𝑢𝑡𝑜 𝑖𝑡 = 𝑓𝑖𝑛𝑑_𝑖𝑓(𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎.𝑏𝑒𝑔
𝑡𝑟𝑎𝑠𝑒𝑛𝑎 = 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎; 𝑛𝑢𝑒𝑣𝑜−>𝑠𝑖𝑔𝑢𝑖𝑒𝑛𝑡𝑒 = 𝑛𝑢𝑙𝑙𝑝𝑡𝑟; 𝑟𝑒𝑡𝑢𝑟𝑛 𝑛𝑢𝑒𝑣𝑜;}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑎ñ𝑎𝑑𝑖𝑟 𝑢𝑛 𝑢𝑠𝑢𝑎𝑟𝑖𝑜 𝑎 𝑙𝑎 𝑙𝑖𝑠𝑡𝑎𝑣𝑜𝑖𝑑 𝑎𝑔𝑟𝑒𝑔
𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒ñ𝑎 (𝑑𝑒𝑏𝑒 𝑡𝑒𝑛𝑒𝑟 𝑎𝑙 𝑚𝑒𝑛𝑜𝑠 6 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒𝑠): "; 𝑐𝑖𝑛 >> 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎; 𝑤ℎ𝑖𝑙𝑒(𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎.𝑙𝑒𝑛𝑔𝑡ℎ() < 6) { 𝑐𝑜𝑢𝑡 << "𝐿𝑎 𝑐𝑜
𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑙𝑖𝑏𝑒𝑟𝑎𝑟 𝑚𝑒𝑚𝑜𝑟𝑖𝑎 𝑑𝑒 𝑙𝑎 𝑙𝑖𝑠𝑡𝑎 𝑑𝑒 𝑢𝑠𝑢𝑎𝑟𝑖𝑜𝑠𝑣𝑜𝑖𝑑 𝑙𝑖𝑏𝑒𝑟𝑎𝑟𝑀𝑒𝑚𝑜𝑟𝑖𝑎(𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗& 𝑐𝑎𝑏𝑒𝑧𝑎) { 𝑤ℎ𝑖𝑙𝑒 (𝑐𝑎𝑏𝑒𝑧𝑎 != 𝑛𝑢𝑙𝑙𝑝𝑡𝑟) {
𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "1. 𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑎𝑟 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "2. 𝑇𝑟𝑖𝑎𝑗𝑒" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "3. 𝐴𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟 𝑑𝑎𝑡𝑜𝑠
𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜 𝑑𝑒 𝑡𝑟𝑖𝑎𝑗𝑒..." << 𝑒𝑛𝑑𝑙; 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑎𝑟𝑇𝑟𝑖𝑎𝑗𝑒(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 3: 𝑐𝑜𝑢𝑡 << "𝐴𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑛𝑑𝑜 𝑑𝑎
𝑒𝑝𝑒𝑛𝑑𝑖𝑒𝑛𝑑𝑜 𝑠𝑢 𝑛𝑖𝑣𝑒𝑙 𝑑𝑒 𝑒𝑚𝑒𝑟𝑔𝑒𝑛𝑐𝑖𝑎..." << 𝑒𝑛𝑑𝑙; 𝑙𝑢𝑔𝑎𝑟𝐸𝑛𝐿𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎(𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 7
𝑒𝑛𝑡𝑒& 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒) { 𝑖𝑛𝑡 𝑜𝑝𝑐𝑖𝑜𝑛; 𝑣𝑒𝑐𝑡𝑜𝑟<𝑅𝑒𝑐𝑒𝑡𝑎> 𝑟𝑒𝑐𝑒𝑡𝑎𝑠; 𝑑𝑜 { 𝑐𝑜𝑢𝑡 << "∗∗∗" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝑃𝑜𝑙𝑖𝑐𝑙𝑖𝑛𝑖𝑐𝑜 𝑆𝑎𝑛 𝑉𝑖𝑐𝑒𝑛
𝑛.𝑐𝑙𝑒𝑎𝑟(); 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(𝑛𝑢𝑚𝑒𝑟𝑖𝑐_𝑙𝑖𝑚𝑖𝑡𝑠<𝑠𝑡𝑟𝑒𝑎𝑚𝑠𝑖𝑧𝑒>::𝑚𝑎𝑥(), ′\𝑛′); 𝑐𝑜𝑢𝑡 << "𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛
𝑐𝑜𝑢𝑡 << "𝐶𝑟𝑒𝑑𝑒𝑛𝑐𝑖𝑎𝑙𝑒𝑠 𝑑𝑒 𝑚𝑒𝑑𝑖𝑐𝑜 𝑖𝑛𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑎𝑠. 𝐼𝑛𝑡𝑒𝑛𝑡𝑒 𝑛𝑢𝑒𝑣𝑎𝑚𝑒𝑛𝑡𝑒." << 𝑒𝑛𝑑𝑙; } } 𝑤ℎ𝑖𝑙𝑒 (!𝑐𝑟𝑒𝑑𝑒𝑛𝑐𝑖𝑎𝑙𝑒𝑠
<< "𝐶𝑟𝑒𝑑𝑒𝑛𝑐𝑖𝑎𝑙𝑒𝑠 𝑑𝑒 𝑒𝑛𝑓𝑒𝑟𝑚𝑒𝑟𝑜 𝑖𝑛𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑎𝑠. 𝐼𝑛𝑡𝑒𝑛𝑡𝑒 𝑛𝑢𝑒𝑣𝑎𝑚𝑒𝑛𝑡𝑒." << 𝑒𝑛𝑑𝑙; } } 𝑤ℎ𝑖𝑙𝑒 (!𝑐𝑟𝑒𝑑𝑒𝑛𝑐𝑖𝑎𝑙𝑒𝑠𝑉𝑎𝑙𝑖𝑑𝑎𝑠);
𝑜𝑢𝑡 << "𝐸𝑛𝑓𝑒𝑟𝑚𝑒𝑟𝑎 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑎𝑑𝑎 𝑐𝑜𝑛 𝑒𝑥𝑖𝑡𝑜" << 𝑒𝑛𝑑𝑙; 𝑏𝑟𝑒𝑎𝑘; } 𝑐𝑎𝑠𝑒 5: 𝑐𝑜𝑢𝑡 << "𝑆𝑎𝑙𝑖𝑒𝑛𝑑𝑜..." << 𝑒𝑛𝑑𝑙;
𝑜 𝑐𝑙𝑎𝑣𝑒// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑎𝑛𝑎𝑑𝑖𝑟 𝑢𝑛 𝑛𝑢𝑒𝑣𝑜 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜 𝑎𝑙 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜𝑣𝑜𝑖𝑑 𝑎𝑔𝑟𝑒𝑔𝑎𝑟𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙(𝑐𝑜𝑛𝑠𝑡 𝑠𝑡𝑟𝑖𝑛𝑔& 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐
/ 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑚𝑜𝑠𝑡𝑟𝑎𝑟 𝑒𝑙 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜 𝑑𝑒 𝑢𝑛 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒𝑣𝑜𝑖𝑑 𝑚𝑜𝑠𝑡𝑟𝑎𝑟𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀𝑒𝑑𝑖𝑐𝑜(𝑐𝑜𝑛𝑠𝑡 𝑣𝑒𝑐𝑡𝑜𝑟<𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀𝑒𝑑𝑖𝑐𝑜>& ℎ𝑖𝑠
" << ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙[𝑖].𝑑𝑖𝑎𝑔𝑛𝑜𝑠𝑡𝑖𝑐𝑜 << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝑇𝑟𝑎𝑡𝑎𝑚𝑖𝑒𝑛𝑡𝑜: " << ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙[𝑖].𝑡𝑟𝑎𝑡𝑎𝑚𝑖𝑒𝑛𝑡𝑜 << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << 𝑒𝑛𝑑𝑙;
𝑧𝑎𝑑𝑜 𝑐𝑜𝑛 𝑒𝑥𝑖𝑡𝑜." << 𝑒𝑛𝑑𝑙; } 𝑒𝑙𝑠𝑒 { 𝑐𝑜𝑢𝑡 << "𝐸𝑙 𝑖𝑛𝑑𝑖𝑐𝑒 𝑒𝑠𝑝𝑒𝑐𝑖𝑓𝑖𝑐𝑎𝑑𝑜 𝑒𝑠𝑡𝑎 𝑓𝑢𝑒𝑟𝑎 𝑑𝑒 𝑟𝑎𝑛𝑔𝑜." << 𝑒𝑛𝑑𝑙; } } 𝑒𝑙𝑠𝑒 { 𝑐𝑜𝑢
< ". 𝐹𝑒𝑐ℎ𝑎 𝑑𝑒 𝑐𝑜𝑛𝑠𝑢𝑙𝑡𝑎 (𝑓𝑜𝑟𝑚𝑎𝑡𝑜 𝑑𝑑/𝑚𝑚/𝑎𝑎𝑎𝑎): " << ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙[𝑖].𝑓𝑒𝑐ℎ𝑎𝐶𝑜𝑛𝑠𝑢𝑙𝑡𝑎 << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << 𝑏𝑎𝑠𝑒𝐼𝑛𝑑𝑒𝑥 + 2 << ". 𝑀
𝑎𝑐𝑖𝑒𝑛𝑡𝑒: "; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(); 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑤ℎ𝑖𝑙𝑒(!𝑒𝑠𝑁𝑜𝑚𝑏𝑟𝑒𝑉𝑎𝑙𝑖𝑑𝑜(𝑛𝑜𝑚𝑏𝑟𝑒
𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒]; 𝑚𝑜𝑠𝑡𝑟𝑎𝑟𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀𝑒𝑑𝑖𝑐𝑜𝐶𝑜𝑛𝐼𝑛𝑑𝑖𝑐𝑒𝑠(ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙); 𝑠𝑖𝑧𝑒_𝑡 𝑖𝑛𝑑𝑖𝑐𝑒; 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝑖𝑛𝑑𝑖𝑐
𝑜𝑛𝑠𝑢𝑙𝑡𝑎 (𝑓𝑜𝑟𝑚𝑎𝑡𝑜 𝑑𝑑/𝑚𝑚/𝑎𝑎𝑎𝑎): "; 𝑐𝑖𝑛 >> 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜.𝑓𝑒𝑐ℎ𝑎𝐶𝑜𝑛𝑠𝑢𝑙𝑡𝑎; 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 1: 𝑐𝑜𝑢𝑡 <<
𝑐𝑜𝑢𝑡 << "𝑂𝑝𝑐𝑖𝑜𝑛 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑡𝑒𝑛𝑡𝑒 𝑛𝑢𝑒𝑣𝑎𝑚𝑒𝑛𝑡𝑒." << 𝑒𝑛𝑑𝑙; 𝑟𝑒𝑡𝑢𝑟𝑛; } 𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜𝐻𝑖𝑠𝑡𝑜𝑟
𝑐𝑎 𝑆𝑎𝑛𝑡𝑎 𝑀𝑎𝑟𝑖𝑎", "321−654−987"} }; 𝑐𝑜𝑢𝑡 << "𝐿𝑖𝑠𝑡𝑎 𝑑𝑒 ℎ𝑜𝑠𝑝𝑖𝑡𝑎𝑙𝑒𝑠 𝑑𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠 𝑝𝑎𝑟𝑎 𝑡𝑟𝑎𝑠𝑙𝑎𝑑𝑜:" << 𝑒𝑛𝑑𝑙; 𝑓𝑜𝑟 (𝑠𝑖𝑧𝑒_𝑡 𝑖 = 0; 𝑖 <
𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑡𝑒𝑛𝑡𝑒 𝑛𝑢𝑒𝑣𝑎𝑚𝑒𝑛𝑡𝑒." << 𝑒𝑛𝑑𝑙; } } 𝑖𝑛𝑡 𝑜𝑝𝑐𝑖𝑜𝑛; 𝑏𝑜𝑜𝑙 𝑜𝑝𝑐𝑖𝑜𝑛𝑉𝑎𝑙𝑖𝑑𝑎 = 𝑓𝑎𝑙𝑠𝑒; 𝑤ℎ𝑖𝑙𝑒 (!𝑜𝑝𝑐𝑖𝑜𝑛𝑉𝑎𝑙𝑖𝑑𝑎) {
𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒 << " 𝑡𝑟𝑎𝑠𝑙𝑎𝑑𝑎𝑑𝑜 𝑎 " << ℎ𝑜𝑠𝑝𝑖𝑡𝑎𝑙𝑒𝑠[𝑜𝑝𝑐𝑖𝑜𝑛 − 1].𝑛𝑜𝑚𝑏𝑟𝑒 << " 𝑐𝑜𝑛 𝑐𝑜𝑛𝑡𝑎𝑐𝑡𝑜 " << ℎ𝑜𝑠𝑝𝑖𝑡𝑎𝑙𝑒𝑠[𝑜𝑝𝑐𝑖𝑜𝑛 − 1].𝑐𝑜𝑛𝑡𝑎𝑐𝑡
𝑚𝑒𝑟𝑜 𝑑𝑒 𝑑𝑖𝑎𝑠: " << 𝑟𝑒𝑐𝑒𝑡𝑎.𝑛𝑢𝑚𝑒𝑟𝑜𝐷𝑖𝑎𝑠 << "\𝑛"; 𝑎𝑟𝑐ℎ𝑖𝑣𝑜 << "𝐶𝑎𝑑𝑎 𝑐𝑢𝑎𝑛𝑡𝑎𝑠 ℎ𝑜𝑟𝑎𝑠: " << 𝑟𝑒𝑐𝑒𝑡𝑎.𝑐𝑎𝑑𝑎𝐶𝑢𝑎𝑛𝑡𝑎𝑠𝐻𝑜𝑟𝑎𝑠 << "\𝑛
𝑛𝑢 𝑑𝑒 𝑝𝑒𝑟𝑠𝑜𝑛𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "1. 𝐶𝑟𝑒𝑎𝑟 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜 𝑝𝑎𝑟𝑎 𝑢𝑛 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "2. 𝐵𝑢𝑠𝑐𝑎𝑟 ℎ𝑖𝑠
); 𝑐𝑜𝑢𝑡 << "𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑣𝑎𝑙𝑖𝑑𝑜." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑛𝑡𝑖𝑛𝑢𝑒; } 𝑠𝑤𝑖𝑡𝑐ℎ (𝑜𝑝𝑐𝑖𝑜𝑛) {
𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒: "; } } 𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀𝑒𝑑𝑖𝑐𝑜 𝑛𝑢𝑒𝑣𝑜𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜; 𝑐𝑜𝑢𝑡 << "𝐹𝑒𝑐ℎ𝑎 𝑑𝑒 𝑐𝑜𝑛𝑠𝑢𝑙𝑡𝑎 (𝑓𝑜𝑟𝑚𝑎𝑡𝑜 𝑑
<< 𝑒𝑛𝑑𝑙; 𝑏𝑟𝑒𝑎𝑘; } 𝑐𝑎𝑠𝑒 2: { 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒; 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒: "
𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 4: 𝑎𝑠𝑖𝑔𝑛𝑎𝑟𝑅𝑒𝑐𝑒𝑡𝑎(𝑟𝑒𝑐𝑒𝑡𝑎𝑠); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 5: 𝑚𝑎𝑛𝑒𝑗𝑎𝑟𝑇𝑟𝑎𝑠𝑙𝑎𝑑𝑜(); 𝑏𝑟
𝑡𝑟𝑎𝑟𝑀𝑒𝑛𝑢𝐼𝑛𝑔𝑟𝑒𝑠𝑜(𝑙𝑖𝑠𝑡𝑎𝑀𝑒𝑑𝑖𝑐𝑜𝑠, 𝑙𝑖𝑠𝑡𝑎𝐸𝑛𝑓𝑒𝑟𝑚𝑒𝑟𝑎𝑠, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒); // 𝐿𝑖𝑏𝑒𝑟𝑎𝑟 𝑚𝑒𝑚𝑜𝑟𝑖𝑎 𝑑𝑒 𝑙𝑎𝑠 𝑙𝑖𝑠𝑡𝑎𝑠 𝑑𝑒 𝑢𝑠𝑢𝑎𝑟𝑖𝑜𝑠 𝑙𝑖𝑏𝑒𝑟𝑎𝑟𝑀𝑒𝑚𝑜𝑟𝑖𝑎
𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒; 𝑠𝑡𝑟𝑖𝑛𝑔 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎; 𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗ 𝑠𝑖𝑔𝑢𝑖𝑒𝑛𝑡𝑒;};// 𝐸𝑠𝑡𝑟𝑢𝑐𝑡𝑢𝑟𝑎 𝑝𝑎𝑟𝑎 𝑎𝑙𝑚𝑎𝑐𝑒𝑛𝑎𝑟 𝑙𝑎𝑠 𝑟𝑒𝑐𝑒𝑡𝑎𝑠𝑠𝑡𝑟𝑢𝑐𝑡 𝑅𝑒𝑐𝑒𝑡𝑎 { 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛
𝑛𝑎 𝑐𝑜𝑛𝑡𝑖𝑒𝑛𝑒 𝑠𝑜𝑙𝑜 𝑙𝑒𝑡𝑟𝑎𝑠, 𝑛𝑢𝑚𝑒𝑟𝑜𝑠 𝑦 𝑒𝑠𝑝𝑎𝑐𝑖𝑜𝑠𝑏𝑜𝑜𝑙 𝑒𝑠𝑆𝑜𝑙𝑜𝐿𝑒𝑡𝑟𝑎𝑠𝑁𝑢𝑚𝑒𝑟𝑜𝑠𝑌𝐸𝑠𝑝𝑎𝑐𝑖𝑜𝑠(𝑐𝑜𝑛𝑠𝑡 𝑠𝑡𝑟𝑖𝑛𝑔& 𝑠𝑡𝑟, 𝑖𝑛𝑡 𝑖𝑛𝑑𝑒𝑥 = 0) { 𝑖𝑓 (𝑖𝑛𝑑𝑒𝑥
𝑢𝑎𝑙𝑞𝑢𝑖𝑒𝑟 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟 𝑝𝑒𝑛𝑑𝑖𝑒𝑛𝑡𝑒 𝑒𝑛 𝑒𝑙 𝑏𝑢𝑓𝑓𝑒𝑟 𝑑𝑒 𝑒𝑛𝑡𝑟𝑎𝑑𝑎 // 𝑉𝑎𝑙𝑖𝑑𝑎𝑟 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒 𝑑𝑜 { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙
𝑁𝑢𝑚𝑒𝑟𝑜𝑠𝑌𝐸𝑠𝑝𝑎𝑐𝑖𝑜𝑠(𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐𝑒𝑡𝑎.𝑚𝑒𝑑𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑜); 𝑖𝑓 (!𝑒𝑛𝑡𝑟𝑎𝑑𝑎𝑉𝑎𝑙𝑖𝑑𝑎) { 𝑐𝑜𝑢𝑡 << "𝑀𝑒𝑑𝑖𝑐𝑎𝑚𝑒𝑛𝑡𝑜 𝑖𝑛𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑜. 𝑆𝑜𝑙𝑜 𝑠𝑒 𝑝𝑒𝑟𝑚
𝑎𝑠 𝑑𝑜 { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝑑𝑖𝑎𝑠 𝑞𝑢𝑒 𝑑𝑒𝑏𝑒 𝑡𝑜𝑚𝑎𝑟𝑠𝑒: "; 𝑐𝑖𝑛 >> 𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐𝑒𝑡𝑎.𝑛𝑢𝑚𝑒𝑟𝑜𝐷𝑖𝑎𝑠; 𝑖𝑓 (𝑐𝑖𝑛.𝑓𝑎𝑖𝑙() || 𝑛𝑢
𝑜𝑟𝑎𝑠 𝑑𝑒𝑏𝑒 𝑡𝑜𝑚𝑎𝑟𝑠𝑒: "; 𝑐𝑖𝑛 >> 𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐𝑒𝑡𝑎.𝑐𝑎𝑑𝑎𝐶𝑢𝑎𝑛𝑡𝑎𝑠𝐻𝑜𝑟𝑎𝑠; 𝑖𝑓 (𝑐𝑖𝑛.𝑓𝑎𝑖𝑙() || 𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐𝑒𝑡𝑎.𝑐𝑎𝑑𝑎𝐶𝑢𝑎𝑛𝑡𝑎𝑠𝐻𝑜𝑟𝑎𝑠 <= 0) {
𝑚𝑎𝑐𝑒𝑛𝑎𝑟 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒 ℎ𝑜𝑠𝑝𝑖𝑡𝑎𝑙𝑒𝑠 𝑑𝑒 𝑡𝑟𝑎𝑠𝑙𝑎𝑑𝑜𝑠𝑡𝑟𝑢𝑐𝑡 𝐻𝑜𝑠𝑝𝑖𝑡𝑎𝑙 { 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒; 𝑠𝑡𝑟𝑖𝑛𝑔 𝑐𝑜𝑛𝑡𝑎𝑐𝑡𝑜;};// 𝐸𝑠𝑡𝑟𝑢𝑐𝑡𝑢𝑟𝑎 𝑝𝑎𝑟𝑎 𝑎𝑙𝑚𝑎𝑐𝑒𝑛𝑎𝑟
𝑎𝑟𝑎 𝑣𝑎𝑙𝑖𝑑𝑎𝑟 𝑠𝑖 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝐷𝑁𝐼 𝑒𝑠 𝑣𝑎𝑙𝑖𝑑𝑜𝑏𝑜𝑜𝑙 𝑒𝑠𝐷𝑛𝑖𝑉𝑎𝑙𝑖𝑑𝑜(𝑐𝑜𝑛𝑠𝑡 𝑠𝑡𝑟𝑖𝑛𝑔& 𝑑𝑛𝑖, 𝑖𝑛𝑡 𝑖𝑛𝑑𝑒𝑥 = 0) { // 𝑆𝑒 𝑎𝑠𝑢𝑚𝑒 𝑞𝑢𝑒 𝑢𝑛 𝐷𝑁𝐼 𝑣𝑎𝑙𝑖𝑑𝑜
𝑖𝑓 (!𝑖𝑠𝑑𝑖𝑔𝑖𝑡(𝑐𝑒𝑙𝑢𝑙𝑎𝑟[𝑖𝑛𝑑𝑒𝑥])) 𝑟𝑒𝑡𝑢𝑟𝑛 𝑓𝑎𝑙𝑠𝑒; 𝑟𝑒𝑡𝑢𝑟𝑛 𝑒𝑠𝐶𝑒𝑙𝑢𝑙𝑎𝑟𝑉𝑎𝑙𝑖𝑑𝑜(𝑐𝑒𝑙𝑢𝑙𝑎𝑟, 𝑖𝑛𝑑𝑒𝑥 + 1);}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑟𝑒𝑐𝑢𝑟𝑠𝑖𝑣𝑎 𝑝𝑎𝑟𝑎 𝑣𝑎𝑙𝑖𝑑𝑎𝑟 𝑠𝑖 𝑒
| 𝑔𝑒𝑛𝑒𝑟𝑜 == ′𝑓′;}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑣𝑎𝑙𝑖𝑑𝑎𝑟 𝑠𝑖 𝑒𝑙 𝑒𝑠𝑡𝑎𝑑𝑜 𝑐𝑖𝑣𝑖𝑙 𝑖𝑛𝑔𝑟𝑒𝑠𝑎𝑑𝑜 𝑒𝑠 𝑣𝑎𝑙𝑖𝑑𝑜 (𝑆, 𝐶, 𝑉 𝑜 𝐷)𝑏𝑜𝑜𝑙 𝑒𝑠𝐸𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙𝑉𝑎𝑙𝑖𝑑𝑜(𝑐ℎ𝑎𝑟 𝑒𝑠𝑡𝑎
𝑛𝑒(𝑐𝑖𝑛, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑛𝑜𝑚𝑏𝑟𝑒); 𝑤ℎ𝑖𝑙𝑒 (!𝑒𝑠𝑁𝑜𝑚𝑏𝑟𝑒𝑉𝑎𝑙𝑖𝑑𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑛𝑜𝑚𝑏𝑟𝑒)) { 𝑐𝑜𝑢𝑡 << "𝑁𝑜𝑚𝑏𝑟𝑒 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑠𝑜𝑙𝑜 𝑐𝑎𝑟𝑎𝑐𝑡𝑒
): "; 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑓𝑒𝑐ℎ𝑎𝑁𝑎𝑐𝑖𝑚𝑖𝑒𝑛𝑡𝑜; // 𝐼𝑛𝑔𝑟𝑒𝑠𝑎 𝑒𝑙 𝑔𝑒𝑛𝑒𝑟𝑜 𝑐𝑜𝑢𝑡 << "𝐺𝑒𝑛𝑒𝑟𝑜 (𝑀/𝐹): "; 𝑑𝑜 { 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑔𝑒𝑛𝑒𝑟𝑜;
< "𝐸𝑠𝑡𝑎𝑑𝑜 𝑐𝑖𝑣𝑖𝑙 (𝑆/𝐶/𝑉/𝐷): "; } } 𝑤ℎ𝑖𝑙𝑒 (!𝑒𝑠𝐸𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙𝑉𝑎𝑙𝑖𝑑𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑒𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙)); 𝑑𝑜 { 𝑐𝑜𝑢𝑡 << "𝐷𝑁𝐼 (8 𝑑𝑖𝑔𝑖𝑡𝑜𝑠): ";
𝑐𝑜𝑢𝑡 << "𝐶𝑒𝑙𝑢𝑙𝑎𝑟 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝐼𝑛𝑡𝑒𝑛𝑡𝑒 𝑛𝑢𝑒𝑣𝑎𝑚𝑒𝑛𝑡𝑒." << 𝑒𝑛𝑑𝑙; } } 𝑤ℎ𝑖𝑙𝑒 (!𝑒𝑠𝐶𝑒𝑙𝑢𝑙𝑎𝑟𝑉𝑎𝑙𝑖𝑑𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑐𝑒𝑙𝑢𝑙𝑎𝑟)); 𝑐𝑜𝑢𝑡 << "
𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "7. 𝐷𝑖𝑟𝑒𝑐𝑐𝑖𝑜𝑛" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "8. 𝐶𝑒𝑙𝑢𝑙𝑎𝑟" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "9. 𝐶𝑜𝑟𝑟𝑒𝑜 𝑒𝑙𝑒𝑐𝑡𝑟𝑜𝑛𝑖𝑐𝑜" << 𝑒𝑛𝑑𝑙; 𝑐𝑜
(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑛𝑜𝑚𝑏𝑟𝑒)); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 2: 𝑐𝑜𝑢𝑡 << "𝑁𝑢𝑒𝑣𝑜 𝑎𝑝𝑒𝑙𝑙𝑖𝑑𝑜: "; 𝑑𝑜 { 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑎
𝑐𝑜𝑢𝑡 << "𝑁𝑢�
𝑒.𝑒𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙; 𝑖𝑓 (!𝑒𝑠𝐸𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙𝑉𝑎𝑙𝑖𝑑𝑜(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑒𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙)) { 𝑐𝑜𝑢𝑡 << "𝐸𝑠𝑡𝑎𝑑𝑜 𝑐𝑖𝑣𝑖𝑙 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜
𝑘; 𝑐𝑎𝑠𝑒 7: 𝑐𝑜𝑢𝑡 << "𝑁𝑢𝑒𝑣𝑎 𝑑𝑖𝑟𝑒𝑐𝑐𝑖𝑜𝑛: "; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(); // 𝐿𝑖𝑚𝑝𝑖𝑎𝑟 𝑒𝑙 𝑏𝑢𝑓𝑓𝑒𝑟 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑑𝑖𝑟𝑒
𝑐𝑜𝑢𝑡 << "𝑆𝑎𝑙𝑖𝑒𝑛𝑑𝑜 𝑑𝑒 𝑙𝑎 𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑐𝑖𝑜𝑛 𝑑𝑒 𝑑𝑎𝑡𝑜𝑠..." << 𝑒𝑛𝑑𝑙; 𝑏𝑟𝑒𝑎𝑘; 𝑑𝑒𝑓𝑎𝑢𝑙𝑡: 𝑐𝑜𝑢𝑡 << "𝑂𝑝𝑐𝑖𝑜𝑛 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎" <<
𝑒𝑏𝑒 𝑐𝑜𝑛𝑡𝑒𝑛𝑒𝑟 𝑠𝑜𝑙𝑜 𝑙𝑒𝑡𝑟𝑎𝑠." << 𝑒𝑛𝑑𝑙; } 𝑒𝑙𝑠𝑒 { 𝑛𝑜𝑚𝑏𝑟𝑒𝑉𝑎𝑙𝑖𝑑𝑜 = 𝑡𝑟𝑢𝑒; 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑛𝑜𝑚𝑏𝑟𝑒 = 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒; // 𝐺𝑢𝑎𝑟𝑑𝑎
𝑛𝑡𝑟𝑎𝑑𝑎 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑝𝑎𝑟𝑎 𝑙𝑎 𝑡𝑎𝑙𝑙𝑎: "; } 𝑐𝑜𝑢𝑡 << "𝑇𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎 (𝐶): "; 𝑤ℎ𝑖𝑙𝑒 (!(𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑡𝑒
𝑥𝑖𝑔𝑒𝑛𝑜 (%): "; 𝑤ℎ𝑖𝑙𝑒 (!(𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑠𝑎𝑡𝑢𝑟𝑎𝑐𝑖𝑜𝑛)) { 𝑐𝑖𝑛.𝑐𝑙𝑒𝑎𝑟(); 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(𝑛𝑢𝑚𝑒𝑟𝑖𝑐_𝑙𝑖𝑚𝑖𝑡𝑠<𝑠𝑡𝑟𝑒𝑎𝑚𝑠𝑖𝑧𝑒>::𝑚𝑎𝑥(), ′\𝑛
𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 17) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑝𝑒𝑠𝑜 << " |" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "| 𝑇𝑎𝑙𝑙𝑎 (𝑚): " << 𝑙𝑒𝑓𝑡 << 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 17) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑡𝑎𝑙𝑙𝑎
𝑜𝑖𝑑 𝑚𝑜𝑠𝑡𝑟𝑎𝑟𝐷𝑎𝑡𝑜𝑠𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒(𝑐𝑜𝑛𝑠𝑡 𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒& 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒) { 𝑐𝑜𝑛𝑠𝑡 𝑖𝑛𝑡 𝑎𝑛𝑐ℎ𝑜 = 50; // 𝐴𝑛𝑐ℎ𝑜 𝑑𝑒𝑙 𝑐𝑢𝑎𝑑𝑟𝑜 𝑐𝑜𝑢𝑡 << 𝑠𝑡𝑟𝑖𝑛𝑔(𝑎𝑛𝑐ℎ𝑜, ′−
𝑜: " << 𝑙𝑒𝑓𝑡 << 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 10) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑔𝑒𝑛𝑒𝑟𝑜 << " |" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "| 𝐸𝑠𝑡𝑎𝑑𝑜 𝑐𝑖𝑣𝑖𝑙: " << 𝑙𝑒𝑓𝑡 << 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 1
/ 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑎𝑠𝑖𝑔𝑛𝑎𝑟 𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑 𝑦 𝑚𝑒𝑑𝑖𝑐𝑜 𝑎𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒𝑣𝑜𝑖𝑑 𝑎𝑠𝑖𝑔𝑛𝑎𝑟𝐸𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑𝑌𝑀𝑒𝑑𝑖𝑐𝑜(𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒 &𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒) { 𝑐𝑜𝑢𝑡 <<
𝑃𝑜𝑑𝑜𝑙𝑜𝑔𝑖𝑎\𝑛"; 𝑐𝑜𝑢𝑡 << "4. 𝑃𝑒𝑑𝑖𝑎𝑡𝑟𝑖𝑎\𝑛"; 𝑐𝑜𝑢𝑡 << "5. 𝐶𝑎𝑟𝑑𝑖𝑜𝑙𝑜𝑔𝑖𝑎\𝑛"; 𝑐𝑜𝑢𝑡 << "6. 𝑂𝑑𝑜𝑛𝑡𝑜𝑙𝑜𝑔𝑖𝑎\𝑛"; 𝑐𝑜𝑢𝑡 << "7. 𝑁𝑢𝑡𝑟𝑖𝑐𝑖𝑜𝑛\
𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑣𝑎𝑙𝑖𝑑𝑜 𝑑𝑒 𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑢𝑚𝑒𝑟𝑜 𝑐𝑜𝑟𝑟𝑒𝑠𝑝𝑜𝑛𝑑𝑖𝑒𝑛𝑡𝑒 𝑎 𝑙𝑎 𝑒𝑠𝑝𝑒𝑐
𝑎𝑠𝑖𝑔𝑛𝑎𝑑𝑎: "; } } 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑚𝑒𝑑𝑖𝑐𝑜 𝑎𝑠𝑖𝑔𝑛𝑎𝑑𝑜: "; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(); // 𝐿𝑖𝑚𝑝𝑖𝑎𝑟 𝑒𝑙 𝑏𝑢𝑓𝑓𝑒𝑟 𝑑𝑒𝑙 𝑡𝑒𝑐𝑙𝑎𝑑𝑜 𝑔
𝐸𝑠𝑝𝑒𝑟𝑎(𝑣𝑒𝑐𝑡𝑜𝑟<𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒> &𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎, 𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒 &𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒) { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒: "; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(); //
<< "𝐼𝑛𝑑𝑖𝑞𝑢𝑒 𝑒𝑙 𝑛𝑖𝑣𝑒𝑙 𝑑𝑒 𝑢𝑟𝑔𝑒𝑛𝑐𝑖𝑎: "; 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑛𝑖𝑣𝑒𝑙𝑈𝑟𝑔𝑒𝑛𝑐𝑖𝑎; 𝑤ℎ𝑖𝑙𝑒 (𝑐𝑖𝑛.𝑓𝑎𝑖𝑙() || 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑛𝑖𝑣𝑒𝑙𝑈𝑟𝑔𝑒𝑛𝑐𝑖𝑎 < 1 ||
𝑛𝑠𝑒𝑟𝑡(𝑖𝑡, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑐𝑜𝑢𝑡 << "𝐸𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒 ℎ𝑎 𝑠𝑖𝑑𝑜 𝑢𝑏𝑖𝑐𝑎𝑑𝑜 𝑒𝑛 𝑙𝑎 𝑙𝑖𝑠𝑡𝑎 𝑑𝑒 𝑒𝑠𝑝𝑒𝑟𝑎 𝑐𝑜𝑛 𝑒𝑥𝑖𝑡𝑜." << 𝑒𝑛𝑑𝑙;}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑒𝑙𝑖𝑚𝑖𝑛𝑎𝑟
𝑜 𝑖𝑡 = 𝑓𝑖𝑛𝑑_𝑖𝑓(𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎.𝑏𝑒𝑔𝑖𝑛(), 𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎.𝑒𝑛𝑑(), [&𝑛𝑜𝑚𝑏𝑟𝑒](𝑐𝑜𝑛𝑠𝑡 𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒 &𝑝) { 𝑟𝑒𝑡𝑢𝑟𝑛 𝑝.𝑛𝑜𝑚𝑏𝑟𝑒 == 𝑛𝑜𝑚𝑏𝑟𝑒; });
𝑛 𝑢𝑠𝑢𝑎𝑟𝑖𝑜 𝑎 𝑙𝑎 𝑙𝑖𝑠𝑡𝑎𝑣𝑜𝑖𝑑 𝑎𝑔𝑟𝑒𝑔𝑎𝑟𝑈𝑠𝑢𝑎𝑟𝑖𝑜(𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗& 𝑐𝑎𝑏𝑒𝑧𝑎, 𝑠𝑡𝑟𝑖𝑛𝑔 𝑡𝑖𝑝𝑜, 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒, 𝑠𝑡𝑟𝑖𝑛𝑔 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎) { 𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗ 𝑛𝑢𝑒𝑣𝑜
𝑡ℎ() < 6) { 𝑐𝑜𝑢𝑡 << "𝐿𝑎 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒ñ𝑎 𝑑𝑒𝑏𝑒 𝑡𝑒𝑛𝑒𝑟 𝑎𝑙 𝑚𝑒𝑛𝑜𝑠 6 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒𝑠. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛𝑎 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒ñ𝑎 𝑣𝑎𝑙𝑖𝑑𝑎: "; 𝑐𝑖𝑛 >
𝑤ℎ𝑖𝑙𝑒 (𝑐𝑎𝑏𝑒𝑧𝑎 != 𝑛𝑢𝑙𝑙𝑝𝑡𝑟) { 𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗ 𝑡𝑒𝑚𝑝 = 𝑐𝑎𝑏𝑒𝑧𝑎; 𝑐𝑎𝑏𝑒𝑧𝑎 = 𝑐𝑎𝑏𝑒𝑧𝑎−>𝑠𝑖𝑔𝑢𝑖𝑒𝑛𝑡𝑒; 𝑑𝑒𝑙𝑒𝑡𝑒 𝑡𝑒𝑚𝑝; }}// 𝐷𝑒𝑐𝑙𝑎𝑟𝑎𝑐𝑖𝑜𝑛
𝑐𝑜𝑢𝑡 << "3. 𝐴𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "4. 𝑀𝑜𝑠𝑡𝑟𝑎𝑟 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "5. 𝐴𝑠𝑖𝑔𝑛
𝑐𝑜𝑢𝑡 << "𝐴𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑛𝑑𝑜 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜..." << 𝑒𝑛𝑑𝑙; 𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟𝐷𝑎𝑡𝑜𝑠𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 4
𝑡𝑒); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 7: 𝑐𝑜𝑢𝑡 << "𝐸𝑙𝑖𝑚𝑖𝑛𝑎𝑛𝑑𝑜 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒 𝑑𝑒 𝑙𝑖𝑠𝑡𝑎 𝑑𝑒 𝑒𝑠𝑝𝑒𝑟𝑎..." << 𝑒𝑛𝑑𝑙; 𝑒𝑙𝑖𝑚𝑖𝑛𝑎𝑟𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒𝐷𝑒
𝑜𝑢𝑡 << "𝑃𝑜𝑙𝑖𝑐𝑙𝑖𝑛𝑖𝑐𝑜 𝑆𝑎𝑛 𝑉𝑖𝑐𝑒𝑛𝑡𝑒 𝑑𝑒 𝑃𝑎𝑢𝑙" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "∗∗∗" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "1. 𝐼𝑛𝑔𝑟𝑒𝑠𝑎𝑟 𝑐𝑜𝑚𝑜 𝑝𝑒𝑟𝑠𝑜𝑛𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜"
𝑜 𝑣𝑎𝑙𝑖𝑑𝑎. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑣𝑎𝑙𝑖𝑑𝑜." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑛𝑡𝑖𝑛𝑢𝑒; } 𝑠𝑤𝑖𝑡𝑐ℎ (𝑜𝑝𝑐𝑖𝑜𝑛) { 𝑐𝑎𝑠𝑒 1: { 𝑠𝑡𝑟𝑖𝑛𝑔
𝑜 𝑖𝑡 = 𝑓𝑖𝑛𝑑_𝑖𝑓(𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎.𝑏𝑒𝑔𝑖𝑛(), 𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎.𝑒𝑛𝑑(), [&𝑛𝑜𝑚𝑏𝑟𝑒](𝑐𝑜𝑛𝑠𝑡 𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒 &𝑝) { 𝑟𝑒𝑡𝑢𝑟𝑛 𝑝.𝑛𝑜𝑚𝑏𝑟𝑒 == 𝑛𝑜𝑚𝑏𝑟𝑒; });
𝑛 𝑢𝑠𝑢𝑎𝑟𝑖𝑜 𝑎 𝑙𝑎 𝑙𝑖𝑠𝑡𝑎𝑣𝑜𝑖𝑑 𝑎𝑔𝑟𝑒𝑔𝑎𝑟𝑈𝑠𝑢𝑎𝑟𝑖𝑜(𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗& 𝑐𝑎𝑏𝑒𝑧𝑎, 𝑠𝑡𝑟𝑖𝑛𝑔 𝑡𝑖𝑝𝑜, 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒, 𝑠𝑡𝑟𝑖𝑛𝑔 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎) { 𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗ 𝑛𝑢𝑒𝑣𝑜
𝑡ℎ() < 6) { 𝑐𝑜𝑢𝑡 << "𝐿𝑎 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒ñ𝑎 𝑑𝑒𝑏𝑒 𝑡𝑒𝑛𝑒𝑟 𝑎𝑙 𝑚𝑒𝑛𝑜𝑠 6 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒𝑠. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛𝑎 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒ñ𝑎 𝑣𝑎𝑙𝑖𝑑𝑎: "; 𝑐𝑖𝑛 >
𝑤ℎ𝑖𝑙𝑒 (𝑐𝑎𝑏𝑒𝑧𝑎 != 𝑛𝑢𝑙𝑙𝑝𝑡𝑟) { 𝑈𝑠𝑢𝑎𝑟𝑖𝑜∗ 𝑡𝑒𝑚𝑝 = 𝑐𝑎𝑏𝑒𝑧𝑎; 𝑐𝑎𝑏𝑒𝑧𝑎 = 𝑐𝑎𝑏𝑒𝑧𝑎−>𝑠𝑖𝑔𝑢𝑖𝑒𝑛𝑡𝑒; 𝑑𝑒𝑙𝑒𝑡𝑒 𝑡𝑒𝑚𝑝; }}// 𝐷𝑒𝑐𝑙𝑎𝑟𝑎𝑐𝑖𝑜𝑛
𝑐𝑜𝑢𝑡 << "3. 𝐴𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "4. 𝑀𝑜𝑠𝑡𝑟𝑎𝑟 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "5. 𝐴𝑠𝑖𝑔𝑛
𝑐𝑜𝑢𝑡 << "𝐴𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑛𝑑𝑜 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜..." << 𝑒𝑛𝑑𝑙; 𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟𝐷𝑎𝑡𝑜𝑠𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒(𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 4
𝑡𝑒); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 7: 𝑐𝑜𝑢𝑡 << "𝐸𝑙𝑖𝑚𝑖𝑛𝑎𝑛𝑑𝑜 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒 𝑑𝑒 𝑙𝑖𝑠𝑡𝑎 𝑑𝑒 𝑒𝑠𝑝𝑒𝑟𝑎..." << 𝑒𝑛𝑑𝑙; 𝑒𝑙𝑖𝑚𝑖𝑛𝑎𝑟𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒𝐷𝑒
𝑜𝑢𝑡 << "𝑃𝑜𝑙𝑖𝑐𝑙𝑖𝑛𝑖𝑐𝑜 𝑆𝑎𝑛 𝑉𝑖𝑐𝑒𝑛𝑡𝑒 𝑑𝑒 𝑃𝑎𝑢𝑙" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "∗∗∗" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "1. 𝐼𝑛𝑔𝑟𝑒𝑠𝑎𝑟 𝑐𝑜𝑚𝑜 𝑝𝑒𝑟𝑠𝑜𝑛𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜"
𝑜 𝑣𝑎𝑙𝑖𝑑𝑎. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 𝑢𝑛 𝑛𝑢𝑚𝑒𝑟𝑜 𝑣𝑎𝑙𝑖𝑑𝑜." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑛𝑡𝑖𝑛𝑢𝑒; } 𝑠𝑤𝑖𝑡𝑐ℎ (𝑜𝑝𝑐𝑖𝑜𝑛) { 𝑐𝑎𝑠𝑒 1: { 𝑠𝑡𝑟𝑖𝑛𝑔
} 𝑤ℎ𝑖𝑙𝑒 (!𝑐𝑟𝑒𝑑𝑒𝑛𝑐𝑖𝑎𝑙𝑒𝑠𝑉𝑎𝑙𝑖𝑑𝑎𝑠); 𝑏𝑟𝑒𝑎𝑘; } 𝑐𝑎𝑠𝑒 2: { 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒, 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎; 𝑏𝑜𝑜𝑙 𝑐𝑟𝑒
𝑤ℎ𝑖𝑙𝑒 (!𝑐𝑟𝑒𝑑𝑒𝑛𝑐𝑖𝑎𝑙𝑒𝑠𝑉𝑎𝑙𝑖𝑑𝑎𝑠); 𝑏𝑟𝑒𝑎𝑘; } 𝑐𝑎𝑠𝑒 3: { 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒, 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑒𝑛𝑎; 𝑝𝑒𝑑𝑖𝑟𝐷𝑎𝑡𝑜𝑠(𝑛𝑜𝑚𝑏𝑟
𝑢𝑡 << "𝑆𝑎𝑙𝑖𝑒𝑛𝑑𝑜..." << 𝑒𝑛𝑑𝑙; 𝑏𝑟𝑒𝑎𝑘; 𝑑𝑒𝑓𝑎𝑢𝑙𝑡: 𝑐𝑜𝑢𝑡 << "𝑂𝑝𝑐𝑖𝑜𝑛 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎" << 𝑒𝑛𝑑𝑙; 𝑏𝑟𝑒𝑎𝑘; } } 𝑤ℎ
𝑟𝑖𝑎𝑙(𝑐𝑜𝑛𝑠𝑡 𝑠𝑡𝑟𝑖𝑛𝑔& 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒, 𝑐𝑜𝑛𝑠𝑡 𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀𝑒𝑑𝑖𝑐𝑜& 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜) { ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑃𝑜𝑟𝑁𝑜𝑚𝑏𝑟𝑒[𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒].𝑝𝑢𝑠ℎ_𝑏𝑎𝑐𝑘(𝑟𝑒
𝑒𝑐𝑡𝑜𝑟<𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀𝑒𝑑𝑖𝑐𝑜>& ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙) { 𝑐𝑜𝑢𝑡 << "\𝑛𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑀𝑒𝑑𝑖𝑐𝑜:" << 𝑒𝑛𝑑𝑙; 𝑖𝑓 (ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙.𝑒𝑚𝑝𝑡𝑦()) { 𝑐𝑜𝑢𝑡 << "𝐸𝑙 ℎ𝑖𝑠𝑡𝑜
<< 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << 𝑒𝑛𝑑𝑙; } }}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟 𝑢𝑛 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜 𝑒𝑠𝑝𝑒𝑐𝑖𝑓𝑖𝑐𝑜 𝑒𝑛 𝑒𝑙 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜𝑣𝑜𝑖𝑑 𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟
<< 𝑒𝑛𝑑𝑙; } } 𝑒𝑙𝑠𝑒 { 𝑐𝑜𝑢𝑡 << "𝑁𝑜 𝑠𝑒 𝑒𝑛𝑐𝑜𝑛𝑡𝑟𝑜 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜 𝑝𝑎𝑟𝑎 " << 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒 << 𝑒𝑛𝑑𝑙; }}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎
𝑜𝑢𝑡 << 𝑏𝑎𝑠𝑒𝐼𝑛𝑑𝑒𝑥 + 2 << ". 𝑀𝑜𝑡𝑖𝑣𝑜 𝑑𝑒 𝑐𝑜𝑛𝑠𝑢𝑙𝑡𝑎: " << ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙[𝑖].𝑚𝑜𝑡𝑖𝑣𝑜𝐶𝑜𝑛𝑠𝑢𝑙𝑡𝑎 << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << 𝑏𝑎𝑠𝑒𝐼𝑛𝑑𝑒𝑥 + 3 << ".
< "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝑖𝑛𝑑𝑖𝑐𝑒 𝑑𝑒𝑙 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜 𝑞𝑢𝑒 𝑑𝑒𝑠𝑒𝑎 𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟: "; 𝑐𝑖𝑛 >> 𝑖𝑛𝑑𝑖𝑐𝑒; 𝑖𝑓 (𝑖𝑛𝑑𝑖𝑐𝑒 > 0 && 𝑖𝑛𝑑𝑖𝑐𝑒 <= ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎
𝑐𝑎𝑠𝑒 1: 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑢𝑒𝑣𝑜 𝑚𝑜𝑡𝑖𝑣𝑜 𝑑𝑒 𝑐𝑜𝑛𝑠𝑢𝑙𝑡𝑎: "; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(); 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜.𝑚𝑜
𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙(𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒, 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜𝐼𝑛𝑑𝑒𝑥, 𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜); } 𝑒𝑙𝑠𝑒 { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑑𝑖𝑐𝑒 𝑓𝑢𝑒𝑟𝑎 𝑑𝑒 𝑟𝑎𝑛𝑔𝑜."
<< 𝑒𝑛𝑑𝑙; 𝑓𝑜𝑟 (𝑠𝑖𝑧𝑒_𝑡 𝑖 = 0; 𝑖 < ℎ𝑜𝑠𝑝𝑖𝑡𝑎𝑙𝑒𝑠.𝑠𝑖𝑧𝑒(); ++𝑖) { 𝑐𝑜𝑢𝑡 << 𝑖 + 1 << ". 𝑁𝑜𝑚𝑏𝑟𝑒: " << ℎ𝑜𝑠𝑝𝑖𝑡𝑎𝑙𝑒𝑠[𝑖].𝑛𝑜𝑚𝑏𝑟𝑒 << ", 𝐶𝑜𝑛𝑡𝑎
𝑎𝑙𝑠𝑒; 𝑤ℎ𝑖𝑙𝑒 (!𝑜𝑝𝑐𝑖𝑜𝑛𝑉𝑎𝑙𝑖𝑑𝑎) { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒𝑙 ℎ𝑜𝑠𝑝𝑖𝑡𝑎𝑙 𝑎𝑙 𝑞𝑢𝑒 𝑑𝑒𝑠𝑒𝑎 𝑡𝑟𝑎𝑠𝑙𝑎𝑑𝑎𝑟 𝑎𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒: "; 𝑐𝑖𝑛 >> 𝑜𝑝𝑐
ℎ𝑜𝑠𝑝𝑖𝑡𝑎𝑙𝑒𝑠[𝑜𝑝𝑐𝑖𝑜𝑛 − 1].𝑐𝑜𝑛𝑡𝑎𝑐𝑡𝑜 << 𝑒𝑛𝑑𝑙;}// 𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑔𝑢𝑎𝑟𝑑𝑎𝑟 𝑟𝑒𝑐𝑒𝑡𝑎𝑠 𝑒𝑛 𝑢𝑛 𝑎𝑟𝑐ℎ𝑖𝑣𝑜 .𝑡𝑥𝑡𝑣𝑜𝑖𝑑 𝑔𝑢𝑎𝑟𝑑𝑎𝑟𝑅𝑒𝑐𝑒𝑡𝑎𝑠𝐸𝑛𝐴𝑟𝑐ℎ𝑖𝑣𝑜(
𝑡𝑎.𝑐𝑎𝑑𝑎𝐶𝑢𝑎𝑛𝑡𝑎𝑠𝐻𝑜𝑟𝑎𝑠 << "\𝑛"; 𝑎𝑟𝑐ℎ𝑖𝑣𝑜 << "−−−−−−−−−−−−−−−−−−−−−−−−−−−\𝑛"; } 𝑎𝑟𝑐ℎ𝑖𝑣𝑜.𝑐𝑙𝑜𝑠𝑒();
𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "2. 𝐵𝑢𝑠𝑐𝑎𝑟 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "3. 𝐴𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑟 ℎ𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙 𝑚𝑒𝑑𝑖𝑐𝑜" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "4. 𝐴𝑠
𝑢𝑒; } 𝑠𝑤𝑖𝑡𝑐ℎ (𝑜𝑝𝑐𝑖𝑜𝑛) { 𝑐𝑎𝑠𝑒 1: { 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒; 𝑏𝑜𝑜𝑙 𝑛𝑜𝑚𝑏𝑟𝑒𝑉𝑎𝑙𝑖𝑑𝑜 = 𝑓𝑎𝑙𝑠𝑒; 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒
𝐹𝑒𝑐ℎ𝑎 𝑑𝑒 𝑐𝑜𝑛𝑠𝑢𝑙𝑡𝑎 (𝑓𝑜𝑟𝑚𝑎𝑡𝑜 𝑑𝑑/𝑚𝑚/𝑎𝑎𝑎𝑎): "; 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑛𝑢𝑒𝑣𝑜𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜.𝑓𝑒𝑐ℎ𝑎𝐶𝑜𝑛𝑠𝑢𝑙𝑡𝑎); 𝑐𝑜𝑢𝑡 << "𝑀𝑜𝑡𝑖𝑣𝑜 𝑑𝑒 𝑐
𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒: "; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(); 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒); 𝑣𝑒𝑐𝑡𝑜𝑟<𝐻𝑖𝑠𝑡𝑜𝑟𝑖𝑎𝑙𝑀𝑒𝑑𝑖𝑐𝑜> ℎ𝑖
𝑚𝑎𝑛𝑒𝑗𝑎𝑟𝑇𝑟𝑎𝑠𝑙𝑎𝑑𝑜(); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 6: 𝑔𝑢𝑎𝑟𝑑𝑎𝑟𝑅𝑒𝑐𝑒𝑡𝑎𝑠𝐸𝑛𝐴𝑟𝑐ℎ𝑖𝑣𝑜(𝑟𝑒𝑐𝑒𝑡𝑎𝑠); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 7:
𝑑𝑒 𝑢𝑠𝑢𝑎𝑟𝑖𝑜𝑠 𝑙𝑖𝑏𝑒𝑟𝑎𝑟𝑀𝑒𝑚𝑜𝑟𝑖𝑎(𝑙𝑖𝑠𝑡𝑎𝑀𝑒𝑑𝑖𝑐𝑜𝑠); 𝑙𝑖𝑏𝑒𝑟𝑎𝑟𝑀𝑒𝑚𝑜𝑟𝑖𝑎(𝑙𝑖𝑠𝑡𝑎𝐸𝑛𝑓𝑒𝑟𝑚𝑒𝑟𝑎𝑠); 𝑟𝑒𝑡𝑢𝑟𝑛 0;}48
𝑢𝑐𝑡 𝑅𝑒𝑐𝑒𝑡𝑎 { 𝑠𝑡𝑟𝑖𝑛𝑔 𝑛𝑜𝑚𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒; 𝑠𝑡𝑟𝑖𝑛𝑔
𝑖𝑛𝑑𝑒𝑥 = 0) { 𝑖𝑓 (𝑖𝑛𝑑𝑒𝑥 == 𝑠𝑡𝑟.𝑙𝑒𝑛𝑔𝑡ℎ()) 𝑟𝑒𝑡𝑢𝑟𝑛 𝑡𝑟𝑢𝑒; 𝑖𝑓
< "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒: "; 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛,
𝑛𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑜. 𝑆𝑜𝑙𝑜 𝑠𝑒 𝑝𝑒𝑟𝑚𝑖𝑡𝑒𝑛 𝑙𝑒𝑡𝑟𝑎𝑠, 𝑛𝑢𝑚𝑒𝑟𝑜𝑠 𝑦 𝑒𝑠𝑝𝑎𝑐𝑖𝑜𝑠.
; 𝑖𝑓 (𝑐𝑖𝑛.𝑓𝑎𝑖𝑙() || 𝑛𝑢𝑒𝑣𝑎𝑅𝑒𝑐𝑒𝑡𝑎.𝑛𝑢𝑚𝑒𝑟𝑜𝐷𝑖𝑎𝑠 <= 0) {
𝐶𝑢𝑎𝑛𝑡𝑎𝑠𝐻𝑜𝑟𝑎𝑠 <= 0) { 𝑐𝑖𝑛.𝑐𝑙𝑒𝑎𝑟();
𝑐𝑡𝑢𝑟𝑎 𝑝𝑎𝑟𝑎 𝑎𝑙𝑚𝑎𝑐𝑒𝑛𝑎𝑟 𝑙𝑜𝑠 𝑑𝑎𝑡𝑜𝑠 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒𝑠𝑡𝑟𝑢𝑐𝑡
𝑢𝑚𝑒 𝑞𝑢𝑒 𝑢𝑛 𝐷𝑁𝐼 𝑣𝑎𝑙𝑖𝑑𝑜 𝑡𝑖𝑒𝑛𝑒 8 𝑑𝑖𝑔𝑖𝑡𝑜𝑠 𝑖𝑓 (𝑑𝑛𝑖.𝑙𝑒𝑛𝑔𝑡ℎ() !=
𝑟𝑠𝑖𝑣𝑎 𝑝𝑎𝑟𝑎 𝑣𝑎𝑙𝑖𝑑𝑎𝑟 𝑠𝑖 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑖𝑛𝑔𝑟𝑒𝑠𝑎𝑑𝑜 𝑐𝑜𝑛𝑡𝑖𝑒𝑛𝑒
𝑜𝐶𝑖𝑣𝑖𝑙𝑉𝑎𝑙𝑖𝑑𝑜(𝑐ℎ𝑎𝑟 𝑒𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙) { 𝑟𝑒𝑡𝑢𝑟𝑛 𝑒𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙 == ′𝑆′
𝑜. 𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑠𝑜𝑙𝑜 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒𝑠 𝑎𝑙𝑓𝑎𝑏𝑒𝑡𝑖𝑐𝑜𝑠." << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡
>> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑔𝑒𝑛𝑒𝑟𝑜; 𝑖𝑓 (!
<< "𝐷𝑁𝐼 (8 𝑑𝑖𝑔𝑖𝑡𝑜𝑠): "; 𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑑𝑛𝑖; 𝑖𝑓 (!
𝑒.𝑐𝑒𝑙𝑢𝑙𝑎𝑟)); 𝑐𝑜𝑢𝑡 << "𝐶𝑜𝑟𝑟𝑒𝑜 𝑒𝑙𝑒𝑐𝑡𝑟𝑜𝑛𝑖𝑐𝑜: "; 𝑐𝑖𝑛 >>
𝑜𝑛𝑖𝑐𝑜" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "10. 𝑆𝑎𝑙𝑖𝑟" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡
𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑎𝑝𝑒𝑙𝑙𝑖𝑑𝑜); 𝑖𝑓 (!
𝑣𝑖𝑙 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑜. 𝑃𝑜𝑟 𝑓𝑎𝑣𝑜𝑟, 𝑖𝑛𝑔𝑟𝑒𝑠𝑒 ′𝑆′, ′𝐶′, ′𝑉′ 𝑜 ′𝐷′." << 𝑒𝑛𝑑𝑙;
𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛, 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑑𝑖𝑟𝑒𝑐𝑐𝑖𝑜𝑛); 𝑏𝑟𝑒𝑎𝑘; 𝑐𝑎𝑠𝑒 8:
"𝑂𝑝𝑐𝑖𝑜𝑛 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎" << 𝑒𝑛𝑑𝑙; 𝑏𝑟𝑒𝑎𝑘; } } 𝑤ℎ𝑖𝑙𝑒
𝑏𝑟𝑒𝑃𝑎𝑐𝑖𝑒𝑛𝑡𝑒; // 𝐺𝑢𝑎𝑟𝑑𝑎𝑟 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒 } }
𝑒 (!(𝑐𝑖𝑛 >> 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑡𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎)) { 𝑐𝑖𝑛.𝑐𝑙𝑒𝑎𝑟();
𝑟𝑒𝑎𝑚𝑠𝑖𝑧𝑒>::𝑚𝑎𝑥(), ′\𝑛′); 𝑐𝑜𝑢𝑡 << "𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝑛𝑜 𝑣𝑎𝑙𝑖𝑑𝑎.
17) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑡𝑎𝑙𝑙𝑎 << " |" << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "|
𝑢𝑡 << 𝑠𝑡𝑟𝑖𝑛𝑔(𝑎𝑛𝑐ℎ𝑜, ′−′) << 𝑒𝑛𝑑𝑙; 𝑐𝑜𝑢𝑡 << "| " << 𝑙𝑒𝑓𝑡
𝑒𝑓𝑡 << 𝑠𝑒𝑡𝑤(𝑎𝑛𝑐ℎ𝑜 − 16) << 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑒𝑠𝑡𝑎𝑑𝑜𝐶𝑖𝑣𝑖𝑙 << " |"
&𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒) { 𝑐𝑜𝑢𝑡 << "𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒𝑙 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒:
𝑐𝑜𝑢𝑡 << "7. 𝑁𝑢𝑡𝑟𝑖𝑐𝑖𝑜𝑛\𝑛"; 𝑐𝑜𝑢𝑡 << "8. 𝑇𝑒𝑟𝑎𝑝𝑖𝑎 𝑓𝑖𝑠𝑖𝑐𝑎\𝑛";
𝑒𝑠𝑝𝑜𝑛𝑑𝑖𝑒𝑛𝑡𝑒 𝑎 𝑙𝑎 𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙𝑖𝑑𝑎𝑑 𝑎𝑠𝑖𝑔𝑛𝑎𝑑𝑎: "; } }
𝑏𝑢𝑓𝑓𝑒𝑟 𝑑𝑒𝑙 𝑡𝑒𝑐𝑙𝑎𝑑𝑜 𝑔𝑒𝑡𝑙𝑖𝑛𝑒(𝑐𝑖𝑛,
𝑛𝑡𝑒: "; 𝑐𝑖𝑛.𝑖𝑔𝑛𝑜𝑟𝑒(); // 𝐿𝑖𝑚𝑝𝑖𝑎𝑟 𝑒𝑙 𝑏𝑢𝑓𝑓𝑒𝑟 𝑑𝑒𝑙 𝑡𝑒𝑐𝑙𝑎𝑑𝑜
𝑒.𝑛𝑖𝑣𝑒𝑙𝑈𝑟𝑔𝑒𝑛𝑐𝑖𝑎 < 1 || 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒.𝑛𝑖𝑣𝑒𝑙𝑈𝑟𝑔𝑒𝑛𝑐𝑖𝑎 > 5)
𝐹𝑢𝑛𝑐𝑖𝑜𝑛 𝑝𝑎𝑟𝑎 𝑒𝑙𝑖𝑚𝑖𝑛𝑎𝑟 𝑎 𝑢𝑛 𝑝𝑎𝑐𝑖𝑒𝑛𝑡𝑒 𝑑𝑒 𝑙𝑎 𝑙𝑖𝑠𝑡𝑎 𝑑𝑒
𝑟𝑒 == 𝑛𝑜𝑚𝑏𝑟𝑒; }); 𝑖𝑓 (𝑖𝑡 != 𝑙𝑖𝑠𝑡𝑎𝐸𝑠𝑝𝑒𝑟𝑎.𝑒𝑛𝑑())
Tabla 17
Distribucion de personas según el tipo de producto
Distribucion de personas según el tipo de producto
Tipo de producto fi hi Fi Hi
Belleza y skincare 22 0.12 22 0.12
Comestibles 20 0.11 42 0.23
Electrónicos 54 0.30 96 0.53
Fármacos y aseo personal 7 0.04 103 0.57
Ropa y accesorios 70 0.39 173 0.96
Útiles de estudio 7 0.04 180 1.00
Total general 180 1.0000
Fuente: Inti S.A.C.
Tabla 9
Distribución porcentual de personas según tipo de producto
40.00% 38.89%
35.00%
30.00%
30.00%
Porcentaje de Personas
25.00%
20.00%
15.00%
12.22%
11.11%
10.00%
0.00%
Belleza y skincare Comestibles Electrónicos Fármacos y aseo Ropa y accesorios Útiles de estudio
personal
Tipo de producto
11.11%
Po
10.00%
0.00%
Belleza y skincare Comestibles Electrónicos Fármacos y aseo Ropa y accesorios Útiles de estudio
personal
Tipo de producto
1.Datos
𝑛 180
Hi% 𝑝 ̂ 0.3889
12.22%
11.11% 2. Nivel de confianza
30.00%
3.89% Nivel de confianza
38.89% 1-α 0.99
3.89% α 0.01
100.00% z α/2 0.005
1 - α/2 0.995 TABLA
Z 2.58
3. Formula
4. Remplazar
𝐼𝐶(𝑝):0.3889±2.58√((0.3889(1−0.3889))/180)
𝐼𝐶(𝑝):0.3889±2.58√0.00132032
𝐼𝐶(𝑝): 0.3889±0.1257751429
0.29515274354 0.48264725646
0.2952 0.4826 Redondeado a 4 decimales
𝐼𝐶(𝑝):[0.2952;0.4826]
5. Conclusión
Con un nivel de confianza del 99%, el intervalo [0.2952; 0.4826] contienen la verdadera proporció
poblacional de las personas que prefieren productos como ropa y accesorios en compras en línea. P
se encuentra por encima del 15%, podemos concluir que la empresa Inti S.A.C sí ofrecerá un diseñ
personalizado en una de las prendas o accesorios que compren las personas el día de la inauguració
e ropa y accesorio, con el fin de
de ofrecerles un diseño
día de la inauguración. Sí el
"ropa y accesorios" sea mayor al