Array dinamico

Array dinamico

de Facundo Jose Laña Di Napoli -
Número de respuestas: 3

Buenas tardes.

Estoy teniendo dudas sobre el uso del array dinamico. 

Quise implementar ocurrencias con un array dinamico pero algo estoy haciendo mal porque cuando recorro el arreglo no encuentra ninguna letra.

Alguien que sepa si me puede dar una mano, le agradezco.

Declaro el arreglo asi: char *frase = new char [largo]

Para leer la frase y asignarla al arreglo hago asi:

Scanf("%s",frase);

Y lo recorro:

Int cantidad = 0;

For (int i=0; i<largo; i++){ 

If (frase[i] == letra){ cantidad = cantidad + 1;

}


Muchas gracias de antemano.

Saludos, Facundo. 


En respuesta a Facundo Jose Laña Di Napoli

Re: Array dinamico

de Lucas Fernandez Corbo -
Buenas, como declaraste frase te queda que frase es un puntero a char, luego al hacer new char[largo], estas haciendo que el puntero frase apunte a un arreglo de char de tamaño largo, por lo tanto para acceder al arreglo deberías hacer scanf("%s",&(*frase));
& porque scanf necesita la dirección de memoria de la variable donde se va a almacenar el input, luego *frase lo podes ver como "a lo que apunta frase", ósea al arreglo de char de tamaño largo.
En respuesta a Facundo Jose Laña Di Napoli

Re: Array dinamico

de Federico Andrade -
Hola Facundo,
Lo que hiciste parece razonable. Algunos comentarios que puedan ayudar es que hagas un for que imprima el contenido del arreglo para verificar que quedó bien almacenada la variable frase. Otro comentario es que no es necesario recorrer todo el arreglo largo, sino solamente el tamaño dónde hay datos "útiles", para eso previamente al for podés utilizar strlen () (blibiotega strings.h) que te permiten saber el largo del string.

Algo así:

char * frase = new char[100];
scanf ("%s", frase);
int largo = strlen (frase);
for (int i = 0; i < largo ; i++)
{
printf ("%c", frase[i]);
}

Saludos,