Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - do-while

#501
¡Buenas!

Lo único que te pide es saber cual es el ASCII y las repeticiones de los caracteres introducidos hasta el primer punto.

No te hace falta para nada saber cuantos caracteres tienes que leer:

   char lector[11];
   char repeticiones[256];
   int i;

   memset(repeticiones,0,256);

   do{
       fgets(lector,10,stdin);

        for(i = 0 ; lector[i] && lector[i] != '\n' && lector[i] != '.' ; i++)
           repeticiones[lector[i]]++;

   }while(!strchr(lector,'.'));

   for(i = 0 ; i < 256 ; i++)
   {
       if(repeticiones[i])
           printf("%c: %d repeticiones\n",i,repeticiones[i]);
   }


Pues no, te pide la posición en la tabla ASCII de los caracteres y el numero de caracteres. El código queda así:

   char lector[11];
   char repeticiones[256];
   int i,total = 0;

   memset(repeticiones,0,256);

   do{
       fgets(lector,10,stdin);

        for(i = 0 ; lector[i] && lector[i] != '\n' && lector[i] != '.' ; i++)
           repeticiones[lector[i]]++;

   }while(!strchr(lector,'.'));

   for(i = 0 ; i < 256 ; i++)
   {
       if(repeticiones[i])
           printf("%c: ASCII %d\n",i,i);
       total += repeticiones[i];
   }

   printf("%d caracteres\n",total);


¡Saludos!
#502
¡Buenas!

(rep=1) siempre es cierto, ya que estás asignando a rep el valor 1, y luego utilizas el valor de rep (1) para evaluar la condición. Para compararlo utiliza el doble igual ==:

while(rep == 1)


Y por supuesto, como ya te han dicho, en un do-while, después del paréntesis que cierra la condición del while, hay que poner un punto y coma.

¡Saludos!
#503
Cita de: Novlucker en  5 Agosto 2013, 16:22 PM
Mis ojos! mis ojos! La traducción mata :xD

Di que si. Esto da dolor de cabeza...
#504
Me parto.

Intentar prohibir de cualquier pagina web con contenido bajo propiedad intelectual estadounidense, y cuando los que infringen las normas son ellos se lo pasan por el escroto...
#505
¡Ja ja ja, me parto... !  :¬¬

Primeto se descrubre que estan espiando a todo el mundo, y ahora, por casualidad, resulta que gracias a eso han descubierto vete tu a saber que...

Aun habra gente que se crea que todo esto es cierto...
#506
Programación C/C++ / Re: Objeto to char*
3 Agosto 2013, 22:18 PM
Pues no se si el primero es el de mas peso. Para saberlo prueba esto:


int x = 0x44332211;
char s[4];

memcpy(s,&x,sizeof(int));

for(int i = 0 ; i < sizeof(int) ; i++)
    prihntf("%X",s[i]);



así sabrás si el byte mas significativo es el de la posición 0 o el de la 3.

¡Saludos!
#507
Programación C/C++ / Re: Objeto to char*
3 Agosto 2013, 21:42 PM
Por lo que acabo de ver en google, puede ser un error debido a que al copiar y pegar te has llevado caracteres extraños... (¿Puede ser?)

Prueba a reescribir las lineas en las que te da error.

¡Saludos!
#508
Programación C/C++ / Re: Objeto to char*
3 Agosto 2013, 21:34 PM
?????

¿¿¿Has incluido todos los headers que te hacen falta???

A mi no me da problemas. ¿Que errores te da exactamente?

¡Saludos!
#509
Programación C/C++ / Re: Objeto to char*
3 Agosto 2013, 21:02 PM
Ahí pasa lo mismo.

Los punteros están dentro de la clase, pero las cadenas literales están fuera.

Así que si hace un memcpy a una zona reservada con char, solo tendrá las direcciones donde empiezan las cadenas (los valores de los punteros).

El contenido de las cadenas está fuera de la clase.

¡Saludos!

Código (c++) [Seleccionar]

class Chorrada
{
   public:
       Chorrada(char *s);

   private:
       char str[20];
};

Chorrada::Chorrada(char *s)
{
   memset(str,0,20);
   
   if(strlen(s) > 19)
       strncpy(str,s,19);
   else
       strcpy(str,s);
}

int main()
{
    Chorrada cosa("Hola");
    char buf[sizeof(Chorrada)];

    memcpy(buf,&cosa,sizeof(Chorrada));

    for(int i = 0 ; i < sizeof(Chorrada) ; i++)
        cout << buf[i];

    cout << endl;

    return 0;
}


Ahora si que la información está dentro de la clase, prueba a hacer el memcpy como lo hacias antes.

¡Saludos!
#510
Programación C/C++ / Re: Objeto to char*
3 Agosto 2013, 20:59 PM
No, no.

No me refiero a eso. Aunque utilices un struct el problema será el mismo siempre que reserves memoria de forma dinámica.

Esto es la clase                                       Esto la memoria reservada que está fuera

--------------------------
|                               |
| puntero------------------------------> "Hola soy una cadena que estoy fuera y aqui hace frio"
|                               |
--------------------------

Y si en lugar de utilizar punteros y asignar memoria dinámica utilizar un vector, pasa esto:

Tu clase

---------------------------------------------------------------------------
| vector = "Soy un vector que está calentito dentro de la clase" |
---------------------------------------------------------------------------

Que mal me sienta estudiar.

Espero que lo hayas entendido, sino pregunta.

¡Saludos!