Ir ao conteúdo
  • Cadastre-se

Flávio Pedroza

Membro Pleno
  • Posts

    2.070
  • Cadastrado em

  • Última visita

Tudo que Flávio Pedroza postou

  1. A classe "jogador" não está implementado todos as funções declaradas. Será que você não esqueceu de implementar alguma função virtual da classe pai "player"? A classe "player" é abstrata não é? você tem que implementar TODAS as funções virutais da classe pai na filha, caso contrário a filha também será considerada abstrata. Exemplo: #include <iostream> using namespace std; class pai { virtual int funcao() = 0; }; class filho : pai { }; int main() { filho teste; cout<<"Hello World"; return 0; } Dá o mesmo erro, porque "pai" é abstrata e "filho", derivada de "pai", não implementou a função "funcao", e, portanto, é considerada abstrata também. Para consertar, basta implementar a função virtual: #include <iostream> using namespace std; class pai { virtual int funcao() = 0; }; class filho : pai { int funcao() {return 0;} }; int main() { filho teste; cout<<"Hello World"; return 0; } Agora não dá mais o erro. Espero ter ajudado.
  2. Dentro desse "wihle", faça uma lógica para verificar se o número é maior que zero ou menor. Se for maior, você soma ao num1, se for menor, você soma ao num2.
  3. Não sei se é a melhor solução, mas baseado no seu código fiz a seguinte solução. Testei e parece funcionar. A ideia e você verificar se um número já existe antes de adicioná-lo a vetor2. Alternativamente você poderia já eliminar os repetidos no laço de leitura. #include <iostream> #include <string.h> using namespace std; int main(void) { int i, j, vetor[10], vetor2[10], index = 0; bool achei = false; for(i=0 ; i<10; i++) { printf("%i - Digite um numero: ", i+1); scanf("%i", &vetor[i]); } memset (vetor2, 0, sizeof(int)*10); //zera o vetor 2 for(i=0; i<10; i++) { for(j=0; j<10 ; j++) //procura por valores repetidos { if (vetor[i] == vetor2[j]) //achei um valor que já existe no vetor2[j] { achei = true; break; } } if (!achei) vetor2[i] = vetor[i]; // se não achei o número, então posso adicioná-lo ao vetor2. achei = false; } for(i=0 ; i<10; i++) printf("%i-", vetor2[i]); return 0; }
  4. No seu código está faltando o índice "i" do vetor "vet". Talvez você tenha colocado e na hora de postar sumiu, de todo modo: (...) vet[i]=rand()%1000; (...) if (vet[j]<vet[i]) { aux=vet[i]; vet[i]=vet[j]; vet[j]=aux; } (...) Use o "<>" para postar o código e evitar esse tipo de erro.
  5. A implementação da função vai variar conforme o compilador. Nesse site você pode pesquisar, é só digitar o nome da função: https://code.woboq.org/
  6. Não tenho qualquer experiência com LPCXpresso, mas acho que a função UART0_IRQHANDLER lê apenas um byte por vez e LPC_UART0->RBR retorna apenas o byte que está sendo lido no momento. você pode resolver se torna as variáveis globais. Veja se assim funciona. unsigned char Buffer_RX[]={" "}; int i = 0; void UART0_IRQHandler() { if (i < 3) { Buffer_RX[i] = LPC_UART0->RBR; i++; } while(!(LPC_UART0->LSR&(1<<5))); LPC_UART0->THR = Buffer_RX[0]; }
  7. Mostre o código de como é feita a leitura por favor.
  8. Tem alguns erros na sua função conc.Tenta isso: void conc(char a[], char b[], char c[]) { int i,k; for (i=0; i<3; ++i){c[i]=a[i];} //Faltou utilizar o índice [i], lembrando que o indíce vai até no máximo 2. Além disso, não precisa colocar o tipo (char) na frente. Por fim, as variáveis dos parâmetros da função são a, b e não pf, p1, p2 for (k=0; k<3; ++k){c[k+3]=b[k];} //De novo, não pcolocar o tipo (char) na frente e o nome das variíaveis são c e b. }
  9. Acredito que as ultimas duas posições do string convertido (convertido[1] e convertido[2]) sejam sempre nulas, por isso as duas linhas em branco são mostradas. Tenta assim é veja se dar certo: if (stserial == true) { Serial.println(convertido[0]); convertido=""; stserial = false; } Provavelmente o rotina de leitura da serial lê apenas um char por vez. Mas não tenho certeza, pois não tenho nenhuma experiência com arduino - nunca nem vi um de perto.
  10. você poderia tentar usar algum site com hospedagem gratuita que ofereça solução de banco de dados, aí não precisaria se preocupar em criar um servidor você mesmo.
  11. você deve usar begin/end no laço para estabelecer quais linhas de código serão repetidas. For I:= 1 to funcionarios do Begin (...) End; você também deve usar arrays para armazenar as idades, sexo e experiência, pois acho que é isso que o problema pede (armazenar os dados entrados). Seria interessante usar um STRUCT: type Candidato = record sexo : char; experiencia: char; idade : integer; end; var candidatos : array [1..100] of Candidato; você leria os dados assim no laço: Program programa; type Candidato = record sexo : char; experiencia: char; idade : integer; end; var candidatos : array [1..1000] of Candidato; i: integer; begin writeln('Hello, world!'); i: = 1; Repeat Writeln ('Entre com a idade do funcionario'); readln(idade); candidatos[i].idade = idade; i := i + 1; Until idade = 0; end. Tente alterar para ler o resto das variáveis.
  12. for(l=0;l<4;l++){ for( c=0;c<4;c++){ cuidado, a matriz que você declarou só vai de 0 até 2 (3 elementos), o certo seria l<3 / c<3. Na função altera, não precisa do laço, basta fazer: void altera(int linha,int coluna){ a[linha][coluna]=ca; }
  13. Tem um erro de lógica nesta parte, especificamente quando a temperatura for exatamente 35. Assim fica melhor, eu acho: if (Temperatura < 35) digitalWrite(RelePin, HIGH) else digitalWrite(RelePin, LOW); Mas não sei se isto é a causa do erro...
  14. Seriam necessários 3 vetores. O principal: Vetor1 O secundário: Vetor2 Um para armazenar as somas: Soma Eu faria em duas etapas. 1. Identificar, através de um laço, quais elementos diferentes tem no vetor principal (Vetor1) e os armazenaria em outro vetor (vetor2) - que terá tamanho igual ou menor que o principal. No exemplo do problema, seria criado um vetor com os seguintes elementos: vetor2 = [5, 4, 3, 18]; 2. Identificado os elementos únicos, varrer o vetor principal (Vetor1) procurando pelos elementos do vetor2 e ir somando +1 a cada elemento encontrado. O resultado seria armazenado no vetor Soma. No exemplo, o resultado seria Soma=[2, 3, 2,3]; Obs.: ao interagir com vetores, deve-se fornecer o índice. Então, para ler o vetor de entrada, o correto seria: For i:=1 to 5 do Begin Writeln ( 'digite o número da posição ' , i ); Readln (vetor[i]); End;
  15. o if (x < tam) é para evitar que não tente trocar uma letra de uma posição maior que o nome entrado, por exemplo, um trocar a letra da posição 7 de um nome que só tem 6 letras.
  16. Veja se isso resolve: #include <stdio.h> #include <string.h> int main() { char nome[10]; int tam,x[2]={0},i=0,j=0,qt; char a[10],op; int temp; puts("entre com um nome"); fflush(stdin); gets(nome); tam=strlen(nome); for(i=0;i<2;i++) { puts("\n entre com as posiçao que deseja alterar: "); fflush(stdin); scanf("%i",&x[i]); printf(" \n qual caracetere deseja colocar:"); fflush(stdin); scanf("%s",&a[i]); } for (i=0;i<2; i++) { if (x[i] < tam) nome[x[i]] = a[i]; } printf("\n %s",nome); return 0; }
  17. Para ordenar/comparar datas, você tem que comparar primeiro o ano, depois o mês e por fim o dia. Veja se assim funcionar, não tive como testar eu mesmo: public int compareTo(Data d) { if(this.getAno() > d.getAno()){ return 1; } if(this.getAno() < d.getAno()){ return -1; } if(this.getMes() > d.getMes()){ return 1; } if(this.getMes() < d.getMes()){ return -1; } if(this.getDia() > d.getDia()){ return 1; } if(this.getDia() < d.getDia()){ return -1; } if(this.getHora().getHora() > d.getHora().getHora()){ return 1; } if(this.getHora().getHora() < d.getHora().getHora()){ return -1; } return 0; }
  18. Acredito que estão faltando alguns "else" no seu código, pois do jeito que está, a função saque sempre é invocada.Tenta assim: printf("Digite o numero da sua conta:\n\n"); scanf("%d", &nmrConta); printf("Informe o valor de saque: "); scanf("%f", &aux); conta = busca(Lista, nmrConta); if(conta == NULL) printf("Conta não encontrada!\n\n"); else if(conta->saldo < 0) printf("Saldo negativo!\n"); else if(aux > conta->saldo) printf("Saldo insuficiente!\n"); else if(aux < 0) printf("Digite um valor positivo."); else saque(Lista, nmrConta, aux); break;
  19. você tem que fazer laços No primeiro, faça um for variando i de 1 até n, com incremento 1 (i++) e vai somando (soma += i) No terceiro, faça um for variando i de 1 até (2n-1), com increment 2 (i+=2) e vai somando (soma+=i) No segundo, faça um for variando i de 1 até (2n-1), com incremento 1 (i+=1) e faça uma lógica para verificar se o número é par ou impar. Se for impar, soma+=i, se for par soma-=i
  20. Na primeira imagem o código está errado, está faltando "return r;" na função. De todo modo, assumindo que esteja correta, o operando "&" equivale ao "and", ele opera bit a bit, como uma mascará. Quando ambos os bits, forem 1, o resultado é 1, caso contrário é zero 82 em binário é 1010010 20 em binário é 0010100 fazendo & = 0010000, ou 16 em decimal O único que ficou 1 foi o 3o bit, contando da esquerda para direita, pois era o único que era 1 nos dois números. Não sei se expliquei muito bem, mas você pode testar na calculadora do windows em modo programador... adicionado 5 minutos depois No segundo exemplo, a sub rotina "funcao" verifica se o número é menor que 6 e, caso positivo, adiciona +1 ao número e repete novamente (recursividade), até que o numero fique igual a 6. Então, o resultado será sempre 6, desde que o número inicial seja menor que 6.
  21. Acho que depende do compilador, qual você está usando?
  22. Acredito que a solução seria algo mais ou menos assim (não tive como testar): #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> int main() { char ch; bool tecla_a = false; while(!tecla_a)//O QUE EU USO AQUI? { printf("1001"); if (kbhit()) { ch=getch(); if ((ch==65) || (ch==97)) tecla_a = true; //65 é o código ASCII de "A" e 97 é o do "a" } } }
  23. Deve estar estourando o range da variável. Muda o tipo da variável soma para unsigned long: unsigned long soma=0; E quando for imprimir na tela;: printf("\nSoma: %u",soma);
  24. Tenta algo assim (não testado): int primo(int n){ int div=0, i; for(i=2;i<=n/2;i++){ //divide cada um dos numeros passados por 2 ate n/2 if(n%i==0) return 0; //se achar pelo menos um divsor, já é considerado não primo } return 1; //completou o laço e não achou nenhum divsor? é primo com certeza }
  25. Como disse, é questão de adequar as chaves { }. Após o for(....) você deve colocar um { se for executar mais de linha de código dentro do laço e posteriormente fechar com um }. Acredito que assim irá funcionar: #include<conio.h> #include<stdio.h> #include<math.h> int main () { int a[20], i, contap, conta, aux, h, x; contap = 0; printf("Entre com os numeros para os vetores:"); for (i=0; i < 20; i++) scanf ("%d", &a[i]); for (i = 0; i < 20; i++) { aux = a[i]; conta = 0; for(h = 1; h <= aux; h++) { x = aux % h; if(x==0) conta = conta + 1; } if( conta == 2) contap = contap + 1; } printf ("O total de numeros primos no vetor eh: %d", contap); }

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!