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ú

Temas - Blaster

#1
Hola a todos

Llevo horas tratando de formular una posible solucion a este enunciado que
encontre por la web, por favor alguien puede darme una idea de como seria la
solucion.
Código (bash) [Seleccionar]

l = longitud de la cadena
l = len(cad);

factorial de n n!, o fact(n);
funcion residuo mod o %

Una cadena tiene n! permutaciones si su longitud es n
para la permutacion X, X pertenece al intervalo [1, 2, 3, ..., n!]
y para la posicion m-esima en la cadena m pertenece [0,1,2, ..., l-1]
ej. abcd
a: esta en la posicion 0
b: esta en la posicion 1
...
d: esta en la posicion 3

Tenemos un conjunto ordenado o lista ordenada C, en donde estan todos los
caracteres de nuestra cadena, entonces una nueva permutacion para un X dado
seria cad = "";

MIENTRAS m varia entre 0 y (longitud cadena -1)
//concatenacion (+)
c = C[ (X mod (n-1)!)/(n-(1+m))! ]
cad = cad + c

// Al conjunto le eliminamos el elemento instertado en cad
C = C - {c}
m = m+1
]

Saludos!
#2
Buenas !!!

La cuestión es que, quiero ver como esta estructurado un programa que este diseñado para este proposito, he buscado mucho por la web pero no
encuentro nada interesante, si alguien conoce un reproductorr MP3 de codigo libre y me pasara el nombre le agradeceria mucho.

Saludos ...  
#3
Buenas !!

La cuestión es que me quiero decidir por una de estas dos librerias para el desarrollo de juegos en
3D he escuchado que DirectX es estupenda tambien y algunos me dicen que SDL no sirve para
hacer juegos 3D. Quiero empezar a estudiar unas de estas para implementarlas junto al lenguaje
C++ ¿cual me recomiendan?..

Saludos
#4
Dudas Generales / Traductor de documentos PDF
8 Julio 2013, 21:17 PM
Bunas!!

El tema es que quiero traducir un libro de programación que me acabo de descargar que esta en ingles, y pesa 147 MB en formato pdf ya he probado con el traductor de google pero creo que no puede con archivos muy grandes si pudieran recomendarme algun programa para el proposito o un sitio que pueda con archivos grandes lo quiero traducir al español.

Saludos  :rolleyes:

#5
Buenas!!

Alguien podria ayudarme a compreder este codigo se trata de un programa que imprime una
palabra ingresada al reves

#include<stdio.h>
#include<ctype.h>

int g( int n )
{
    int c, d = !EOF;
    while( d != EOF && (c = getchar()) != '\n' && c != EOF )
    {
       if(!isspace( c ) )
       {
          d = g( n+1 );
          putchar( c );
       }
       else d = c;
       if( n > 0 )
        return d;

       if(isspace( d ) ) putchar( d );
    }
    return EOF;
}

int main( void )
{
    g( 0 );
    putchar('\n');

    return 0;
}


Gracias  :)
#6
Bueno esa es la duda en cuestión, mi teoria es que debe ser con algun programa
y si es asi me podrian decir los programas que usualmente se utilizan para este
proposito. Tambien prodria de ser con un programa que inyecte exploit de manera
indiscriminada hasta detectar algun tipo de posible bug, la verdad que nose tengo
mucha imaginación jejep. Pero por ahora estoy viendo programas como ollydbg lo
veo muy interesante actualmente sigo unos cursos de ingenieria inversa, bueno
agradeceria cualquier ayuda de ustedes

#7
Mi duda esta en la linea indicada que pasa cuando se cumple la condicion y se ejecuta
la linea indicada, como ven es una funcion que no retorna ningun valor.

Código (cpp) [Seleccionar]
void clear_all_latency_tracing(struct task_struct *p)
{
unsigned long flags;

if (!latencytop_enabled)
return; //<==

raw_spin_lock_irqsave(&latency_lock, flags);
memset(&p->latency_record, 0, sizeof(p->latency_record));
p->latency_record_count = 0;
raw_spin_unlock_irqrestore(&latency_lock, flags);
}
#8
Buenas!!

Alguien podria proporcionarme algun codigo de un virus simple en C he buscado mucho pero no encuentro uno que este progrmado en C ya que es el lenguaje en el cual programo, tengo mucha
curiosidad de estudiar como estan estructurados ya que siempre me ha llamado la atencion
Les agradeceria un monton.. ..

Saludos 
#9
Buenas!!

Que me dicen he leido que el lenguaje que mas se usa es Objetive-C pero me gustaria
saber si es posible tambien hacerlo con C y C++ ya que esos son los lenguajes con los
que me manejo. Y de paso quisiera que me tiraran sus opiniones respecto IOS si es
conveniente programar para este OS, y de los inconvenientes o desventajes que posee

Saludos
#10
Buenas!!

He seguido un par de tutoriales en la red sobre esta libreria que me gusta mucho; ahora tengo
pensado hacer unos programas simples tipo hola mundo, pero no se que hacer ya que en la pagina de qt-project encuentro el archivo binario donde ya incluyen Qt 5.0.2 bibliotecas y Qt Creator 2.7.0 y la otra que te da la opción de descargar el codigo fuente de la libreria; pero no tengo idea de como compilarla ya que uso codeblocks con minGW para asi trabajar con ella desde codeblock.

Que diferencia hay entre descargar el binario que ya trae el IDE y el codigo fuente; ya que yo
quiero trabajar con la libreria QT y C++ sin usar otro IDE que no se Codeblocks que ventajas
y desventajas conlleva esto

Saludos  :rolleyes:
#11
Buenas!!

Tengo un pequeño problema con un codigo me compila pero al momento de ejecutarla windows
tira una ventana donde dice que mi programa hace referencia a una zona de memoria a la que
no se puede escribir, les dejo el codigo

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

int main()
{
    int i;
    struct COORD { int array[10], y, z; } punto;

    struct COORD *ap_punto;

    for(i = 0; i < 10; i++)
        ap_punto->array[i] = 2;

    punto.y = punto.z = 1;

    ap_punto = &punto;

    ap_punto->y+=2;
    ap_punto->z=3;

    for(i = 0; i < 10; i++)
    printf("%d ", ap_punto->array[i]);

    return 0;
}


Saludos
#12
Buenas!!

En mi caso por ejemplo llevo un año y medio estudiando el lenguaje C y de paso C++ en este periodo de tiempo he aprendido bastante lo suficiente para hacer unos programamitas de utilidad para mi uso personal, incluso ya he hecho varios juegos entretenidos

Pero me estoy dando que necesito adquirir mas conocimiento para llevar acabo algunos proyectos que me he propuesto, he lei en algunos sitios que algunos aprenden a dominar un lenguaje como C aproximadamente en diez años es eso cierto, o tal vez dependa unicamente de ti ya que yo le dedico a esto cinco horas diaria generalmente a la noche ya que estoy trabajando.

A la espera de sus comentarios

Saludos  :silbar:  
#13
Hola alguien sabe por que en la version 12.11 en la ventana de watches no aparece las variables locales ni las funciones como podria solucionar esto por que me urge seguir la ejecucion de un programa linea a linea para ver los valores que toma las variables .Ya que en la version 10.05 se podia hacer

Saludos  :rolleyes:
#14
Alguien me puede echar una mano con este codigo que no me compila me tira este error:

Código (asm) [Seleccionar]
error: lvalue required as increment operand

Y aqui esta el codigo que llevo:

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

int main(void)
{
   char frase[] = "Hola como estas Hola como te va Hola amigo";
   char palabra[] = {"Hola"};

   int lon = strlen(palabra);

   int i, j = 0;

   while(*frase != '\0'){
       i = 0;
       while(*frase != ' ' || *frase != '\0'){
           frase++; // Error en esta linea
           i++;
       }
       if(strncmp(frase - lon, palabra, lon)==0) j++;

       if(*frase != '\0')
           frase++; // Y aqui
   }

   printf("La palabra Hola se repite %d veces", j);

   return 0;
}



Saludos  :rolleyes:
#15
 Hola acabo de terminar un sencillo code, que fue una idea que se me vino a la cabeza; se
trata de un sencillo traductor. La cuestion es que me guataria mejorarlo un poco en el caso
de las palabras me gustaria guardarla en una base de datos pero ese se me complica un
poco, o tambien podria ser en un fichero txt.
En alguna parte vi algo sobre las expresiones regulares quisiera implementarlas en el code
para haceer las comparaciones de las palabras alguna idea, aqui esta el code que hice:

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

char *punt[][2] = { "large", "grande", "evil", "maligno", "lower", "mas bajo",

               "write", "escribir", "print", "imprimir", "this", "este, esta, esto",

               "show", "mostrar", "check", "comprobar", "set", "poner, colocar" };

int main()
{
   int j, sw = 0, iter = 9;
   char nom[80];

   printf("\nEscriba la palabra que desea traducir: ");
   gets(nom);

   for(j = 0; j < iter; j++)
   {
       if(!strcmp(nom, punt[j][0]))
       {
          printf("\n %s traducido --> %s" , nom, punt[j][1]);
sw=1;
         }
    }
   if(sw==0)
     printf("\n Lo siento la palabra no pudo ser traducida\n");

   getchar();
   return 0;
}



Un Saludo!!  :D
#16
Hola a todos, vengo a hecer este humilde aporte, yo ya habia abrido un post sobre esto donde pedia que me expliquen para comprender como funcionaba el Algoritmo de Quicksort pero luego de muchas horas de romperme la cabeza tratando de desmenusarlo por completo al fin lo logre. Alli abajo dejo una sencilla pero detallada explicacion de como lo entendi yo, si he errado en algo porfavor haganmelo saber:

Código (cpp) [Seleccionar]
int dividir(int *cad, int inc, int end)
{
      int j;
      int pibote, valor_pivote;
      int temp;

      pibote = inc;
      valor_pivote = cad[pibote];

      for (j = inc+1; j <= end; j++)
      {
          if (cad[j] < valor_pivote)
          {
               pibote++;

               temp = cad[j];
               cad[j] = cad[pibote];
               cad[pibote] = temp;
           }
      }
      temp = cad[inc];
      cad[inc] = cad[pibote];
      cad[pibote] = temp;

      return pibote;
}

void quicksort(int *array, int inicio, int fin)
{
   int pivote;

   if(inicio < fin)
   {
     pivote = dividir (array, inicio, fin);

     quicksort(array, inicio, pivote-1); //ordeno la lista de los menores
     quicksort(array, pivote+1, fin); //ordeno la lista de los mayores
   }
}


Supongamos que tenemos un array con estos valores:
Código (bash) [Seleccionar]
cad[] = {5, 2, 10, 7, 4};

En este caso tomamos como pibote al 5 y con el ciclo for recorremos el array desde la posicion 1 hasta la 4; y justo abajo tenemos un if con la condicion de que si el valor contenido en el array es menor al pibote, se ejecutara el bloque de instrucion siguiente.
En este caso, en el primer recorrido se encuentra al 2 menor al pibote, por lo tanto se cumple la condicion de la que hablabamos. Primeramente el valor del pibote aumenta a uno segun esta declaracion (pibote++;).

Luego a la variable auxiliar (temp) le asignamosel valor de 2 ya que en ese instante el indice [j] contendra el valor de 1 donde esta guardada 2, luego a (cad[j]) le asignamos (cad[pibote]) recuerden que pibote ahora vale 1 y no olvidar que tambien [j]
Se dieron cuenta cad[j] conservo su valor y en esta parte ocurrio lo mismo
(cad[pibote] = temp;) por que los dos [j] y [pibote] trabajaroncon las mismas posiciones osea 1 y no se produjeron intercambios.

Continuamos con el primer recorrido y detectamos que 4 es menor al pibote se cumple la condicion pibote aumenta a 2 ya que valia 1, luego hacemos los cambios (temp) contendra a 4 y (cad[j]) la ultima posicion le asignamos 10 recuerden que [j] vale 4, luego a cad[pibote] le asignamos temp osea 4 recuerden que [pibote] vale 2.

