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
CitarNecesito 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
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/
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 *)'
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]);
}
[code=c] char cedula[11], c;
Reservás 11 lugares pero usás 10.
for(i=0;i<9;i++) {
----------------------------
char cedula[11], c;
Declarás un "char *". Pero a scanf() le pasás un "char **". Sacále el "&".
scanf("%s",&cedula);
----------------------------
n[i] = atoi(cedula[i]);
atoi() toma un "const char *" pero le pasás un "char". Cambialo por "atoi(cedula)".
----------------------------
digito10 = suma%10;
if (suma%10==0)
digito10=0;
Esta comparación es redundante, fijáte.
----------------------------
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...
void validacion() {
int i, digito10, suma, n[10], pares=0, impares=0, mul;
char cedula[10], c;
bool valid=true; /* #include <stdbool.h> */
scanf("%s",cedula);
for(i=0;i<9;i++) {
c = cedula[i];
if (isdigit(c))
n[i] = atoi(cedula);
else {
printf("numero de cedula incorrecto\n");
valid = false;
break;
}
}
if(valid) {
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 (digito10 == n[9])
printf("\n\n\n Numero de cedula valida");
else {
printf("\n\n\n Numero de cedula NO valida ");
printf("\n\n %d = %d\n",digito10,n[9]);
}
}
}
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
Cita de: flony 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
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)
Por si no te as dado cuenta un puntero a una cadena ya es un array de caracteres...