Ir ao conteúdo

C Problemas Com Variáveis Em C/C++


Ir à solução Resolvido por FranciscoMM22,

Posts recomendados

Postado

De começo já vou avisando que estou começando em C/C++.
Estou com um projeto de C/C++, ele está basicamente pronto, só está com um problema, três variáveis (CPF_Testados,CPF_Validos,CPF_Invalidos) não estão salvando dados para impressão.
Segue Prints:(A resposta do programa foi após três tentativas)
Screenshot_2.png.fb4b06cdad4894772c867d425cc71a49.pngScreenshot_1.png.ee0dcca7a5b00a68743d7cd519ccdf05.png
image.png.2cfb486204d271ae57a2e8192d27ba20.png

  • Obrigado 1
Postado

@FranciscoMM22     seria melhor se você postasse o código em forma de texto , pois na imagem não tem como copiar , e aí precisa digitar manualmente todo seu código ,  e essas variáveis não estão recebendo valor algum , por que para que elas recebam valor é preciso que entre dentro do if , mas as condições no if não estão deixando que isso aconteça     :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale>
#include <iostream>
using namespace std;
int main(){
    char xcpf[12];
    int cpf[12];
    int x,somador,digito1,digito2,result1,result2,valor,resposta,CPF_Testados,CPF_Validos,CPF_Invalidos;
    do{
        for(x=0;x<11;x++){
            cpf[ x]=0;
            xcpf[x]=0;
        }
        somador=0;digito1=0;result1=0;result2=0;valor=0;resposta=0;
        system("cls");
        setlocale(LC_ALL,"portuguese");
        printf("Digite O CPF Que Deseja Verificar : ");
        scanf("%s",xcpf);
        for(x=0;x<11;x++){
            cpf[x]=xcpf[x]-48;
        }
        somador=0;
        for(x=0;x<11;x++){
            somador=cpf[x]*(10-x);
        } 
        result1=somador%11;
        if((result1==0) || (result1==1)){
            digito1=0;
        }
        else{
            digito1=11-result1;
        }
        somador=0;
        //else{
        //    digito1=11-result1;
        // }
        for(x=0;x<11;x++){
            somador+=cpf[x]*(11-x);
        }
        valor = (somador/11)*11;
        result2=somador-valor;
        if((result2==0) || (result2==1)){
            digito2=0;
        }
        else{
            digito2=11-result2;
        }
        if((digito1==cpf[9]) && (digito2==cpf[10])){
            printf("\nO CPF Digitado É Válido !\n");
            CPF_Validos++;
            CPF_Testados++;
        }
        else{
            printf("\nAlgum Dígito Do CPF Está Errado Ou Não È Válido !\n");
            CPF_Invalidos++;
            CPF_Testados++;
        }
        printf("\n\n     Foram Testados ----: %.2f CPF's",CPF_Testados);
        printf("\n     Foram Válidos  ----: %.2f CPF's",CPF_Validos   );
        printf("\n     Foram Invalidos ---: %.2f CPF's",CPF_Invalidos );
        printf("\n\nDigite 1 Para Testar Outro CPF , Ou Digite 0 Para Sair\n");
        printf("\nSua Opção : ");
    }while(cin>>resposta && resposta==1 || CPF_Testados==20);
    printf("\nObrigado Por Utilizar O Programa !\n     Tecle !\n\n\n");
    getch();
    return 0;
}

 

Postado

@devair1010 Foi mal ai, foi meu primeiro post sobre esse assunto.
Sobre o que postou ali não adiantou muito, porém consegui arrumar trocando os 'printf' por 'cout' e colocando as variáveis antes do main, de qualquer maneira obrigado por ajudar.

  • Obrigado 1
Postado

@FranciscoMM22    Opa , se puder poste seu código para vermos como ficou e ajudar a outros que também precise .   porém a troca de printf por cout  vai dar na mesma ,  pois o quê êles fazem é a mesma coisa e as variáveis antes da main também  é a mesma coisa   , sendo que o que vai resolver mesmo são as condições para a execução dos comandos dentro do if .

  • Solução
Postado

@devair1010 Cara provavelmente é algum erro do compilador, porém eu estava usando o dev c/c++, portanto ai não sei, só fiz as alterações que falei, enfim, o código ficou assim:
 

#include <stdio.h> 
#include <locale.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

char xcpf[12];  
int cpf[12];  
int x,somador,digito1,result1,result2,digito2,valor,resposta,CPF_Testados,CPF_Validos,CPF_Invalidos;

main(){ 
do{
	//reiniciando variáveis
	for (x;x<11;x++){
		cpf[x] = 0;
		xcpf[x] = 0;
	}
	somador=0;digito1=0,result1=0;result2=0,digito2=0,valor=0,resposta=0;
	system ("cls");
	setlocale(LC_ALL, "Portuguese");
	printf("Digite O CPF Que Deseja Verificar:");  
	scanf(" %s",xcpf);  
  
	//Conversão De Char Para Int
	for(x=0;x<11;x++){  
		cpf[x]=xcpf[x]-48;  
	}  

	//1ºDigito Verificador
	somador=0;
	for(x=0;x<9;x++){  
		somador+=cpf[x]*(10-x);  
	}  
	result1=somador%11;   
	if( (result1==0) || (result1==1) ){  
		digito1=0;  
	}  
	else{  
		digito1 = 11-result1;  
	}    
	//2ºDigito Verificador
	somador=0;   
	for(x=0;x<10;x++){  
		somador+=cpf[x]*(11-x);  
	}   
	valor=(somador/11)*11;  
	result2=somador-valor;    
	if( (result2==0) || (result2==1) ){  
		digito2=0;  
	}    
	else{  
		digito2=11-result2;  
	}  
  
	//Verificação De Digitos Errados E Impressão 
	if((digito1==cpf[9]) && (digito2==cpf[10])){  
		printf("\nO CPF Digitado É Valido!\n");
		CPF_Validos+= 1;
		CPF_Testados+= 1;
	}  
	else{  
		printf("\nAlgum Digito Do CPF Esta Errado Ou Não É Valido!\n"); 
		CPF_Invalidos+= 1;
		CPF_Testados+= 1;
	}
	
	//Resumo Sobre Os Dados Digitados Pelo Usuario
	cout << "\n\nForam Testados " << CPF_Testados << " CPF's";
	cout << "\nForam Validos " << CPF_Validos << " CPF's";
	cout << "\nForam Invalidos " << CPF_Invalidos << " CPF's";
	
	//Menu Final
	printf ("\n\nDigite 1 Para Testar Outro CPF, Ou Digite 0 Para Sair");
	printf ("\n\nSua Escolha:");
}while(cin >> resposta && resposta == 1 && CPF_Testados!=20);

	printf("\nObrigado Por Utilizar O Programa!");

	return 0;
}

também estou com outro projeto que estou com uma duvida logo logo abro um novo post se puder me ajudar.

 

  • Curtir 1

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!