Jump to content

Imguvoss

Members
  • Content count

    35
  • Joined

  • Last visited

Community Reputation

0 Comum

5 Followers

About Imguvoss

  • Birthday 05/04/2001

Informações Pessoais

  • Sexo
    Masculino
  1. Imguvoss

    algoritmo de Fatorial

    Vou explicar com base em outro programa que eu fiz a algum tempo: cont, num, mult: Inteiro inicio // Seção de Comandos escreva ("Informe um número e conheça o seu fatorial: ") leia (num) para cont de num ate 2 passo -1 faca se (cont = num) entao mult <- cont * (cont - 1) escreval ("") escreval (cont, " * ", (cont - 1), " = ", mult) fimse se (cont < num) e (cont <> 1) entao mult <- mult * (cont - 1) escreval (mult, " * ", (cont - 1), " = ", mult) fimse fimpara escreval ("") escreval ("O fatorial de ", num, " é: ", mult) fimalgoritmo Assim, temos a seguinte saída: Informe um número e conheça o seu fatorial: 5 5 * 4 = 20 60 * 3 = 60 120 * 2 = 120 120 * 1 = 120 O fatorial de 5 é: 120 Acho que com esse programa você entenderá melhor, se ficar alguma dúvida só falar.
  2. Boa tarde, Minha solução no momento é você fazer uma espécie de pré-venda. Seu cliente solicita o produto, informa o CEP e o endereço para entrega. Você consulta o site do correio para ver o valor que será cobrado pelo frete. Confirma a solicitação do cliente adicionando a taxa do frete. Depois vai no correio e envia. Sua plataforma não proporciona uma caixa e texto adicional para que possa ser digitado o frete e calculado automaticamente? Abs.
  3. Olá pessoal, Estou fazendo um programa de registro de backup e estou tento alguns problemas para gravar os dados na tabela Vou explicar como funciona: 1 - Menu com 4 opções são elas: [1]Cadastrar, [2]Excluir, [3]Registrar e [4]Movimentar. 2 - Quando for digitada a opção [1], são solicitados o código da fita, data do cadastro(sugerindo a data atual) e Meses de validade. Depois isso é gravado no banco de dados. 3 - Quando for digitada a opção [2], são solicitados o código da fita e uma confirmação de exclusão. Depois o campo D_E_L_E_T_ é marcado com "*". 4 - Quando for digitada a opção [3], são solicitados o código da fita, o programa verifica se a fita foi cadastrada se não tiver sido cadastrada é apresentado um alerta se não é solicitado tipo de backup: [1]Semanal ou [2]Mensal, código da sessão, data do backup, localização, data de retorno pro MSL em semanas, data de retorno pro MSL em DD/MM/AAAA e depois uma tela com as próximas movimentações. Depois os dados são gravados na tabela de dados. 5 - Quando for digitada a opção [4], são solicitados o código da fita e o novo local nas opções de novos locais tem: [1]MSL, [2]Mochila, [3]Cofre e [4]Espera. Se for digitado [1](MSL) quer dizer que a fita venceu, então os campos: data da próxima movimentação, data de retorno, data do backup, tipo do backup e código da sessão, são apagados. Se for digitado qualquer uma das outras opções é gravado o novo local na tabela de dados e é encerrado. Agora vamos aos problemas: 1 - Eu não estou conseguindo fazer com que seja excluido os itens da tabela de dados quando for selecionada a opção [1] na movimentação. 2 - Não estou conseguindo também, alterar somente o LOCAL quando digitado a opção 2 na movimentação. 3 - Não estou conseguindo gravar a data de cadastro e os meses de validade da fita na opção 2 de registro(Mesmo que nessa opção não seja solicitado a data de cadastro e os meses de validade). Meu código: User Function MCT016 ************************* Local nTela := 0 Local lExecute := .T. local cReadAux := " " Private cOpcMenu := " " Private cDataCad := " " Private cTipoBack := " " Private cLocal := " " Private cCodSessao := " " Private cDtretorno := " " Private cDtBackup := " " Private cNovoLocal := " " Private cProxMov := " " Private cProxsMov := " " Private cProMov := " " Private nMesVal := 0 Private nSemRet := 0 While lExecute nTela := 1 While nTela <= 1 TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Escolha uma opcao") TerSay(01, 00, "[1]Cadastrar") TerSay(02, 00, "[2]Excluir") TerSay(03, 00, "[3]Registrar") TerSay(04, 00, "[4]Movimentar") TerSay(05, 00, "[ ]") cOpcMenu := " " TerGetRead(05, 01, @cOpcMenu,, {|| cOpcMenu == "1" .Or. cOpcMenu == "2" .Or. cOpcMenu == "3" .Or. cOpcMenu == "4"}) If TerEsc() nTela -- Exit EndIf nTela ++ While nTela <= 2 TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Leia a fita:") cIDFita := Space(8) TerGetRead(01, 00, @cIDFita,, {|| !Empty(cIDFita)}) If TerEsc() nTela-- Exit EndIf TerGetRead(00, 00, @cReadAux,,) If TerEsc() nTela -- Exit EndIf If cOpcMenu == "1" TerCls() TerCBuffer() TerIsQuit() ZBF ->(dbSetOrder(1)) //Altera o indice corrente da tebela If ZBF->(dbSeek(xFilial("ZBF")+cIDFita))//Pesquisa pelo codigo da fita para que depois possa ser feito uma condição VTAlert("Fita ja cadastrada") Loop EndIf TerSay(00, 00, "Data do cadastro:") cDataCad := Space(8) U_TerData(@cDataCad, 01, .T.) If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Meses de validade:") nMesVal := 36 TerGetRead(01, 00, @nMesVal, "@E 99", {|| !Empty(nMesVal) .And. Positivo(nMesVal)}) If TerEsc() nTela -- Exit EndIf TerCls() TerCBuffer() TerIsQuit() RecLock("ZBF", .T.) ZBF->ZBF_FILIAL := xFilial("ZBF") ZBF->ZBF_IDFITA := cIDFita ZBF->ZBF_VALID := nMesVal ZBF->ZBF_DTCAD := StoD(cDataCad) ZBF->ZBF_LOCAL := "1" ZBF->(MsUnLock()) VTAlert("Fita cadastrada", "Cadastrar") ElseIf cOpcMenu == "2" ZBF->(dbSetOrder(1)) If ZBF->(dbSeek(xFilial("ZBF")+cIDFita)) If !Empty(ZBF->ZBF_IDSES) VTAlert("Fita com backup gravado", "Excluir") Loop Else If U_TerYesNo("Excluir fita", "Deseja excluir a fita?", "S") RecLock("ZBF", .F.) ZBF->(dbDelete()) ZBF->(MsUnLock()) VTAlert("Fita excluida!", "Excluir") Else Loop EndIf EndIf Else VTAlert("Fita nao cadastrada", "Excluir") Loop EndIf ElseIf cOpcMenu == "3" ZBF->(dbSetOrder(1)) If ZBF->(dbSeek(xFilial("ZBF")+cIDFita)) TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Tipo de backup") TerSay(01, 00, "[1]Semanal") TerSay(02, 00, "[2]Mensal") TerSay(03, 00, "[ ]") cTipoBack := " " TerGetRead(03, 01, @cTipoBack,, {|| cTipoBack == "1" .Or. cTipoBack == "2"}) If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Codigo da sessao:") cCodSessao := Space(15) TerGetRead(01, 00, @cCodSessao,, {|| !Empty(cCodSessao)}) If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Data do backup:") U_TerData2(@cDtBackup, 01, .T., 2, "Subtracao") If TerEsc() nTela-- Exit EndIf If cTipoBack == "1" TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Localizacao") TerSay(01, 00, "[1]MSL") TerSay(02, 00, "[2]Mochila") TerSay(03, 00, "[3]Cofre") TerSay(04, 00, "[4]Daniel") TerSay(05, 00, "[ ]") cLocal := "2" TerGetRead(05, 01, @cLocal,, {|| cLocal $ "1234"}) If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Data de retorno pro") Tersay(01, 00, "MSL em SEMANAS:") nSemRet := 4 TerGetRead(02, 01, @nSemRet,,{|| !Empty(nSemRet)}) If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() nSemret := nSemRet * 7 TerSay(00, 00, "Data de retorno pro") TerSay(01, 00, "MSL em DD/MM/AAAA:") U_TerData2(@cDtRetorno, 02, .T., nSemRet, "Soma") If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Proxima movimentacao") TerSay(01, 00, "Para a [2]Mochila.") TerSay(02, 00, "Do dia:") U_TerData(@cProxMov, 03, .T.) If TerEsc() nTela-- Exit EndIf TerSay(04, 00, "Ate o dia:") U_TerData2(@cProxsMov, 05, .T., 7, "Soma") If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Dps. para o [3]Cofre") TerSay(01, 00, "Do dia:") U_TerData2(@cProxsMov, 02, .T., 7, "Soma") If TerEsc() nTela-- Exit EndIf TerSay(03, 00, "Ate o dia:") U_TerData2(@cProMov, 04, .T., 21, "Soma") If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() VTAlert("Depois, expira e volta para o [1]MSL", "Movimentacoes") RecLock("ZBF", .T.) ZBF->ZBF_FILIAL := xFilial("ZBF") ZBF->ZBF_IDFITA := cIDFita ZBF->ZBF_LOCAL := cLocal ZBF->ZBF_DTBKP := StoD(cDtBackup) ZBF->ZBF_TIPO := cTipoBack ZBF->ZBF_IDSES := cCodSessao ZBF->ZBF_DTRET := StoD(cDtRetorno) ZBF->ZBF_DTPMOV := StoD(cProxMov) ZBF->ZBF_DTCAD := StoD(cDataCad) ZBF->ZBF_VALID := nMesVal ZBF->(MsUnLock())//Destrava o registro VTAlert("Backup registrado", "Registrar") ElseIf cTipoBack == "2" TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Localizacao") TerSay(01, 00, "[1]MSL") TerSay(02, 00, "[2]Mochila") TerSay(03, 00, "[3]Cofre") TerSay(04, 00, "[4]Daniel") TerSay(05, 00, "[ ]") cLocal := "2" TerGetRead(05, 01, @cLocal,, {|| cLocal $ "1234"}) If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Data de retorno pro") TerSaY(01, 00, "MSL em semanas:") nSemRet := 52 TerGetRead(02, 01, @nSemRet,,{|| !Empty(nSemRet)}) If TerEsc() nTela-- Exit EndIf TeGetRead(00, 00, @cReadAux,,) If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() nSemRet := nSemRet * 7 TerSay(00, 00, "Data de retorno pro") TerSay(01, 00, "MSL em DD/MM/AAAA:") U_TerData2(@cDtRetorno, 02, .T., nSemRet, "Soma") If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Proxima movimentacao") TerSay(01, 00, "Para a [2]Mochila.") TerSay(02, 00, "Do dia:") U_TerData(@cProxMov, 03, .T.) If TerEsc() nTela-- Exit EndIf TerSay(04, 00, "Ate o dia:") U_TerData2(@cProxsMov, 05, .T., 7, "Soma") If TerCls() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Dps. para o [3]Cofre") TerSay(01, 00, "Do dia:") U_TerData2(@cProxsMov, 02, .T., 7, "Soma") If TerEsc() nTela-- Exit EndIf TerSay(03, 00, "Ate o dia:") U_TerData2(@cProMov, 04, .T., 210, "Soma") If TerEsc() nTela-- Exit EndIf TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Dps. para o [4]Daniel") TerSay(01, 00, "Do dia:") U_TerData2(@cProMov, 02, .T., 210, "Soma") If TerCls() nTela-- Exit EndIf TerSay(03, 00, "Ate o dia:") U_TerData2(@cProMov, 04, .T., 360, "Soma") If TerEsc() nTela-- Exit EndIf RecLock("ZBF", .T.) VTAlert("Depois, expira e volta para o [1]MSL", "Movimentacoes") ZBF->ZBF_FILIAL := xFilial("ZBF") ZBF->ZBF_IDFITA := cIDFita ZBF->ZBF_LOCAL := cLocal ZBF->ZBF_DTBKP := StoD(cDtBackup) ZBF->ZBF_TIPO := cTipoBack ZBF->ZBF_IDSES := cCodSessao ZBF->ZBF_DTRET := StoD(cDtRetorno) ZBF->ZBF_DTPMOV := StoD(cProxMov) ZBF->ZBF_DTCAD := StoD(cDataCad) ZBF->ZBF_VALID := nMesVal ZBF->(MsUnLock())//Destrava o registro VTAlert("Backup registrado", "Registrar") EndIf Else VTAlerT("Fita nao cadastrada", "Registro") EndIf ElseIf cOpcMenu == "4" TerCls() TerCBuffer() TerIsQuit() TerSay(00, 00, "Novo local") TerSay(01, 00, "[1]MSL") TerSay(02, 00, "[2]Mochila") TerSay(03, 00, "[3]Cofre") TerSay(04, 00, "[4]Daniel") TerSay(05, 00, "[ ]") cNovoLocal := " " TerGetRead(05, 01, @cNovoLocal,, {|| cNovoLocal $ "1234"}) If TerEsc() nTela-- Exit EndIf If cNovoLocal == "1" ZBF(dbSetOrder(1)) If ZBF->(dbSeek(xFilial("ZBF")+cIDFita)) RecLock("ZBF", .F.) ZBF->(dbDelete()) ZBF->(MsUnLock()) VTAlert("Movimentacao registrada!", "Movimentar") Else VTAlert("Fita nao cadastrada", "Movimentar") Loop EndIf ElseIf cNovoLocal # "1" ZBF->(dbSetOrder(1)) If ZBF->(dbSeek(xFilial("ZBF")+cIDFita)) RecLock("ZBF", .T.) ZBF->ZBF_FILIAL := xFilial("ZBF") ZBF->ZBF_LOCAL := cNovoLocal ZBF->(MsUnLock()) VTAlert("Fita movimentada", "Movimentar") Else VTAlert("Fita nao cadastrada", "Movimentar") Loop EndIf EndIf EndIf nTela-- Exit EndDo EndDo If nTela <= 0 If U_TerYesNo("Sair da rotina", "Deseja sair da rotina?", "S") lExecute := .F. Exit Else Loop //Ao contrário do exit, o Loop cancela as próximas verificações que o laço irá fazer e sobe para a primeira linha no While EndIf EndIf TerCls() TerCBuffer() TerIsQuit() EndDo Return Qualquer dúvida estarei a disposição. Desde já agradeço.
  4. Imguvoss

    criar loja virtual

    Preciso de pessoa com experiencia para fazer uma loja virtual. Interreçados entrar em contato pelo e-mail: contato.extremecraftservidor@hotmail.com
  5. Imguvoss

    Jogo da Velha - Visualg

    Parabéns pelo seu Jogo da velha, para um iniciante ele está mais que excelente com disse meu amigo KhaosDoctor, jogos são uma parte bem complicada da programação, mas não posso deixar de deixar abaixo meu jogo da velha. Você pode usar ele para implementar seu código deixando ele mais funcional. algoritmo "Jogodavelha" var Numerodejogadas : inteiro Jogadavalortemp : inteiro Jogadavalor : inteiro Jogadoratual : inteiro Outrojogador : inteiro Contador : inteiro Jogadasvalidas : inteiro Jogadavalorretorno : inteiro _JogadaInvalida : inteiro Rodada: caractere Alguemganhou, turno : logico PosicaoX, PosicaoO, PontuacaoX, PontuacaoO, PontuacaoEmpate, ContadorColuna, ContadorLinha, Opcao : inteiro Tabuleiro: vetor[1..9] de inteiro Listajogadasvalidas:vetor[1..10] de inteiro JogadorX, JogadorO, Resultado, Ganhador, Crialinha : caractere Posicaovetor:vetor[1..3,1..3] de caractere Listras: vetor[1..8,1..6] de caractere FUNCAO RetornaJogadaMaquina(jogadorEmQuestao : inteiro) : inteiro var valorAtual : inteiro inicio valorAtual <- jogadorEmQuestao jogadaValorRetorno <- 0 se (tabuleiro[7] + tabuleiro[8] + tabuleiro[9]) = (2 * valorAtual) entao se tabuleiro[7] = 0 entao jogadaValorRetorno <- 7 senao se tabuleiro[8] = 0 entao jogadaValorRetorno <- 8 senao jogadaValorRetorno <- 9 fimSe fimSe fimSe se (tabuleiro[4] + tabuleiro[5] + tabuleiro[6]) = (2 * valorAtual) entao se tabuleiro[4] = 0 entao jogadaValorRetorno <- 4 senao se tabuleiro[5] = 0 entao jogadaValorRetorno <- 5 senao jogadaValorRetorno <- 6 fimSe fimSe fimSe se (tabuleiro[1] + tabuleiro[2] + tabuleiro[3]) = (2 * valorAtual) entao se tabuleiro[1] = 0 entao jogadaValorRetorno <- 1 senao se tabuleiro[2] = 0 entao jogadaValorRetorno <- 2 senao jogadaValorRetorno <- 3 fimSe fimSe fimSe se (tabuleiro[7] + tabuleiro[4] + tabuleiro[1]) = (2 * valorAtual) entao se tabuleiro[7] = 0 entao jogadaValorRetorno <- 7 senao se tabuleiro[4] = 0 entao jogadaValorRetorno <- 4 senao jogadaValorRetorno <- 1 fimSe fimSe fimSe se (tabuleiro[8] + tabuleiro[5] + tabuleiro[2]) = (2 * valorAtual) entao se tabuleiro[8] = 0 entao jogadaValorRetorno <- 8 senao se tabuleiro[5] = 0 entao jogadaValorRetorno <- 5 senao jogadaValorRetorno <- 2 fimSe fimSe fimSe se (tabuleiro[9] + tabuleiro[6] + tabuleiro[3]) = (2 * valorAtual) entao se tabuleiro[9] = 0 entao jogadaValorRetorno <- 9 senao se tabuleiro[6] = 0 entao jogadaValorRetorno <- 6 senao jogadaValorRetorno <- 3 fimSe fimSe fimSe se (tabuleiro[7] + tabuleiro[5] + tabuleiro[3]) = (2 * valorAtual) entao se tabuleiro[7] = 0 entao retorne 7 senao se tabuleiro[5] = 0 entao jogadaValorRetorno <- 5 senao jogadaValorRetorno <- 3 fimSe fimSe fimSe se (tabuleiro[9] + tabuleiro[5] + tabuleiro[1]) = (2 * valorAtual) entao se tabuleiro[9] = 0 entao jogadaValorRetorno <- 9 senao se tabuleiro[5] = 0 entao jogadaValorRetorno <- 5 senao jogadaValorRetorno <- 1 fimSe fimSe fimSe se jogadaValorRetorno <> 0 entao retorne jogadaValorRetorno senao retorne _jogadaInvalida fimSe fimfuncao //Decide a melhor jogada para a máquina funcao JogadaDaMaquina() : inteiro inicio jogadaValor <- 0 //Se não existir mais jogadas retorna invalido se numeroDeJogadas = 9 entao jogadaValor <- -1 retorne jogadaValor fimSe //Se ouver alguma jogada que possa te fazer ganhar, jogue! jogadaValorTemp <- RetornaJogadaMaquina(jogadorAtual) se jogadaValorTemp <> _jogadaInvalida entao jogadaValor <- jogadaValorTemp //retorne jogadaValor fimSe //Caso exita alguma jogada que não te faça perder, jogue! outroJogador <- RetornaOutroJogador(jogadorAtual) jogadaValorTemp <- RetornaJogadaMaquina(outroJogador) se (jogadaValorTemp <> _jogadaInvalida) e (jogadaValor = 0) entao jogadaValor <- jogadaValorTemp retorne jogadaValor fimSe //Tenta prevenir a vitoria do adversário (procura montar duas vitorias ao mesmo tempo) se (numeroDeJogadas = 3) e (jogadaValor = 0) entao se ((tabuleiro[1] * tabuleiro[9]) = 1) ou ((tabuleiro[3] * tabuleiro[7]) = 1) e (tabuleiro[5] <> 0) jogadaValor <- 1 retorne jogadaValor fimSe se ((tabuleiro[2] * tabuleiro[9]) = 1) ou ((tabuleiro[1] * tabuleiro[6]) = 1) ou ((tabuleiro[2] * tabuleiro[6]) = 1) e (tabuleiro[5] <> 0) jogadaValor <- 2 retorne jogadaValor fimSe fimSe //Tenta jogar no meio ou nas diagonais, maior chance de vitoria se (numeroDeJogadas <= 2) e (jogadaValor = 0) entao se tabuleiro[5] = 0 entao jogadaValor <- 5 senao se tabuleiro[1] = 0 entao jogadaValor <- 1 senao jogadaValor <- 8 fimSe fimSe senao se jogadaValor = 0 entao jogadaValor <- _jogadaInvalida se tabuleiro[5] = 0 entao jogadaValor <- 5 senao se tabuleiro[7] = 0 entao jogadaValor <- 7 senao se tabuleiro[9] = 0 entao jogadaValor <- 9 senao se tabuleiro[1] = 0 entao jogadaValor <- 1 senao se tabuleiro[3] = 0 entao jogadaValor <- 3 fimSe fimSe fimSe fimSe fimSe se jogadaValor <> _jogadaInvalida entao retorne jogadaValor fimSe fimSe fimSe PupulaListaDeJogadasValidas() jogadasValidas <- ListaJogadasValidas[1] //Se apenas restar uma jogada, jogue a primeira se (jogadasValidas = 1) entao jogadaValor <- ListaJogadasValidas[2] retorne jogadaValor fimSe //Se Nenhuma das regras não forem atendidas, jogue a primeira jogada se jogadaValor <> 0 entao retorne jogadaValor senao jogadasValidas <- ListaJogadasValidas[2] retorne jogadasValidas fimSe fimfuncao //Popula o array "jogadasValdas" com uma lista de jogadas válidas procedimento PupulaListaDeJogadasValidas inicio //limpa variável para contador de 1 ate 10 faca ListaJogadasValidas[contador] <- 0 fimPara //Preenche a variável ListaJogadasValidas[1] <- 0 para contador de 1 ate 9 faca se tabuleiro[contador] = 0 entao ListaJogadasValidas[1] <- ListaJogadasValidas[1] + 1 ListaJogadasValidas[ListaJogadasValidas[1] + 1] <- contador fimSe fimPara fimProcedimento //Retorna o valor do outro jogador funcao RetornaOutroJogador(jogador:inteiro) : inteiro inicio se jogador = -1 entao retorne 1 senao retorne -1 fimSe fimfuncao //Cabeçalho do jogo procedimento Cabecalho inicio escreval("**********************************************************************************") escreval("* JOGO DA VELHA *") escreval("**********************************************************************************") escreval("") escreval("") fimprocedimento //limpa o array do jogo procedimento limparVariaveis inicio posicaoVetor[1,1] <- " " posicaoVetor[1,2] <- " " posicaoVetor[1,3] <- " " posicaoVetor[2,1] <- " " posicaoVetor[2,2] <- " " posicaoVetor[2,3] <- " " posicaoVetor[3,1] <- " " posicaoVetor[3,2] <- " " posicaoVetor[3,3] <- " " para contador de 1 ate 9 faca tabuleiro[contador] <- 0 fimPara fimprocedimento //Exibe o tabuleiro do jogo na tela procedimento ExibirTabuleiro inicio escreval(" ",listras[7,1]," ",listras[4,1]," | ",listras[5,1]," | ",listras[6,1]," ",listras[8,1]," ") escreval(" ",listras[1,1]," ",posicaoVetor[1,1]," ",listras[1,2]," | ",listras[1,3]," ",posicaoVetor[1,2]," ",listras[1,4]," | ",listras[1,5]," ",posicaoVetor[1,3]," ",listras[1,6]," ") escreval(" ",listras[4,2]," ",listras[7,2]," | ",listras[5,2]," | ",listras[8,2]," ",listras[6,2]," ") escreval("--------+---------+-------") escreval(" ",listras[4,3]," | ",listras[7,3]," ",listras[5,3]," ",listras[8,3]," | ",listras[6,3]," ") escreval(" ",listras[2,1]," ",posicaoVetor[2,1]," ",listras[2,2]," | ",listras[2,3]," ",posicaoVetor[2,2]," ",listras[2,4]," | ",listras[2,5]," ",posicaoVetor[2,3]," ",listras[2,6]," ") escreval(" ",listras[4,4]," | ",listras[8,4]," ",listras[5,4]," ",listras[7,4]," | ",listras[6,4]," ") escreval("--------+---------+-------") escreval(" ",listras[4,5]," ",listras[8,5]," | ",listras[5,5]," | ",listras[7,5]," ",listras[6,5]," ") escreval(" ",listras[3,1]," ",posicaoVetor[3,1]," ",listras[3,2]," | ",listras[3,3]," ",posicaoVetor[3,2]," ",listras[3,4]," | ",listras[3,5]," ",posicaoVetor[3,3]," ",listras[3,6]," ") escreval(" ",listras[8,6]," ",listras[4,6]," | ",listras[5,6]," | ",listras[6,6]," ",listras[7,6]," ") escreval("") escreval("") fimprocedimento //Cria uma linha setando a coluna ou linha ganhadora funcao CriaLinhaGanhador(char:caractere;linha:inteiro) : caractere inicio se linha = 0 entao para contadorColuna de 1 ate 8 faca para contadorLinha de 1 ate 6 faca listras[contadorColuna,contadorLinha] <- " " fimPara fimPara senao para contadorLinha de 1 ate 6 faca listras[linha,contadorLinha] <- char fimPara fimSe fimfuncao //Verifica se ouve algum ganhador. procedimento VerificaGanhador inicio se (posicaoVetor[1,1] = "X") e (posicaoVetor[1,2] = "X") e (posicaoVetor[1,3] = "X") entao ganhador <- jogadorX pontuacaoX <- pontuacaoX + 1 criaLinha <- CriaLinhaGanhador("°",1) alguemGanhou <- verdadeiro senao se (posicaoVetor[1,1] = "X") e (posicaoVetor[2,2] = "X") e (posicaoVetor[3,3] = "X") entao ganhador <- jogadorX pontuacaoX <- pontuacaoX + 1 criaLinha <- CriaLinhaGanhador("°",7) alguemGanhou <- verdadeiro senao se (posicaoVetor[1,1] = "X") e (posicaoVetor[2,1] = "X") e (posicaoVetor[3,1] = "X") entao ganhador <- jogadorX pontuacaoX <- pontuacaoX + 1 criaLinha <- CriaLinhaGanhador("°",4) alguemGanhou <- verdadeiro senao se (posicaoVetor[1,2] = "X") e (posicaoVetor[2,2] = "X") e (posicaoVetor[3,2] = "X") entao ganhador <- jogadorX pontuacaoX <- pontuacaoX + 1 criaLinha <- CriaLinhaGanhador("°",5) alguemGanhou <- verdadeiro senao se (posicaoVetor[2,1] = "X") e (posicaoVetor[2,2] = "X") e (posicaoVetor[2,3] = "X") entao ganhador <- jogadorX pontuacaoX <- pontuacaoX + 1 criaLinha <- CriaLinhaGanhador("°",2) alguemGanhou <- verdadeiro senao se (posicaoVetor[3,1] = "X") e (posicaoVetor[3,2] = "X") e (posicaoVetor[3,3] = "X") entao ganhador <- jogadorX pontuacaoX <- pontuacaoX + 1 criaLinha <- CriaLinhaGanhador("°",3) alguemGanhou <- verdadeiro senao se (posicaoVetor[3,1] = "X") e (posicaoVetor[2,2] = "X") e (posicaoVetor[1,3] = "X") entao ganhador <- jogadorX pontuacaoX <- pontuacaoX + 1 criaLinha <- CriaLinhaGanhador("°",8) alguemGanhou <- verdadeiro senao se (posicaoVetor[1,3] = "X") e (posicaoVetor[2,3] = "X") e (posicaoVetor[3,3] = "X") entao ganhador <- jogadorX pontuacaoX <- pontuacaoX + 1 criaLinha <- CriaLinhaGanhador("°",6) alguemGanhou <- verdadeiro senao se (posicaoVetor[1,1] = "O") e (posicaoVetor[1,2] = "O") e (posicaoVetor[1,3] = "O") entao ganhador <- jogadorO pontuacaoO <- pontuacaoO + 1 criaLinha <- CriaLinhaGanhador("°",1) alguemGanhou <- verdadeiro senao se (posicaoVetor[1,1] = "O") e (posicaoVetor[2,2] = "O") e (posicaoVetor[3,3] = "O") entao ganhador <- jogadorO pontuacaoO <- pontuacaoO + 1 criaLinha <- CriaLinhaGanhador("°",7) alguemGanhou <- verdadeiro senao se (posicaoVetor[1,1] = "O") e (posicaoVetor[2,1] = "O") e (posicaoVetor[3,1] = "O") entao ganhador <- jogadorO pontuacaoO <- pontuacaoO + 1 criaLinha <- CriaLinhaGanhador("°",4) alguemGanhou <- verdadeiro senao se (posicaoVetor[1,2] = "O") e (posicaoVetor[2,2] = "O") e (posicaoVetor[3,2] = "O") entao ganhador <- jogadorO pontuacaoO <- pontuacaoO + 1 criaLinha <- CriaLinhaGanhador("°",5) alguemGanhou <- verdadeiro senao se (posicaoVetor[2,1] = "O") e (posicaoVetor[2,2] = "O") e (posicaoVetor[2,3] = "O") entao ganhador <- jogadorO pontuacaoO <- pontuacaoO + 1 criaLinha <- CriaLinhaGanhador("°",2) alguemGanhou <- verdadeiro senao se (posicaoVetor[3,1] = "O") e (posicaoVetor[3,2] = "O") e (posicaoVetor[3,3] = "O") entao ganhador <- jogadorO pontuacaoO <- pontuacaoO + 1 criaLinha <- CriaLinhaGanhador("°",3) alguemGanhou <- verdadeiro senao se (posicaoVetor[3,1] = "O") e (posicaoVetor[2,2] = "O") e (posicaoVetor[1,3] = "O") entao ganhador <- jogadorO pontuacaoO <- pontuacaoO + 1 criaLinha <- CriaLinhaGanhador("°",8) alguemGanhou <- verdadeiro senao se (posicaoVetor[1,3] = "O") e (posicaoVetor[2,3] = "O") e (posicaoVetor[3,3] = "O") entao ganhador <- jogadorO pontuacaoO <- pontuacaoO + 1 criaLinha <- CriaLinhaGanhador("°",6) alguemGanhou <- verdadeiro senao se (posicaoVetor[1,1] <> " ") e (posicaoVetor[1,2] <> " ") e (posicaoVetor[1,3] <> " ") e (posicaoVetor[2,1] <> " ") e (posicaoVetor[2,2] <> " ") e (posicaoVetor[2,3] <> " ")e (posicaoVetor[3,1] <> " ") e (posicaoVetor[3,2] <> " ") e (posicaoVetor[3,3] <> " ") entao ganhador <- "Empate" pontuacaoEmpate <- pontuacaoEmpate + 1 alguemGanhou <- verdadeiro fimSe fimSe fimSe fimSe fimSe fimSe fimSe fimSe fimSe fimSe fimSe fimSe fimSe fimSe fimSe fimSe fimSe fimprocedimento //Apresenta mensagem de Parabens ou empate. procedimento Parabens inicio Cabecalho() ExibirTabuleiro() se ganhador <> "Empate" entao escreval(" PARABENS ",maiusc(ganhador)) escreval(" Você foi o vencedor!!") escreval("") escreval("") escreval("") escreval("Precione ENTER para uma nova rodada: ") leia(rodada) alguemGanhou <- falso limparVariaveis() senao escreval(" OPS!!!!!") escreval(" Deu Velha!") escreval("") escreval("") escreval("") escreval("Precione ENTER para uma nova rodada: ") leia(rodada) alguemGanhou <- falso limparVariaveis() fimSe fimprocedimento //Marca na variável do tabuleiro a letra do jogador funcao MarcarPosicao(posicaoPeca:inteiro;tipoDeCaractere:caractere) : caractere inicio se posicaoPeca > 9 entao retorne "invalido" fimSe escolha posicaoPeca caso 7 se posicaoVetor[1,1] = " " entao posicaoVetor[1,1] <- tipoDeCaractere tabuleiro[7] <- jogadorAtual retorne "ok" senao retorne "ocupado" fimSe caso 8 se posicaoVetor[1,2] = " " entao posicaoVetor[1,2] <- tipoDeCaractere tabuleiro[8] <- jogadorAtual retorne "ok" senao retorne "ocupado" fimSe caso 9 se posicaoVetor[1,3] = " " entao posicaoVetor[1,3] <- tipoDeCaractere tabuleiro[9] <- jogadorAtual retorne "ok" senao retorne "ocupado" fimSe caso 4 se posicaoVetor[2,1] = " " entao posicaoVetor[2,1] <- tipoDeCaractere tabuleiro[4] <- jogadorAtual retorne "ok" senao retorne "ocupado" fimSe caso 5 se posicaoVetor[2,2] = " " entao posicaoVetor[2,2] <- tipoDeCaractere tabuleiro[5] <- jogadorAtual retorne "ok" senao retorne "ocupado" fimSe caso 6 se posicaoVetor[2,3] = " " entao posicaoVetor[2,3] <- tipoDeCaractere tabuleiro[6] <- jogadorAtual retorne "ok" senao retorne "ocupado" fimSe caso 1 se posicaoVetor[3,1] = " " entao posicaoVetor[3,1] <- tipoDeCaractere tabuleiro[1] <- jogadorAtual retorne "ok" senao retorne "ocupado" fimSe caso 2 se posicaoVetor[3,2] = " " entao posicaoVetor[3,2] <- tipoDeCaractere tabuleiro[2] <- jogadorAtual retorne "ok" senao retorne "ocupado" fimSe caso 3 se posicaoVetor[3,3] = " " entao posicaoVetor[3,3] <- tipoDeCaractere tabuleiro[3] <- jogadorAtual retorne "ok" senao retorne "ocupado" fimSe fimescolha fimfuncao //Exibe as pontuações dos jogadores procedimento ExibirPontuacaoJogadores inicio escreval(" Pontuação:") escreval(" ",jogadorX,": ",pontuacaoX) escreval(" ",jogadorO,": ",pontuacaoO) escreval(" Empate: ",pontuacaoEmpate) escreval("") fimprocedimento inicio _jogadaInvalida <- -1 Cabecalho() escreval("Selecione um Jogo:") escreval("") escreval("1 - Um Jogador") escreval("2 - Dois Jogadores") escreval("3 - Sair") escreval("") escreva("Opção desejada: ") leia(opcao) limpatela Cabecalho() //Etapa para obter as informações dos jogadores se opcao = 1 entao escreva("Digite o nome do jogador(X): ") leia(jogadorX) jogadorO <- "Maquina" fimSe se opcao = 2 entao escreva("Digite o nome do primeiro jogador(X): ") leia(jogadorX) escreva("Digite o nome do segundo jogador(O): ") leia(jogadorO) fimSe se opcao = 3 entao fimalgoritmo fimSe //limpa a tela do jogo limpatela limparVariaveis() alguemGanhou <- falso jogadorAtual <- -1 turno <- verdadeiro resultado <- "" pontuacaoO <- 0 pontuacaoX <- 0 criaLinha <- CriaLinhaGanhador(" ",0) //laço para a repetição para o display do jogo enquanto alguemGanhou = falso faca numeroDeJogadas <- numeroDeJogadas + 1 limpatela criaLinha <- CriaLinhaGanhador(" ",0) Cabecalho() ExibirTabuleiro() ExibirPontuacaoJogadores() se (jogadorAtual = -1) entao escreval("Agora é sua vez ",maiusc(jogadorX)) escreva("Digite um número de 1 a 9 de acordo com as casas: ") leia(posicaoX) resultado <- MarcarPosicao(posicaoX,"X") //tabuleiro[posicaoX] <- -1 se resultado = "ocupado" entao escreval("A posição já esta ocupada, escolha outa.") senao jogadorAtual <- 1 fimSe resultado <- "" ganhador <- "" senao se opcao = 1 entao escreval("Agora é sua vez ",maiusc(jogadorO)) //escreva("Digite um número de 1 a 9 de acordo com as casas: ") //leia(posicaoO) posicaoO <- JogadaDaMaquina() resultado <- MarcarPosicao(posicaoO,"O") //tabuleiro[posicaoO] <- 1 senao escreval("Agora é sua vez ",maiusc(jogadorO)) escreva("Digite um número de 1 a 9 de acordo com as casas: ") leia(posicaoO) resultado <- MarcarPosicao(posicaoO,"O") fimSe se resultado = "ocupado" entao escreval("A posição já esta ocupada, escolha outa.") senao jogadorAtual <- -1 fimSe resultado <- "" ganhador <- "" fimSe limpatela VerificaGanhador() se alguemGanhou = verdadeiro entao Parabens() fimSe fimenquanto fimalgoritmo
  6. Imguvoss

    Não estou conseguindo fazer a soma!

    Uma dica: Escreva as variáveis em inglês também, assim você terá um algoritmo melhor de visualização de mais pra frente quando você programar em AdvPl (Por exemplo) vai ver a diferença.
  7. Imguvoss

    Venda de Bilhetes Cinema

    Eu não tenho uma resposta definitiva que possa te ajudar, mas tenho algumas dicas para deixar seu agoritmo mais estável e melhor em questão de visualização e resultados. Primeiro: Ao em vez de usar a função "caso" use a função "se", isso deixará seu algoritmo mais estável. Segundo: Mude a utilização do "repita... até" pela função "enquanto... faça", isso deixará seu agoritmo mais estável. Terceiro: Agrupe as variáveis de mesmo tipo. Exemplo: De: sala_cinema: vetor[1..10, 1..30] de caracter opcao_desejada: inteiro fileira, cadeira: inteiro x,y, bilheteria_inteira, bilheteria_meia: inteiro tipo_entrada:caracter Mudar para: sala_cinema: vetor[1..10, 1..30] de caracter opcao_desejada, fileira, cadeira, x,y, bilheteria_inteira, bilheteria_meia: inteiro tipo_entrada:caracter Isso deixará seu algoritmo com uma melhor visualização. Quarto: Separe seu algoritmo por blocos específicos, você fez em alguns lugares, mas ainda há lugares que podem ser alterados. Espero que você tenha entendido e possa deixar seu algoritmo mais complexo, poste como ficou após você ter feito as alterações acima.
  8. Imguvoss

    Programação para iniciantes

    (Confesso que pulei o item 4, mas hoje, não me faz falta)
  9. Imguvoss

    Programação para iniciantes

    Opa, achei bem interessante seu post já que vi que foi a fim de ajudar pessoas menos experientes ou iniciantes na programação em geral, também gostei das suas indicações e gostaria de adicionar mais algumas coisas. Eu, atualmente, estou programando em AdvPl que é um nível digamos mundial, que como você falou utiliza o inglês como base, por isso que eu começo falando disso. Para chegar a programação em AdvPl, eu não fiz nenhum curso profissionalizante nem em inglês nem em AdvPl, mas mesmo assim temos que seguir uma linha do tempo, um degrau de cada vez, eu aconselho muito o site Duolingo que é graças a ele que eu tenho um nível considerável no inglês. Também aconselho o livro: Aprendendo a programar em portugol. Que visa bastante a programação em VisuAlg que é o início para qualquer um começar a programar. Abaixo vou estar deixando uma "linha do tempo" que vi em um site e achei muito interessante (há mais ou menos 3 anos atrás que eu levo comigo até hoje): 1 - Exercitar muito lógica (Exemplo: escrever todos os passos necessários para realizar um ato do cotidiano como: escovar os dentes, lavar as mãos, trocar um pneu furado, entre outros). 2 - Exercitar muito lógica de programação com programas como: VisuAlg. 3 - Aprender um idioma importante para programação em geral como o inglês (Minha sugestão: Doulingo). 4 - Aprender a programar numa linguagem mais complexa como C ou C++. 5 - Aprender a programar numa linguagem mais complexa e mais avançada em relação ao mercado de trabalho com AdvPl.
  10. Isso seria de uma só pessoa, ou ela não definiu a quantidade de pessoas que serão calculados os novos salários? Metade do algoritmo me faz acreditar que é apenas uma pessoa, mas a outra metade faz acreditar que são 4. Reformule sua pergunta. Destaque os principais pontos. Há algum erro? Quais? Informe o resultado que você quer ter, e o que você está recebendo.
  11. Eu não entendi muito bem o que os blocos de 18 à 26 estão fazendo, mas acredito que estejam calculando o novo salário. Primeiro, se o objetivo daquelas formulas sejam calcular a porcentagem, está sendo feito errado: Você digitou: se (S>1.000) e (S<=2.000) entao S:=S+(S/10) fimse Mas na verdade é diferente. Veja abaixo a formula na matemática e no algoritmo para fazer os cálculos: Matemática: percentual = 5 / 100 (Que resulta em: 0,05) Algorítimo: percentual <- (porcentagem / 100) Agora, uma formula básica de formula para calcular o salário atual: Matemática: percentual do salário = salário atual * porcentagem calculada Algorítimo: percentualsalario <- (salarioatual * percentual) E, para calcular o novo salário já aplicado o aumento: Matemática: salário novo = salário atual + percentagem do salário calculada Algorítimo: salarionovo <- (salarioatual + salariopercentual) Ou seja, se o funcionário tem um salário de 1.000,00 reais, e receberá um aumento de 20%, logo 20% de 1.000,00 reais é 200,00 reais, então será aumentado 200,00 reais, e o novo salário será de 1.200,00 reais. Então, você terá que tirar os blocos de código que estão "calculando o salário" e aplicar essas formulas. Veja abaixo a resolução correta do bloco de 18 à 20. Antes: se (S<=1.000) entao S:=S+(S*2/10) fimse Depois: Se s <= 1.000 entao sn <- s*20/100 sn <- ns+s Observações: A variável "sn" deve ser criada (ou com outra denominação) para que possa armazenar a quantidade que deverá ser somada ao salário. Eu continuei mantendo a variável "s" como a que carrega o salário "velho". O 20 que está sendo dividido por 100, corresponde a quantidade em porcentagem que será adicionado, como consta na formula. É isso aí, agora basta você aplicar em tudo como eu já havia dito anteriormente e alterar as informações dependendo do valor do salário. Espero ter ajudado, preparei uma reposta bem elaborada para que você consiga entender. Abraços e bons estudos.
  12. Imguvoss

    BubleSort código

    Sim, caso você retirasse a parte em vermelho tornaria ele instável, ou também substituindo em vez de "-", um "+", isso também faria o processo de instabilidade. Abraços e bons estudos.
  13. Você poderia nós informar qual a linguagem que você está necessitando da ajuda? Abraços.
  14. Olá, pelo o que eu vi você usou alguns comandos que todo programador usaria como: Procedimento; Para... Faça; Se... Então; E se ao em vez de usar esses você usar uma função que capta todos as informações, faz os cálculos e retorna as informações necessárias, isso ajudaria a diminuir o código e posteriormente você ter um melhor sucesso em seu algoritmo. Outra dica é, para fazer a contagem de acessos, você poderia fazer um menu, onde cada vez que a pessoa seleciona tipo "começar" uma variável recebe 1 indicando que teve um acesso, espero ter ajudado você a concluir seu algoritmo. Abraços.
  15. Ali antes do "Fimalgoritmo" eu fechei 2 "SE" que estavam abertos.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.