Jump to content

consulta dev++


esteban.2091

Recommended Posts

resulta que estoy programando en devc++ y tengo un proyecto de validacion de los isbn de los libros mi problema es que el isbn consta de 10 digitos los cuales no e podido guardar en varibles del tipo int por lo que tube que guardar en una varible del tipo char mi pregunta es como puedo pasar esta variable char durante el proseso a una variable numerica del tipo int aunque sea numero a numero

Link to comment
Share on other sites

:mmm: Para empezar te diría que no uses el Dev-C++ (es malo e inestable), mejor usa el Code::Blocks.

 

Puedes usar el tipo de datos __int64 ó long long (también está su respectiva versión sin signo, anteponiéndole unsigned), con dicho tipo puedes almacenar unos cuantos trillones...creo que es suficiente con eso :tonto:

 

Si prefieres pasar a entero dígito por dígito, entonces puedes hacer esto:

  int i, digito;
  char ISBN[20];

  printf("El ISBN es: ");
  for(i = 0;i < LARGO_ISBN;i++)
  {
  digito = ISBN[i] - '0';
  printf("%d",digito);
  }
  printf("\n");

 

Si el compilador no te reconoce el tipo __int64 ó long long, entonces definitivamente vas a tener que cambiarte a Code::Blocks (trae una versión más reciente del MinGW). También puedes bajarte la versión más reciente del MinGW por separado...si así lo prefieres.

Link to comment
Share on other sites

:mmm: Para empezar te diría que no uses el Dev-C++ (es malo e inestable), mejor usa el Code::Blocks.

 

Puedes usar el tipo de datos __int64 ó long long (también está su respectiva versión sin signo, anteponiéndole unsigned), con dicho tipo puedes almacenar unos cuantos trillones...creo que es suficiente con eso :tonto:

 

Si prefieres pasar a entero dígito por dígito, entonces puedes hacer esto:

  int i, digito;
  char ISBN[20];

  printf("El ISBN es: ");
  for(i = 0;i < LARGO_ISBN;i++)
  {
  digito = ISBN[i] - '0';
  printf("%d",digito);
  }
  printf("n");

 

Si el compilador no te reconoce el tipo __int64 ó long long, entonces definitivamente vas a tener que cambiarte a Code::Blocks (trae una versión más reciente del MinGW). También puedes bajarte la versión más reciente del MinGW por separado...si así lo prefieres.

 

Al fin encuentro a otro usuario de Code::Blocks :tsunami:

 

Concuerdo con las recomendaciones del user anterior.

 

Saludos :krider:

Link to comment
Share on other sites

Una rectificación, creo que no tendría mucha utilidad transformar dígito a dígito el ISBN (de char a int), así que quizás te sirva más transformar de cadena a __int64 (o long long):

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

int main()
{
  char ISBN[20];
  long long cod_libro;		// Si no funciona con "long long" cámbialo por "__int64"

  printf("Ingrese el ISBN: ");
  gets(ISBN);
  cod_libro = atoll(ISBN);	// Si no funciona con "atoll" cámbialo por "_atoi64"
  printf("El ISBN era: %I64d\n",cod_libro);
  return 0;
}

La función atoll_atoi64) está declarada en "stdlib.h". Si falta algún #include lo agregas tú.

Si te diste cuenta, para usar el tipo __int64long long) en un printf, scanf o cualquiera de sus derivados, tienes que usar "%I64d" o "%I64i", así que para leerlo directamente como un entero de 64 bits lo haces así:

  long long cod_libro;

  printf("Ingrese el ISBN: ");
  scanf("%I64i",&cod_libro);

Edited by susodicho
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...