Ir ao conteúdo
  • Cadastre-se

C Não estou conseguindo retirar os 0 de uma frase


diogo moura

Posts recomendados

Bom estou fazendo uma questão que se precisa retirar os zeros de uma palavra, eu consegui até ai o problema é que se palavra for 100 ele vai printar só 1 por que eu retirei os zeros, que vai estar errado, vou colocar o link da questão pra vocês entenderem melhor.

 

Tela do link:

tela_link.jpg

 

 Link da questão: URI 2714. 

 

Código atual:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char** argv)
{
	char senha[80];
	int teste;
	scanf("%d", &teste);
	for(int i = 0; i < teste; i++)
	{
		scanf("%s", senha);
		if(strlen(senha) == 20)
		{
			if(isupper(senha[0]) && isupper(senha[1]))
			{
				for(int j = 0; j < strlen(senha); j++)
				{
					if(senha[j] != '0' && senha[j] != 'R' && senha[j] != 'A')
					{
						printf("%c", senha[j]);
					}
				}
				printf("\n");
			}
			else
			{
				printf("INVALID DATA\n");
			}
		}
		else
		{
			printf("INVALID DATA\n");
		}
	}
	return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@diogo moura   quando ele está retirando os zeros, ele precisa verificar se o próximo caractere não é zero, então daí para frente precisa imprimir todo o restante, então seu programa está bom , mas retirava todos os zeros que estava na string,  então acrescentei algumas linhas para resolver isso, e ele está mostrando os resultados certos, de acordo com a imagem  dos resultados que está no site,   veja como ficou seu código :

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
    char senha[80];
    int teste,i,j,flag;
    scanf("%d", &teste);
    for(i = 0; i < teste; i++)
    {
        scanf("%s",& senha);
        flag=0;
        if(strlen(senha) == 20)
        {
            if(isupper(senha[0]) && isupper(senha[1]))
            {
                for(j = 0; j < strlen(senha); j++)
                {
                    if(flag==0)
                    {
                        if(j > 1 && senha[j+1]!='0')flag=1;
                        if(senha[j] != '0' && senha[j] != 'R' && senha[j] != 'A')
                        {
                            printf("%c", senha[j]);
                        }
                    }
                    else
                    {
                        printf("%c", senha[j]);
                    }
                }
                printf("\n");
            }
            else
            {
            printf("INVALID DATA\n");
            }
        }
        else
        {
            printf("INVALID DATA\n");
        }
    }
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá a todos.

 

Apenas uma dica: para facilitar os testes, é possível copiar a entrada de dados e colar no console (pelo menos aqui no Dev++ funciona), ex.:

 

Clica com o botão direito do mouse na "barra de título" da janela. Vai em "Editar/Colar".

 

console1.jpg

 

console2.jpg

 

 

Entrada utilizada:

7
RA000000000000000001
RA000000000000000100
RA000000000000012345
RA123456789012345678
ra000000000000000333
RA12345
12345678901234567890

obs.: deixem uma linha em branco na última linha, para servir como o "ENTER" da última linha (caso contrário, após colar vai ficar faltando mais um ENTER)

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!