Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Cadenas de caracteres y de enteros

Estas en el tema de Cadenas de caracteres y de enteros en el foro de C/C++ en Foros del Web. Buenas! (Todo esto estara en C) Me gustaria saber si teniendo un vector de enteros, se puede pasar eso a una cadena de caracteres, y ...
  #1 (permalink)  
Antiguo 28/12/2011, 19:36
 
Fecha de Ingreso: diciembre-2011
Mensajes: 2
Antigüedad: 12 años, 10 meses
Puntos: 0
Cadenas de caracteres y de enteros

Buenas! (Todo esto estara en C)
Me gustaria saber si teniendo un vector de enteros, se puede pasar eso a una cadena de caracteres, y si no se puede, si hay alguna forma de mostrar por pantalla todo ese vector de enteros sin tener que andar mostrando cada numero por separado.

Tambien me gustaria saber si se puede hacer lo mismo pero al reves... Es decir pasar de una cadena de caracteres a un vector de enteros.

Mi problema es el siguiente, por si me pueden ayudar:

->PRIMERO, cojo los 12 digitos que quiera y me piden hallar a raiz de esos un 13º que se halla por las operaciones que abajo marco. El resultado es al final, con los 13 digitos mostrarles por pantalla

int main ()
{
int ean[13] ={1,2,3,4,5,6,7,8,9,0,4,1};
int i, a, sp = 0, si = 0, t;

for (i = 0; i < 12; i++)
{
a = ean[i];
if(i%2 == 0)
{
sp = sp + a;
}
else
{
si = si + a;
}
}

si = si * 3;
t = si + sp;
t = t%10;
t = 10 - t;

t = ean[12]

//Hasta aqui las operaciones estan bien, el problema es a la hora de mostrarlo por pantalla, que nose como para no tener que escribir los 12 %d
}

Las operaciones es, se suman los digitos pares y los impares por separado. A la suma de los impares, la multiplicas por 3 y la sumas la suma de los pares. Hallas es resto de todo esto y restas ese resto a 10. Eso obtenido es el 13 caracter.

-->SEGUNDO, en este me dan 13 digitos en una CADENA DE CARACTERES y debo sabes si el ultimo digito esta bien hallado (Por las mismas operaciones que antes)
  #2 (permalink)  
Antiguo 28/12/2011, 22:34
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 10 meses
Puntos: 94
Respuesta: Cadenas de caracteres y de enteros

Hola victor! bueno t comento un poco de lo que te pude entender.
1º no podes convertir una cadena d int a char. Lo que se puede es tener una cadena de char y pasarlo a int, por ej: int a=atoi(b) siendo char b[3]="123" (ojo la cadena tiene que ser un numero)

2º El vector de int tenes q mostrarlo por separado y para evitar escribir los 12 %d:
for(i=0;i<12;i++)
{
printf("%d \n",vec[i]); //si queres que se imprima uno al lado del otro saca el \n
}

3º Tenes un error en if((i%2)==0) tenes que sumar los numeros pares "no la posicion par en el vector ". Usa if((ean[i]%2)==0)

4º Para que pones t=ean[12] si en el anterior paso ya tenes el numero 13 (estas sobreescribiendo todas las operaciones q hicist)

Espero te sirva, cualquier cosa segui escribiendo
  #3 (permalink)  
Antiguo 29/12/2011, 05:12
 
Fecha de Ingreso: diciembre-2011
Mensajes: 2
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Cadenas de caracteres y de enteros

Muchas gracias, ya lo corregi todo y la primera parte ya esta hecha, ahora me queda la segunda,me pongo a ello ya
  #4 (permalink)  
Antiguo 29/12/2011, 09:08
 
Fecha de Ingreso: agosto-2008
Mensajes: 240
Antigüedad: 16 años, 2 meses
Puntos: 6
Respuesta: Cadenas de caracteres y de enteros

Si te dan los 13 valores como caracteres, usa la función atoi() declarada en <stdlib.h> para obtener los valores enteros de cada carácter.

Es un ejercicio muy simple. Usa un bucle for (o while) para copiar los 12 primeros dígitos a una tabla de enteros. Luego haz las operaciones matemáticas y compara con el valor que ocupa la posición número 13 de la tabla original (ojo, ese valor también debe ser un entero).

Te dejo el pseudocódigo:

Código:
mientras copiado no sea 12
{
entero = atoi(caracter)
copiado += 1
}

operaciones matematicas

comparacion
Un saludo,
gonzo

Etiquetas: cadenas, caracteres, enteros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:14.