Como ven se intercambiaron  10 y 4; ahora nuestro array quedara asi:

Código (bash) [Seleccionar]
cad[] = {5, 2, 4, 7, 10};


Ahora ya salimos del primer recorrido en esta parte hacemos los intercambios
pertinentes con estas declaraciones:

Código (cpp) [Seleccionar]
temp = cad[inc];
cad[inc] = cad[pibote];
cad[pibote] = temp;


Con los valores finales de pibote al salir del ciclo en este caso es 2
como se daran cuenta aca ocurre un intercambio, deben saber que (inc) vale 0 su
valor no varia mientras no se ejecute la funcion recursiva, y e obvio que se
intercambiaron 4 y 5 ahora el array pasa asi:

Código (bash) [Seleccionar]
cad[] = {4, 2, 5, 7, 10};

Al salir pibote retorna 2 y se ejecuta la funcion que ordena la lista de los menores
como ven a (pivote-1) pasa a valer solo 1, osea solo podemos leer los valores
cad[] = {4, 2}; ahora el 4 actua como pibote y (inc) sigue valiendo 0 ahora en este
recorrido encuentra que 2 es menor al pibote y aumenta pibote a 1 como ya es de predecir  en esta parte no se produciran intercambios.

Salimos de ciclo, y hacemos los intercambios con las declaraciones de abajo,
pibote termina con un valor final de 1 y (inc) sigue con 0; se intercambian los valores quedando asi nuestro array:

Código (bash) [Seleccionar]
cad[] = {2, 4, 5, 7, 10};

Y de esta forma quedo ordenado nuestro array; creo que luego se volvio a ejecutar la parte que ordena la lista de los mayores pero sin realizar cambios.
Espero que a algunos iniciados en esto de la programacion le sirva para aprender de este algoritmo y a los que ya dominan este tema me corrija si he fallado en algo

Saludos!!  ;D
#17
Hola quisiera que me ayuden a comprender el funcionamiento de metodo de
ordenamiento quicksort, ya que me rompo la cabeza trantado de hacerlo
Por ahora ya lo voy entendiendo mas o menos; pero la parte de la funcion recursiva no se me aclara del todo aca el codigo de las dos funciones:

int colocar(int *v, int b, int t)
  {
      int i;
      int pivote, valor_pivote;
      int temp;
   
      pivote = b;
      valor_pivote = v[pivote];
      for (i=b+1; i<=t; i++){
          if (v[i] < valor_pivote){
                  pivote++;    
                  temp=v[i];
                  v[i]=v[pivote];
                  v[pivote]=temp;
   
          }
      }
      temp=v[b];
      v[b]=v[pivote];
      v[pivote]=temp;
      return pivote;
  }
 
  void Quicksort(int* v, int b, int t)
  {
       int pivote;
       if(b < t){
          pivote=colocar(v, b, t);
          Quicksort(v, b, pivote-1);
          Quicksort(v, pivote+1, t);
       }  
  }


Por favor si no es mucha molestia, agregen comentarios a cada lineas del codigo
para saber que hacen exactamente; porfavor les agradeceria mucho ya que me interesa mucho esto  :)
#18
Hola a todos, mi intencion exactamente es realizar un tipo de traductor sencillo,
y quiero guardar las definiciones de las palabras en un ficheros txt, para luego
hacer una lectura de ellos, pero no encuentro la forma ya que ahi estarian la palabra a traducir  y junto a ella lo que significa. Por ejemplo:
"book, libro" seguidamente alguna idea.
#19
Estoy trabajando con un progrma que hace uso de un array de tipos entero, y necesito determinar el tamaño en base al cotenido de esta; probe con strlen pero esta solo devuelve la longitud de uno de tipo char.

char cadena[15]= "Hola" ;

Aka definimos una arary de tamaño 15, pero la hemos inicializado y tiene una longitud de solo  4,
pasando esto a strlen efectivamente devuelve 4; existe una funcion igual a esta para
aplicarla a un entero.

Desde ya mucha gracias
#20
Alguien podria decirme en que estoy fallando, aka el codigo que estoy haciendo:

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

struct empleado{
    char nom[40];
    int asiento[3];
};
void ingresar(empleado d);
void asignarAsiento(empleado q[]);
void imprimir(empleado a);

int main()
{
     empleado e[3];
     asignarAsiento(e);
     for (int i=0; i!=3; ++i)
     imprimir(e[i]);
     return 0;
}
void ingresar(struct empleado d){
    printf("Nombre: ");
     scanf("%s", d.nom);
    printf("Asiento: ");
     scanf("%d", &d.asiento);
   }
void asignarAsiento(struct empleado q[]){
    int i, j;
    for(i=0; i<3; i++){
            ingresar(q[i]);
       for(j=0; j<i; j++) {
          if(q[i].asiento[j]==q[j].asiento[i]){
            printf ("Asiento ocupado\n");
            i--; break; }
               }
       }
}
void imprimir(struct empleado a){
    printf("Nombre\tAsiento");
    printf(" %s \t %d", a.nom, a.asiento);
}

A la hora de compilarlo el compilador me lanza dos errores:
error: cannot convert `empleado' to `empleado*' for argument `1' to `void asignarAsiento(empleado*)'
error: conversion from `empleado*' to non-scalar type `empleado' requested
#21
Bueno este programita hace lo siguiente: cambia cada letra de la palabra usando abecedario inverso (corrimiento a la derecha)
Cambia 'a' por 'z' - 'y' por 'b' y sucesivamente; el problema es que cuando lo compilo
me lanza este warning:

[Warning] NULL used in arithmetic

Alguien sabe por pasa esto y como puedo solucionarlo :huh:
les dejo el code:

#include <stdlib.h>
#include <stdio.h>

int main()
{
char *palabra=(char*)malloc(sizeof(char)*64);
char *nuevo=(char*)malloc(sizeof(char)*64);
char *start= nuevo;
printf("Original: ");
gets(palabra);
while(*palabra!= '\0'){
           if (*palabra==32 )
               *nuevo++= *palabra++;
           else
               *nuevo++= 219- *palabra++;
               }
   *nuevo++='\0';
   printf(" Cifrado: %s \n", start);
return 0;
}


Codigo mejorado  ;D
#22
 Bueno esa es la duda, que tengo desde que me he iniciado en
C y C++  :rolleyes: me pregunto si se podria dañar el disco o el
microprocesador o tambien la memoria.
Ejecutando algun tipo de codigo en estos lenguajes, he leido en
algunos sitios que con ASM se puede hacer esto mediante determinadas
instrucciones

Espero que alguien me aclare esto gracias.
#23
 Comparto con ustedes este codigo para quien le pueda servir,
lo hice en mis tiempos libres y salio esto ;)

#include <iostream>
#include <conio.h>
#include <windows.h>

#define ARRIBA 72
#define IZQUIERDA 75
#define DERECHA 77
#define ABAJO 80
#define ESC 27

using namespace std;

void mover_izquierda();
void mover_derecha();

void juego();

char izquierda1[]={' ','0',' ',0};
char izquierda2[]={'0','0','0',0};
char izquierda3[]={'0',' ','0',0};

char derecha1[]={' ','0',' ',0};
char derecha2[]={'0','0','0',0};
char derecha3[]={'0',' ','0',0};

char tecla;
int x = 0, y = 0;

void gotoxy(int x,int y)
{
   HANDLE hCon;
   COORD dwPos;
   
   dwPos.X = x;
   dwPos.Y = y;
   hCon = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleCursorPosition(hCon,dwPos);
}
void juego() {
   x=37;
   y=20;
   do {
      tecla = getch();
      if (tecla == IZQUIERDA || tecla == DERECHA) {
         if (tecla == IZQUIERDA)
          mover_izquierda();
         if (tecla == DERECHA)
          mover_derecha();
       }    
   }while(1);
   cin.get();
}
void mover_izquierda() {
    if (x>=3) {
       x-=3;
       system("cls");
    }
    gotoxy(x,y); puts(izquierda1);
    gotoxy(x,y+1); puts(izquierda2);
    gotoxy(x,y+2); puts(izquierda3);
    gotoxy(0,0);
}
void mover_derecha() {
    if (x<75) {
       x+=3;
       system("cls");
    }
    gotoxy(x,y); puts(derecha1);
    gotoxy(x,y+1); puts(derecha2);
    gotoxy(x,y+2); puts(derecha3);
    gotoxy(0,0);
}
int main() {
   printf("\n\n\t\t\t SPACE INVADERS \n");
   printf("\n\n\n\t\tPRESIONA LAS TECLA <- O -> PARA INICIAR:");
   
   gotoxy(0,0);
   int menu = getch();
   juego();
   
   return 0;
}
#24
Programación C/C++ / Juego snake en c++
5 Octubre 2012, 02:20 AM
El codigo ya esta corregido, la libreria (conio2.h) es la que provocaba
el fallo; este es el code funcional pa quien lo quiera compilar
y ejecutar gracias a todos ;)

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

#define ARRIBA 72
#define IZQUIERDA 75
#define DERECHA 77
#define ABAJO 80
#define ESC 27

int cuerpo[200][2];
int n = 1, tam = 10, dir = 3;
int x = 10, y = 12;
int xc = 30, yc = 15;
int velocidad = 60;
char tecla;

void gotoxy(int x, int y)
{
   HANDLE hCon;
   COORD dwPos;

   dwPos.X = x;
   dwPos.Y = y;
   hCon = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleCursorPosition(hCon,dwPos);
}
void OcultaCursor() {
   CONSOLE_CURSOR_INFO cci = {100, FALSE};

   SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
}
void pintar(){  
    for(int i=2; i < 78; i++){
       gotoxy (i, 3); printf ("%c", 205);
       gotoxy(i, 23); printf ("%c", 205);
       }
    for(int v=4; v < 23; v++){
       gotoxy (2,v);  printf ("%c", 186);
       gotoxy(77,v);  printf ("%c", 186);
       }
    gotoxy  (2,3);    printf ("%c", 201);
    gotoxy (2,23);    printf ("%c", 200);
    gotoxy (77,3);    printf ("%c", 187);
    gotoxy(77,23);    printf ("%c", 188);
    }  
void guardar_posicion(){
    cuerpo[n][0] = x;
    cuerpo[n][1] = y;
    n++;
    if(n == tam) n = 1;
}
void dibujar_cuerpo(){
     for(int i = 1; i < tam; i++){
     gotoxy(cuerpo[i][0] , cuerpo[i][1]); printf("*");
    }
}
void borrar_cuerpo(){
    gotoxy(cuerpo[n][0] , cuerpo[n][1]); printf(" ");
   }
void teclear(){
    if(kbhit()){
           tecla = getch();
           switch(tecla){
               case ARRIBA : if(dir != 2) dir = 1; break;
               case ABAJO : if(dir != 1) dir = 2; break;
               case DERECHA : if(dir != 4) dir = 3; break;
               case IZQUIERDA : if(dir != 3) dir = 4; break;
          }
    }
}
void comida()
{
    if(x == xc && y == yc)
    {
         xc = (rand() % 73) + 4;
         yc = (rand() % 19) + 4;
         
         tam++;
         gotoxy(xc, yc); printf("%c", 4);
    }
}
bool game_over()
{
    if(y == 3 || y == 23 || x == 2 || x == 77) return false;
    for(int j = tam - 1; j > 0; j--){
            if(cuerpo[j][0] == x &&  cuerpo[j][1] == y)
            return false;
    }
   return true;
}
int main()
{
   OcultaCursor();
   
   pintar();
  gotoxy(xc, yc); printf("%c", 4);
   
   while(tecla != ESC && game_over())
   {
        borrar_cuerpo();
        guardar_posicion();
        dibujar_cuerpo();
        comida();
        teclear();
        teclear();
       
        if(dir == 1) y--;
        if(dir == 2) y++;
        if(dir == 3) x++;
        if(dir == 4) x--;
       
        Sleep(velocidad);
        }
   pintar();
   return 0;
}