Ir ao conteúdo
  • Cadastre-se

Boko Moko

Membro Pleno
  • Posts

    149
  • Cadastrado em

  • Última visita

posts postados por Boko Moko

  1. Veja só

    primeiro entender como funciona vetores :

    o vetor de primos tem 14 elementos, numerados de 0 a 13

    o elemento 0 é o 2, o elemento 13 é o 43

    então voce tem que tentar

    elemento 0 + elemento 0 == número  ? 

    elemento 0 + elemento 1 == número ? 

    elemento 0 + elemento 2 == número

    ... e assim por diante até 

    elemento 0 + elemento 13 == número ? 

    depois

    elemento 1 + elemento 0 == número ? 

    elemento 1 + elemento 1 == número

    elemento 1 + elemento 2 == número ?  

     

    Por isso que tem 3 for's  no algoritmo

    O Primeiro for é para variar de 8 a 52, os números que devem ser testados.


    Para cada um desses números você tem que testar as possíveis combinaçoes, por isso tem dois for dentro

     

    adicionado 8 minutos depois
    for (int numero=8 ; numero <=52 ; numero++) {
       for (int i=0 ; i< 14 ; i++) {
         for (int j=0 ; j<14 ; j++) {
            teste aqui ... se o primo[i] + primo[j] == numero;
           
         }
       }
    } 

     

    • Curtir 1
  2. Como é a soma de dois números primos, o que você tem que fazer é um par de for's para comparar todas as possibilidades

    para número par de 8 a 52 

      para i de 0 a 14  

         para j de 0 a 14 

              testa se primo + primo[j] == número par  ...  se for , imprime primo e primo[j]

     

     

    Esse é o algoritmo genérico (90% da solução é essa aí)

     

    Que tal ? Entendeu a ideia ? 

    Consegue fazer em Java ? 

     

    • Curtir 1
    • Confuso 1
  3. Não tenha receio em perguntar porque aparentemente é básico. Todo programador experiente em algum momento fez uma pergunta básica.

     

    De fato, a biblioteca time.h tem um monte de recursos para calcular tempo porém esse cálculo é muito dependente da plataforma. Se fizer um programa em C que roda numa plataforma e calcula o tempo de um jeito, pode ser que o mesmo programa em outro sistema operacional ou até mesmo numa cpu diferente pode dar uma conta diferente.

     

    Veja esse exemplo

    clock_t tempo_inicial, tempo_final;
    tempo_inicial = clock();
    < coloque aqui o código que seu programa faz > 
    tempo_inicial = clock();
    printf("%f\n", (tempo_final - tempo_inicial) / (double)CLOCKS_PER_SEC)
      
      

    Essa é a ideia básica ok ? O que pode precisar é de uma calibragem aí a depender da plataforma.

     

    Dica: não tenha medo de experimentar. Tente! Invente um jeito, mete os peitos, bota pra rodar e vê o que dá. Compartilhe aqui conosco para vermos se você tá indo por um caminho que vai dar certo ou se entrou em algum beco sem saída. O importante é que com as dicas, você mesmo vai fazer o seu caminho. 
    Mas o mais legal é que o seu caminho, mesmo sendo de um iniciante, pode ser um caminho novo que os cachorros velhos aqui sequer cogitaram. Nesse processo, aprende você e aprender os dinossauros :)

     

    • Curtir 1
  4. caso o número seja igual você em que fazer um strcmp dos nomes e decidir qual é o maior. Se persistir o empate, considere o ítem com o menor subscrito como menor.

     

    adicionado 2 minutos depois
    18 minutos atrás, diogo moura disse:

    strcpy(a, pessoa[i].nome); strcpy(pessoa[i].nome, pessoa[j].nome); strcpy(pessoa[i].nome, a)

    Esse codigo e o que troca o nome de um pelo nome do outro
    Ele só deve ser utilizado depois de um if usando strcomp

    algo assim

    x = strcomp( um nome, outro nome)

    se  x indica que um nome é menor que outro nome, troca

    se x indica ue outro nome é menor , troca

    se x indica que 'sao iguais, pegue o nome que tá no menor subscrito

     

    • Curtir 1
  5. Sim, é possível aprender a programar sozinho. Conheço várias pessoas que conseguiram. Porém, não se acanhe a perguntar, a pedir uma dica, a solicitar ajuda. 

    Deixe-me contar um caso curioso de um amigo que aprendeu a programar sozinho.

    Na época havia uma linguagem de programação chamada dbaseII (isso mesmo dêbeise dois). Nessa linguagem de programação tinha o comando IF que era terminado pelo ENDIF. Ou seja, 

    if condicado then 
         <comando a fazer caso verdadeiro>
    endif
           

    Simples assim. Esse meu amigo fez um programa maior, mais complexo com ninhos de if's que a situação exigia. Num ninho de if's desse ele esqueceu de colocar o endif.

    Essa linguagem era interpretada, os computadores eram de 8 bits (foi na década de 80).  Num tinha IDE, num tinha compilador, era tudo muito precário.

    O meu amigo ao rodar o programa encontrava-se na seguinte situação: o computador entrava em coma. Num dava mensagem de erro, não desligava, apenas o programa voltava ao prompt de comando e num tinha comando algum que o meu amigo desse que o computador respondesse.  Nada, quit, exit, stop, reset, váselaskar, nada. O computador simplesmente ignorava. O jeito era resetar o computador no hardware. Esse problema só acontecia com esse programa. Na empresa em que ele trabalhava só ele entendia de computação. Microcomputadores eram raros naquelas épocas. Ele estudava computação na universidade mas dbaseII não fazia parte do currículo, era coisa muito recente e microcomputadores ainda eram olhados com desconfiança pelos professores dinossauros. Não precisa dizer que num tinha internet então esse meu amigo não tinha fórum como esse aqui para postar a dúvida. O resultado foi que ele passou dias tentando descobrir o que tinha errado no comando e por pura exaustão ele decidiu tentar digitar todos os comandos do dbaseII no prompt para ver o que dava. ELe percorreu a lista de comandos que assertivos do começo ao fim e ... nada.... Até que num dia, ele digitou ENDIF, imagine você, e o programa saiu do coma !
    O que aconteceu ? 
    Como disse, ele esqueceu de fechar um if com um endif. A condição do if deu falso, portanto o interpretador do dbaseII passou a ignorar tudo que era digitado, nem checava a sintaxe, até que um endif aparecesse. Bastou dar o endif e o interpretador voltou a atender os comandos.


    Qual o ponto que estou querendo destacar com essa fábula? Aprender sozinho é totalmente possível e com bastante esforço é possível atingir objetivos bem interessantes porém, uma simples dica para resolver uma dúvida ou situação nova que o novo programador enfrenta pode ser um atalho ENORME no aprendizado. Se esse meu amigo tivesse um colega com um tiquinho só mais de experiencia, quando ele começasse a descrever o que estava acontecendo que o computador entrava em coma, o programador mais experiente daria na hora a dica e ele não perderia tanto tempo procurando a solução. 

     

    Por outro lado, ao aprender sozinho, você pode quebrar os paradigmas. Como aquela frase que diz "não sabia que era impossível, foi lá e fez". Isso aparece no filme Superman III quando um gênio autodidata dos computadores interpretado pelo Richard Prior inventa um negócio lá (num lembro agora exatamente o que) porque aprendeu sozinho. 


    Na vida real um amigo engenheiro mecânico que aprendeu a programar quase sozinho (eu dei umas dicas) certa vez chegou para mim para mostrar uma técnica brilhante que ele mesmo inventou do zero e que quebrou um galhão num problema que ele estava tentando fazer um programa para resolver. Era uma forma rústica de uso de pilha :) Ele mesmo "reinventou" a técnica sozinho, sem que ninguem tivesse dado a dica.

     

    Portanto, ficam as dicas:

    - Peça ajuda, peça dicas, mas sem spoiler 

    - Estude programação sim mas mais importante : estude estruturas de dados.

     

    Um dos livros mais influentes da história da computação foi escrito por Niklaus Wirth, o inventor do Pascal (entre outras linguagens e coisas). "Data Structures + Algorithm = Program". Recomendo a leitura.

     

    • Curtir 1
  6. 1 hora atrás, Tlrc disse:

    for(int i=1;i<k+1;i++){
         cin>>idade;
     }

    Continua errado. Aqui a variável é escalar. Ela foi declarada na linha 5 como vetor.

    Sem uma dica para o próprio programador do que cada variável ou comando está fazendo esse código vira um spagethi difícil de dizer onde é a ponta do fim e a ponta do começo.

     

  7. 3 horas atrás, Mateus Souza Silva de Mari disse:

    int maiscula (char a) { if (a>='A' and a<='Z') { return 0; }else { return 1; }

    Dica


    Esse código pode ficar assim

    int maiuscula (char a) { 
        return ( (a>= 'A'  && a <= 'Z') ;

    }

     

    Não precisa do if para condições booleanas ok ? 

    A mesma técnica se aplica a testar se algarismo e se é letra minúscula.

     

    Para testar se é caracter inválido, basta pensar assim : ou é minúscula, ou é maiúscula ou é  algarismo. Se não for nenhum dos 3, buzina.

     

    Então a funçao seria 

    int valido ( char coisa ) { 

        return ( maiuscula(coisa) or minuscula(coisa) or number(coisa) ;

     

    Pronto, agora é só testar tamanhos, essas coisas.

     

  8. Talvez a ideia seja criar um método que imprima os atributos do triangulo. Isso seria um bom exercício de orientação a objeto que justificaria o C++ (de outra forma é um programa em C com um struct metido a besta).

     

    adicionado 1 minuto depois

    Do jeito que está, bastaria usar cout << n1.p1.x <<  "\n" << n1.p1.y ... e assim por diante até o n1.p3.y 

     

    Mas acho mais legal fazer o método. Encara ? 

     

  9. O programa tem vários erros de programação. Você copiou e colou sem ler o programa ? 

    por exemplo, você faz uso de uma variável chamada "idade" mas não a declarou. Isso acontece na linha 54. Mesmo que declare a variável idade, ela está dentro de um loop e não faz o menor sentido ler várias idades. O loop apenas lê a variável, faz nada com ela.

     

    Recomendo rever esse conceito.

     

    adicionado 22 minutos depois
    Em 28/04/2018 às 16:20, Tlrc disse:

     cin>>k>>r>>c;

    Este é o primeiro input do programa. Mas do que se trata ? Você num dá dica nenhuma. São tres variáveis que precisam ser digitadas pelo usuário. Mas o que elas significam ? 

     

     

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!