Ir ao conteúdo
  • Cadastre-se

C++ Erro com o scanf


FernandoMaffei

Posts recomendados

Eu dou os valores para as variáveis e na hora de imprimir no scanf montra um numero totalmente diferente

se alguém puder ajudar sou novato com isso 

 

#include<stdio.h>
#include<locale.h>


int num (int n){
printf("RECARREGA JÁ\n\n");
printf("DIGITE SEU NUMERO DE TELEFONE\n");
scanf(" %d",&n);
}

int recarga(int z){
int x,y;
printf("\nDIGITE O VALOR DA RECARGA\n");
scanf(" %d", &x);
printf("\nCOLOQUE O VALOR DO DINHEIRO QUE SERA COBRADO\n");
scanf(" %d", &y);

z=y-x;

return z;
}
int credito(int n,int z){
printf("\n==================================\n");
printf("\nSEU TROCO = R$%.2d\n", &z);
printf("\n==================================\n");
printf("\nSERA ENVIADO UM SMS DE CONFIRMAÇAO");
printf(" NO SEU TELEFONE: %d", &n);
printf("\n\n==================================\n");

}

int main(){

setlocale(LC_ALL,"Portuguese");

int valor, sms,x,y,z,n;

printf("\n=====RECARGAS=====\n\n");
printf("R$10,00\nR$15,00\nR$20,00\nR$25,00\nR$30,00\n\n");
printf("===================\n\n");

sms=num(n);
valor=recarga(z);

credito(z,n);



printf("\n\n");
}

 

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

qual scanf? todos?
vejo que você está enviando um valor por parametro e que talvez queira muda-lo, pra voltar a usa-lo cdepois de terminada a sua função.
pra isso dar certo, você deve usar na passagem do parametro o ponteiro. De outra forma, o que está enviando, é uma copia.


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

void faz1(int a)
{
	a=4321;
}

void faz2(int *a)
{
	*a = 1234;
}

int main()
{
	int a=777;

	faz1(a);
	printf("não mudou: %i\n", a);

	faz2(&a);
	printf("mudou: %i\n", a);
	return 0;
}

 

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

@FernandoMaffei    você colocou essa biblioteca 

#include <locale.h>                         /// essa locale é problemática mesmo
                                            /// ela modifica o funcionamento de alguns comandos como o scanf
                                            /// melHor não usar isso , não

e outros erros 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>                         /// essa locale é problemática mesmo
                                            /// ela modifica o funcionamento de alguns comandos como o scanf
                                            /// melHor não usar isso , não
int num (int n)
{
    printf("RECARREGA JÁ\n");
    printf("DIGITE SEU NUMERO DE TELEFONE ----------------: ");
    scanf(" %d",&n);
    return n;
}
float recarga(/*int z*/)                    /// aqui não precisa desta variavel
{
    float x=8.1,y;
    printf("DIGITE O VALOR DA RECARGA --------------------: ");
    scanf("%f", &x);                        /// aqui sim , precisa informar o endereço da variável
    printf("COLOQUE O VALOR DO DINHEIRO QUE SERA COBRADO -: ");
    scanf("%f", &y);
    return y - x;  ; ;;                     /// retorna o valor
}
int credito(int n,float z)
{
    printf("==================================\n");
    printf("SEU TROCO = R$ %.2f\n",z);      /// não pode ter esse & comerciaL Aqui antes da variaveL no printf
                                            /// pois assim vais mostrar o endereço onde se Localizam a variável
    ///if( z >= 1 ) printf(" , 00\n");
    printf("==================================\n");
    printf("SERA ENVIADO UM SMS DE CONFIRMAÇAO\n");
    printf(" NO SEU TELEFONE: %d\n",n);     /// não pode ter esse & comerciaL Aqui antes da variaveL no printf
                                            /// Que significA endereço da varuáveLs
    printf("==================================\n");
    return 0;
}
int main()
{
    ///setlocale(LC_ALL,"Portuguese");      /// isso Aqui não presta , talvez funcione em um PC mas não em outris
    int /*valor, */sms,x,y,z,n;             /// variaveis bão iniciaLizadas
                                            /// terah valores desconhecidos >("  Lixo De Memórias  ")<
    float valor;
    printf("=======RECARGAS=====\n\
           \r ==================\n\
           \r\tR$10,00          \n\
           \r\tR$15,00          \n\
           \r\tR$20,00          \n\
           \r\tR$25,00          \n\
           \r\tR$30,00          \n\
           \r===================\n");
    sms = num(n);                           /// n , AQui não se sabe o valor que tem
                                            /// e enviou assim mesmo ?
    valor = recarga(/*z*/);                 /// z , AQui não se sabe o valor que tem
                                            /// e nem precisava . !
                                            /// e enviou sem saber o valor de z !
    /// credito(z,n);                       /// n e z  , AQui não se sabem os valores  que contém
    /// melhor seria assim :                /// enviar os valor corretos
    credito(sms,valor);                     /// sms e valor  , AQui se sabe Quais sao os valores  que contém
                                            /// enviou os valor corretos !
    printf("\n\n");                         /// pula dus Linhas , para uma melhor apresentacao . !
    return 0;                               /// retorna uma informaçao para o windows
}

 

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!