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

#402
No entiendo a que te refieres con una cadena constant char en forma hexadecimal. Quieres introducir esto:
0x53 0x54 0x55 ...
¿Y que el programa lo guarde en aesKey? O quieres introducir esto:
ahagjh89875
Y que el programa lo guarde en aesKey.

Una vez dicho eso para hacer lo último solo con hacer esto:
#include<stdio.h>
unsigned char aesKey[32] = {
0x53, 0x28, 0x40, 0x6e, 0x2f, 0x64, 0x63, 0x5d, 0x2d, 0x61, 0x77, 0x40, 0x76, 0x71, 0x77, 0x28,
0x74, 0x61, 0x7d, 0x66, 0x61, 0x73, 0x3b, 0x5d, 0x66, 0x6d, 0x3c, 0x3f, 0x7b, 0x66, 0x72, 0x36
};
int main (int argc, char*argv[])
{
 //Aqui se copia todo lo que hay en argv[1] a aesKey
 memcpy(aesKey,argv[1],32);
 //Esto puedes obviarlo , es solo para mostrarlo por pantalla en formato hexadecimal.
 for(register int i = 0; i!=32;++i)
 {
     printf("0x%X ",aesKey[i]);
 }
 getchar();
 return 0;
}

Con este último código yo que tu tendría cuidado pues solo copia los carácteres que hay, pero si dejas esa por defecto, te va a sustituir los 4 o 5(el largo de lo que introduzcas) primeros pero no los demás hasta llegar hasta 32. Así que mi consejo es que si hay parámetros hagas esto pero antes inicialices a 0 todos los elementos de aesKey con un for o un while.
¡Un saludo!

PD: Perdon si no es lo que quieres  :-\
#403
Jajajajajaja esta bueno  :laugh: , menos mal que eres bueno y no te aprovechas(lo supongo por lo de la moraleja) porque hay mucha gente que se aprovecha de estas personas.
#404
Hola samsums91, tus errores son:

  • No llamas bien a la función menu en el main.
  • No puedes poner dos return's seguidos sin indicar que es un else ( función factorial)
  • Tienes que declarar la variable n en la función menu.
  • No se pueden declarar variables dentro de un case , a menos que utilices las llaves.
  • La variable número no contiene nada cuando se muestra.
  • Tienes que especificar el valor de retorno en el main.
Te dejo tu código con los errores indicados:
#include<stdio.h>
int factorial(int n);
//<------------------------------------ El prototipo de menu va aquí..
int main (void)
{
   void menu();//<-------------------- cuando se llama a una función no se pone el valor de retorno!!!!!
   //<-------------------------------- necesitas especificar el valor de retorno del main...
}

void menu()
{
   int opcion;

   printf( "Marque la opción que prefiera\n");
   printf( "0 Salir del programa\n");
   printf( "1 Calcular el factorial de una número\n");
   printf( "2 Comprobar si un número es primo\n");
   printf( "3 Calcular el mínimo común múltiplo\n");
   printf( "4 Calcular el máximo común divisor\n");
   printf( "5 Determinar si un año es bisiesto\n");
   printf( "6 Mostrar los años bisiestos\n");
   printf( "7 Mostrar número de dias de un mes y año\n");
   printf( "8 Calcular números combinatorios\n");
   printf( "9 Operar números racionales\n");
   printf( "10 Jugar al doble o nada\n");

   scanf("%d",&opcion);



   switch (opcion)
   {
   case 1:

       int numero, resultado;//<---------------------- No puedes declarar las variables aquí a menos que uses llaves dentro del case.
       printf("Introduzca el número");
       scanf("%d", &n);//<---------------------------- n no está declarada
       resultado = factorial(n);
       printf("El factorial de %d es %d", numero, resultado);
       return 0;//<------------------ una función void no retorna nada...
       break;
   default:
       printf("Válido\n");
   }
}
int factorial(int n)
{
   if(n > 1)
       return n * factorial(n-1);
   //<---------------------------------- Aquí va un else...
   return 1;
}

No entiendo esta pregunta:
Citar¿como puedo invocar una funcion dentro de otra funcion para despues invocarla en main?
PD: Estos son los que veo yo así rápido , si algún usuario quiere concretar o corregirme que lo haga , que últimamente no doy una  :laugh: ¡Un saludo!
#405
No te recomiendo que seas así : "porque pone esa * explica" porque puedes pedir las cosas de una mejor manera  ;). Eso es una multiplicación no tiene mucho misterio. Multiplica count por sizeof(int) y lo pasa como parámetro.

P.D: No creas que me lo he tomado a mal, pero solo te aviso.

¡Un saludo!
#406
Los punteros a objetos se pueden declarar así, todas las formas son lo mismo:
int *puntero;
int* puntero;
int * puntero;

Los punteros a funciones se declaran así:
tipoDeRetorno(*nombreDelPuntero)(parametro1,parametro2,...);
Un ejemplo del uso de punteros a funciones puede ser este:
#include <stdio.h>

int main(int argc, char *argv[])
{
   int(*punteroPrintf)(const char*,...);
   punteroPrintf=&printf;
   punteroPrintf("hola");
   return 0;
}

Son las únicas formas de declarar punteros en C creo.
#407
No se, es muy raro pero vamos lo has programado tu, digo yo que sabes que no es un troyano  :laugh: . ¿Te sale el icono ya?

¡Un saludo!
#408
Así lo tengo yo y funciona(he cambiado las funciones por la que decía Blackzero):
Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;

bool esPrimo(unsigned int num);
int int_cmp(const void *a, const void *b);//Función para pasarla a qsort


int main(int argc, char *argv[])
{
    int *arrayDeNumeros= (int*) calloc(1000,sizeof(int*));
    int lenArray = 0;
    cout << "Ingrese una cadena de numeros terminada en 0:" << endl;
    cin >> arrayDeNumeros[0];
    for(register int i = 1; arrayDeNumeros[i-1]!=0 ; ++i)
    {
        cin>>arrayDeNumeros[i];
        lenArray = i;
    }
    /** El algoritmo que viene a continuación lo que hace
     *  es ordenar  el array  arrayDeNumeros de  menor  a
     *  mayor,sinceramente,no sé como funciona solo que he
     *  leído que era rápido y lo he buscado.
     */

    qsort(arrayDeNumeros,lenArray,4,int_cmp);
    /**
     *  El siguiente bucle mira si los enteros que ya están
     *  ordenados son primos o no.
     */
    cout << "Los primos son: ";
    for(register int i = 1; arrayDeNumeros[i]!=0; ++i)
    {
        if(esPrimo(arrayDeNumeros[i]))
            cout<<arrayDeNumeros[i]<<" ";
    }
    cin.sync();// Para ignorar los carácteres no leidos...(limpiar el buffer)
    cout << endl<<endl<<"Presione una tecla para continuar . . .";
    cin.get();// Utiliza esto que es portable.
    return 0;
}
bool esPrimo(unsigned int num)
{
    if(num>2 && (num%2==0))/* Si el número es mayor que 2 y es divisible por el entonces no es primo*/
        return false;
    /**
     * Para comprobar si un número es primo se suele
     * utilizar el siguiente algoritmo, que consiste
     * en llegar hasta la raiz cuadrada del número de
     * dos en dos y empezando en 3, ya que un número
     * que no es par en la vida puede ser dividido por
     * un par.
     */
    unsigned int numSquare = (unsigned int)sqrt(num);
    for(register unsigned int i =3; i<=numSquare ; i+=2)
    {
        if(num%i==0)
        {
            return false;
        }
    }
    return true;
}
int int_cmp(const void *a, const void *b)
{
    const int *ia = (const int *)a; // casting pointer types
    const int *ib = (const int *)b;
    return *ia  - *ib;
    /* integer comparison: returns negative if b > a
    and positive if a > b */
}
#409
Jajaja es que no había visto el tema antes 0xDani  :xD
#410
Yo he visto que python(no sé programar en el) te permite manejar enteros grandísimos sin límite , cosa que no tiene C. También que según dicen si aprendes C , coges buenas prácticas de programación y bases para un lenguaje de más alto nivel. De un IDE que sea simple de usar , fácil de configurar , tenga un buen resaltado de sintaxis y autocompletado de código. Sobre debuggers el único que he utilizado ha sido OllyDBG así que no puedo decir mucho pues GDB no se usarlo con Codeblocks :-\ y por consola muchísimo menos.