[ayuda] convertir una cadena de caracteres en un array

Iniciado por jet1994, 25 Septiembre 2012, 03:25 AM

0 Miembros y 1 Visitante están viendo este tema.

jet1994

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

durasno

#1
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
Ahorrate una pregunta, lee el man

Javier235

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/

jet1994

#3
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 *)'



jet1994

#4
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]);

}

Javier235

#5
[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]);
}
}
}

flony

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
si un problema no tiene solucion entonces no es un problema...es algo inevitable

dac

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)


fary

Por si no te as dado cuenta un puntero a una cadena ya es un array de caracteres...
Un byte a la izquierda.