Ir ao conteúdo
  • Cadastre-se

Simon Viegas

Membro VIP
  • Posts

    3.944
  • Cadastrado em

Tudo que Simon Viegas postou

  1. @luquinhas44, poste o enunciado completo da questão.
  2. A proposta para resolver qualquer problema é primeiro tentar entendê-lo. Basicamente ele quer coletar alguns dados relacionados a notas e quer uma espécie de relatório... Partindo para implementação, cria um esboço inicial: algoritmo "Aprovados num vestibular" //Após uma prova de vestibular, uma escola quer identificar [1] quantos dos //seus alunos foram aprovados em cada turma de formandos. Ela quer saber [2] //qual aluno teve a maior nota e de [3] qual turma ele é. Nessa escola, há //quatro turmas (A, B, C e D) com vinte e cinco alunos cada. //Elabore um algoritmo que solicite o nome e a nota do vestibular aos alunos. //Depois, informe quantos deles foram aprovados, de que turma são, qual a maior //nota em cada turma e qual aluno teve a maior nota de todas. //Para que o aluno seja aprovado no vestibular, ele deverá obter nota maior ou //igual a 7. //ATENÇÃO: As notas por turma não podem se repetir. var inicio fimAlgoritmo Observe que é pura interpretação de texto... Uma dica interessante é abstrair o problema geral em problemas menores.. Por exemplo, de vez de tentar fazer tudo de uma vez, que tal fazer algo mais simples, como por exemplo encontrar a maior nota de apenas uma turma? Algo como: algoritmo "Aprovados num vestibular" //Após uma prova de vestibular, uma escola quer identificar [1] quantos dos //seus alunos foram aprovados em cada turma de formandos. Ela quer saber [2] //qual aluno teve a maior nota e de [3] qual turma ele é. Nessa escola, há //quatro turmas (A, B, C e D) com vinte e cinco alunos cada. //Elabore um algoritmo que solicite o nome e a nota do vestibular aos alunos. //Depois, informe quantos deles foram aprovados, de que turma são, qual a maior //nota em cada turma e qual aluno teve a maior nota de todas. //Para que o aluno seja aprovado no vestibular, ele deverá obter nota maior ou //igual a 7. //ATENÇÃO: As notas por turma não podem se repetir. var nota : real maiorNota : real i : inteiro inicio maiorNota <- 0 para i de 1 ate 5 faca escreva ("Nota: ") leia(nota) se (nota > maiorNota) entao maiorNota <- nota fimSe fimPara escrevaL("Maior nota: ", maiorNota:1:2) fimAlgoritmo Para facilitar a tua vida, coloque para gerar números aleatórios (é uma perda de tempo absurda ficar digitando a cada testes). Algo como: para i de 1 ate 5 faca escreva ("Nota: ") ALEATORIO 3,10 leia(nota) ALEATORIO OFF se (nota > maiorNota) entao maiorNota <- nota fimSe fimPara Simplesmente o VisualG vai "digitar" números aleatórios para os leia que estiverem entre os comando ALEATORIO... bem autoexplicativo. Daí dá até para ir testando com 25 mesmo, só mudar o parâmetro do laço de repetição. Pronto... agora implemente outra coisa, por exemplo, coloque para ler nomes (nome) e use outra variável para armazenar o nome da aluno com a maior nota (nomeMaiorNota). Exibia também o nome junto com a maior nota. Poste o código aqui. Se tiver dúvidas, é só postar. Se terminar, tente implementar outra coisa, exemplo: contar quantos foram aprovados. Crie uma variável para servir de contador (qtdAprovados) e uma estrutura de seleção (se) para verificar se foi aprovado ou não (ir atualizando a variável). Exiba também a quantidade de aprovador na tela... por aí vai.
  3. @luquinhas44, a variável de peso ideal poderia ser uma só. Em relação: Basicamente você estaria confundido "não está calculando" com "não está exibindo o valor"... Se for isso, então seria basicamente exibir o resultado mesmo... O programa pode está calculando, mas não estaria fazendo nada depois.. você precisaria exibir o resultado na tela.
  4. @JuuzoO_O, tente assim: onChanged: (String? val) { onChange(val); }, Se for isso, não sei exatamente o porquê, mas talvez seja que o valor da mudança tem que ser nullable.. daí, a variável precisa comportar esses possíveis estados. Adendo: não seria em relação a ser uma string vazia, mas sim de está null mesmo. Nesse sentido, seria como se a assinatura tivesse assim: Widget customDropDown(List<String> items, String value, void onChange(String? val)) { ... PS: descobri aqui. É dos requisitos do Widget. A class DropdownButton exige que assinatura seja assim. PS2: observe que a definição já resume tudo.. inclusive dizendo que o própria função pode ser null..., mas como é requerido, obrigatoriamente precisa setar. (Que é null OU que vai ser uma função que recebe um string?).
  5. Se servir de ajuda/inspiração, tentei fazer o primeiro: algoritmo "Exercício 15" //Faça um programa que carregue uma matriz 5 x 5 e crie dois vetores de cinco //posições cada um, que contenham, respectivamente, as somas das linhas e //das colunas da matriz. Escreva a matriz e os vetores criados. var matrizNumeros : vetor[1..5, 1..5] de inteiro matrizSomasLinhas : vetor[1..5] de inteiro matrizSomasColunas : vetor[1..5] de inteiro i, j : inteiro soma : inteiro inicio para i de 1 ate 5 faca para j de 1 ate 5 faca ALEATORIO 1,9 leia(matrizNumeros[i,j]) ALEATORIO OFF fimPara fimPara escrevaL("Matriz de número") para i de 1 ate 5 faca para j de 1 ate 5 faca escreva (matrizNumeros[i,j]) fimPara escrevaL() fimPara para i de 1 ate 5 faca soma <- 0 para j de 1 ate 5 faca soma <- soma + matrizNumeros[i,j] fimPara matrizSomasLinhas[i] <- soma fimPara para j de 1 ate 5 faca soma <- 0 para i de 1 ate 5 faca soma <- soma + matrizNumeros[i,j] fimPara matrizSomasColunas[j] <- soma fimPara escreva ("Soma das linhas :") para i de 1 ate 5 faca escreva (matrizSomasLinhas[i]) fimPara escrevaL() escreva ("Soma das colunas:") para i de 1 ate 5 faca escreva (matrizSomasColunas[i]) fimPara fimAlgoritmo Daí, minha sugestão seria analisar o código e recriar um do zero com a sua própria interpretação... Se identificar algo errado ou queira melhor, vai fazendo... apenas simplesmente NÃO COPIE o código!!! Vá lendo trecho por trecho e reescrevendo na mão... Posteriormente parte para um outro exercício. Se tiver alguma dúvida, é só postar.
  6. @Raphael De Oliveira Carvalho, comece do básico. Sugiro fazer algo como: "Faça um problema que leia 10 números num vetor e exiba eles".
  7. Aí por enquanto é com você... Primeiro entenda melhor como funciona os laços de repetições aninhados. Faça diversos testes. Vá alterando os parâmetros... veja os resultados. Vá quebrando a cabeça mesmo.. Uma hora, será capaz de não achar uma solução e acabar copiado um pronto... normal!!! Mas, ao ficar tentado, e depois se deparar com uma solução pronta, vai entender melhor o que a outra pessoa pode ter pensado na hora de criar o algoritmo. Acredite: a grande maioria das coisas que implementamos são apenas replicações de coisas que viu anteriormente em outro lugar... mas o detalhe é que ao mesmo tempo também será capaz de "mesclar" coisas, saca? Repito: vá tentado aí. Tente imprimir de formas diferentes. Vá testando.
  8. @Edinei Almeida, basicamente a ordem de atualização é feita da dentro para fora. A medida que o fluxo entra em alguma coisa (laço de repetição, estrutura de seleção, função... qualquer coisa), vai ter que esperar terminar aqui que entrou por último, daí volta para o que entrou anteriormente, daí volta para o anterior e assim vai... se no caminho, entrou em algum coisa nova, vai ter que terminar essa coisa nova.. por aí vai.. Exemplo: laço1 { laço2 { } laço3 { } } Então, o programa rodando "entrou" no laço1... seu índice está inicial. Aí, eventualmente entrou em alguma outra coisa, que é o laço2, logo, o laço2 tem que terminar para continuar... O laço 1 fica parado esperando o 2 terminar, e o 3 nem começou ainda, apenas está aguardando o 2. Ao 2 terminar, entra no 3. Que vai terminar e voltar para 1. Que vai entrar no 2 novamente, que vai terminar e entrar no 3...... Até o que tiver que terminar, terminar.
  9. @washington09chaves, poste o que conseguiu fazer e em qual parte está com dúvidas.
  10. @Bert09, seu código já está bom e organizado. A dica que dou é que vá começando do simples e vá implementando as funcionalidade aos poucos. Algumas dicas: nada de usar timer() na fase de desenvolvimento. Para que raios você precisa ficar perdendo esses tempos? a consulta (ou listagem) de cadastros é uma das partes mais importantes, pois após cadastrar dados, você meio que precisa de alguma base para ver se está cadastrando corretamente. Vamos direto ao ponto: Simplificada no código: algoritmo "Cadastro Ex" var opcao, opcao2 : inteiro nome, endereco, cpf : caractere telefone, data_nascimento : caractere inicio escrevaL(" =- HOSPITAL ALGUMA COISA AI =- ") //timer(1000) repita limpaTela() //timer(500) escrevaL("-----Cadastro Dos Pacientes-----") escrevaL("1 - Adicionar") escrevaL("2 - Alterar") escrevaL("3 - Consultar") escrevaL("4 - Excluir") escrevaL("5 - Sair") //timer(0) leia(opcao) escolha opcao caso 1 limpaTela() escreva ("Nome: ") leia(nome) //escreva ("Endereço:") //leia(endereco) escreva ("CPF: ") leia(cpf) //escreva ("Telefone:") //leia(telefone) //escreva ("Data Nascimento:") //leia(data_nascimento) caso 2 //Em breve caso 3 escrevaL("-----Consultar Dados Dos Pacientes-----") escrevaL("Consultar Nome - pressione 1") //escrevaL("Consultar Endereço - pressione 2") //escrevaL("Consultar CPF - pressione 3") //escrevaL("Consultar Telefone - pressione 4") //escrevaL("Consultar Data de Nascimento - pressione 5") leia(opcao2) caso 4 //Em breve caso 5 escreva ("Cadrastro Fechado! TENHA UMA BOA NOITE!") outrocaso escrevaL("opção Invalida! Digite Novamente") fimEscolha ate (opcao = 5) fimAlgoritmo Esse código acima só está cadastrando o nome e CPF. Fazer algo simples primeiro. Daí, implementado uma consulta bem simples... só para fazer rodar mesmo: algoritmo "Cadastro Ex" var opcao, opcao2 : inteiro nome, endereco, cpf : caractere telefone, data_nascimento : caractere nomePesquisa : caractere pause : caractere inicio escrevaL(" =- HOSPITAL ALGUMA COISA AI =- ") //timer(1000) repita limpaTela() //timer(500) escrevaL("-----Cadastro Dos Pacientes-----") escrevaL("1 - Adicionar") escrevaL("2 - Alterar") escrevaL("3 - Consultar") escrevaL("4 - Excluir") escrevaL("5 - Sair") //timer(0) leia(opcao) escolha opcao caso 1 limpaTela() escreva ("Nome: ") leia(nome) //escreva ("Endereço:") //leia(endereco) escreva ("CPF: ") leia(cpf) //escreva ("Telefone:") //leia(telefone) //escreva ("Data Nascimento:") //leia(data_nascimento) caso 2 //Em breve caso 3 escrevaL("-----Consultar Dados Dos Pacientes-----") escrevaL("Consultar Nome - pressione 1") //escrevaL("Consultar Endereço - pressione 2") //escrevaL("Consultar CPF - pressione 3") //escrevaL("Consultar Telefone - pressione 4") //escrevaL("Consultar Data de Nascimento - pressione 5") leia(opcao2) escolha opcao2 caso 1 escrevaL("-----CONSULTA POR NOME-----") escreva ("Nome : ") leia(nomePesquisa) se (nomePesquisa = nome) entao escrevaL("Cadastro encontrado") escrevaL("Nome : ", nome) escrevaL("CPF : ", cpf) senao escrevaL("Cadastro não encontrado") fimSe escrevaL() escreva ("Pressione ENTER para continuar") leia(pause) caso 2 //Em breve caso 3 //Em breve caso 4 //Em breve caso 5 //Em breve fimEscolha caso 4 //Em breve caso 5 escreva ("Cadrastro Fechado! TENHA UMA BOA NOITE!") outrocaso escrevaL("opção Invalida! Digite Novamente") fimEscolha ate (opcao = 5) fimAlgoritmo Observe NÃO precisa ficar cadastrando dados próximos do real... vai testando com dados simples... AGORA VAMOS TRANSFORMAR DE VARIÁVEIS SIMPLES PARA VETORES. Não vou explicar muito, mas basicamente o que foi implementado abaixo é baseado em algo "genérico", ou seja, a lógica meio que se repete e apenas é readaptado o código para o contexto. algoritmo "Cadastro Ex" const MAX = 3 var opcao, opcao2 : inteiro nomes, enderecos, cpfs : vetor[1..MAX] de caractere telefones, datasNascimentos : vetor[1..MAX] de caractere indice, i : inteiro nomePesquisa : caractere achou : logico pause : caractere inicio indice <- 0 escrevaL(" =- HOSPITAL ALGUMA COISA AI =- ") //timer(1000) repita limpaTela() //timer(500) escrevaL("-----Cadastro Dos Pacientes-----") escrevaL("1 - Adicionar") escrevaL("2 - Alterar") escrevaL("3 - Consultar") escrevaL("4 - Excluir") escrevaL("5 - Sair") //timer(0) leia(opcao) escolha opcao caso 1 indice <- indice+1 limpaTela() escreva ("Nome: ") leia(nomes[indice]) //escreva ("Endereço:") //leia(endereco) escreva ("CPF: ") leia(cpfs[indice]) //escreva ("Telefone:") //leia(telefone) //escreva ("Data Nascimento:") //leia(data_nascimento) caso 2 //Em breve caso 3 escrevaL("-----Consultar Dados Dos Pacientes-----") escrevaL("Consultar Nome - pressione 1") //escrevaL("Consultar Endereço - pressione 2") //escrevaL("Consultar CPF - pressione 3") //escrevaL("Consultar Telefone - pressione 4") //escrevaL("Consultar Data de Nascimento - pressione 5") leia(opcao2) escolha opcao2 caso 1 escrevaL("-----CONSULTA POR NOME-----") escreva ("Nome : ") leia(nomePesquisa) achou <- FALSO para i de 1 ate MAX faca se (nomePesquisa = nomes[i]) entao achou <- VERDADEIRO escrevaL("Cadastro encontrado") escrevaL("Nome : ", nomes[i]) escrevaL("CPF : ", cpfs[i]) fimSe fimPara se (não achou) entao escrevaL("Cadastro não encontrado") fimSe escrevaL() escreva ("Pressione ENTER para continuar") leia(pause) caso 2 //Em breve caso 3 //Em breve caso 4 //Em breve caso 5 //Em breve fimEscolha caso 4 //Em breve caso 5 escreva ("Cadrastro Fechado! TENHA UMA BOA NOITE!") outrocaso escrevaL("opção Invalida! Digite Novamente") fimEscolha ate (opcao = 5) fimAlgoritmo RESUMO Basicamente, para uso de vetores, precisaia das variáveis (os vetores) e "controladores das posições do vetor"... que no caso acima chamei um de indice para controlar a "quantidade de cadastros" e o i para "varrer o vetor". (Obs.: utiliza i é meio que um padrão.. mas não importa o nome utilizado, apenas usar o bom senso.) Daí, poderia ir se baseando no código acima e ir ajustando e melhorando aos poucos... Qual dúvida é só postar.
  11. Até onde lembro, o VisualG não diferencia minúsculo de maiúsculo, ou seja, não precisa desse maiusc(). E a dica geral continua: Tem a 3.7.x.x, mas tem alguns bugs estranhos. A melhor versão é a 3.6.
  12. @Lauro Viana, ao postar o código, antes clique no botão code: Vai abrir um caixa, aí você cola o código dentro. E mude o tipo para C, C++..... Sobre o erro: A origem é a mesma: o VisualG não está encontrando o var das variáveis globais. Pronto... então, como o erro está dando na linha 62, seria algo acima desse ponto ou na própria linha. (Quase sempre é isso.) E olha só: Tem 2 var dentro do procedimento. Esse é o problema? NÃO, isso não é um erro de sintaxe, mas seria melhor deixar com um var mesmo. Ajuste isso! Agora veja onde está o problema: Tá, isso é o "inicio" de quê? Tá perdido aí no código, percebe?... Daí, o VisualG está entendendo que é o início do programa principal... (já que estaria associado ao algoritmo lá de cima). E como já disse, não tem o var das variáveis globais (pois eventualmente está mais baixo). Resumindo: esse trecho da linha 62 em diante (até a linha 82) está fora do lugar... ou incompleta. Não era para ter um inicio ali. ADENDO: Agora que vi. Você declarou o j duas vezes. Aí não poderia. Simplesmente apague o segundo var. >>> Sobre: Você corrigir o código atual é um bom exercício para treinar. Mas a ideia é que "o erro que está enfrentando deva ser apenas no que está mexendo no momento"... ou seja, precisa ter uma noção de que o que já foi feito está certo. (Sem erro de sintaxe, no mínimo... e evitando ao máximo erro de lógica.) Exemplo de base inicial: algoritmo "Pedidos de Lanchonete" const MAX = 10 tipo rCadPedido = registro nome : caractere pedido : caractere fimRegistro var vPedido :vetor [1..MAX] de rCadPedido opcao : caractere pause : caractere inicio repita limpaTela() escrevaL("#########################") escrevaL("*******LANCHONETE********") escrevaL("# 1 - INCLUIR PEDIDO #") escrevaL("# 2 – ATENDER PEDIDO #") escrevaL("# 3 – LISTAR PEDIDO #") escrevaL("# 4 – PESQUISAR PEDIDO #") escrevaL("# 0 - ENCERRAR #") escrevaL("#########################") escrevaL("") escreva ("Informe a opção desejada: ") leia (opcao) escolha opcao caso "0" escrevaL("") escrevaL("Finalizando...") escrevaL("") caso "1" //pfim := fIncluir(pfim) escreval("**************************") escrevaL("Aperte ENTER para voltar") escreval("**************************") leia(pause) caso "2" //pAtender(pfim) escreval("**************************") escrevaL("Aperte ENTER para voltar") escreval("**************************") leia(pause) caso "3" //pListar(pfim) escreval("**************************") escrevaL("Aperte ENTER para voltar") escreval("**************************") leia(pause) caso "4" //pBuscar(pfim) escreval("**************************") escrevaL("Aperte ENTER para voltar") escreval("**************************") leia(pause) leia(pause) outroCaso escrevaL("") escrevaL("Opção inválida!!!") escrevaL("") escreval("**************************") escrevaL("Aperte ENTER para voltar") escreval("**************************") leia(pause) fimescolha ate (opcao = "0") fimAlgoritmo Entenda que para deixar assim, seriam feitos vários testes rápidos... daí já percebo que daria para tirar essa repetição do "pause". Exemplo: algoritmo "Pedidos de Lanchonete" const MAX = 10 tipo rCadPedido = registro nome : caractere pedido : caractere fimRegistro var vPedido :vetor [1..MAX] de rCadPedido opcao : caractere pause : caractere inicio repita limpaTela() escrevaL("#########################") escrevaL("*******LANCHONETE********") escrevaL("# 1 - INCLUIR PEDIDO #") escrevaL("# 2 – ATENDER PEDIDO #") escrevaL("# 3 – LISTAR PEDIDO #") escrevaL("# 4 – PESQUISAR PEDIDO #") escrevaL("# 0 - ENCERRAR #") escrevaL("#########################") escrevaL("") escreva ("Informe a opção desejada: ") leia (opcao) escolha opcao caso "0" escrevaL("") escrevaL("Finalizando...") escrevaL("") caso "1" //pfim := fIncluir(pfim) caso "2" //pAtender(pfim) caso "3" //pListar(pfim) caso "4" //pBuscar(pfim) outroCaso escrevaL("") escrevaL("Opção inválida!!!") escrevaL("") fimescolha se (opcao <> "0") entao escreval("**************************") escrevaL("Aperte ENTER para voltar") escreval("**************************") leia(pause) fimSe ate (opcao = "0") fimAlgoritmo Veja que, nos testes, caso já não tenha imaginado, veria que continuaria aparecendo a mensagem de "voltar" mesmo pressionando "0". O que não faz sentido... daí lancei um se. Não necessariamente ficou melhor... aí vai reanalisando. Poderia deixar como procedimento. Exemplo: procedimento pause() var aux : caractere inicio escreval("**************************") escrevaL("Aperte ENTER para voltar") escreval("**************************") leia(aux) fimProcedimento Como que usando o procedimento fica mais reduzido.. poderia deixar os "pauses" em cada caso mesmo.. sei lá. Vai testando e vendo o que fica bom ou não... mas sempre o código deve ficar rodável. Vai sempre testando... e como sempre foi testando antes, a tendência que menos erros ocorram quando inserir uma coisa nova... mas o erro tende a ser apenas onde inserir o novo... Tipo, eu deixe o nome do procedimento como pause. Daí "esqueci de inventar outro nome para variável" que vai ficar aguardando o enter... ao testar, já deu erro lá, já que não existia mais a variável pause. (Agora essa nomenclatura está só como nome de procedimento. Por aí vai. Agora implementaria uma dos itens do menu... eu começara pelo pListar(). Pois ao começar implementar o fIncluir(), eu já usaria o listar para ver se cadastrou certo ou não...
  13. Um dos erros no código que você postou é que você declarou procedimento pbuscar duas vezes. Você precisa corrigir isso.. se corrigiu, não tem como o código está igual... Posta o código corrigido. Que daí reanaliso e aponto o próximo problema. Mas adianto que basicamente o VisualG não está encontrando as variáveis globais... ou seja, como existe um TIPO declarado, necessariamente precisa ter o VAR também. (É bug/característica que acabei de descobrir.) Adendo: a cadeia de estrutura deve está correta... não adiantar ter um "var lá em abaixo", sendo que tem coisa "quebrada" antes.
  14. Poste seu código atual e o print do erro.
  15. Você declarou o procedimento pbuscar duas vezes. E tem várias estrutura montadas. Uma sugestão seria refazer o programa aos poucos e ir testando cada parte... Basicamente só deve aparecer erros em uma parte do programa: que no caso é justamente a que está tentando fazer. Ficou parecendo que você tentou fazer um monte de coisa ao mesmo tempo e depois tentou testar... não dá certo.
  16. Adendo: Seguindo uma melhor semântica, ali talvez seja "valor_reajustado". Pois o "valor do reajuste" seria parte da ação, não o resultado.
  17. @Eduardo Serra, assim como no outro, poste o que já conseguiu fazer...
  18. @Eduardo Serra, poste o que conseguiu fazer e em qual parte está com dúvidas... ou para revisar se estaria num caminho correto.
  19. @dolkew, poste o enunciado completo da questão. O algoritmo vai depender daquilo que foi pedido. Mas segue alguns pontos: utilize nomenclaturas de variáveis sugestivas; vá fazendo do básico para o mais complexo ou chato, por exemplo, nada de ficar perguntando usuário e senha já que o foco são as cartelas. Exercite a abstração e foque no que é para focar; (Depois insere esses detalhes.) os números da Mega-Sena vão de 1 a 60, e não de 0 a 98; (A não ser que tenha algo no enunciado.) quando um número está repetido, é preciso refazer toda a verificação.; a repetição número é por a cartela. Segue um exemplo de base de código: algoritmo "Exercício 7" const QTD_CARTELAS = 10 var cartelas: vetor[1..QTD_CARTELAS, 1..6] de inteiro i, j, c : inteiro numeroSorteado : inteiro unico : logico inicio escreval("Seja bem vindo a loteria do João") escreval("") para i de 1 ate QTD_CARTELAS faca para j de 1 ate 6 faca unico <- FALSO enquanto não unico faca numeroSorteado <- RandI(60)+1 unico <- VERDADEIRO para c de 1 ate 6 faca se cartelas[i,c] = numeroSorteado entao unico <- FALSO fimSe fimPara fimEnquanto cartelas[i,j] <- numeroSorteado fimPara fimPara para i de 1 ate QTD_CARTELAS faca para j de 1 ate 6 faca escreva (cartelas[i,j]:3) fimPara escreval("") fimPara fimAlgoritmo Observe que um código deve NÃO precisar de comentários. Os comentários ali do @devair1010 seria apenas para reforçar mesmo... mas não precisa ficar lá. Quando entender os código dados, não copie!!! Entenda o que foi feito e redigite no seu código. Aí vai readaptando também. Sobre o uso de usuário e senha, o restante do código precisa ficar "protegido", ou seja, por exemplo ficando dentro lá do "senha correta"... Perceba que não faz muito sentido pergunta o usuário e senha e depois o programa seguir normalmente.. não fazendo qqr diferença se acertou ou não.. (Vide item 2 supracitado.) Adendo: ficou estranho usar c ali na verificação dos repetidos... talvez ficasse melhor com d (de "dezenas"), ou seja, o primeiro parâmetro é da cartela e o segundo da dezena dessa cartela. Adendo 2: ah! outro item: Mega-Sena tem por padrão 6 dezenas, mais pode ter mais. (E não 5 como você fez.)
  20. Só tem 2 "pontos". Você colocou 3. Usando: seria: Vpedido :vetor [1..max] de rCadPedido
  21. @Lauro Viana, poste o que conseguiu fazer e em qual parte está com dúvidas.
  22. @CaioSan, faltou declarar o vetor lá nas variáveis. Algo como: clientes : vetor[1..3] de cadastroCliente Declarou: Aí o VisualG apresenta problemas! Observe que o tipo é apenas "um registro", não um "vetor de registro", logo, lá no se onde deu erro não poderia ter os []. Adendo: no VisualG não dá para definir um tipo "vetor de registros". Infelizmente. (No Pascal, pai do VisualG dá.)
  23. Só complementando: Seria algo assim: a divisão x/0 é indefinida ou impossível entre os números e a divisão 0/0 é indeterminada Para qualquer número real para x, diferente de zero, será indefinido, ou seja, "impossível". Já para 0/0 é "indeterminado", ou seja, pode ser qualquer valor, logo não dá para determinar. O VisualG (e computadores no geral) não sabem o que fazer quando precisa dividir por zero, daí dá pau. Fazendo isso: Protegerá a divisão. Só executando com quando não tiver zero no denominador.
  24. @bibalinda, poste o enunciado completo da questão.
  25. @Ronald011208, algumas sugestões: 1. NOMENCLATURAS DE VARIÁVEIS Utilize nomenclatura de variáveis mais sugestivas. Ex: Em vez de: Utilizar algo como: var qtdApartamentos : inteiro qtdLitrosApartamento : inteiro qtdMedicoesPorApartamento : inteiro i : inteiro Etc. 2. RELAÇÃO ENTRE SAÍDA E ENTRADA DE DADOS Não existe relação técnica (sintaxe) entre a exibição de valores na tela com a leitura de valores do teclado, ou seja, você não precisa (não deve) colocar a variável que vai ser lida lá no escreval(). Ex.: Em vez de: Seria algo como: escreva ("Qual é a quantidade de apartamentos ? ") leia(y) Perceba que esse "texto" acima só está apenas para "interagir com o usuário", mas ele não tem nenhuma relação técnica com a leitura abaixo. Poderia só ler a variável. "Mas como o usuário saberia o que digitar?". Exatamente. Você está COMBINANDO comandos DISTINTOS para 3. COERENCIA COM O ENUNCIADO Resumidamente é precisa fazer aquilo que foi pedido. Por exemplo, se um cliente pede um cachorro-quente com apenas salsicha e pão, um garçom não pode entregar um hambúrguer com batata fritas. Como assim? É isso: se pediu xpto, entregue xpto. Nada mais, nada menos... (Obs.: claro que existe uma flexibilidade de interpretação, mas basicamente é se restringir a fazer aquilo que foi solicitado.) 4. SOBRE ESCOPO DO PROBLEMA E USO DE ABSTRAÇÃO Sobre o escopo, é relacionado ao item [3]. Basicamente é preciso entender o problema. É fundamental entender aquilo que foi pedido. Daí seria precisa exercitar a abstração... tentar entender quais são as partes do todo. Por exemplo. Veja que são "N" leituras para cada apartamento, e não apenas uma como inicialmente você postou. Como poderíamos abstrair essa etapa? Primeiro poderia só fazer uma leitura por apartamento mesmo... Para testar o código... após, inserir para ler "N" leituras para cada apartamento:, ou seja, dessa forma, faz algo "mais simples" antes, para depois "evoluir para um mais complexo". Não precisa tentar correr antes de aprender a andar.. Algo como: algoritmo "Controle de gastos com água em Condomínios" var qtdApartamentos : inteiro qtdLitrosApartamento : inteiro i : inteiro continuar : caractere inicio escreva ("Qual é a quantidade de apartamentos?") leia(qtdApartamentos) para i de 1 ate qtdApartamentos faca escreval("O apartamento: ", i:1) escreval("Consumiu quantos litros?") ALEATORIO ON leia(qtdLitrosApartamento) ALEATORIO OFF escreval("") fimPara fimAlgoritmo Depois, faz ler N consumos por apartamento. Ex.: Fica encontrar o maior consumo: Tá, mas esse valor mais alto é por apartamento ou por leitura? Se for por leitura, pega a maior leitura. Se for por apartamento, pega a maior soma de leitura por apartamento. Sugiro tentar a primeira opção antes... Mais como pego o maior valor? (Que é o foco dá dúvida, rs) É simples... tem milhares de exemplos na internet... vai lá e "copia um". Entenda a lógica! É trivial.. basta ter contato... Sugiro o seguinte: faça um novo programa apenas para aprender e testar pegar o maior valor. Ex.: "Faça um programa que leia 10 números inteiros e informa qual foi o maior valor lido" Faça o exercício acima e posta o código aqui. Após, você insere a lógica no teu algoritmo. "NÃO TENTE PEGAR O MENOR DIRETO NO TEU ALGORITMO. FAÇA UM PROGRAMA SEPARADO ANTES." RESUMO - Ajuste teu código para fazer N leituras por apartamento; - Estude como pegar o maior valor de uma sequência de números. Faça um programa separado para testar pegar o maior valor; - Adapte uma lógica para pegar o maior no teu código.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!