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 - amchacon

#821
Cita de: leosansan en  9 Junio 2013, 16:43 PM
Duda de novatillo en C++, ¿no sería más simple usar realloc en C++, como yo hice en C. o no se puede?. La verdad es que lo he intentado pero con resultados "insatisfactorios".


Saluditos! .... ..



El realloc de C funciona claro:

Código (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    char* cosa = new char[3];
    realloc(cosa,50);

    for (int i = 0; i < 50;i++)
      cosa[i] = i+48;

    cosa[49] = '\0';

    cout<<cosa;
    return 0;
}


Pero tu me has dicho C++ puro asi que :S

Cita de: OmarHack en  9 Junio 2013, 16:37 PM
¿Se os ocurre como hacer que si el texto introducido por teclado lleva un espacio se guarde en otro string?
Que haga algo así:
Código (cpp) [Seleccionar]
if (string1 tiene un espacio)
{
guardar hasta el espacio string1;
guardar a partir del espacio hasta el siguiente espacio o final del texto en string2;
if (string2 tiene un espacio)
{
guardar a partir del espacio hasta el siguiente espacio o final del texto en string3;
........................................................
}
}


Al poner por ejemplo en el programa: "paco gonzalez martinez"
guarde "paco" en string1, "gonzalez" en string2 y "martinez" en string3.

Así podré ejecutar acciones para todos los que sean gonzalez de primer apellido, independientemente de si se llaman paco o tienen de segundo apellido martinez o gonzalez o lo que sea.

Llevo bastante buscando y no encuentro nada que me sirva.
A ver si vosotros sabéis.
Si encuentro algo lo pondré aquí.
Saludos.

Pues:

Código (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    string Nombres[3];

    for (int i = 0; i <3;i++)
        cin>>Nombres[i];

       for (int i = 0; i <3;i++)
        cout<<Nombres[i]<<endl;

    return 0;
}


Cuando termines de meter nombres le das a enter y listo :S
#822
Cita de: leosansan en  9 Junio 2013, 15:21 PM
¡amchcon has hecho uso de la librería conio ..... y de getch!. ¡¡¡¡Dos pecados mortales !!!!! :laugh:
:silbar: :silbar: :silbar: :silbar:

Tú código está bastante correcto. Lo que mejoraría son los reallocs, en vez de 1 en 1 hazlos de 5 en 5 o de 10 en 10 (El realloc puede ser una operación costosa).

Cita de: leosansan en  9 Junio 2013, 15:21 PMeso sí espero que alguien la "pse" a C++
¡Adelante!  ;-)

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

char* Realloc(char* Puntero,int Original,int Final);

const int INTERVALO_REALLOC = 5;

int main(void)
{
   char *palabra,*aux,palabra2[]="qw";
   int ch;
   int i=0,j=0;
   int ultimorealloc = 0;
   palabra = NULL;

   aux = new char[INTERVALO_REALLOC];

   while ((ch = cin.get()) != '\n')
  {
       if ((i-ultimorealloc) == INTERVALO_REALLOC)
       {
           ultimorealloc = i;

           if ((aux = Realloc(palabra,i, (i + INTERVALO_REALLOC) * sizeof *palabra)) == NULL){
               cerr<<"No hay espacio en memoria\n";
               delete[] palabra;
               return 1;
           }

       }
       palabra = aux;
       palabra[i++] = ch;
   }
   palabra[i++] = '\0';
   cout<<palabra<<endl;
   for (i = 0; palabra[i] != '\0'; i++)
   if (palabra[i] != palabra2[i])
     break;
   if (i==2)
       cout<<"Hola mundo\n";

   cout<<palabra;
//cin.get();
  return 0;
}


char* Realloc(char* Puntero,int Original,int Final)
{
   char* Aux = new(nothrow) char[Final];

   if (!Aux)
       return NULL;

   for (int i = 0; i < Original;i++)
   {
       Aux[i] = Puntero[i];
   }

   delete[] Puntero;

   return Aux;
}
#823
Antes de empezar con interfaces gráfica, intenta buscarte una librería multimedia y haces algunos juegos (Allegro o SDL).

Después ya das el salto a las interfaces (te recomiendo wxWidgets).
#825
Cita de: leosansan en  9 Junio 2013, 08:00 AM
¿Y sin string, o sea programando nosotros lo que en el fondo hace string?:
Estás limitando la entrada a 19 letras (como le metas 25 te va a dar un desbordamiento de buffer).

