elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 [143] 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 ... 160
1421  Programación / Programación C/C++ / Re: Ayuda - Programación Paralela o Distribuida en C++ en: 13 Noviembre 2011, 06:04 am
Entonces 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:
Código
  1. for (int i = 0; i < x; i++){
  2.   // Algun proceso basado en i ...
  3. }
  4.  
  5. for (int j = 0; j < y; j++){
  6.   // Algun proceso basado en j ...
  7. }

Informacion en Wikipedia: Parallel computing

Una de las APIs: OpenMP

Un saludo
1422  Programación / Programación C/C++ / Re: Error en C: (Ivalue required as left...) en: 13 Noviembre 2011, 03:54 am
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:
Código
  1. if (dia >= 1 && dia <= 31
  2.   && mes == 1 || mes == 3 || mes == 5 || mes == 7
  3.   || mes == 8 || mes == 10 || mes ==12
  4. )
  5.   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:
Código
  1. if (dia >= 1 && dia <= 31
  2.   && (mes == 1 || mes == 3 || mes == 5 || mes == 7
  3.   || mes == 8 || mes == 10 || mes == 12)
  4. )
  5.   printf("Hoy es %u del %u.", dia, mes);

Un saludo
1423  Programación / Programación C/C++ / Re: Pregunta sobre sscanf(); ??? en: 13 Noviembre 2011, 02:00 am
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:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.    char palabra[100];
  7.    char id;
  8.    int n;
  9.    int i;
  10.  
  11.    printf("Inserta n: ");
  12.    fflush(stdout);
  13.    if (scanf("%d", &n) != 1 || n < 0)
  14.        return EXIT_FAILURE;
  15.  
  16.    for (i = 0; i < n; i++){
  17.        printf("Inserta identificador (e, v, l, c): ");
  18.        fflush(stdout);
  19.        scanf(" %c", &id);
  20.  
  21.        printf("Inserta PALABRA a tratar: ");
  22.        fflush(stdout);
  23.        scanf("%s", palabra);
  24.  
  25.        printf("Id: %c\n", id);
  26.        printf("Palabra: %s\n\n", palabra);
  27.    }
  28.  
  29.    return EXIT_SUCCESS;
  30. }

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

Un saludo
1424  Programación / Programación C/C++ / Re: Calculo de números primos en: 12 Noviembre 2011, 17:33 pm
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:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int es_primo(int num);
  5.  
  6. int main(void)
  7. {
  8.    int i;
  9.  
  10.    for (i = 2; i < 100; i++)
  11.        if (es_primo(i))
  12.            printf("%d\n", i);
  13.  
  14.    return EXIT_SUCCESS;
  15. }
  16.  
  17. int es_primo(int num)
  18. {
  19.    int i;
  20.  
  21.    for (i = 2; i*i <= num && num % i != 0; i++)
  22.        ;
  23.  
  24.    return i*i > num;
  25. }

Un saludo
1425  Programación / Programación C/C++ / Re: Ayuda urgente con un programa de microsoft visual c++ en: 12 Noviembre 2011, 17:17 pm
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  Programación / Programación C/C++ / Re: Empezando en C/C++ primera duda en: 11 Noviembre 2011, 02:59 am
El error es que estas colocando las condiciones entre comillas, por ejemplo:
Código
  1. if ("a < b")
  2.    if ("b > c")
  3.       printf ("El mayor es %d\n", b);
Basta con quitarlas todas (las comillas dobles) para que funcione correctamente, el primer "if" debe ser:
Código
  1. if (a < b)
  2.    if (b > c)
  3.       printf ("El mayor es %d\n", b);

Un saludo
1427  Programación / Programación C/C++ / Re: novato programacion en c, duda en: 10 Noviembre 2011, 23:57 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  Programación / Programación C/C++ / Re: Programa que calcula el número más próximo al primero en: 10 Noviembre 2011, 01:39 am
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 / Programación C/C++ / Re: Arreglo AYUDA! en: 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:
Código
  1. 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  Programación / Programación C/C++ / Re: Programa que calcule la diferencia de días entre dos fechas en: 10 Noviembre 2011, 00:57 am
AQUI 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
Páginas: 1 ... 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 [143] 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines