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

#1421
Cita de: CobraCY en 13 Noviembre 2011, 00:38 AMEntonces lo que hace esto es dividir el primer for a un nucleo y el for anidado en otro nucleo
El problema con el ejemplo es: lo que ejecuta el bucle externo es el bucle interno. Para que fuera posible realizar el proceso en paralelo deberia ser:
for (int i = 0; i < x; i++){
   // Algun proceso basado en i ...
}

for (int j = 0; j < y; j++){
   // Algun proceso basado en j ...
}


Informacion en Wikipedia: Parallel computing

Una de las APIs: OpenMP

Un saludo
#1422
El error se genera debido a que en la condicion del "if" estas utilizando el operador de asignacion '=' cuando deberia ser el de comparacion '==', de esta forma:
if (dia >= 1 && dia <= 31
   && mes == 1 || mes == 3 || mes == 5 || mes == 7
   || mes == 8 || mes == 10 || mes ==12
)
   printf("Hoy es %u del %u.", dia, mes);


Pero con ese cambio no funcionara correctamente si la intencion es verificar que el dia este en el rango 1 .. 31 y el mes sea el indicado (1, 3, 5, 7, 8, 10 o 12) ya que el operador "&&" tiene mayor prioridad que el operador "||".

La forma correcta es utilizando parentesis:
if (dia >= 1 && dia <= 31
   && (mes == 1 || mes == 3 || mes == 5 || mes == 7
   || mes == 8 || mes == 10 || mes == 12)
)
   printf("Hoy es %u del %u.", dia, mes);


Un saludo
#1423
Los problemas aquí son dos: estas utilizando sscanf, ella lo que hace es procesar la cadena pasada como primer argumento y por supuesto no se va a imprimir en la salida estándar.

El segundo se debe al uso de "%c" ya que al utilizar ese especificador la función no ignora (como en otros casos) el espacio blanco, en su lugar se "traga" el primer carácter que encuentre y este es usualmente un avance de linea.

Por ultimo no deberías utilizar "fflush(stdin)", el porque se explica en el tema |Lo que no hay que hacer en C/C++. Nivel básico|.

Para que funcione correctamente debes cambiarlo a:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char palabra[100];
    char id;
    int n;
    int i;
   
    printf("Inserta n: ");
    fflush(stdout);
    if (scanf("%d", &n) != 1 || n < 0)
        return EXIT_FAILURE;
   
    for (i = 0; i < n; i++){
        printf("Inserta identificador (e, v, l, c): ");
        fflush(stdout);
        scanf(" %c", &id);
       
        printf("Inserta PALABRA a tratar: ");
        fflush(stdout);
        scanf("%s", palabra);
       
        printf("Id: %c\n", id);
        printf("Palabra: %s\n\n", palabra);
    }
   
    return EXIT_SUCCESS;
}


El espacio en " %c" es critico para descartar el espacio blanco antes del carácter.

Un saludo
#1424
En el caso de la aproximacion de fuerza bruta esta se puede mejorar un poco reduciendo el rango y utilizando al contador del bucle como bandera. De esta forma:
#include <stdio.h>
#include <stdlib.h>

int es_primo(int num);

int main(void)
{
    int i;
   
    for (i = 2; i < 100; i++)
        if (es_primo(i))
            printf("%d\n", i);
   
    return EXIT_SUCCESS;
}

int es_primo(int num)
{
    int i;
   
    for (i = 2; i*i <= num && num % i != 0; i++)
        ;
   
    return i*i > num;
}


Un saludo
#1425
En mi opinión se esta asumiendo que el enunciado pide mas de lo esperado.

Porque si solo se trata de practicar con los operadores de división y modulo serian suficientes las cuatro lineas para extraer los dígitos de los millares, centenas, decenas y unidades.

Un saludo
#1426
El error es que estas colocando las condiciones entre comillas, por ejemplo:
if ("a < b")
    if ("b > c")
       printf ("El mayor es %d\n", b);

Basta con quitarlas todas (las comillas dobles) para que funcione correctamente, el primer "if" debe ser:
if (a < b)
    if (b > c)
       printf ("El mayor es %d\n", b);


Un saludo
#1427
Cita de: scarguss en 10 Noviembre 2011, 21:10 PM¿Porque, por ejemplo con esto: cifras_impares=((num%1000)/100);
se refiere a la posicion de las centenas del numero?
Porque asi separas el digito de las centenas.

Tomemos por ejemplo el valor 6789. Al dividirlo entre 1000 el modulo o residuo es 789. Y al dividir 789 entre 100 el resultado  es 7.

Los demas casos son similares.

Un saludo
#1428
Deberías utilizar bucles y arrays ya que ello te permitiría desarrollar el programa de una forma mas fácil y corta.

Lo que debes hacer (utilizando arrays y bucles) para conocer el primer numero mas cercano al primero:

1) Das por sentado que este es el segundo.
2) Mediante un bucle obtienes la diferencia entre el primero y el tercero, cuarto y quinto. Si la diferencia es menor tomas nota.

Eso es todo.

Para el calculo de la diferencia entre dos números puedes utilizar las funciones "abs" (para números de tipo "int", prototipo en <stdlib.h>) y "fabs" (para números de tipo "double", prototipo en <math.h>) que te da el valor absoluto de su único argumento.

Un saludo
#1429
Programación C/C++ / Re: Arreglo AYUDA!
10 Noviembre 2011, 01:20 AM
El problema con esa función es que no hace nada de lo indicado, solo pide los elementos de los arrays y tiene varios errores importantes.

Después de los dos bucles los contadores "x" y "y" tienen el valor 10 y no puedes utilizar este como indice de un array de 10 elementos porque el ultimo tiene el indice 9:
if (arrA[x ] == arrB[y ]);
Aparte tienes un punto y coma de mas justo después del "if".

Y el bucle que imprime los repetidos solo imprime el tercer array pero no le das un valor inicial a ninguno de sus elementos.

La forma mas simple de realizar la operación que indicas es:

1) Tomas el primer array, lo ordenas y descartas repetidos.
2) Mismo caso con el segundo array.

3) Realizas un bucle comparando el primer elemento de ambos arrays:
3.A) Si son iguales se agrega al array de resultados y descartas los elementos de ambos arrays.
3.B) Si son distintos descartas el menor.
4) El bucle se repite mientras haya elementos en ambos arrays.

Un saludo
#1430
Cita de: davisinful en  9 Noviembre 2011, 22:53 PMAQUI LES DEJO UN PROGRAMA QUE ES SIMILIAR AL PEDIDO Y QUE TIENE LA METODOLOGIA QUE EL PROFESOR APLICA. PORFA VOR AYUDA. GRACIAS
Simplifica el programa al maximo empezando por quitar la parte que imprime el mes.

Despues de eso solo debes verificar cual fecha es menor y restar esta a la otra. El proceso es similar al calculo de la diferencia entre dos fechas. De ella puedes encontrar bastantes ejemplos en la red.

Un saludo