Me parece que esto sería más correcto:

Código (cpp) [Seleccionar]
#include <iostream>
#include <conio.h>
#include <vector>
using namespace std;
int main()
{
    char valor;
    vector<char> palabra;
    char palabra2[]="qw";

    cout << "introduce letras: ";
    valor = getch();
    do
    {

        palabra.push_back(valor);
        cout<<valor;
        valor = getch();
    }
    while (valor != '\r'); // Enter
   
    cout<<endl;
   
    palabra.push_back('\0');
    int i;
    for (i=0; palabra[i]!='\0'; i++)
        if (palabra[i]==palabra2[i])
            continue;
    if (i==2)
        cout <<"Hola mundo";
    cin.get();
    return 0;
}
#826
Cita de: drvy | BSM en  8 Junio 2013, 00:23 AM
Tal y como indican las reglas del concurso. No. Una aplicación por usuario.
En realidad, las reglas no dicen que sea una sola aplicación:

CitarReglas

0) Aplicaciones del estilo "Hola mundo" y similares con menos de 20 lineas de código no serán admitidas.

1) Cualquier aplicación que no contenga código fuente sera descartada.

2) Aplicaciones que hayan participado en anteriores concursos no serán admitidas.

3) Se pueden postear aplicaciones relacionadas con el malware ya sean troyanos, virus etc. Pero esto debe quedar bien en claro en la descripción al postear la aplicación. Es decir, cualquier intento de engaño para infectar usuarios sera motivo de baneo permanente.

4) NO sera admitida ninguna herramienta/aplicación cuyo objetivo sea la realización de un ataque DDoS/DoS. Esta comunidad esta totalmente en contra de esta practica. Si se pueden presentar aplicaciones dedicadas a protegerse de este tipo de ataques.

5) Se debe presentar tanto el código fuente como el EJECUTABLE en caso de que sea posible.

6) Los links de descarga deben de ser de DESCARGA DIRECTA. NO se permitirán enlaces intermedios del tipo adfly o linkbucks. Cualquier enlace de este tipo descartara la aplicación del concurso.
#827
¿Se pueden presentar varias aplicaciones?
#828
Cita de: OmarHack en  7 Junio 2013, 22:51 PM¿Cual es el problema? ¿Tengo que instalar la librería?
String forma parte de la librería estándar del lenguaje. Todo compilador debe tenerla instalada.
#829
Cita de: Puntoinfinito en  7 Junio 2013, 23:34 PM
Me encantaría participar como programador, programo videojuegos en SDL, de hecho ahora estoy haciendo un curso (ejerciendo de profesor) de programación en SDL. Pero veo que aquí hay muy buen nivel eh! No sabía que había tanto talento para este factor. Felicidades a todos!
Actualmente estamos portando el siguiente juego:
http://www.minijuegos.com/juego/multitask

Pasate y registrate en el foro, ahí subimos todas las versiones alpha para probar:
http://programacion.eclipseforo.com/

Y si tienes algo que aportar pues adelante ;)




EI: juntando mensajes.


Versión final del videojuego: https://dl.dropboxusercontent.com/u/69551225/Ensamblado%20-%20Version%20Final%20(WINDOWS).rar

Controles:

- Minijuego 1: Izquierda/Derecha
- Minijuego 2: Arriba/Abajo.
- Minijuego3: Espacio.
- Minijuego4: WASD.

Gracias a todos por el apoyo obtenido  ;-)
#830
Cita de: leosansan en  7 Junio 2013, 17:33 PM
Si quieres que en lugar de ceros salgan espacios en blanco usa esto:

Código (cpp) [Seleccionar]
for (i=0;i<=99;i++) //mostrar
    {
          if (i%9==0)
                 cout endl;
          if (vect{[i]==0)
              cout <<"   "
          cout<<vect[i]<<"   ";       
    }


O si quieres que sólo salgan los distintos de cero:

Código (cpp) [Seleccionar]
for (i=0;i<=99;i++) //mostrar
    {
          if (i%9==0)
               cout endl;
          if (vect{[i]!=0)
              cout<<vect[i]<<"   ";       
    }


Saluditos! .... ..

¿El cout endl; es un error? ¿No debería ser cout<<endl; ?