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

#101
Programación C/C++ / Re: Problema con mapas
19 Diciembre 2014, 17:10 PM
Hola Orubatosu, sin ver bien donde revienta el programa, solo veo que estas declarando un iterador nuevo y no modificando el existente al volver it a la posición inicial, es decir aquí:

Código (cpp) [Seleccionar]
if (itb == B.end())
{
   A.erase(it->first);
   map<int, bool>::iterator it = A.begin();
}


Si no me equivoco debería ser:
Código (cpp) [Seleccionar]
if (itb == B.end())
{
   A.erase(it->first);
   it = A.begin();
}


Ya que ese iterador solo está definido en ese ámbito, y elimina la visibilidad del iterador it que declaraste antes y evidentemente no modificas el valor del que quieres modificar. Por tanto el iterador it original no vuelve a la posición inicial nunca.

Hay otro problema y es que cuando modificas eso(si no lo modificas con la misma entrada te da un error de violación de acceso a la memoria) y pulsas intro se crea un bucle infinito (no sé donde está el fallo). Para comprobarlo puedes usar la siguiente entrada:
1
Salida de la funcion muestra: 1
2
Bucle infinito


Saludos.
#102
Foro Libre / Re: Que me recomendais hacer..
19 Diciembre 2014, 15:11 PM
Por esto y más la educación en España es una auténtica *****, profesores que están en su puesto por ganar dinero, y no por vocación, ese es realmente el problema. Además pretenden que el alumno se interese por la materia cuando ni ellos mismos lo hacen. También es verdad que hay muchos profesores que están dando clases obligados en campos que no son los suyos.

A mí un profesor puede ser mejor o peor enseñando, pero si me transmite su vocación está más que perdonado. El caso es ese, que todo profesor que no sepa transmitir su vocación o provocar interés en los alumnos, además de saberse al dedillo la materia que da, debería estar fuera de la docencia de por vida. La pena es que aquí en España los alumnos son meros súbditos de los profesores y tienen poder de protesta nulo ante un docente concreto.

Entre otras cosas porque los mismos profesores se cubren las espaldas como ya habéis comentado. Yo he estudiado en un instituto concertado, y ahí no os quiero ni hablar de las relaciones familiares que hay entre profesores, todo muy sospechoso salvo algunos casos concretos, así que os podeis imaginar el poder de protesta de los alumnos.

Saludos.
#103
Sí, es el primer paso. Para programar videojuegos tienes que armarte de paciencia y sobre todo de conocimientos de programación (hay multitud de bibliotecas en C/C++ para hacer videojuegos) y algo de matemáticas.

Un saludo.
#104
Cita de: x64Core en  8 Diciembre 2014, 23:25 PM
TCHAR no puede ser de 4 bytes, como maximo de 2 (unicode).

TCHAR MSDN:
http://msdn.microsoft.com/en-us/library/office/cc842072%28v=office.15%29.aspx

