Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Cristina2000

C RESOLVIDO Erro na lógica programa

Recommended Posts

Olá 

Bom Dia

Estou com um problema neste programa. 

Deve-se entrar com quantos números a sequência deve ter (n) O programa deve parar de aceitar novas entradas

quando chegar a n e mostrar quantos números iguais essa sequencia tem:

Ex:  n=8          55533322  A sequencia tem 3 numeros iguais a 5

                                         A sequencia tem 3 numeros iguais a 3

                                         A sequencia tem 2 numeros iguais a 2

O contador não está funcionando. Ele não para com n numeros. 

int n, num, num1=0, cont=0, cont1=1;
    printf("Digite n\n");
    scanf("%d", &n);
    printf("Digite %d numeros\n", n);
    while(cont<n){
                  scanf("%d", &num);                
                  if(num==num1)
                  cont1++;                               
                  else
                  printf("A sequencia tem %d numeros iguais a %d\n", cont1, num);
                  num1=num;
                  cont++;                                                     
                  }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que acontece aí é que as sequencias podem ter algarismos diferentes

Por exemplo

55533555, tem 8 algarismos

teríamos 1 sequencia de 5 com 3 algarismos

1 sequencia de 3 com 2 algarismos

1 sequencia de 5 com 3 algarismos

 

Primeiro, recomendaria trocar o while por um for, pois você já sabe exatamente quantas iterações serão feitas (n).
Segundo, detectar a mudança de algarismo, que determina o início de uma nova sequencia. Cada vez que uma nova sequencia começar o contador deve ser reinicializado. Como detectar que a sequencia iniciou ? Ou mudou ? Se o algarismo da  iteração anterior é diferente do algarismo corrente. Inicialize uma variável seq_ant com -1 e toda vez que for diferente do atual, começou uma nova sequencia. Reinicie o contador, atualize o seq_ant que passa a ser o atual, exiba o resultado parcial (fim de uma sequencia e início de outra.


Eis a dica. Se precisar de mais apoio, é só gritar.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

adicionei mais comandos ao código e explicitei melhor a sua lógica@Cristina2000

#include <stdio.h>
int main( void ){
int n, num, 
		num1=0, 
		cont=0, 
		cont1=1;
		
    printf( "Digite n\n" );
    scanf( "%d", &n );
    
    printf("Digite %d numeros\n", n);
    scanf( "%d", &num );
    num1 = num;
    cont++;
    
    while( cont < n ){
    	scanf( "%d", &num );             
        if( num == num1 )
        	cont1++;
        else{
        	if( cont1 > 1 ){
        		printf( "A sequencia tem %d numeros iguais a %d\n", cont1, num );
        		cont1 = 1;
        		}
        	num1 = num;       
            }
         cont++;
         }
	return 0;
    }

Testei para: 4 1 2 2 1 a resposta foi {2 e 1} então funcionou para esse caso 50% certo. Pense qual foi o erro mais quais outros encontrar.

Editado por AnsiC
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá AnsiC e Boko Moko, obrigada.

Deu certo!

abs

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×