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

¿Cómo recorrer una cadena con C?

Estas en el tema de ¿Cómo recorrer una cadena con C? en el foro de C/C++ en Foros del Web. Buenas Tengo una cadena de caracteres y lo que necesito es poder recorrerla para saber si X número se encuentra dentro. He de hacerlo con ...
  #1 (permalink)  
Antiguo 05/01/2009, 15:57
 
Fecha de Ingreso: noviembre-2006
Mensajes: 166
Antigüedad: 17 años, 5 meses
Puntos: 4
¿Cómo recorrer una cadena con C? [Solucionado]

Buenas
Tengo una cadena de caracteres y lo que necesito es poder recorrerla para saber si X número se encuentra dentro.
He de hacerlo con un bucle (o los que hagan falta), pero no puedo usar funciones predefinidas.

Para que quede más claro, dejo un ejemplo:

- la cadena es la siguiente: 49328410
- me pide un número y se lo introduzco, por ejemplo el 1
- mediante un bucle va comparando número por número y si el número 1 se encuentra dentro de 49328410 me dice que se encuentra.

¿cómo puedo hacerlo?

Gracias

Última edición por DarkKing; 14/01/2009 a las 13:47 Razón: Tema solucionado
  #2 (permalink)  
Antiguo 05/01/2009, 16:39
 
Fecha de Ingreso: enero-2009
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: ¿Cómo recorrer una cadena con C?

haces el bucle, pero cuando comparas lo haces con comillas es decir cadena[i]=='1',porque me imagino que recojiste la cadena como caracteres
  #3 (permalink)  
Antiguo 06/01/2009, 08:17
 
Fecha de Ingreso: noviembre-2006
Mensajes: 166
Antigüedad: 17 años, 5 meses
Puntos: 4
Respuesta: ¿Cómo recorrer una cadena con C?

La única forma de recorrerse una cadena es que sea un char con [x] posicioones, ¿no?
  #4 (permalink)  
Antiguo 06/01/2009, 16:01
 
Fecha de Ingreso: febrero-2008
Mensajes: 241
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: ¿Cómo recorrer una cadena con C?

claro, el char tiene que tener un tamaño X, haces un bucle do while r y vas aumentando la x y comparando hasta que salir=1 por ejemplo
  #5 (permalink)  
Antiguo 14/01/2009, 13:45
 
Fecha de Ingreso: noviembre-2006
Mensajes: 166
Antigüedad: 17 años, 5 meses
Puntos: 4
Respuesta: ¿Cómo recorrer una cadena con C?

Vale. Gracias por la ayuda
  #6 (permalink)  
Antiguo 14/01/2009, 16:41
Avatar de calathea  
Fecha de Ingreso: octubre-2008
Ubicación: Valladolid
Mensajes: 122
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: ¿Cómo recorrer una cadena con C?

es una cadena de caracteres y numeros o solo de numeros??

si solo son numeros, porque usas una cadena char en vez de un array int??

de todas formas, tengo entendido que los numeros guardados como char no son exactamente ese numero...me explico:

si recoges un 0 introducido por teclado y lo almacenas en una variable char...cuando lo pretendes imprimir por pantalla sale el numero 48 (si mal no recuerdo)

por tanto, si lo que almacenas en la cadena char son numeros, al ir a buscarlos introduciendo tu por teclado el que quieres encontrar en la cadena, no lo encuentras, pues en la cadena tienes almacenados los numeros a los que corresponden los caracteres numericos

Os adjunto un código en el que se ve lo que os digo si se depura.

Código:
#include <stdio.h>
#include <stdlib.h>

void main()
{
	int encontrado = 0, i = 0;
	char cadenaNumeros[10];
	int num, posicion = 0;

	printf("Introduzca una cadena de numeros: ");
	gets(cadenaNumeros);
	printf("\n\nIntroduzca un numero de una cifra: ");
	scanf("%d", &num);

	do
	{
		if(cadenaNumeros[i] == num)
		{
			encontrado = 1;
			posicion = i + 1;	//porque el vector empieza en cero, 
								//por lo que la posicion 1 de la 
								//cadena corresponde a la 0 del vector
		}
		i++;
	}while(!encontrado && i<10);  //La segunda condicion se debe a que el maximo valor del vector es 10

	if (encontrado)
	{
		printf("\n\nEl numero %d se encuentra en la posicion %d de la cadena", num, posicion);
	}
	else
	{
		printf("\n\nNo se encontro el numero indicado");
	}
	system("Pause");
}
Espero que os sirva de algo!

EDITO!

Cita:
haces el bucle, pero cuando comparas lo haces con comillas es decir cadena[i]=='1',porque me imagino que recojiste la cadena como caracteres
No me di cuenta de lo de las comillas, lo siento, a eso es a lo que me refería yo con mi parrafada...perdon :S

Última edición por calathea; 14/01/2009 a las 16:46 Razón: UUPPS
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 09:05.