Ir ao conteúdo
  • Cadastre-se

Flávio Pedroza

Membro Pleno
  • Posts

    2.068
  • Cadastrado em

  • Última visita

Tópicos solucionados

  1. O post de Flávio Pedroza em Algoritmo pra reconhecer musica foi marcado como solução   
    #include <stdio.h> #include <stdlib.h> int main(void) { char baseDadosMusicasTitulos[10][30] = {"Ring of fire", "Hurt", "Brianstorm", "Do me a favour", "Turn it again", "I walk the line", "Wet sand", "Aint no grave", "Riders in the sky", "The man comes around"}; int baseDadosMusicasCodificadas[10][40] = {{10,24,33,78,54,92,10,29,36,96,2,66,87,54,-1}, {57,33,20,2,99,87,120,33,69,87,41,1,97,41,23,127,17,-1}, {74,11,20,36,87,62,36,96,77,42,36,38,77,21,22,9,77,8,-1}, {1,22,74,56,98,125,37,32,75,99,2,3,40,-1}, {95,43,55,7,91,63,53,10,24,44,81,6,-1}, {87,64,28,33,40,41,94,72,63,104,99,115,33,-1}, {5,65,95,21,30,14,107,51,50,67,111,121,34,72,91,55,-1}, {64,63,22,78,18,99,21,123,4,95,9,42,32,14,17,52,-1}, {7,66,12,20,87,119,32,44,89,21,3,89,16,4,58,1,1,57,10,21,-1}, {17,10,13,1,7,23,36,54,124,100,32,20,27,89,66,32,-1}}; int NA,vet[10],i,j, k, vetm[10], count = 0; for (int i=0; i < 10; i++) { printf("Musica: %d.%s\n",i+1, baseDadosMusicasTitulos[i]); } printf("Digite o tamanho da amostra da musica:"); scanf("%d",&NA); for(i=0; i<NA; i++){ printf("Digite os numeros da amostra da musica:"); scanf("%d",&vet[i]); } for(i=0; i<10; i++){ for(j=0; j<30; j++){ count = 0; for(k=0; k<NA; k++){ if (vet[k] == baseDadosMusicasCodificadas[i][k+j]) { count++; } else break; } if (count == NA) break; //achou a musica } if (count == NA) break; } //if (vetm[10] == baseDadosMusicasCodificadas[10][40] && baseDadosMusicasTitulos[10][30]){ if (count == NA) printf("A musica econtrada e : %s" , baseDadosMusicasTitulos[i]); else printf("A musica nao foi encontrada"); return 0; }  
  2. O post de Flávio Pedroza em Exercício Funções - Linguagem C foi marcado como solução   
    O "switch" tem que ficar dentro do laço. Também.
    int main () { int i,x,y,z; for (i=0;i<5;i++) { x=LePositivo(); y= LePositivo(); z= LePositivo(); switch (TipoTriangulo(x,y,z)) { case 1: printf ("Equilatero\n"); break; case 2: printf ("Isosceles\n"); break; case 3: printf ("Escaleno\n"); break; } } }  
  3. O post de Flávio Pedroza em Estrutura de dados - Pilha foi marcado como solução   
    Acredito que sim
    //p1 = 1 2 3 4 | p2 = | p3 = int temp = desempilha(p1); //p1 = 1 2 3 | p2 = | p3 = empilha(p2, temp); //p1 = 1 2 3 | p2 = 4 | p3 = empilha(p3, desempilha(p1)); //p1 = 1 2 | p2 = 4 | p3 = 3 empilha(p2, desempilha(p1)); //p1 = 1 | p2 = 4 2 | p3 = 3 temp = desempilha(p1); //p1 = | p2 = 4 2 | p3 = 3 empilha(p3,temp); //p1 = | p2 = 4 2 | p3 = 3 1 empilha(p1, desempilha(p2)); //p1 = 2 | p2 = 4 | p3 = 3 1 empilha(p3, desempilha(p2)); //p1 = 2 | p2 = | p3 = 3 1 4 empilha(p3, desempilha(p1)); //p1 = | p2 = | p3 = 3 1 4 2
  4. O post de Flávio Pedroza em Incompatible type for argument 1 foi marcado como solução   
    struct maquina *Buscamaiscara (struct maquina p[], int *k) //faltou o []  
  5. O post de Flávio Pedroza em Alocação dinâmica para não desperdiçar memória foi marcado como solução   
    O que você procura é o realloc, mas recomendo ao invés de incrementar o tamanho de um em um, faça em etapas, de dez em dez. E no final você usa realloc mais uma vez para reduzir o tamanho para a quantidade exata que o usuário digitou.
    Edit: não esqueça de chamar free no final.
  6. O post de Flávio Pedroza em PILHA COM VETOR foi marcado como solução   
    Tenta assim então:
     
    void insere(int *vetor){ if (topo > 4){ printf("Pilha cheia/n"); }else{ printf("Digite o valor que quer incluir: "); scanf("%d", &pilha[topo]); topo++; } }  
  7. O post de Flávio Pedroza em Código com dificuldades em impressão de nomes em ordem algabética foi marcado como solução   
    Acho que estão faltando alguns fornecer o índice de alguns arrays no seu código. Por exemplo:
    Hash* hash_cria(void){ Hash* tab = (Hash*)malloc(sizeof(Hash)); int i; for(i = 0; i < N; i++){ tab->v[i] = NULL; //faltou [i] aqui } return tab; } void hash_imprime (Hash* tab){ int i; for(i = 0; i < N; i++){ if(tab->v[i] != NULL){ printf("Matricula: %d | Nome: %s | Departamento: %c | Salário: %.1f\n", tab->v[i]->matricula, tab->v[i]-> nome, tab->v[i]->departamento, tab->v[i]-> salario); } } }  Use essa função para ordenar pelo nome antes de imprimir:
    void hash_ordena (Hash* tab){ int i,j; funcionario* temp; for(i = 0; i < N-1; i++) for (j = i+1; j < N ; j++) if ((tab->v[i] != NULL) && (tab->v[j] != NULL) && (strcmp(tab->v[i]->nome,tab->v[j]->nome) > 0)) { temp = tab->v[i]; tab->v[i] = tab->v[j]; tab->v[j] = temp; } }  
  8. O post de Flávio Pedroza em Introduzindo estrutura switch – case. foi marcado como solução   
    Usar intervalos no switch, acredito, não faz parte do padrão C. Portanto, a solução abaixo pode não funcionar em todo os compiladores. De todo modo, use "..." para definir intervalos:
    #include <stdio.h> #include <stdlib.h> int main (void) { char ch; printf ("Digite uma tecla e confirme com <ENTER >: ") ; ch = getchar() ; system ("cls") ; printf ("\nResultado\n"); switch (ch) { case 'a'...'z': printf ("voce digitou uma letra minuscula !\n"); break; case 'A'...'Z': printf ("voce digitou uma letra maiuscula !\n") ; break; case '0'...'9': printf ("voce digitou um digito !\n"); break; default: printf ("voce digitou um caracter especial !\n"); break; } return 0; }  
  9. O post de Flávio Pedroza em Algoritmo em C que leia a pena números inteiros pares e ímpares foi marcado como solução   
    Para acusar erro no caso de letras, basta você checar o retorno da função scanf. Se for diferente de 1, é porque foi digitado algo diferente de um número:
    if (scanf ("%d",&nr) != 1) { printf ("\nErro, apenas numeros"); } else { (...) }; Para prevenir números fracionários é mais complicado. Eu recomendo ler o número do tipo ponto flutuante e verificar se ele é igual a sua parte inteira, caso contrário o número tem parte fracionária.
    float nraux; //vai precisar dessa variavel if (scanf ("%f",&nraux) != 1) //você vai ler tipo float { printf ("\nErro, apenas numeros"); } else { nr = nraux; // transformar de float para inteiro (ignorar parte decimal) if (nr != nraux) // o número inteiro é diferento do float, então existe parte decimal { printf ("\nErro, apenas numeros inteiros"); } else { //O número é ok! //O código para verificar se o número é par ou impar vai aqui } }  
  10. O post de Flávio Pedroza em operação com vetores. condicional. operadores lógicos. faeterj. fac. av2. 2017. foi marcado como solução   
    você definiu X como 200, sendo que o vetore vLoj e vlojas só têm dez elementos.
    for (i=0;i<X;i++){ vlojas [i]=buscaI(vLoj,X,viAuxc[i]); } Tem que resolver isso.
      Coloque também a lógica para quebrar o laço caso o código seja menor que zero, conforme solicitado no enunciado:
    for(i=0;i<X;i++) { printf("\n\n\nCodigo do produto...............: "); scanf("%d",&produto); if (produto < 0) break; Testei com cinco elementos e funcionou:
    Loja.....: 20 / Estado...: 1 / Imposto..: 10.00 Loja.....: 8 / Estado...: 2 / Imposto..: 1.20 Loja.....: 34 / Estado...: 2 / Imposto..: 1.20 Loja.....: 22 / Estado...: 5 / Imposto..: 6.00 Loja.....: 14 / Estado...: 3 / Imposto..: 3.40 Loja.....: 52 / Estado...: 4 / Imposto..: 9.30 Loja.....: 16 / Estado...: 6 / Imposto..: 3.10 Loja.....: 55 / Estado...: 4 / Imposto..: 9.30 Loja.....: 41 / Estado...: 5 / Imposto..: 6.00 Loja.....: 28 / Estado...: 6 / Imposto..: 3.10 Produto..: 203 / Valor....: R$110.00 Produto..: 120 / Valor....: R$3.00 Produto..: 340 / Valor....: R$25.00 Produto..: 220 / Valor....: R$70.00 Codigo do produto...............: 203 Valor do produto................: R$ 110.00 Quantidade......................:100 Valor da compra ................: R$ 11000.00 Loja............................:20 Valor do Imposto no estado 20...: 10.00 Valor sem imposto...............: 10000.00 Codigo do produto...............: 203 Valor do produto................: R$ 110.00 Quantidade......................:100 Valor da compra ................: R$ 11000.00 Loja............................:20 Valor do Imposto no estado 20...: 10.00 Valor sem imposto...............: 10000.00 Codigo do produto...............: 203 Valor do produto................: R$ 110.00 Quantidade......................:100 Valor da compra ................: R$ 11000.00 Loja............................:9 8 Valor do Imposto no estado 8...: 1.20 Valor sem imposto...............: 10869.57 Codigo do produto...............: 120 Valor do produto................: R$ 3.00 Quantidade......................:100 Valor da compra ................: R$ 300.00 Loja............................:8 Valor do Imposto no estado 8...: 1.20 Valor sem imposto...............: 296.44 Codigo do produto...............: 203 Valor do produto................: R$ 110.00 Quantidade......................:100 Valor da compra ................: R$ 11000.00 Loja............................:8 Valor do Imposto no estado 8...: 1.20 Valor sem imposto...............: 10869.57 Loja: 20 / Total: 10000.00 Loja: 20 / Total: 10000.00 Loja: 8 / Total: 10869.57 Loja: 8 / Total: 296.44 Loja: 8 / Total: 10869.57 Faturamento liquido da loja 0..: R$ 20000.00 Faturamento liquido da loja 0..: R$ 22035.57 Faturamento liquido da loja 1..: R$ 0.00 Faturamento liquido da loja 1..: R$ 0.00 Faturamento liquido da loja 1..: R$ 0.00 Faturamento liquido da loja -1..: R$ 0.00 Faturamento liquido da loja -1..: R$ 0.00 Faturamento liquido da loja -1..: R$ 0.00 Faturamento liquido da loja -1..: R$ 0.00 Faturamento liquido da loja -1..: R$ 0.00 Apenas tem um pequeno erro na hora de imprimir o resultado, mas se você somar verá estão corretos os resultados. Tenta resolver, se não conseguir posta aqui.
    Quando tento mais de 10 elementos, dá erro de segmentação.
     
     
     
     
       
  11. O post de Flávio Pedroza em Funçao com ponteiros, vetores, laços e condicionais. FAETERJ. 2017. FAC. AV2. foi marcado como solução   
    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))); }  
  12. O post de Flávio Pedroza em C++ Problemas com leitura de arquivo txt foi marcado como solução   
    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; }  
  13. O post de Flávio Pedroza em Como saber o funcionamento de uma funcao foi marcado como solução   
    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/
     
     
     
  14. O post de Flávio Pedroza em Quero fazer ordenação de data/hora, usando compareTo mas não pega foi marcado como solução   
    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; }  

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!