Algoritmo{ inteiro matrts, hdch, vdepto[5], depto, verifd=0, im, deptochm[5][3], pend[5][3], i, j, contc, schamhard, chamhard[3], corr, schamsoft, chamsoft[3], chamrede[3], schamrede, result; literal medadot[5][3],medfut[5][3]; //Informação do técnico responsável pelo suporte técnico semanal. escreva("Bem vindo ao Sistema de Gerencialmento de Chamados Help-Desk Supernova Network"); escreva("Matrícula do Responsável Técnico da Semana:"); leia(matrts); //Validação da ocorrência de chamados do suporte durante a semana escreva("Chamados durante a semana?"); escreva("1 - Sim","","2 - Não"); faca{ leia(hdch); se(hdch!=1 ou hdch!=2) entao{ escreva("Opção inválida. Por favor, digite 1 para declarar que houve chamados durante a semana ou 2 para declarar que não houve chamados"); } }enquanto(hdch!=1 ou hdch!=2); //Caso tenha ocorrido chamados durante a semana, o programa executará o código abaixo escolha(hdch){ caso 1: //Atribuição de valores 0 para o vetor vdepto[5], visando a validação do registro já efetuado do relatório para um departamento específico. para(contd=0;contd<5;contd=contd+1){ vdepto[contd]=0; } faca{ //Validação da escolha do departamento faca{ escreva(" Por favor, informe o departamento, conforme o código respectivo:"); escreva("1 - Financeiro","","2 - Logística","","3 - Marketing","",4 - Jurídico","",5 - Gestão de Pessoas"); leia(depto); se(depto<1 ou depto>4) entao{ escreva("Código do departamento não encontrado."); } }enquanto(depto<1 ou depto>4); se(vdepto[depto-1]!=0) entao{ escreva("Relatório já gerado para este departamento.Deseja gerar outro relatório para o mesmo departamento?"); escreva("1 - Sim","","2 - Não"); faça{ leia (verifd); se(verifd!=1 ou verifd!=2) entao{ escreva ("Opção inválida. Por favor, digite 1 para gerar outro relatório para o mesmo departamento ou 2 para escolher outro departamento."); } }enquanto(verifd!=1 ou verifd!=2); } //Mostra a escolha do departamento selecionado se(verifd==1 ou vdepto[depto-1]==0) entao{ escolha (depto){ caso 1: escreva("Relatório semanal de Help Desk - Departamento Financeiro"); parar; caso 2: escreva("Relatório semanal de Help Desk - Departamento de Logística"); parar; caso 3: escreva("Relatório semanal de Help Desk - Departamento de Marketing"); parar; caso 4: escreva("Relatório semanal de Help Desk - Departamento Jurídico"); parar; caso 5: escreva("Relatório semanal de Help Desk - Departamento de Gestão de Pessoas"); parar; } //Validação da informação do número de equipamentos do departamento em questão (inclusa a impresssora). Caso seja inválido o número digitado, o R.T. deverá informar novamente o número. im=0; escreva("Número de equipamentos no departamento:"); faca{ leia(im); se (im<0 ou im>5) entao{ escreva("Número de equipamentos incompatível. Digite o número correto de equipamentos deste departamento"); } }enquanto(im<0 ou im>5); escreva("Descreva, por equipamento, o tipo do problema relatado."); //Cadastro e validação do número de chamados, divididos por tipo, para cada equipamento do departamento em questão. para(i=0;i0) entao{ faca{ contc=0; schamhard=0; faca{ escreva("Troca de Peças"); leia(chamhard[contc]); se(chamhard[contc]<0 ou chamhard[contc]>deptochm[i][j]) entao{ escreva("Número especificado excede o valor de chamadas ou é inválido. Informe um número válido para as chamadas de troca de peças"); } }enquanto(chamhard[contc]<0 ou chamhard[contc]>deptochm[i][j]); schamhard=schamhard+chamhard[contc]; contc=1; faca{ escreva("Upgrade"); leia(chamhard[contc]); se(chamhard[contc]<0 ou chamhard[contc]>deptochm[i][j]) entao{ escreva("Número especificado excede o valor de chamadas ou é inválido. Informe um número válido para as chamadas de upgrade"); } }enquanto(chamhard[contc]<0 ou chamhard[contc]>deptochm[i][j]); schamhard=schamhard+chamhard[contc]; contc=2; faca{ escreva("Retirada de Equipamento"); leia(chamhard[contc]); se(chamhard[contc]<0 ou chamhard[contc]>deptochm[i][j]) entao{ escreva("Número especificado excede o valor de chamadas ou é inválido. Informe um número válido para as chamadas para retiradas da equipamento."); } }enquanto(chamhard[contc]<0 ou chamhard[contc]>deptochm[i][j]); schamhard=schamhard+chamhard[contc]; //Validação do número de chamados especificados, comparando-se com o número de chamados por tipo (geral), e validando os valores. O programa somente prossegue se o usuário mantiver coerência entre os valores digitados no cadastro do tipo, e na especificação do tipo. Para cada um dos tipos, foi realizada a mesma validação. se(schamhard!=deptochm[i][j]) então{ escreva("O número de chamados cadastrados é ",deptochm[i][j],". Contudo, foram informadas ",schamhard," especificações."); escreva("Número de chamadas para hardware não confere com as especificações de chamada de hardware. O que gostaria de corrigir?"); escreva("1 - Corrigir o número de chamados de hardware","","2 - Corrigir o cadastro de espeficicações dos chamados de hardware"); faca{ leia(corr); se(corr!=1 ou corr!=2) entao{ escreva("Opção inválida. Informe 1 para corrigir o número de chamados de hardware ou 2 - Corrigir o cadastro de espeficicações dos chamados de hardware"); } }enquanto(corr!=1 ou corr!=2); se(corr==1) escreva("Será feita a correção do número de chamados de hardware. Caso ainda haja divergências, automaticamente o programa será redirecionado para a correção das especificações"); faca{ escreva("Equipamento",i+1,"- Número de Chamados de Hardware:"); leia(deptochm[i][j]); se(deptochm[i][j]<0) entao{ escreva("Número de chamados inválido. Informe o número de chamados válido"); } }enquanto(deptochm[i][j]<0); } } }enquanto(schamhard!=deptochm[i][j]); //Verificação se todos os problemas referentes a este tipo foram resolvidos, ou não, com o cadastro dos motivos para a resolução/a serem implementados. escreva("Todos os chamados foram solucionados"); escreva("1 - Sim","","2 - Não"); faca{ leia(result); se(result!=1 ou result!=2) entao{ escreva("Opção inválida. Por favor, digite 1 caso todos os problemas tenham sido resolvidos, ou 2 caso não"); } }enquanto(result!=1 ou result!=2); escolha(result); caso 1: escreva("Detalhe as providências que foram tomadas para a resolução dos chamados de hardware"); leia(medadot[i][j]); parar; caso 2: escreva("Informe quantos chamados não foram fechados"); faca{ leia(pend[i][j]); se(pend[i][j]<0 ou pend[i][j]>deptochm[i][j]) entao{ escreva("Informação inválida. O número de chamados não resolvidos deve ser válido. Informe o número de chamados não resolvidos); } }enquanto(pend[i][j]<0 ou pend[i][j]>deptochm); escreva("Detalhe as providências a serem tomadas para a resolução dos chamados de hardware"); leia(medfut[i][j]); parar; } deptochm[i][j]=deptochm[i][j]-pend[i][j]; }senao{ escreva("Não houve chamados de Hardware para este equipamento."); } j=1; escreva("Assunto: Software"); se(deptochm[i][j]))0; faca{ schamsoft=0; contc=0; faca{ escreva("Instalação de Software"); leia(chamsoft[contc]); se(chamsoft[contc]<0 ou chamsoft[contc]>deptochm[i][j]) entao{ escreva("Número especificado excede o valor de chamadas ou é inválido. Informe um número válido para as chamadas de solicitação de instalação de software"); } }enquanto(chamsoft[contc]<0 ou chamsoft[contc]>deptochm[i][j]); schamsoft=schamsoft+chamsoft[contc]; contc=1; faca{ escreva("Erro de Execução do Software"); leia(chamsoft[contc]); se(chamsoft[contc]<0 ou chamsoft[contc]>deptochm[i][j]) entao{ escreva("Número especificado excede o valor de chamadas ou é inválido. Informe um número válido para as chamadas para solucionar erro de execução do software."); } }enquanto(chamsoft[contc]<0 ou chamsoft[contc]>deptochm[i][j]); schamsoft=schamsoft+chamsoft[contc]; se(schamsoft!=deptochm[i][j]) então{ escreva("O número de chamados cadastrados é ",deptochm[i][j],". Contudo, foram informadas ",schamsoft," especificações."); escreva("Número de chamadas para software não confere com as especificações de chamada de software. O que gostaria de corrigir?"); escreva("1 - Corrigir o número de chamado de software","","2 - Corrigir o cadastro de espeficicações"); leia (corr); se(corr==1) então{ escreva("Máquina",i+1,"- Número de Chamados de Software:"); faca{ leia(deptochm[i][j]); se(deptochm[i][j]<0) entao{ escreva("Número de chamados inválido. Informe o número de chamados válido"); } }enquanto(deptochm[i][j]<0); parar; } } }enquanto(schamsoft!=deptochm[i][j]); escreva("Todos os chamados foram solucionados"); escreva("1 - Sim","","2 - Não"); faca{ leia(result); se(result!=1 ou result!=2) entao{ escreva("Opção inválida. Por favor, digite 1 caso todos os problemas tenham sido resolvidos, ou 2 caso não"); } }enquanto(result!=1 ou result!=2); escolha(result); escolha(result); caso 1: escreva("Detalhe as providências que foram tomadas para a resolução dos chamados de hardware"); leia(medadot[i][j]); parar; caso 2: escreva("Informe quantos chamados não foram fechados"); faca{ leia(pend[i][j]); se(pend[i][j]<0 ou pend[i][j]>deptochm[i][j]) entao{ escreva("Informação inválida. O número de chamados não resolvidos deve ser válido. Informe o número de chamados não resolvidos); } }enquanto(pend[i][j]<0 ou pend[i][j]>deptochm); escreva("Detalhe as providências a serem tomadas para a resolução dos chamados de hardware"); leia(medfut[i][j]); parar; } deptochmres[i][j]=deptochm[i][j]-pend[i][j]; }senao{ escreva("Não houve chamados de Hardware para este equipamento."); } j=2 escreva("Assunto: Redes) se(deptochm[i][j]>0) entao{ faca{ schamrede=0; contc=0; faca{ escreva("Cabeamento"); leia(chamrede[contc]); se(chamrede[contc]<0 ou chamrede[contc]>deptochm[i][j]) entao{ escreva("Número especificado excede o valor de chamadas ou é inválido. Informe um número válido para as chamadas de solicitação de reparo/troca de cabeamento de rede"); } }enquanto(chamrede[contc]<0 ou chamrede[contc]>deptochm[i][j]); schamrede=schamrede+chamrede[contc]; contc=1; faca{ escreva("Configuração de Conexão"); leia(chamrede[contc]); se(chamrede[contc]<0 ou chamrede[contc]>deptochm[i][j]) entao{ escreva("Número especificado excede o valor de chamadas ou é inválido. Informe um número válido para as chamadas para configuração de conexão de rede."); } }enquanto(chamrede[contc]<0 ou chamrede[contc]>deptochm[i][j]); schamrede=schamrede+chamrede[contc]; se(schamrede!=deptochm[i][j]) então{ escreva("O número de chamados cadastrados é ",deptochm[i][j],". Contudo, foram informadas ",schamrede," especificações."); escreva("Número de chamadas para rede não confere com as especificações de chamada de rede. O que gostaria de corrigir?"); escreva("1 - Corrigir o número de chamado de rede","","2 - Corrigir o cadastro de espeficicações"); leia (corr); se(corr==1) então{ escreva("Máquina",i+1,"- Número de Chamados de rede:"); faca{ leia(deptochm[i][j]); se(deptochm[i][j]<0) entao{ escreva("Número de chamados inválido. Informe o número de chamados válido"); } }enquanto(deptochm[i][j]<0); parar; } } }enquanto(schamrede!=deptochm[i][j]); escreva("Todos os chamados foram solucionados"); escreva("1 - Sim","","2 - Não"); faca{ leia(result); se(result!=1 ou result!=2) entao{ result("Opção inválida. Por favor, digite 1 caso todos os problemas tenham sido resolvidos, ou 2 caso não"); } }enquanto(result!=1 ou result!=2); escolha(result); caso 1: escreva("Detalhe as providências que foram tomadas para a resolução dos chamados de hardware"); leia(medadot[i][j]); parar; caso 2: escreva("Informe quantos chamados não foram fechados"); faca{ leia(pend[i][j]); se(pend[i][j]<0 ou pend[i][j]>deptochm[i][j]) entao{ escreva("Informação inválida. O número de chamados não resolvidos deve ser válido. Informe o número de chamados não resolvidos); } }enquanto(pend[i][j]<0 ou pend[i][j]>deptochm); escreva("Detalhe as providências a serem tomadas para a resolução dos chamados de hardware"); leia(medfut[i][j]); parar; } deptochm[i][j]=deptochm[i][j]-pend[i][j]; }senao{ escreva("Não houve chamados de Hardware para este equipamento."); } } escreva("Relatório final:") //No relatório final, é informado, novamente, para qual departamento está sendo feito o relatório. escolha (depto){ caso 1: escreva(Departamento Financeiro"); parar; caso 2: escreva(Departamento de Logística"); parar; caso 3: escreva(Departamento de Marketing"); parar; caso 4: escreva(Departamento Jurídico"); parar; caso 5: escreva(Departamento de Gestão de Pessoas"); parar; } //Detalhamento dos problemas verificados, bem como das soluções apresentadas/a apresentar. Caso não tenha havido chamado para aquele tipo, o sistema também informará. para(i=0;i0) entao{ escreva("Máquina",i+1,":",deptochm[i][j],"chamados de Help-Desk - Assunto: hardware."); escreva("Problemas resolvidos:",deptochmres[i][j]); escreva("Medidas adotadas para a resolução dos chamados:"); leia(medadot[i][j]); escreva("Problemas pendentes:",pend[i][j]); escreva("Medidas a serem adotadas para a resolução dos chamados:"); leia(medfut[i][j]); }senao{ escreva("Não houve chamadas para resolução de problemas de hardware nesta máquina."); } j=1; se(deptchm[i][j]>0) entao{ escreva("Máquina",i+1,":",deptochm[i][j],"chamados de Help-Desk - Assunto: software."); escreva("Problemas resolvidos:",deptochmres[i][j]); escreva("Medidas adotadas para a resolução dos chamados:"); leia(medadot[i][j]); escreva("Problemas pendentes:",pend[i][j]); escreva("Medidas a serem adotadas para a resolução dos chamados:"); leia(medfut[i][j]); }senao{ escreva("Não houve chamadas - assunto: software - nesta máquina.") } j=2; se(deptchm[i][j]>0) entao{ escreva("Máquina",i+1,":",deptochm[i][j],"chamados de Help-Desk - Assunto: rede."); escreva("Problemas resolvidos:",deptochmres[i][j]); escreva("Medidas adotadas para a resolução dos chamados:"); leia(medadot[i][j]); escreva("Problemas pendentes:",pend[i][j]); escreva("Medidas a serem adotadas para a resolução dos chamados:"); leia(medfut[i][j]); }senao{ escreva("Não houve chamadas - assunto: rede - nesta máquina."); } } //flag do programa. Se o técnico quiser cadastrar mais um relatório, ou se quiser sair diretamente do programa. se(verifd==1 ou vdepto[depto-1]==0) entao{ escreva(escreva(Deseja gerar relatório para mais um departamento?"); escreva("1 - Sim","","2 - Não"); leia(getoutofhere); //Neste ponto, a variável de registro dos relatórios recebe 1 para a posição do departamento em questão. Assim, poderá informar ao usuário quando um relatório já tiver sido cadastrado. vdepto[depto-1]=1; } }enquanto(getoutofhere!=2); parar; //Exibe uma mensagem informado que não houve chamadode help-desk naquela semana, para nenhum tipo de ocorrência, daquele departamento. caso 2: escreva("Nesta semana, não houve chamado de Help-Desk para qualquer departamento."); parar; } //Mensagem de despedida. escreva("Obrigado por usar o Sistema de Gerencialmento de Chamados Help-Desk Supernova Network. Bom dia."); }