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

copiar los numero de un string en un array de numeros.

Estas en el tema de copiar los numero de un string en un array de numeros. en el foro de C/C++ en Foros del Web. Buenas pues tengo el problema de que quiero copiar los numero de una cadena de caracteres en una array de numero, el problema esque al ...
  #1 (permalink)  
Antiguo 24/05/2010, 13:19
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 13 años, 11 meses
Puntos: 0
copiar los numero de un string en un array de numeros.

Buenas pues tengo el problema de que quiero copiar los numero de una cadena de caracteres en una array de numero, el problema esque al copiarlos me imprime su codigo ASCII y yo quiero ver los numeros, no su codigo ASCII

aqui os dejo el codigo que tengo hasta ahora.

Código:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define MAX 100
#define TAM 20

struct PILA{
	int cont;
	int array[MAX];
};


void iniciar_pila(struct PILA *);
void apilar(struct PILA *,int numero);
int pila_llena(struct PILA *);
int pila_vacia(struct PILA *);
void mostrar(struct PILA *);

void main ()
{
   int i,numero[50];
   char texto[50];
	struct PILA digito;
	iniciar_pila(&digito);

   printf("Introduce el texto: ");
   gets(texto);

   for(i=0;i<strlen(texto);i++)
   {
   	numero[i]=texto[i];
   	if(48<texto[i] && 57>texto[i])
      {
         apilar(&digito,numero[i]);
      }
   }
   mostrar(&digito);
   getch();


	system("pause");
}


void iniciar_pila(struct PILA *nuevo)
{
	int i;
	nuevo->cont=0;
	for(i=0;i<MAX;i++)
	{
   	nuevo->array[i]=0;
   }
}

void apilar(struct PILA *digito, int numero)
{
	if(!pila_llena(digito))
   {
		digito->array[digito->cont]=numero;
		digito->cont++;
	}
	else
		printf("La pila esta llena");
}


int pila_vacia(struct PILA *digito)
{
	if(digito->cont==0)     //Si la pila esta vacia retorna un 1
		return 1;
	else
		return 0;
}

int pila_llena(struct PILA *digito)
{
	if(digito->cont==MAX)   //Si la pila esta llena retorna un 1
		return 1;
	else
		return 0;
}

void mostrar(struct PILA *digito)
{
   int j=1;

	printf("Mostrando numeros insertados en la pila\n");
   printf("_________________________________________\n");
    for (int i=digito->cont-1; i>=0; i--)
    {
      printf("digito %d: ",j);
    	printf("%d\n\n",digito->array[i]);
      j++;
    }
}
  #2 (permalink)  
Antiguo 24/05/2010, 17:28
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: copiar los numero de un string en un array de numeros.

Pasa lo siguiente: los digitos en el codigo ascci van del 48 al 57 inclusive.
En la computadora un caracter no es mas que un numero. Entonces simplemente lo que debes hacer es que tu caracter le reste el valor del '0' para obtener tu numero.
Por ejemplo el 0 esta en la posicion 48. Si le restamos 48 nos da 0.

Entonces en tu codigo haces: numero[i]=texto[i] - '0' ;


Tambien corregi esto:
if(48<texto[i] && 57>texto[i]) por esto: if(48 <= texto[i] && 57 >= texto[i])

Sino el '0' y el '9' no entran.
  #3 (permalink)  
Antiguo 25/05/2010, 01:58
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: copiar los numero de un string en un array de numeros.

Muchas gracias, me funciona correctamente.

Saludos

Etiquetas: copiar, numero, numeros, string
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 19:17.