elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [ayuda] convertir una cadena de caracteres en un array
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [ayuda] convertir una cadena de caracteres en un array  (Leído 5,336 veces)
jet1994

Desconectado Desconectado

Mensajes: 11


Ver Perfil
[ayuda] convertir una cadena de caracteres en un array
« en: 25 Septiembre 2012, 03:25 am »

Necesito saber como convertir una cadena de caracteres un un arreglo, para utilizar cada posicion para validar una cedula
Ejemplo:
ingreso una cadena de caracteres tamaño 10
0912321221
eso necesito convertir en
  • [9][1][2][3][2][1][2][2][1]

Como lo hago?

y como utilizo cada arreglo?

gracias de antemano


« Última modificación: 25 Septiembre 2012, 03:27 am por jet1994 » En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: [ayuda] convertir una cadena de caracteres en un array
« Respuesta #1 en: 25 Septiembre 2012, 04:54 am »

Citar
Necesito saber como convertir una cadena de caracteres un un arreglo....
mmm no se entiende bien que es lo que queres hacer. Plantea mejor lo que necesitas y subi algo de codigo

Saludos


« Última modificación: 25 Septiembre 2012, 04:56 am por durasno » En línea

Ahorrate una pregunta, lee el man
Javier235

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: [ayuda] convertir una cadena de caracteres en un array
« Respuesta #2 en: 25 Septiembre 2012, 06:26 am »

Si es una cadena, podés acceder elemento a elemento con la notación de "array[]" y usando la función "atoi()" los vas convirtiendo a "int" y almacenandolos en un array. Avisá cómo te fue!

http://www.manpagez.com/man/3/atoi/
En línea

jet1994

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: [ayuda] convertir una cadena de caracteres en un array
« Respuesta #3 en: 25 Septiembre 2012, 07:00 am »

es mismo estaba haciendo javier:
hasta el momento tengo esto:
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<stdlib.h>

void validacion();
void main()
{
clrscr();
printf("Ingrese su numero de cedula para validar\n");
validacion();
printf("salio");
getch();
}

void validacion(){
int i,n[10];

char cedula[11],c;

scanf("%s",&cedula);


for(i=0;i<10;i++){
c= cedula [ i ] ;
if (isdigit(c)){
n= atoi(c);
}
else{
printf("numero de cedula incorrecto");}
}

}

pero me vota 2 errores en la  linea del atoi:

cannot convert 'int' to 'const char*'
typr mismatch in parameter '_s' in call yo 'atoi(const char *)'


« Última modificación: 25 Septiembre 2012, 07:02 am por jet1994 » En línea

jet1994

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: [ayuda] convertir una cadena de caracteres en un array
« Respuesta #4 en: 25 Septiembre 2012, 08:04 am »

Mi programa esta casi terminado Es para validar una cedula en Ecuador
Solo falta corregir los 2 errores que les comente hace un momento y el programa seguro corre
Por favor si ALGUIEN me puede ayudar le estare muy agradecido!!!

aqui esta:
*En lo que esta con rojo esta el error

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

void validacion();
void main()
{
clrscr();
printf("Ingrese su numero de cedula para validar\n");
validacion();
printf("salio");
getch();
}

void validacion()
{
int i,digito10,suma,n[10],pares=0,impares=0,mul;

char cedula[11],c;

scanf("%s",&cedula);


for(i=0;i<9;i++){
c=cedula [ i ] ;
if (isdigit(c)){
n= atoi(cedula  [ i ] ) ;

}
else{
printf("numero de cedula incorrecto");}
}

for(i=0;i<9;i++){

if (n  [ i ]%2==0){
mul=0;
mul=n[ i ]*2;

if (mul>9){
mul=mul-9;}

pares=pares+mul;}

else
{
impares=impares+n [ i ] ;
}
}

suma=impares+pares;

digito10=suma%10;

if (suma%10==0)
digito10=0;

if (digito10=n[10])
printf("\n\n\n Numero de cedula valida");
else
printf("\n\n\n Numero de cedula NO valida ");

printf("\n\n %d = %d",digito10,n[10]);

}
« Última modificación: 25 Septiembre 2012, 08:06 am por jet1994 » En línea

