Leoveira
-
Posts
28 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Leoveira
-
-
1 hora atrás, aphawk disse:
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.
- 1
-
Ainda não achei nada sobre esse erro, mas reparei em uma coisa: a Gen7BR2 que eu uso tem um ATmega1284P-PU de 20MHz. Se eu mudar para o ATmega1284P-PU de 16MHz o erro não aparece.
-
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?
-
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); }
-
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); }
-
/*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); }
-
@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.
-
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.
-
@Simon Viegas me salvou de novo. Deu certinho, obrigado.
- 1
-
Funcionou mas agora o erro e esse:
error: invalid types 'float[int]' for array subscript
-
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 depoisSó 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]); }
- 1
-
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?
- 1
-
@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 depoisO 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]; } } }
- 2
-
@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?
- 1
-
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?
- 1
-
@Simon Viegas @Mauro Britivaldo deu certo aqui. Ficou uma bagunça, mas já me contentei por conseguir. Obrigado pela ajuda de vocês dois!
- 1
-
Desculpem a demoram, vou testar as sugestões e posto o resultado.
- 1
-
@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.
- 1
- 1
-
@Mauro Britivaldo Sem loop ficaria assim:
int main(){ int n; cout << "Digite um numero: "; cin >>n; cout << "\t" << n%10+8; n=n/10; cout << "\t" << n%10+8; n=n/10; cout << "\t" << n%10+8; n=n/10; cout << "\t" << n%10+8; n=n/10; }
Meu maior problema e entender como decodificar. Tentei colocar cada digito em um vetor e depois fazer a conta inversa mas não deu certo.
-
@Mauro Britivaldo eu comecei usando o for para fazer a repetição, quando troquei para while esqueci de tirar.
-
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.
-
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!
- 1
-
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
R_AVR_7_PCREL against `no symbol'
em Microcontroladores
Postado
@aphawk vou ter que fazer isso por ICSP. TO pesquisando como fazer nesse modelo de Atmega, as informações são bem escassas.