Ir ao conteúdo

Posts recomendados

Postado

como resolver um problema de frequencia de vetores ?

no problema, o usuário deve entrar com 20  números e no final deve ser imprimido os numeros que não foram repetidos e imprimir aqueles que  foram repetidos UMA vez.

ex: 20,30,30,30,20,2,3,2.

imprimi : 20,30,2,3.

 

meu código ficou assim, mas ainda não está dandocerto

#include <stdio.h>
#include <stdlib.h>

// questao 3
int main(int argc, char** argv)
{
    int i,j,compara;
    float num[20];
  printf("DIGITE UM NUMEROS\n");
    for(i=0;i<=20;i++){
        scanf("%f",&num);
    }
    for(i=0;i<=20;i++){
        i=j;
        num[j]=num;
    }
    printf("%.2f",num[0]);
    for(i=1;i<=20;i++){
        compara=0;
        for(j=0;j<i;j++){
            if(num==num[j]){
                compara++;
            }
        }
    }
    if(compara==0){
        printf("%.2f\n",num[j]);
    }
    system("PAUSE");
    
    
    return 0;
}

  • Curtir 1
Postado

@gabrielleletice    seu código está quase certo sua ideia foi boa em colocar essa

variável compara como flag para ver se o número se repete, aí usei ela também para

ver a quantidade de vezes que o número se repete.  

aqui seu código  com alguma modificações :

#include <stdio.h>
#include <stdlib.h>
/* questao 3*/
int main(int argc, char** argv)
{
    int i,j,compara,aux;
    float num[20];/*isto é um vetor com vinte posições*/
  printf("DIGITE VINTE NUMEROS -- APENAS NUMEROS--PODE SER NEGATIVOS OU COM PONTO DECIMAL\n");
  printf("                     -- LETRAS OU NUMEROS COM VIRGULA CAUSAM ERRO\n");
    for(i=0;i<20;i++){
        printf("Digite O %d",i+1);
        printf(" Numero --> ");
        scanf("%f",&num[i]);/*pega os numeros e ja coloca no vetor*/
    }
    printf("\n\nNumeros Que Nao Repetiram...!\n");
    for(i=0;i<20;i++){      /*vai testar todos os numeros do vetor*/
        compara=0;          /*zera a flag para comparacoes*/
        for(j=0;j<20;j++){  /*verifica cada numero no vetor*/
            if(j!=i)        /*se o numero nao é ele mesmo*/
            {
              if(num[i]==num[j]){/*se algum numero for igual ao outro*/
                compara++;       /*soma a flag*/
              }
            }
        }
        if(compara==0){              /*se a flag for zero é porque o numero nao repetiu*/
          printf("   %.2f\n",num[i]);/*escreve o numero*/
        }
    }
    printf("\nNumeros Que Repetiram So Uma Vez...!\n");
    for(i=0;i<20;i++){
        compara=0;
        for(j=0;j<20;j++){
            if(j!=i)
            {
              if(num[i]==num[j]){     /*se algum numero for igual*/
                compara++;            /*soma a flag */
                if(compara==1){       /*se o numero repetiu apenas uma vez*/
                  aux=i;              /*armazena a posicao do numero*/
                }
              }
            }
        }
        if(compara==1){/*se numero repetiu apenas uma vez*/
          printf("   %.2f\n",num[i]);/*escreve o numero*/
          num[aux]=0;/*zera o numero no vetor na posicao indicada por aux*/
        }
    }
    printf("\n");
    system("PAUSE");

    return 0;
}

 

  • Curtir 2
  • 3 semanas depois...
Postado

@gabrielleletice      você quer que ele imprima os números que saíram  1 vez e os

que saíram mais de uma vez, é preciso fazer algumas modificações no algoritmo

e para facilitar coloquei mais um vetor .  então o código ficaria assim :

#include <stdio.h>
#include <stdlib.h>
/* questao 3*/
int main(int argc, char** argv)
{
    int i,j,compara,aux,aux2,z;
    float num [20];/*isto é um vetor com vinte posições*/
    float num2[20];
    z=0;
    printf("DIGITE VINTE NUMEROS -- APENAS NUMEROS--PODE SER NEGATIVOS OU COM PONTO DECIMAL\n");
    printf("                     -- LETRAS OU NUMEROS COM VIRGULA CAUSAM ERRO\n");
    for(i=0;i<20;i++){
        printf("Digite O %d",i+1);
        printf(" Numero --> ");
        scanf("%f",&num[i]);/*pega os numeros e ja coloca no vetor*/
        num2[i]=num[i];
        if(num[i]==0){z=1;}
    }
    printf("\n\nNumeros Que Nao Repetiram...!\n");
    for(i=0;i<20;i++){      /*vai testar todos os numeros do vetor*/
        compara=0;          /*zera a flag para comparacoes*/
        for(j=0;j<20;j++){  /*verifica cada numero no vetor*/
            if(j!=i)        /*se o numero nao é ele mesmo*/
            {
              if(num[i]==num[j]){/*se algum numero for igual ao outro*/
                compara++;       /*soma a flag*/
              }
            }
        }
        if(compara==0){              /*se a flag for zero é porque o numero nao repetiu*/
          /*printf("   %.2f\n",num[i]);/*escreve o numero*/
          num2[i]=0;
        }
    }
    printf("\nNumeros Que Repetiram So Uma Vez...!\n");
    for(i=0;i<20;i++){
        compara=0;
        for(j=0;j<20;j++){
            if(j!=i)
            {
              if(num[i]==num[j]){     /*se algum numero for igual*/
                compara++;            /*soma a flag */
                if(compara==1){       /*se o numero repetiu apenas uma vez*/
                  aux=i;              /*armazena a posicao do numero*/
                  aux2=j;
                }
              }
            }
        }
        if(compara==1){/*se numero repetiu apenas uma vez*/
          printf("   %.2f\n",num[i]);/*escreve o numero*/
          num[aux]=0;/*zera o numero no vetor na posicao indicada por aux*/
          num2[i]=0;
          num2[aux2]=0;
        }
    }
    for(i=0;i<20;i++){
      for(j=0;j<20;j++){
        if(i != j){
          if(num2[j]==num2[i]){
            num2[i]=0;/*deletando os numeros que repetiram mais de uma vez*/
          }
        }
      }
    }
    printf("\nNumeros Que Repetiram Mais De  Uma Vez...!\n");
    if(z==1){printf(" 0 - ");}
    for(i=0;i<20;i++){
      if(num2[i] != 0){printf("%.2f\n",num2[i]);}
    }
    printf("\n");
    system("PAUSE");

    return 0;
}

 

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

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!