C/Visual C - Como pedir un vector sin saber su longitud

 
Vista:
sin imagen de perfil

Como pedir un vector sin saber su longitud

Publicado por tomas (12 intervenciones) el 10/04/2014 12:01:40
¿Cuál es la manera más sencilla de pedir un vector si solo el usuario sabe su longitud?
Comienzo con un for, pero como se cuando acabar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Como pedir un vector sin saber su longitud

Publicado por Pico (37 intervenciones) el 10/04/2014 12:34:01
Hablas de reservar memoria dinámicamente. Tú declaras solamente un puntero, el usuario introduce un valor y según ese valor se reserva la cantidad de memoria necesaria. Un for empezaría en 0 y acabaría en [valor introducido por usuario]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como pedir un vector sin saber su longitud

Publicado por tomas (12 intervenciones) el 10/04/2014 12:36:01
pero no quiero que el usuario se ponga a contar la longitud del vector y que después la escriba para que el bucle se cierre.. No hay otra manera?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como pedir un vector sin saber su longitud

Publicado por Pico (37 intervenciones) el 10/04/2014 12:52:23
El usuario no tiene que contar nada. Dices que el tamaño del vector lo sabe el usuario, o sea, que en algún momento le dices al usuario que introduzca el tamaño, la cantidad o lo que sea. Eso que introduzca lo guardas en una variable pongamos, tamano. Con eso introducido reservas la memoria y luego el for será for (int i=0;i<tamano;i++).

Y el tamaño de un vector también te lo da sizeof.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como pedir un vector sin saber su longitud

Publicado por tomas (12 intervenciones) el 10/04/2014 13:09:07
el usuario PUEDE SABER LA LONGITUD DEL VeCTOR SI SE LO PONE A CONTAR, pero supongamos que declaro un vector de 50 caracteres y el usuario solo introduce una palabra Y NO QUIERE PONERSE A CONTAR LA LONGITUD DE LA PALABRA:

1
2
3
4
5
6
7
8
9
10
11
int main (void){
int i;
char v[50];
 
printf("introduce la palabra palindroma");
 
for(i=0;i<50; i++){
 
scan("%c", &v[i]);
 
}
ha introducido una palabra, a un le quedan por ejemplo, 40 caracteres que introducir en el bucle. Como hacer para que ce cierre el bucle.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como pedir un vector sin saber su longitud

Publicado por Pico (37 intervenciones) el 10/04/2014 13:31:26
No hace falta que uses mayúsculas.

Si el usuario introduce una palabra de 10 caracteres nada más el décimo char será un 0, con lo que no necesitas un for sino un while v[i]!=0.

Si quieres una respuesta a la primera tienes que aprender a preguntar, más que a usar mayúsculas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como pedir un vector sin saber su longitud

Publicado por tomas (12 intervenciones) el 10/04/2014 14:25:44
Osea que uso un while y pongo la condición de que cuando el usuario escribe 0 se acaba el bucle(con caracteres). Pero si son 10 números y el vector sigue hasta 50 como hago para que se cierre.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como pedir un vector sin saber su longitud

Publicado por Pico (37 intervenciones) el 10/04/2014 15:42:18
A ver.

Si lo que quieres es pillar una cadena de caracteres puedes usar scanf("%s", &v). Eso vuelve al presionar return y pone un 0 en la posición del return que marca el fina de la cadena.

Si usas scanf("%c", &v[i]) pon la condición que quieras para salir del bucle. En v[i] está el último carácter introducido. Si quieres que pare porque ha pulsado 0 entonces parará si v[i]==0x30
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como pedir un vector sin saber su longitud

Publicado por Chema (234 intervenciones) el 10/04/2014 19:05:49

Osea que uso un while y pongo la condición de que cuando el usuario escribe 0 se acaba el bucle(con caracteres). Pero si son 10 números y el vector sigue hasta 50 como hago para que se cierre.



Prueba a quitar el "enchufe" de la pared, suele ser efectivo.
Si lo desenchufas, seguro que se acaba tu problema y el bucle.

Antes de volver a enchufar el enchufe del pc, enchufa el enchufe de la lampara y repasa los manuales de programación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como pedir un vector sin saber su longitud

Publicado por UnoPorAhi (15 intervenciones) el 11/04/2014 13:00:43
Buenas,

Y porque lees caracter a caracter? No puedes leer la cadena entera?

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main() {
	char v[50];
 
	printf("Introduce la palabra palindroma: ");
 
	scanf("%s", &v);
 
	printf("Palabra introducida: %s\n", v);
	return 0;
}

Luego ya puedes recorrer los caracteres del array v para comprobar si es palindromo o no

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como pedir un vector sin saber su longitud

Publicado por Chema (234 intervenciones) el 11/04/2014 19:06:48
Una solución a un Palindromo echo a la medida para que el Forero Tomas lo entienda bien.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main(void){
	char st[]="dabalearrozalazorraelabad";
	char *end ;
	char *start;
	int y;
 
	start=end = st;
	y = strlen(st);
	end += y-1;
 
	for(; y >0 && ( *end == *start); y--,end--,start++)
		;
 
	 *end != *start ?
			printf("No es palindromo, posición %d %c-%c \n",y,*end,*start)
			: printf("palindromo");
 
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar