esteban.2091 Posted December 23, 2011 Report Share Posted December 23, 2011 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 More sharing options...
susodicho Posted December 23, 2011 Report Share Posted December 23, 2011 :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 More sharing options...
AshWilliams Posted December 24, 2011 Report Share Posted December 24, 2011 :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 Concuerdo con las recomendaciones del user anterior. Saludos :krider: Link to comment Share on other sites More sharing options...
susodicho Posted December 28, 2011 Report Share Posted December 28, 2011 (edited) 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 __int64 (ó long 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 December 28, 2011 by susodicho Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now