Ir ao conteúdo
  • Cadastre-se

Leoveira

Membro Pleno
  • Posts

    28
  • Cadastrado em

  • Última visita

posts postados por Leoveira

  1. 1 hora atrás, aphawk disse:

    @Leoveira ,

     

    Verifique com cuidado o oscilador de sua placa Gen7Br2 ... se foi projetada para ser usada com a Ide do Arduíno, acredito que o clock deve ter sido mantido em 16 Mhz, senão um monte de temporização vai dar errado !

     

    Outra coisa, verifique esse seu arquivo fonte , com qual versão da IDE do Arduíno ele deve ser compilado...

     

    Paulo

    Então, descobri isso do 16 Mhz fazendo uns testes aqui, o cara que montou essa impressora me disse que era 20Mhz com toda a certeza. E realmente o erro não acontece mais na hora de compilar depois que mudei, porém parece que aconteceu algum erro quando subi o código e a placa não e mais reconhecida pelo computador.

     

    Pelo visto vou ter que gravar o bootloader novamente no  ATmega1284P-PU.

    • Triste 1
  2. Tenho uma impressora 3D que usa uma placa Gen7 (processador ATMEGA 1284p).

     

    Estou tentando subir o firmware na minha impressora, mas toda vez que verifico o código ele me retorna esse erro:

     

    C:\Users\apren\AppData\Local\Temp\ccBbHVpl.ltrans0.ltrans.o: In function `zigzag':
    
    C:\Users\apren\AppData\Local\Temp\arduino_build_817137\sketch/nozzle.h:120:(.text+0xcc8): relocation truncated to fit: R_AVR_7_PCREL against `no symbol'
    
    collect2.exe: error: ld returned 1 exit status

     

    Já verifiquei o nozzle.h na linha 120 e não tem erro algum. Alguma sugestão?

     

  3. 17 horas atrás, Mauro Britivaldo disse:

    Boa Noite, Já vi que a palavra elemento é sua favorita, já contou quantas vezes ela aparece

    E por que eu dou nome conforme se pede no exercício, a ideia e que ficasse fácil de entender o que cada variável, vetor ou função faz.

     

    Como você escreveu em C eu fiquei meio perdido mas acho que entendi mais ou menos, mas o que seria o comando puts?

     

    Eu coloquei uma ponteiro para alocar o tamanho do vetor para ver se resolve o problema, mas não resolveu.

     

    
    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    int*alocavetor (int tamanho){
    
    int *aux;
    
    //alocação dinamica de memoria 
    aux= (int*) malloc(tamanho *sizeof(int));
    
    //retorna o valor alocado
    return aux;
    
    }
    
    int piramidal(int sequencia[]){
    
        int tamanho=0,x,y;
    //armazenar valores
        cout << "Digite o numero de elementos: ";
        cin >> tamanho;
    
        cout << "Digite uma sequencia de numeros: ";
        for(x=0;x<tamanho;x++){
            cin >> sequencia[x];
        }
    
        cout<<"\n";
    
    //exibir
    int cont=0;
    
    for(x=0;x<tamanho;x++){
        for(y=0;y<tamanho;y++){
    
            if(x>=y){
            cout << sequencia[cont] << "  ";
            cont++;}
    
    
            else if(x == tamanho ||y == tamanho ){
                break;
                }
                else;
    
        }
        cout<<"\n";
    }
    
    }
    
    int main(){
    
        int tamanho=0, *sequencia,chama_funcao;
    
        cout << "\n\t Piramidal\n";
    
        sequencia=alocavetor(tamanho);
        chama_funcao=piramidal(sequencia);
    }

     

  4. Consegui fazer, porém se deu defino 10 elementos ele está exibindo uns valores estranhos depois dos 10 .

     

    #include <iostream>
    
    using namespace std;
    
    int piramidal(int sequencia[]){
    
        int elementos=0,x,y;
    //armazenar valores
        cout << "Digite o numero de elementos: ";
        cin >> elementos;
    
        cout << "Digite uma sequencia de numeros: ";
        for(x=0;x<elementos;x++){
            cin >> sequencia[x];
        }
    
        cout<<"\n";
    
    //exibir
    int cont=0;
    
    for(x=0;x<elementos;x++){
        for(y=0;y<elementos;y++){
    
            if(x>=y){
            cout << sequencia[cont] << "  ";
            cont++;}
    
    
            else if(x == elementos ||y == elementos ){
                break;
                }
                else;
    
        }
        cout<<"\n";
    }
    
    }
    
    int main(){
    
        int elementos=0, sequencia[elementos],chama_funcao;
    
        cout << "\n\t Piramidal\n";
    
        chama_funcao=piramidal(sequencia);
    }

     

  5. /*Uma sequência de n números inteiros não nulos é dita piramidal m-alternante se é constituída por m segmentos:
    o primeiro com um elemento, o segundo com dois elementos e assim por diante até o m-ésimo, com m elementos.
    Além disso, os elementos de um mesmo segmento devem ser todos pares ou todos ímpares e para cada segmento,
    se seus elementos forem todos pares (ímpares), os elementos do segmento seguinte devem ser todos ímpares (pares).
    
    Por exemplo, a sequência com n = 10 elementos:
    12       3  7         2  10  4        5  13  5  11 é piramidal 4-alternante.
        A sequência com n = 3 elementos:
     7         10  2     é   piramidal 2-alternante.
        A sequência com n = 8 elementos:
    1     12   4        3  13  5       12  6   não é piramidal alternante pois o último segmento não tem tamanho 4.
    
    (a) Escreva uma função bloco que recebe como parâmetro um inteiro n e lê n inteiros do teclado,
    devolvendo um dos seguintes valores:
           0,  se os n números lidos forem pares;
           1,  se os n números lidos forem ímpares;
         -1,  se entre os n números lidos há números com paridades diferentes.
    (b) usando a função do item anterior, escreva um programa que, dados um inteiro n > 1 e uma sequência de n números inteiros,
    verifica se ela é piramidal m-alternante. O programa deve imprimir o valor de m ou dar a resposta não.*/
    
    
    #include <iostream>
    
    using namespace std;
    
    int piramidal(int sequencia[]){
    
        int elementos,cont;
    //armazenar valores
        cout << "Digite o numero de elementos: ";
        cin >> elementos;
    
        cout << "Digite uma sequencia de numeros: ";
        for(cont=0;cont<elementos;cont++){
            cin >> sequencia[cont];
        }
    
    
    //exibir
        for(cont=0;cont<elementos;cont++){
            cout << sequencia[cont];
            
    }
    
    int main(){
    
        int elementos=0, sequencia[elementos],chama_funcao;
    
        cout << "\n\t Piramidal\n";
    
        chama_funcao=piramidal(sequencia);
    }

     

  6. @XenoStory acho que também não expliquei muito claro. Por exemplo se eu colocar para ser 10 elementos e eles vão ter a seguinte sequencia (12, 42, 22, 65, 87, 34, 56, 1, 98 e 23), eu não preciso coloca-los em ordem crescente. Mas preciso que o numero de números exibidos por linha seja crescente.

     

    EX.:

    12

    42, 22

    65, 87, 34

    56, 1, 98, 23

     

    Com dois laços de repetição eu não consegui, e também não consegui pensar em uma maneira que não parece-se desnecessariamente complicada para limitar. Mas ainda to na luta do raciocínio aqui.

  7. Boa tarde, estou fazendo um exercício que na qual eu preciso definir o numero de elementos e uma sequencia que deve ser impressa assim:

     

    Ex:  N=10(numero de elementos)

    1

    23

    456

    78910

     

    O exercício pede mais coisas, mas creio que consigo fazer o resto. Meu problema e só essas manipulações de vetores que ainda estão me dando trabalho.

  8. 5 horas atrás, Simon Viegas disse:

    Se está trabalhando com "médias", o vetor não pode ser inteiro, pois a divisão de inteiros resultam em um número real (é uma propriedade matemática), ou seja, poderia usar float ou double

     

    Eu tive esse pensamento, mas só lembrei de colocar o media como float.

     

    17 horas atrás, RafaelCLP disse:

    Falta um else antes do segundo if (senão ele entra no último else quando cont==0).

     

    Nem tinha percebido, obrigado por me lembrar.

     

    Obrigado a todos pela ajuda.

    adicionado 20 minutos depois

    Só uma duvida coloquei o meu código em uma função é esta dando o erro "error: cannot convert 'float' to 'float*' for argument '1' to 'float suavizacao(float*)' ".

     

    #define tam 10
    
    float suavizacao(float vetor[tam]){
    
    int cont;
    float media=0;
    
    for(cont=0;cont<tam;cont++){
        if(cont ==0){
            media=(vetor[cont]+vetor[cont+1])/2;
        cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media;
        media=0;
    }
           else if(cont ==9){
                media=(vetor[cont]+vetor[cont-1])/2;
            cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media;
            media=0;
            }
                else{
                   media=(vetor[cont-1]+vetor[cont]+vetor[cont+1])/3;
                cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media;
                media=0;
                }
    }
        return 0;
    }
    
    
    
    int main(){
    
    
    float valores[tam],teste;
    int cont;
    
    
    cout << "\n\t Suavizacao de vetor\n";
    
    cout << "\nDigite dez valores: ";
    
    for(cont=0;cont<tam;cont++){
    
        cin >> valores[cont];
    }
    
    suavizacao(valores[tam]);
    
    }

     

    • Curtir 1
  9. Boa noite, tenho que fazer a suavização de um vetor de 10 posições. A suavização consiste em substituir o valor atual de uma posição pela média do valor da posição anterior, da posterior e dele próprio. Assumindo que o identificador do vetor é v, então v=(v[i-1]+v+v[i+1])/3, (exceto o primeiro e o último). O primeiro elemento do vetor é suavizado com base na média entre os dois primeiros valores e o último elemento é suavizado com base na média entre os dois últimos. Meu código ficou assim:

     

    #include<iostream>
    
    using namespace std;
    
    int main(){
    
    int tam=10,vetor[tam],cont;
    float media=0;
    
    cout << "\n\t Suavização de vetor\n";
    
    cout << "\nDigite dez valores: ";
    
    for(cont=0;cont<tam;cont++){
    
        cin >> vetor[cont];
    }
    
    
    for(cont=0;cont<tam;cont++){
        if(cont ==0){
            media=(vetor[cont]+vetor[cont+1])/2;
        cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media;
        media=0;
    }
             if(cont ==9){
                media=(vetor[cont]+vetor[cont-1])/2;
            cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media;
            media=0;
            }
                else{
                   media=(vetor[cont-1]+vetor[cont]+vetor[cont+1])/3;
                cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media;
                media=0;
                }
    }
    }

    Ele não está retornando os valores corretamente, alguém sabe qual pode ser o erro? 

    • Curtir 1
  10. @Simon Viegas  sobre primeira parte eu costumo fazer isso, mas quando fico perdido eu ignoro isso até resolver e depois volto e arrumo(se eu fizesse desde de o inicio evitava perda de tempo). Mas obrigado de todo jeito, vou tentar ter esse costume em mente.

     

    Sobre a segunda parte eu realmente não entendi o que você quis dizer ou insinuar, minha duvida era sobre isso:

     

    Em 08/02/2018 às 18:00, Leoveira disse:

    não estou conseguindo montar o trecho de código para identificar repetidos em um vetor

     

    E minha dificuldade era na lógica, eu estava colocando mais complicação do que havia.

    Em 08/02/2018 às 18:00, Leoveira disse:

    Sei que poderia colocar um outro FOR dentro do primeiro para resolver, mas não estou sabendo montar a lógica correta. Alguma sugestão?

     

    Mas agradeço a colaboração de todos, me ajudaram bastante.

    adicionado 2 minutos depois

    O código ficou assim:

    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    #define juizes 5
    
    int main(){
    
    int notas[juizes],cont,media=0,maior=0,menor=0;
    
    cout << "\n\t Prova de Atletismo\n";
    cout << "Digite 5 notas entre 0 a 9 para o atleta: \n";
    
    //armazenar valores
    for(cont=0;cont<juizes;cont++){
        //if(notas[cont]>10){
        cin >> notas[cont];
    }
    //media
    for(cont=0;cont<juizes;cont++){
        media+=notas[cont];
    }
        media=media/juizes;
    
        cout << "\nA media do atleta foi de: " << media;
    
    //maior
    for(cont=0;cont<juizes;cont++){
        if(notas[cont]>maior){
            maior=notas[cont];
        }
    }
    //menor
    menor=maior;
    
    for(cont=0;cont<juizes;cont++){
        if(notas[cont]<menor){
            menor=notas[cont];
        }
    }
    
     cout << "\nA sua menor nota foi: " << menor << " e a sua maior nota foi: " << maior;
    
     //porcentagem de repetidos
    
     int nota_alta=8,repet=0,porcen=0;
    
    for(cont=0;cont<juizes;cont++){
        if(notas[cont]>=nota_alta){
            repet++;
        }
    
    porcen=repet*20; //5 notas e igual a 100%, então cada nota e 20%
    
    }
        cout << "\nA porcentagem de notas iguais ou superiores a 8 e:  " << porcen<< "%";
    
    //atribuição de notas
    for(cont=0;cont<juizes;cont++){
        if(notas[cont]>=nota_alta){
            cout << "\nO juiz numero " << cont << " deu a nota: " << notas[cont];
    }
    
    }
    }

     

     

    • Curtir 2
  11. @vangodp E isso mesmo, eu que digitei errado.

     

    Em 08/02/2018 às 22:10, vangodp disse:

    Não há muita lógica nesta pergunta. Não será a porcentagem de pontuações igual ou superior a 8 pontos? Se for assim é só contar quantas vezes o atleta tirou 8 ou mais e fazer a regra do três.

     

    E isso que eu não to entendendo muito bem, pode me dar um exemplo se não for incomodo?

    • Curtir 1
  12. Boa tarde,

     

    Estou fazendo um exercício que pede para armazenar 5 notas de juízes ( de 0 a 9) a um atleta em um vetor e depois exiba a media, a maior nota, a menor nota, e a a percentagem de pontuações iguais ou superiores a 8 valores. E essa ultima me pegou de jeito, por que não estou conseguindo montar o trecho de código para identificar repetidos em um vetor. Meu código até então está assim:

     

    #include <iostream>
    #define juiz 5
    
    using namespace std;
    
    int main(){
    
    int notas[juiz],cont,media=0,maior=0,menor=0;
    
    cout << "\n\t Prova de Atletismo\n";
    cout << "Digite 5 notas entre 0 a 9 para o atleta: \n";
    
    //armazenar valores
    for(cont=0;cont<juiz;cont++){
        cin >> notas[cont];
    }
    //media
    for(cont=0;cont<juiz;cont++){
        media+=notas[cont];
    }
        media=media/juiz;
    
        cout << "\nA media do atleta foi de: " << media;
    
    //maior
    for(cont=0;cont<juiz;cont++){
        if(notas[cont]>maior){
            maior=notas[cont];
        }
    }
    //menor
    menor=maior;
    
    for(cont=0;cont<juiz;cont++){
        if(notas[cont]<menor){
            menor=notas[cont];
        }
    }
    
     cout << "\nA sua menor nota foi: " << menor << " e a sua maior nota foi: " << maior;
    
     //repetidos
    
     int rep=0;
     int cont2=notas[0];
    
     for(cont=0;cont<juiz;cont++){
        if(notas[cont] == cont2){
          rep++;
        }
    }       
    
    }

    Sei que poderia colocar um outro FOR dentro do primeiro para resolver, mas não estou sabendo montar a lógica correta. Alguma sugestão?

    • Curtir 1
  13. @Mauro Britivaldo você me deu uma luz nesse decodificar meu caro, com isso fiz algo assim:

     

    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    int main(){
        int n,i,num[4];
        cout << "\n\t Codificar e Decodificar\n";
    
        cout << "\nDigite um numero: ";
        cin >> n;
    
        //codificar
        i=0;
    
        while(n>0){
            num[i]=(n+8)%10;
            n=n/10;
            i=i+1;
        }
    
        cout << num[1]<<num[0]<<num[3]<<num[2];
    
        //decodificar
        i=0;
    
        while(i<4){
            num[i]=(num[i]+10)-8;
            i=i+1;
        }
    
        cout <<"\n" << num[3]<<num[2]<<num[1]<<num[0];
    
    }

    Porém está dando problemas com o digito 1, ex: se eu codificar 1234 na hora de decodificar ele me retorna 11234.

     

    @Simon Viegas eu estou fazendo sem funções por que não entendi exercício por completo, assim que conseguir faço as funções necessárias. E o seu cout esta correto.

    • Curtir 1
    • Confuso 1
  14. Boa tarde.

     

    Gostaria de ajuda com um exercício, pois estou estudando sozinho e não tenho alguém para poder recorrer. Ele diz o seguinte:

     

    Uma empresa pretende enviar cifrada uma sequência de inteiros decimais de 4 dígitos(DigDigDigDig). A cifra consiste em: substituir cada dígito Dig por (Dig+8)%10 (i.e., adiciona 8 e calcula o resto da divisão do resultado por 10); depois troca o terceiro dígito com o primeiro e troca o quarto dígito com o segundo.

    a) Escreva uma função que receba um inteiro decimal de 4 dígitos e o devolva cifrado.
    b )Escreva uma função que receba um inteiro cifrado e o decifre para o valor original.
    c) Escreva uma função que apresente um «menu» com 2 opções, cifrar e decifrar número, peça ao utilizador para escolher uma das opções, e retorne a opção escolhida.
    d) Faça um programa que permita testar as funções anteriores.

     

    Primeiro estou fazendo sem a função para entender como fazer. Fiz o seguinte:

    int main(){
    
    int n,i,num[4];
    
    cout << "Digite um numero: ";
    cin >>n;
    
    i=0;
    
        while(n>0){
            num= n%10;
            n=n/10;
            i=i+1;
        }
    
         cout << num[1]<<num[0]<<num[3]<<num[2];
    
    }

     

    Não consigo fazer o decodificar de maneira correta, se alguém poder me explicar em vez de colocar um código já pronto iria agradecer muito.

  15. 22 minutos atrás, dsgeverton disse:

    Você está chamando a função de soma antes de fazer a inserção de valores nas variáveis n1 e n2, então o algoritmo passa esses valores com o que está preenchido no campo de memória, o chamado "lixo de memória". Faça a atribuição de n3 à chamada da função após as variáveis n1 e n2 obterem os valores passados. Creio que resolverá o problema.

     

    EDIT: 

    #include <iostream>

    using namespace std;

     

    int m (int a, int b){
        int c;
        c=a+b;
        return c;
    }

    int main()
    {
        int n1,n2,n3;

        cout << "Digite um numero: ";

        cin >> n1 >> n2;

        n3=m(n1,n2);

        cout << n3;

        return 0;
    }

     

    MMMMMUUUUUIIIITTTTTOOOOO OBRIGADO CARA!!!!!

     

    Era uma coisa boba e nem tinha percebido.

    Valeu!

    • Curtir 1
  16. Boa tarde.

     

    Estou re-estudando programação porque fiquei anos sem programar nada. E agora estou me deparando com uma coisa estranha: qualquer função que eu coloque no código não retorna o valor correto. Por exemplo esse código aqui:

     

    #include <iostream>

    using namespace std;

     

    int m (int a, int b){
        int c;
        c=a+b;
        return c;
    }

    int main()
    {
        int n1,n2,n3=m(n1,n2);

        cout << "Digite um numero: ";

        cin >> n1 >> n2;

        cout << n3;

        return 0;
    }

     

    E só para somar duas variáveis, e se eu colocar 2+2 por exemplo, tem hora que aparece 93 ou 11256388 ou outro valor. Já peguei outras funções e também não funcionam, nem aquelas de exercícios resolvidos. Eu usando o Falcon C++, mas testei no Code Blocks e no Dev C++ e todos estão ocorrendo o mesmo erro. Alguma sugestão?

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!