Ir ao conteúdo
  • Cadastre-se

Boko Moko

Membro Pleno
  • Posts

    149
  • Cadastrado em

  • Última visita

Tudo que Boko Moko postou

  1. tente contar o índice de baixo para cima e o valor de cima para baixo. i = 0 , 1, 2, 3 .... 9 (i++) j = 9, 8 , ..... 0 aqui seria j ... j o que ??? pensa um pouco
  2. Nessa parte é fazer 3 vezes a mesma coisa: Solicitar do usuário um valor , ler o valor e tacar numa variável. Como são 3 valores diferentes... vai ter que ter 3 variáveis diferentes, concorda ? Quais serão os nomes delas ? aqui está a pegadinha desse exercício. Ele pede operações envolvendo : - O menor - O maior - O do meio Acontece que qualquer um desses 3 (menor, maior e do meio) pode ser qualquer um dos 3 valores que forem digitados (o primeiro, o segundo e o terceiro valores). Então você tem que testar essas várias possibilidades. O que você usa para testar ? ... Uma condição ? lembrou agora ? Pensou ? Existem várias possibilidades. O primeiro número ser o maior de todos, o primeiro ser o do meio, o primeiro ser o menor. O mesmo acontece com os outros dois (segundo e terceiro valores). Tem que testar "todas" as possibilidades. Na verdade... não precisa ser todas. Pense um pouco. Depois de sacar quem é o maior, o menor e o do meio, o resto é fazer a conta pedida. Uma expressão só. Bom, aqui num tem o que fazer né ? É só exibir o valor resultado do cálculo no passo anterior. Que tal ? Consegue avançar agora com essas dicas ?
  3. Segurança envolver evitar que o programa entre num loop infinito e derrube o seu computador, consumindo recursos. O teste de segurança é para garantir que a taxa de crescimento da cidade MENOR seja MAIOR que a taxa de crescimento da cidade MAIOR. Se a taxa de crescimento da cidade maior for maior que a taxa de crescimento da cidade menor o seu programa vai ficar em loop infinito. Faça o teste. Se g1 for < g2, avise "a cidade menor nunca vai alcançar a maior" Concorda ? adicionado 18 minutos depois Já cogitou usar o http://repl.it para compartilhar seus programas ? Assim podemos verificar rapidamente se estão corretos e apontar sugestões.
  4. Tem um caracter sujeira depois do último } apague-o e deve resolver o problema. Recomendo usar o Eclipse ou Netbeams em vez do bloco de notas. Se a ideia é fazer programas apenas para fins didáticos, recomendo usar o http://repl.it
  5. O problema é de conexão com o banco de dados, A query não está funcionando. POde ter sido o servidor de banco de dados que caiu. Vale a pena verificar se ele está no ar. Se estiver, verificar se a instancia do banco de dados que o programa acessa está íntegra. Isolando essa variável do banco, é verificar na tabela. Observe que o método invoca um método this.conectar(); antes de executar o comando SQL. Seria bom tratar o erro de conexão de forma mais completa para dar a dica.
  6. Lamento informar mas o programa apresentou mal funcionamento e essa informação que você postou só faz sentido para o programador que tiver acesso ao fonte do mesmo.
  7. é porque o if está DENTRo do while mova ele mais para a esquerda. Outra dica de segurança. Certifique-se que g1 é maior que g2. Senão o programa nunca vai terminar.
  8. Apesar de totalmente funcional, esse é um típico abuso do switch. A ideia do switch é ser um vetor de código e não de dados. Para resolver esse problema proposto pelo exercício o melhor ainda seria o bom e velho vetor ou mesmo um enum. Onde foi que você recebeu esse exercício ?
  9. Você pode fazer o protótipo do seu app com o MIT App Inventor http://appinventor.mit.edu/explore/
  10. Acho melhor tentar de novo porque tá misturado fonte de algo que parece Pascal com C num samba do afrodescendente com distúrbio mental incapacitante (o samba do crioulo doido). Tem pouca coisa aí a se aproveitar e considerando que os eu "hoje" era sábado e já estamos na quarta-feira, talvez seja tarde demais. Se aceita uma dica, copiar/colar respostas para exercícios de programação: 1 - CERTAMENTE não fazem você aprender, 2 - muito provavelmente o seu professor vai sacar que nào foi você quem fez 3 - Nunca vai funcionar, principalmente se copia fonte de Pascal para exercício em C
  11. O que você quer fazer é o que se chama de "web scraping" ou seja, acessar um site, ler a página e dentro da página obter os dados que se deseja. Fazer isso em C é meio complicado, embora totalmente possível. Existem outras linguagens em que se faz isso mais facilmente, como por exemplo, Como fazer web scrap com Python. Até Excel faz isso e realmente muito facilmente. Pode ser em Excel ? Se for, é coisa de 5 minutos pra fazer. Outra coisa que você deve considerar é : qual é a estrutura do site que contém a informação que você quer ? Se for uma estrutura organizada, fica mais fácil. Se for um site complexo e/ou confuso, dá mais trabalho.
  12. Amigo, lamento informá-lo mas quando PJE dá galho, só tem um lugar para obter suporte técnico: No departamento de TI do TJ. Sei que é frustrante e que com frequencia você fica na mão. Mas esse PJE virou um frankenstein que apenas os tratadores dele no zoológico que você sabe qual é que estou falando conseguem alimentá-lo. Por falar nisso. Qual é o seu estado ?
  13. Faça o exercício mental de preencher a tabela Tomei a liberdade de fazer uma planilha em Excel para ajudar você a pensar nesse exercício tomadas possíveis.xlsx
  14. Como estão as coisas aí ? Com os exercícios ? Desenrolou ? Tá precisando de ajuda ? Quer uma pizza ? Se espirrar ... saúde.
  15. O comando conecta.executaSQL(“Select * from Cadastros”) submete a query ao banco e o resultado é um result set que fica em conecta.rst Acontece que você está usando o atributo conecta.rst.first que é apenas a primeira linha do result set Isso funciona se você garante que só tem uma linha com um cpf. Só que seu select traz a tabela inteira então você tem que fazer um while para varrer o result set inteiro no seu programa procurando o cpf desejado. Isso funcionaria, porém você está trazendo a tabela inteira para o seu programa e pesquisando nela manualmente. Acho que a ideia não é essa. Se você está buscando por CPF o ideal seria usar um WHERE no select assim "select * from Cadastros where Cadastros.cpf ='"+wcpf+"'" onde wcpf seria a variável no seu programa. Aí, como teoricamente só tem uma linha com o cpf, o rst.first funcionaria. Experimente.
  16. Ou seja, basicamente o mesmo código, copiado e colado 5 vezes com um prinft, um scanf, um if, uma atribuicao dentro do if, uma soma. 25 linhas de programa, que só testam 5 alunos. Mude para uso de for e terá 6 linhas de programa que faz teste para quantos alunos quiser. Esse é o meu ponto. Tem que aprender a usar for adicionado 13 minutos depois Fazendo com o for a ideia é a seguinte um for para obter os dados dos 5 alunos e fazer o somatório das notas para posterior cálculo da média for <alguma coisa que garanta que será feito 5 vezes> { solicitar ao usuário uma nota ler do teclado a nota comparar com a maior nota e se for maior essa nota passa a ser a maior somar a nota obtida ao total de notas } calcular a media que é o somatório das notas dividido por 5 DICA DE UM TRUQUE para simplificar Crie uma variável para armazenar o valor da maior nota. Nela coloque um valor SUPER pequeno. quando a primeira nota for comparada com esse valor, independente do valor da nota lida, ela será maior e passa então a ser maior. Portanto, inicialize a variáel maior nota com o menor valor possível. Tente fazer o programa
  17. @RorschachVII Existe um ditado que um famoso programador português uma vez disse "Em se programando ... tudo dá". Ou seja, em se consertando, tudo dá. Só que tem que ser por partes porque o seu código tá um spagethi danado. Recomendo modularizar mais os programas de modo que ao consertar um módulo, você Não afeta outro que está funcionando. Na rotina de inclusão, seu programa inteligentemente testa o novo valor a ser inserido na lista. Se ele for menor do que o menor valor, o menor valor passa a ser esse valor novo. Excelente. Como todo valor que entrar na lista passa por aí, todo valor vai ser testado contra o menor valor. Ou seja, o menor valor estará na variável "menor". Só que não basta isso. O ideal seria você deixar numa variável do tipo Lista o elo da lista que contém o valor menor. Uma coisa : você criou uma classe TipoLista que não é utilizada. Qual foi a ideia ? Se não se lembra porque, remova-a. Outra coisa: A lista é para ser duplamente encadeada ou não ? Porque a estrutura da classe Lista está confusa, porém serviria para uma lista duplamente encadeada. Acontece que quando você insere um novo ítem na lista ... não trata os links para o elo anterior. Observe o código e verá que você só modifica o campo num e o campo prox. Veja como a classe Lista está public class Lista { private int num; /* utilizado */ private Lista prox; /* utilizado */ private Object ant; /* definido errado e não utilizado */ private Lista menor; /* definido errado e não utiliado */ } Então você fala em lista duplamente encadeada, mas seu programa a trata como se fosse uma lista simples encadeada. Recomendo modificar a classe para ser lista duplo-encadeada mesmo. Fique ligado no código que insere um novo nó para tratar corretamente os apontadores para o elo anterior. Isso erá facilitar o trabalho de mover para o topo o menor valor. Tente novamente e se precisar de ajuda, avise.
  18. A pergunta do @daniel.oliveira tem a dica embutida nela. Para saber onde termina o que vem ANTES do cpf, e onde termina o CPF e começa o que vem depois você tem duas alternativas : Os dados tem tamanho fixo os dados tem um delimitador entre um valor e outro. suponha que os dados que estão contidos no arquivo tem nome, time de futebol que ele torce, cpf, data de nascimento, quantidade de vezes que subiu numa árvore sem ajuda de escadas, filme preferido. Exemplo de dados com tamanho fixo (ignore os números. É só uma régua para facilitar a contagem das posições) 1 2 3 4 5 6 0123456789012345678901234567890123456789012345678901234567890123456789 BarbaNegra27 Sao Paulo Futebol Clube410369729151990050112Bambi Onde está o cpf ??? Exemplo com os mesmos dados só que usando delimitador |BarbaNegra27|Sao Paulo Futebol Clube|41036972915|19900501|12|Bambi| sacou? então a pergunta é .. como os dados foram gravados no arquivo ? Ou melhor ainda, a pergunta pode ser: como você acha que os dados devem ser gravados no arquivo de modo a facilitar a leitura depois ? Considerando que você que faz o programa que grava e que lê o arquivo, cabe a você definir como eles serão gravados. Esse é o ponto que o Daniel Oliveira levantou. Ou seja, experiente, Daniel sacou logo onde está o X da questão. Parabens Daniel Se quiser sofisticar .. pode usar XML ou JSON para gravar e ler os dados do arquivo. Mas isso é outro tópico mais avançado.
  19. Entendeu mesmo ? Então mostra pra nós o programa Se quiser, pode usar o http://repl.it para compartilhar o fonte do programa
  20. @Gabriel T.I @Gabriel T.I O fonte do programa está em VisualG ... Qual é a ideia ? Fazer o teste de mesa dele e validar o algoritmo ? Ou convertê-lo para C ? adicionado 18 minutos depois Dica para analisar o algoritmo do exercício 1 (dica, quando tiver mais de um exercício, poste-os em tópicos separados, não tenha preguiça ok ? não paga por post). Primeiro, o programa pra valer começa na linha 5. Antes dessa linha só tem declaração de variáveis, por acaso, algumas inteiras e dois vetores de 10 elementos inteiros cada um. Logo de cara o programa tem um laço "para". Sempre que encontrar um laço "para", analise qual a faixa de valores que a variável de controle vai ter. Perguntas : Qual é a variável de controle nesse laço ? Qual a faixa de valores que essa variável terá dentro do laço ? Pense nisso, tenha isso em mente. Agora analise o miolo desse primeiro "para". Quais variáveis estão do lado esquerdo das atribuições ? Em outras palavras, quais variáveis serão afetadas dentro do laço "para" ? Dica: são duas variávies, por acaso, vetores. Uma é afetada sempre do mesmo jeito, outra é afetada hora de jeito, hora de outro... o que faz com que ela mude ? E porque ? E qual o efeito ? Analise o miolo do laço para. Quais são elas ? Como são afetadas ? QUal é a regra de formação dos elementos de cada vetor afetado? Um vetor tem uma regra bem simples, o outro a regra é menos simples. Reflita sobre isso. Depois do primeiro "para" vem outro laço "para" só que com um enquanto dentro. Faça a mesma análise, comece com o laço "para" de fora e depois analise o enquanto. Laços "para" são mas fáceis de analisar porque eles são sempre (ou pelo menos na maioria das vezes) com uma variável só de controle e com uma quantidade pré-definida (na maioria das vezes). Já o enquanto ... bom, "enquanto" é muito poderoso justamente por ser muito flexível .. .e muito causador de loops infinitos Fique ligado nos "enquantos". Nesse caso , o resultado da análise de como os vetores foram afetados no primeiro "para" vai ajudar a entender como o "enquanto" funciona. Agora um comentário sobre o que @devair1010 escreveu. Está certíssimo. Converta o programa para alguma linguagem e rode o programa. Já que ele num tá em VisualG, nem em Portugol, então converte logo para C. Afinal, estamos num fórum sobre C, tente no http://repl.it e roda para ver o que o programa faz. Isso sempre é válido, as vezes é necessário porém não é suficiente 100% dos casos. Ora, se você não sabe o que o programa deve fazer, como saber se o resultado que ele produzir é o correto ? Se considerar que vai ter que converter, pode ter algum erro de digitação durante a conversão, ou erro de programação mesmo. O programa vai dar um resultado e você não sabe se é o certo ou não. Nesse exercício 1, converter, rodar e ver o resultado, vai adiantar nada ! A ideia do exercício é que você entenda COMO o programa fez o que fez e não O QUE o programa fez. Se você conseguir rodar o programa e ver o resultado, que por acaso é um resultado muito sem graça, você pode chegar a conclusão nenhuma.
  21. @diegotecinfoo Lamento mas está errado. Aí você está calculando a média de um aluno só que tem 3 notas. É uma situaçao completamente diferente. O que o enunciado quer é a média das notas de 5 alunos diferentes. Portanto, você vai ter que dar scanf() em 5 notas, uma para cada aluno. (nesse exemplo você está pegando apenas 3 notas) Além de calcular a média, que é relativamente fácil, mesmo sem o laço "for", o exercício pede que exiba a "maior nota". Aí vai ficar muuuuuuuuuuito complicado de fazer sem usar um laço "for". Pense bem Primeiro, você vai repetir 5 scanf()'s para obter as 5 notas. Usando o for, você só usaria um. Segundo, você vai ter que comparar a primeira nota com as outras 4 para ver se ela é a maior. Isso é um IF enorme com 4 comparações. Se esse if der false, você vai ter que fazer outro if para comparar a segunda nota com as outras 3 notas, outro IF enorme com 3 condições. Se der false, você vai ter que comparar a terceira nota com as outras 2. Outro if agora com 2 condições. Se esse if der false, ainda resta comparar a quarta nota com a quinta. Um if simples. Usando o for, é um if só dentro do laço. Detalhe. Fazendo um loop para 5 alunos, você faz loop para 10, para 100, um milhão de alunos. Já o ninho de if's que você fizer só serve para 5 alunos. Se quiser fazer para 100 alunos usando if's aninhados, você enlouquece e é internado num hospital psquiátrico antes de terminar o programa. Em alguns países inclusive é proibido e punido com ajoelhar em caroços de milho, decapitação ou coisa pior (como cortarem o nosso acesso a internet) se você fizer um if com 100 condições num programa em pleno século XXI. Diga-me, qual é o mais complicado ? aprender "for" e usá-lo ou fazer ninho de if's confusos como essa parágrafo acima que mais parece uma bíblia do que um passo de algoritmo, de tão longo que o if ficou ? Entenda bem: mais cedo ou mais tarde você vai ter que aprender e dominar a usar o comando for se quiser ser um bom programador. Recomendo que seja mais cedo porque mais tarde pode ser tarde demais. Se o professor que passou esse exercício EXIGIU que não se usasse "for" o que ele pretende com isso é "ensinar por contra exemplo", ou seja, "tente fazer sem o for para ver como é complicado". Embora não seja uma prática de ensino boa, ela é eficaz. Os alunos que sobreviverem a esse exercício vão adorar usar o for para simplificar seus programas. O problema é: você consegue sobreviver ?
  22. @Simon Viegas O raciocínio é esse mesmo, o peso do ano tem que ser maior que o peso do mês * mes No caso, o maor mês possível é 12, que multiplicado pelo peso do mês (32) vai dar 384. Seria o caso absurdo de 12 meses de 32 dias, que é impossível na vida real, mas que é possível nessa conta ponderada Voltemos ao caso do peso do mês. Imagine datas apenas com mes e dia. Para comparar duas datas, se o mês for maior, nao importa qual o dia da outra data, Portanto, mesmo que a data menor tenha dia 31, a data maior erá 31 + 1 dia (Nõ existe dia 0). Então mês * 31 + dia da data maior sempre vai ser maior que o mês * 31 + dia da data menor. O peso do mes pode ser 31 apenas. agora imagine datas apenas com ano e mês. O raciocínio é o mesmo. O maior mês possível é 12. O peso do ano então pode ser 12 pois não há ano 0. Se uma data x é maior que uma data y, ano * 12 + mês da data x sempre será maior que ano * 12 + mês da data y. Então como fica a data completa ? Ano * 12 + mês * 31 + dia ? NÃO !! Porque estamos comparando na verdade "dias", entào o ano tem que ser multiplicado por 365! Mas será suficiente ? Imagine a situação de comparação de uma data de dezembro de um ano = 12 meses, de 31 dias cada um mais 31 dias do mês. Teríamos 12 * 31 = 372 + 31 = 403 dias Portanto, o peso do ano tem que ser no mínimo 403 Então a fórmula mínima para comparaçào de dia/mes/ano seria wano = ano * 403 + mes * 31 + dia Considerando anos 1900 a 2100, essa fórmula daria como resultados valores entre 765732 (6 dígitos) e 846703 (também 6 dígitos). Ou seja, nesse caso, daria para usar uma variável float. <também estou com fome, tomara que o café hoje seja biodegradável>
  23. Acho que tem a ver com a quantidade de dígitos significativos na variável do tipo float. No caso, teríamos 4 dígitos do ano + 2 dígitos do mês + 2 dígitos do dia, total de 8 dígitos. Segundo o padrão C, float tem apenas 6 dígitos significativos. Curioso é que eu testei em dois compiladores C distintos e deu o mesmo erro. Quando mudei para long, nos dois compiladores resolveu. Esse é mais um exemplo de como C é muito dependente da plataforma em que foi implementada. Btw, a explicação do método ponderado foi brilhante. Parabens. adicionado 6 minutos depois Depois do "bug" que Vangodp descobriu, o fato de multiplicar apenas por 1000 é até melhor !

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!