No entiendo x64Core, ¿dónde dice el_doctor que sea de cuatro bytes? , creo que leiste mal , pone 4 caracteres, o yo ando muy perdido en esto :(


Cita de: el_doctor en  8 Diciembre 2014, 22:39 PM
Hola no se si ya está este tema; bueno todavía me resulta difícil trabajar con este tipo de variable, cómo podría remover los primeros 4 caracteres de un tipo TCHAR.

El tipo TCHAR es solo un typedef de char en las plataformas  ANSI y DBCS, así que trabaja como ese tipo. Para quitar N caracteres simplemente copia los que quedarían si los eliminases en las primeras posiciones, es decir:

HOLA
LA
LALA
LA'\0'A

Es decir debes copiar en la primera posición el caracter que está N posiciones más delante mientras no supere el tamaño de la cadena, si no te dará un error de violación de acceso a la memoria. Una vez hecho eso debes terminar la cadena nueva en un caracter nulo, para ello al eliminar N caracteres, el caracter nulo estará ahora en el largo de la original menos los N caracteres eliminados, un ejemplo para dos caracteres sería (te toca a ti ponerlo como TCHAR):

char cadena [] = "hola que tal";
 
// Desde i = 0 hasfta que 2 + i no sea el largo de la cadena.
 
for(int i = 0; 2 + i < strlen(cadena); ++i)
{
 // Va copiando en la posicion i , lo que hay dos posiciones mas adelante
 // pues queremos eliminar dos caracteres.
 cadena[i] = cadena[2+i];
}
 
// Al eliminar dos caracteres, el fin de cadena debe quedar en el largo de la
// cadena menos los dos caracteres que hemos eliminado.
cadena[12-2] = '\0';
#105
Cita de: dpaz02 en  8 Diciembre 2014, 20:41 PM
Me guastaria saber si me puedes aclarar una duda en el código de tu juego.

Vengo empezando en c++ y me falta comprender algunas cosas.

al compilarlo me da un error en esta línea:

str_score = std::to_string( snake.length() - 1 );

y el error es: "error to string is not a member of std"

No modifique el código solo quise compilarlo con el Codeblocks para ejecutrarlo y me devuelve el error que mencione anteriormente.

Gracias por tu ayuda

El método to_string se incluyó en la biblioteca estándar en la última "versión" de C++, es decir C++11. Así que compila el código en C++11. En codeblocks se vas a Settings -> Compiler... Y en la ventanita para seleccionar (compiler flags) selecciona la opción que pone:

Have g++ follow the C++11 ISO C++ language standard

Saludos.
#106
Cita de: Eternal Idol en  6 Diciembre 2014, 23:53 PM
De lo anterior se desprende que sabiendo las reglas algunos INCONTINENTES del codigo deciden romperlas y cuando se les aplican las mismas deciden irse del subforo. Muy bien, personalmente les digo que no se los extraña en lo mas minimo sino que muy por el contrario se les agradece su deferencia al ahorrarme trabajo innecesario.

avesudra le deseo mucha suerte respondiendo dudas complejas y novedosas a donde quiera que se vaya, usted si que sabe.
El problema no es la sintaxis sencilla, yo aprendí preguntando en este magnífico foro y sigo aprendiendo, y me encanta ayudar a la gente, me parece raro que nunca te haya leído en algún tema relativamente sencillo, quizás es que como no es de tu nivel no debes responderlo, claro como eres moderador, que a eso se dediquen otros. Lo que he dicho de la sintaxis es en lo que te fijas para defenderte y atacar una prepotencia que no existe, ni que yo fuese aquí Dennis Ritchie. El problema es que cuando sale algún problema más complejo que un punto y coma o algo de eso, si se pone código se borra y si se debate, se cierra el tema.

Yo no sé nada, es más, por día me doy cuenta de que sé menos.

Haz lo que quieras, es curioso que tengas tiempo de estar borrando códigos en lugar de estar ayudando por ejemplo en este hilo, además es algo irónico que en un Subforo de Programación en C, no se aporten códigos, entonces exijo que se cree un subforo de algoritmia porque es lo que se está pidiendo. Es decir a ver si me explico, si yo hubiese puesto un recetario de pasos no me borrais nada ¿verdad?

Y efectivamente, tu trabajo borrando códigos es totalmente innecesario si no se pide la tarea explícitamente (de forma directa poniendo el enunciado).

Porque repito que se ve claramente quien viene con intenciones de aprender y quien no, si no ves eso estás ciego.

Muchos foreros tienen el mismo problema y siempre los que pensamos diferente pasamos a ser ignorados sin proponer ninguna solución respecto al tema bajo tu estricta inflexibilidad respecto de alguna puntualización sobre las normas.

Cita de: Eternal Idol en  6 Diciembre 2014, 23:53 PM
avesudra le deseo mucha suerte respondiendo dudas complejas y novedosas a donde quiera que se vaya, usted si que sabe.
No trates de ponerme de listo porque no lo soy.
#107
Cita de: Swimpiii en  6 Diciembre 2014, 09:51 AM
Buenos días,

No tengo código realizado de eso que expongo. Es un algoritmo aparentemente sencillo que yo, como "nuevo" en esto de la programación, no acabo de ver la manera de hacerlo.

Por ello mi mensaje es captar ideas, formas de afrontarlo de alguien con más experiencia o conocimientos.

¿Alguien puede orientarme?

Un saludo y gracias de antemano


Sabes que las letras que cambian  (mayúscula y minúscula)  son n letras, entonces habrá 2n combinaciones posibles. Tengo el código que me ha costado un poco hacerlo, pero me ha salido tan feo que no sé si me he complicado la vida o qué. En esencia lo que he hecho ha sido mirar las letras que cambian, luego hago una plantilla de las letras que no cambian y las posiciones que van a sustituirse se indican por una coma.

Bueno voy a poner el código a ver si te ayuda porque es que no sé, creo que me he complicado la vida y que se puede hacer más sencillo. Bueh ahí va:

EI: Codigo reportado y borrado.

CitarA los asesinos de código:

Si ustedes pretenden ser papá y mamá de cada usuario háganlo, no cae sobre mi responsabilidad la ética ni la moral de cada usuario, me sé perfectamente las normas del subforo, no venga a darme lecciones de lo que debo o no debo hacer.

Soy una persona muy comprensiva, pero ustedes se están cargando el subforo. Esto lo pongo en mayúsculas por si no les queda a ustedes claro:

SE PUEDE DISTINGUIR PERFECTAMENTE ENTRE UNA PERSONA QUE PIDE LAS TAREAS EXPLÍCITAMENTE Y OTRA QUE QUIERE APRENDER.

Si no entienden los mensajes, no entra bajo mi responsabilidad la capacidad de compresión lectora de cada Usuario/Moderador.

Este subforo se está convirtiendo en un estercolero de errores de sintaxis sin algo más novedoso, y eso lo estan provocando ustedes ¿porqué cuando algunos de ustedes ponen código no pasa absolutamente nada?

Han cabreado ya a muchos usuarios por el mismo tema, se están pasando ustedes de la raya, se está yendo mucha gente que podría ser de provecho en el foro.

Me niego a seguir respondiendo dudas de sintaxis sencilla, que lo hagan Eternal Idol y demás.

Así que por lo demás, teneis otro forero más que va al cubo de la basura en este subforo.
#108
Lo de la función tolower lo puedes solucionar con la función transform de la biblioteca <algorithm> , que te permite hacer una operación específica sobre cada elemento que recorre un iterador.

Código (cpp) [Seleccionar]

std::string str = "mi cadena";
std::transform(str.begin(), str.end(), str.begin(), std::tolower);


Un saludo.
#109
Hola francoyo1998, esto no es Python, en C++ hay que poner llaves para declarar los ámbitos, no es identándolo. Con tu código solo reemplazarías un triple espacio por cada línea, prueba así:
Código (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>
#include <string>
#include <fstream>
using namespace std;

int main()
{
   ifstream in("archivo.txt"); // Open for reading
   ofstream out("j.txt");      // Open for writing
   string s;

   //string re("   ");    no es necesario...
   
   size_t position;
   
   if(in)
       while(getline(in, s)) // Discards newline char
       {
           // We find the first match
           position = s.find("   ");
           // We replace "   " until the method find dont find a new match.
           while(position != string::npos)
           {
               // We replace the rest of the matches
               s.replace(position, re.length(),"   ");
               position = s.find(re);
           }
           out << s << "\n"; // ... must add it back
       }
   else
       cout << "File couldn't be opened" << endl;
       
   //system("pause>nul");
   cin.get();
}


Lo del cin.get() es para que sea portable.

Saludos.
#110
Me encanta la idea, en el subforo de Programación en C/C++ siempre andamos corrigiendo errores y nunca hacemos algo "novedoso".

Saludos.