Ir ao conteúdo

Flávio Pedroza

Membro Pleno
  • Posts

    2.145
  • Cadastrado em

  • Última visita

Tudo que Flávio Pedroza postou

  1. Acredito que esta solução está funcionando. Basta você adicionar a implementa para tratamento de códigos inexistentes (quando busca retornar <0). Atente também para o fato da função "zera" aceitar apenas vetores do tipo float. Portanto, não pode usá-la para vetores do tipo int; int main (void){ int i, cod, qtd, loj; int vPro[4], vLoj[10], vCod[10], vEst[10]; float vVal[4],vImp[6]; //zera (vPro,4); zera (vVal,4); //zera (vLoj,10); //zera (vCod,10); zera (vImp,6); carrega_prods (vPro,vVal,4); carrega_lojas (vLoj,vEst,10); carrega_est (vImp); while (1) { printf("\nCodigo do produto....:"); scanf("%d",&cod); if (cod < 0) break; i = busca (vPro, 4, cod); float preco = vVal[i]; //Preco do produto printf ("\nPreco:%f", preco); printf("\nQuantidade...........:"); scanf("%d",&qtd); printf("\nLoja.................:"); scanf("%d",&loj); i = busca (vLoj, 10, loj); printf ("\nLoja:%d", vLoj[i]); float imposto = vImp[vEst[i]-1]; // imposto printf ("\nImposto:%f", imposto); float faturamento = preco*qtd * (1 - (imposto/100)); printf ("\nFaturamento.......:%f", faturamento); } return 0; }
  2. float encontraMenor(int numEmp, float *vetorSal){ float menorSal=vetorSal[0]; int i; menorSal tem que ser float também, já que está comparando com outra variável do tipo float;
  3. void encontraDoisVals (int limInf, int limSup, int *dig1, int *dig2) { int n[2]; for (int i=0; i < 2; i++) { while (1) { printf("\nDigite um valor inteiro %d.......................: ", i+1); scanf("%d",&n[i]); if (n[i] < limInf) && (n[i] > limSup) break; } } *dig1=n[0]; *dig2=n[1]; } adicionado 2 minutos depois Alternativamente, se você puder ler os dois número de uma só vez: void encontraDoisVals (int limInf, int limSup, int *dig1, int *dig2) { do { printf("\nDigite dois valores inteiros.......................: "); scanf("%d %d",dig1, dig2); } while (((*dig1 >= limInf) && (*dig1 <= limSup)) || ((*dig2 >= limInf) && (*dig2 <= limSup))); }
  4. Eu faria assim: void encontraDoisVals (int limInf, int limSup, int *dig1, int *dig2) { int n[2]; for (int i=0; i < 2; i++) { do { printf("\nDigite um valor inteiro %d.......................: ", i+1); scanf("%d",&n[i]); } while ((n[i] >= limInf) && (n[i] <= limSup)); } *dig1=n[0]; *dig2=n[1]; }
  5. Como isrnick sugeriu, lenha os dados fora da função int main(void) { int agencia, dig1; int conta, dig2; while (1) // Loop infinito { //Botar aqui código para ler dados de entrada if (!agencia) break; //se agencia == 0 sai do laço neste ponto calcDigitos(&conta,&agencia,&dig1,&dig2); printf("\nAgencia:............. %d - %d",agencia,dig1); printf("\nConta:............... %d - %d",conta,dig2); } return 0; }
  6. Remova o ";", pois caso contrário o código entre {} não vai ser executado dentro do while. while (getline (inFile, line)) { i++; cout << line <<'\n'; cout << i << endl; }
  7. Se for um método puramente virtual (=0), não precisa colocar no CPP, caso contrário é como você disse no seu post inicial, fazer do mesmo jeito que um método normal.
  8. você tem que tirar o "[5]" do construtor do classe "player": :player(_simbolo, _nome, _escolhas, _numjogadas)
  9. "Porque que às vezes é usado . e noutras ->" Quando se usa variáveis do tipo ponteiros, derivadas de estruturas ou classes, você deve "de-referenciar" antes de acessar seu membros. Usar "->" é um forma de se fazer isso, porém não é obrigatório, a outras formas de se fazer isso. Veja o exemplo abaixo: #include <iostream> using namespace std; #define MAX_STRING 256 struct utilizador { unsigned long id; char nome[MAX_STRING + 1]; }; int main() { utilizador *teste = new utilizador();//variável do tipo apontador int a; //As formas abaixo são equivalentes para de-referenciar o ponteiro teste teste->id = 5; //com -> (*teste).id += 1; //com . (teste[0].id) += 2; //com [], útil quando se sabe que o variável na verdade é um vetor do tipo cout<<teste->id; return 0; } Tentar procurar algum tutorial na net sobre ponteiros, referência e de-referência
  10. Se você colocar "=0" o método fica virtual (e consequentmente a classe fica abstrata). class JogG { virtual void Lancar()=0; }; Não sei se era essa sua dúvida...
  11. 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.
  12. 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.
  13. 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; }
  14. 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.
  15. 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/
  16. 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]; }
  17. Mostre o código de como é feita a leitura por favor.
  18. 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. }
  19. 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.
  20. 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.
  21. 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.
  22. 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; }
  23. 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...
  24. 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;
  25. 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.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!