Ir ao conteúdo
  • Cadastre-se

C Separar caracteres em C


Sskrainer

Posts recomendados

Olá, tenho uma dúvida em relação a separar os caracteres para posteriormente usa-los individualmentes. 

Ex: 264362, separa-lo e multiplicar o primeiro caractere por 4 o segundo por 5 e assim por diante...

Tentei usar String, mas tive dificuldade de visualizar.

Desde já, muito obtigada !!!

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

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

int main(void){

int soma1, resto1;
char CPF[11];

printf("Insira o CPF (SEM PONTUACAO) para a validacao:");
scanf("s", &CPF);
printf("\nValidando...\n"); 
 
	
	
soma1 == CPF[1]*10 + CPF[2]*9 + CPF[3]*8 +CPF[4]*7 + CPF[5]*6 + CPF[6]*5 +CPF[7]*4 + CPF[8]*3 + CPF[9]*2;
resto1 == (soma1*10)/11;

if(resto1 == 10) resto1=1;
	
printf("%f", resto1);	
	
	
system("pause");
return 0;	
}

 

agora, Sskrainer disse:

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

int main(void){

int soma1, resto1;
char CPF[11];

printf("Insira o CPF (SEM PONTUACAO) para a validacao:");
scanf("s", &CPF);
printf("\nValidando...\n"); 
 
	
	
soma1 == CPF[1]*10 + CPF[2]*9 + CPF[3]*8 +CPF[4]*7 + CPF[5]*6 + CPF[6]*5 +CPF[7]*4 + CPF[8]*3 + CPF[9]*2;
resto1 == (soma1*10)/11;

if(resto1 == 10) resto1=1;
	
printf("%f", resto1);	
	
	
system("pause");
return 0;	
}

 

Não sei o que está dando errado...

 

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

44 minutos atrás, Sskrainer disse:

scanf("s", &CPF);

No primeiro argumento do scanf faltou o operador %. E como você quer ler uma string não use o operador &.

 

scanf("%s", CPF);

 

44 minutos atrás, Sskrainer disse:

soma1 == CPF[1]*10 + CPF[2]*9...

Em C o operador de atribuição é o = e o de comparação é == (duplo). Então aí você tem que usar apenas um = para atribuir. Outra coisa é o acesso aos caracteres de uma string, aí você está começando pelo índice 1 (CPF[1]). O primeiro elemento de uma string é 0, então essa linha teria que começar assim,

 

soma1 = CPF[0]*10 + CPF[1]*9... 

 

Mas tem mais um detalhe, assim você estará calculando char com número, então teria converter o char para número, pode ser assim.

 

soma1 = (CPF[0]-'0')*10 + (CPF[1]-'0')*9... 

 

Seria mais fácil usar um loop aí em vez de digitar um por um.

 

44 minutos atrás, Sskrainer disse:

resto1 == (soma1*10)/11;

Cometeu o mesmo erro da atribuição da soma ao usar o operador de comparação no lugar da atribuição. E a variável resto está declarada como int, não devia ser float?

  • Curtir 1
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...