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

#111
Programación C/C++ / Re:
6 Abril 2014, 17:20 PM
Cita de: ivancea96 en  6 Abril 2014, 15:21 PM
He dicho que lo hago más rápido, no que sea más eficiente.
Además, en este ejemplo la eficiencia es absurda e innecesaria.

Enviado desde mi ST21i mediante Tapatalk
Estas comparando:

Código (cpp) [Seleccionar]
string t;
cin >> t;
if(t.size()==0) t='1'; //Evitar problemas en entrada

funcs[(t[0]-'1')%3](); //Llamamos a la función. "(t[0]-'1')%3" es solo para evitar que salga del rango 0-2


¿Con esto?

Código (cpp) [Seleccionar]
int N;
cin>>N;

if (cin.good())
    funcs(N%3);


Yo veo más corto el segundo, pero sobre gustos no hay nada escrito :-X
#112
Al reves, un string tiene que redimensionarse dinámicamente.

Ademas, desde cuando te importa la eficiencia?  ;D
#113


Código (cpp) [Seleccionar]
/*Programa del libro, Tema 5
* ejercicio 5.13, pagina 170
* problema funcion de numeros aleatorios*/

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

int aleatorio(int x, int y);

int main()
{
    int x, y;
    int i;
    printf("Introduce dos numeros para hacer un rango (1 15 p.ej.): ");
    scanf("%d%d", &x, &y);

    for (i = 0; i < 100; i++)
        printf("%d <= %d <= %d\n", x, aleatorio(x, y), y);

    return 0;

}

int aleatorio(int x, int y)
{
    srand(time(NULL));
    int z;
    z = rand()%(y -x +1) + x;
    return z;

}


Solución: Poner el srand al principio del codigo:

Código (cpp) [Seleccionar]
[code=cpp]/*Programa del libro, Tema 5
* ejercicio 5.13, pagina 170
* problema funcion de numeros aleatorios*/

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

int aleatorio(int x, int y);

int main()
{
    srand(time(NULL));
    int x, y;
    int i;
    printf("Introduce dos numeros para hacer un rango (1 15 p.ej.): ");
    scanf("%d%d", &x, &y);

    for (i = 0; i < 100; i++)
        printf("%d <= %d <= %d\n", x, aleatorio(x, y), y);

    return 0;

}

int aleatorio(int x, int y)
{
    int z;
    z = rand()%(y -x +1) + x;
    return z;
}



     [/code]
#114
Para eso tienes cin.good()
#115
Por cierto el srand SOBRA.

La semilla debe inicializarse una sola vez en todo el programa. Si la inicializas cada vez que llamas a la funcion, obtendras siempre valores muy similares (o identicos). Esto se puede ver poniendo un bucle para que te saque 10 aleatorios.

En cuanto al problema, no era de rand sino de como usas los operadores de C. Antes te iba bien porque tus valores inferiores eran muy pequeños, asi que era mas dificil que te saliera un caso erroneo.
#116
¿Por que lees un string y no un entero?
#117
A la Y le tienes que restar lo que vale X.

El problema esta en que al hacer %1112, te sale un número del 0 al 1111. Si a eso le sumas 1000 la lias parda completamente.
#119
Programación C/C++ / Re: bucle con char
6 Abril 2014, 00:35 AM
Los dos códigos que han puesto tienen un error, error provocado por escribir muy rápido ;D

En el primer código pones frec[25], no sería frec?

En el segundo código pones == cuando supongo que querrias hacer =.

El error de compilación es porque estás usando la variable i fuera de su contexto (es decir, fuera del for).
#120
Lo que se puede hacer es forzar a que el número cumpla una sintaxis específica. En C++ se usa este metodo:
Código (cpp) [Seleccionar]
int a = 12; // 12 en base 10
int b = 0x12; // 12 en base 16


Cuando se pone 0x es base 16, y sin el es base 10.