Javier235

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: [ayuda] convertir una cadena de caracteres en un array
« Respuesta #5 en: 25 Septiembre 2012, 09:25 am »

Código:
[code=c]	char cedula[11], c; 
Reservás 11 lugares pero usás 10.
Código
  1. for(i=0;i<9;i++) {
----------------------------
Código
  1. char cedula[11], c;
Declarás un "char *". Pero a scanf() le pasás un "char **". Sacále el "&".
Código
  1. scanf("%s",&cedula);
----------------------------
Código
  1. n[i] = atoi(cedula[i]);
atoi() toma un "const char *" pero le pasás un "char". Cambialo por "atoi(cedula)".
----------------------------
Código
  1. digito10 = suma%10;
  2. if (suma%10==0)
  3. digito10=0;
Esta comparación es redundante, fijáte.
----------------------------
Código
  1. if (digito10 = n[10])
¿No habrá querido ser una comparación eso? "=="
----------------------------
PD: fijáte si podés usar [*code=c] [/code] para postear código, sino no se entiende un pomo jeje.

Edit:

Me quedó así... ¿Cómo era la idea original de tu programa? O sea la manera en que tenía que validar...

Código
  1. void validacion() {
  2. int i, digito10, suma, n[10], pares=0, impares=0, mul;
  3. char cedula[10], c;
  4. bool valid=true; /* #include <stdbool.h> */
  5.  
  6. scanf("%s",cedula);
  7.  
  8. for(i=0;i<9;i++) {
  9. c = cedula[i];
  10. if (isdigit(c))
  11. n[i] = atoi(cedula);
  12. else {
  13. printf("numero de cedula incorrecto\n");
  14. valid = false;
  15. break;
  16. }
  17. }
  18.  
  19. if(valid) {
  20. for(i=0; i<9; i++) {
  21. if (n[i]%2 == 0) {
  22. mul = 0;
  23. mul = n[i]*2;
  24. if (mul>9)
  25. mul = mul-9;
  26. pares = pares+mul;
  27. } else
  28. impares = impares+n[i];
  29. }
  30.  
  31. suma = impares+pares;
  32.  
  33. digito10 = suma%10;
  34. if (digito10 == n[9])
  35. printf("\n\n\n Numero de cedula valida");
  36. else {
  37. printf("\n\n\n Numero de cedula NO valida ");
  38. printf("\n\n %d = %d\n",digito10,n[9]);
  39. }
  40. }
  41. }
  42.  
« Última modificación: 25 Septiembre 2012, 09:53 am por Javier235 » En línea

flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
Re: [ayuda] convertir una cadena de caracteres en un array
« Respuesta #6 en: 26 Septiembre 2012, 00:20 am »

una pregunta...estaba leyendo el code y vi que hay dos funciones que se llaman igual  :¬¬, no genera esto un error? la funcion se llama validacion
En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
dac

Desconectado Desconectado

Mensajes: 94



Ver Perfil WWW
Re: [ayuda] convertir una cadena de caracteres en un array
« Respuesta #7 en: 26 Septiembre 2012, 06:34 am »

una pregunta...estaba leyendo el code y vi que hay dos funciones que se llaman igual  :¬¬, no genera esto un error? la funcion se llama validacion

Supongo que te refieres a la declaración y la implementación... pues es eso.. no es que este duplicada ni nada..

Lo que corrigió Javier235 me parece que lo soluciona; me gustaría agregar que si la función "validación" en lugar de hacerlo todo devolviese un valor booleano quedaría más bonito :3

Saludos compatriota! (Ecuador)

En línea

fary


Desconectado Desconectado

Mensajes: 1.075



Ver Perfil WWW
Re: [ayuda] convertir una cadena de caracteres en un array
« Respuesta #8 en: 26 Septiembre 2012, 14:57 pm »

Por si no te as dado cuenta un puntero a una cadena ya es un array de caracteres...
En línea

Un byte a la izquierda.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines