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

#301
Hola a todos.
El asunto es simple por lo menos para explicarlo, sólo que no se si se puede hacer, lo que quisiera saber es si en cada iteración además de generar los número ir ordenándolos, me parece que no quedaría del todo ordenado pero por lo menos ir intercambiando los posibles.-
El juego es de Argentina y se llama Quini6, los números a asertar son 6 y van del 0 al 45.-
En este caso no tiene mucho sentido porque el bucle se realiza sólo 6 veces, pero en el caso de generar por ejemplo 500.000 números tal vez acelere el tiempo que tardaría una manera y la otra.-
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void generar();

int main(void){
generar();

return 0;
}

void generar(){
int guardar[6], numero=0, i=0, hora = time(NULL);
srand(hora);

for(; i<6; i++){
numero = rand()%46;
guardar[i] = numero;
}
}
   


Desde ya muchas gracias y muchos saludos.-
Daniel
#302
Hola.
En este caso el principal uso es para evitar tener que declarar otra variable temporal, ¿estoy en lo cierto ?.-
De ser así y si lo preferís no me respondas, lo damos por sentado.-

Saludos.
Daniel
#303
Hola eferion.
Ok. Funciona a la perfección, sólo una cosita más, me podrías explicar esta línea de código.

digitos[ 0 ] ^= digitos[ 2 ];

Se lo que hace el operador XOR (binario) pero no alcanzo a entender para que lo utilizaste en este caso.-
Desde ya gracias por tu tiempo y por favor tutéame que tengo edad de abuelo(62) pero no lo aparento.- ;D ;D ;D

Saludos.
Daniel
#304
Hola rir.
Una pregunta y una reflexión:
¿sos extraterrestre?
No dudo que ni a los autores del enunciado se les hubiera ocurrido hacer eso con 2 líneas.-
Eferion gracias por responder, tú código compila sin errores pero siempre me da como resultado cero.-

Saludos.
Daniel
#305
Hola a todos y que tengan un muy buen día.-

CitarEl programa debe leer un entero de cuatro dígitos y cifrar la información de la siguiente manera: reemplace cada dígito con residuo de la división entre 10 de la suma de dicho dígito mas 7. Posteriormente, intercambie el primer digito con el tercero, e intercambie el segundo dígito con el cuarto. Luego despliegue el entero cifrado.

Bueno con el enunciado tan bien explicado no me queda mucho para agregar, sólo decirles que estoy trabado con la última parte la de intercambio de dígitos, lo he intentado de varias manera pero no me funciono.-

#include <stdio.h>

int main(void){
int numero=5724, digito=0, div=1000, auxiliar=0, cifrado=0;
while(numero>0){
digito = numero/div;
numero = numero-(div*digito);
auxiliar = (digito+7)%10*div;
cifrado += auxiliar;
div /= 10;
}


printf("\n El n%cmero cifrado es...: %d\n", 163, cifrado);

return 0;
}


Una cosita más, no tengan reparos en postear código que sea totalmente distinto al mío, el código es de mi propia idea y seguramente Uds. lo sabrán hacer de una manera más eficiente.-       

Saludos.
Daniel
#306
Hola rir.
Bueno parece que el tema no da para más, cuando aprenda a construir librerías haré una para esto y me quedará como una instrucción mas.-   

Saludos.
Daniel
#307
Hola Amigos.
El enunciado del manual es el siguiente.-



//http://dacap.com.ar/blog/cpp/medir-el-tiempo-de-una-rutina/
#include <stdio.h>
#include <windows.h>

/* retorna "a - b" en segundos */
double performancecounter_diff(LARGE_INTEGER *a, LARGE_INTEGER *b){
LARGE_INTEGER freq;
QueryPerformanceFrequency(&freq);
return (double)(a->QuadPart - b->QuadPart) / (double)freq.QuadPart;
}

int main(int argc, char *argv[]){
int contador=0;
LARGE_INTEGER t_ini, t_fin;
double secs;

QueryPerformanceCounter(&t_ini);
while(contador <= 300000000){
contador++;
if(contador % 100000000 == 0){
QueryPerformanceCounter(&t_fin);
secs = performancecounter_diff(&t_fin, &t_ini);
printf("%.16g milliseconds\n", secs * 1000.0);
QueryPerformanceCounter(&t_ini);
}
}
 
getchar();
return 0;
}



El programa que logré a partir de los ejemplos de la página me funciona correctamente (por lo menos es lo que a mí me parece) lo que pasa es que no entiendo casi ninguna línea (creo que tiene que ver con las API's de windows), la pregunta es ¿alguien me puede decir si se puede lograr lo mismo con con un programa en C puro?, de ser así ¿podrian poner algún ejemplo?.-

Saludos.
Daniel
#308
Hola a todos y que tengan un muy buen día.-
rir ¿esto tiene que ver con la fórmula que proponías?

//a * b > MAX ==> a > MAX / b, b > MAX / a

#include<stdio.h>

int main(void){
unsigned int a = 2147483648, b=2, c=0, d = -1;
c = d/b;

if(a>c)
printf("\n %u * %u supera el m%cximo permitido --> %u", a, b, 160, d);
else{
c = a*b;
printf("\n %u * %u = %u", a, b, c);
}


printf("\n\n");
return 0;

}


Kutcher mil disculpas por interferir en tú hilo pero no me pareció atinado hacer un post tan cercano y con la misma pregunta, es que me pareció interesante el tema sólo que tenía dudas con la formula de rir3760, lo de Blaster es por el momento demasiado avanzado para este momento mío.-

Saludos.
Daniel
#309
Hola rir.
Gracias por el aporte, hay cosas que o no están en todos los manuales o uno las pasa por alto, gracias que están Uds.

Cita de: rir3760 en 20 Agosto 2014, 05:30 AM
Convertir el valor -1 a un tipo entero sin signo es la forma usual de obtener el valor máximo del tipo en cuestión sin tener que recurrir al encabezado <limits.h>. Esto porque cuando un valor con signo se convierte a uno sin signo y el valor esta fuera del rango valido (-1 lo esta) se le suma o resta (dependiendo del caso) MAX + 1 hasta obtener uno valido (-1 + MAX + 1 == MAX).

#include<stdio.h>

int main(void){
     unsigned int a = -1;

     printf("\n\n El m%cximo valor soportado por un entero sin signo es...: %u\n\n", 160, a);

     return 0;
}


          Saludos.
          Daniel
#310
Hola Ivancea96.
Bueno al fin me queda del todo claro, no es porque Blaster lo hayas explicado mal, sino es porque de esta manera me cayó la ficha.- 

Saludos.
Daniel