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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ... 160
231  Programación / Ejercicios / Re: duda ejercicio en c en: 6 Octubre 2014, 17:20 pm
Para realizar esa operación lees una linea de texto con fgets, a continuación tratas de obtener el numero de la linea mediante sscanf. Si esta retorna 1 significa que el usuario introdujo el numero correctamente, caso contrario solo debes verificar si la linea consiste de espacio blanco (linea vacía, se asigna el valor predeterminado que indicas) o no (la linea contiene caracteres inválidos para la conversión).

Un ejemplo para explicarlo mejor:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4.  
  5. #define MAX_LINEA  1024
  6.  
  7. int main(void)
  8. {
  9.   char linea[MAX_LINEA];
  10.   int num;
  11.   int i;
  12.  
  13.   if (fgets(linea, MAX_LINEA, stdin) == NULL){
  14.      puts("Error critico!");
  15.      return EXIT_FAILURE;
  16.   }else if (sscanf(linea, "%d", &num) == 1)
  17.      printf("Entrada valida, el numero es %d\n", num);
  18.   else {
  19.      for (i = 0; isspace(linea[i]); i++)
  20.         ;
  21.  
  22.      if (linea[i] == '\0')
  23.         puts("Linea en blanco, se utiliza el valor predeterminado");
  24.      else
  25.         puts("Caracteres invalidos para la conversion!");
  26.   }
  27.  
  28.   return EXIT_SUCCESS;
  29. }

La validación de esa forma es básica y no es a prueba de errores, para eso hay que sustituir el uso de sscanf por strtol, strtoul o strtod pero como indicas que apenas empiezas con sscanf debe ser suficiente, ya veras el uso de las otras funciones mas adelante.

Y la próxima vez que tengas una duda sobre una operación en particular en C/C++ utiliza el foro correcto: Programación C/C++

Un saludo
232  Programación / Programación C/C++ / Re: porcentaje en c en: 4 Octubre 2014, 16:32 pm
Para obtener el porcentaje basta con dividir el numero de aciertos (o fallos) entre el numero de intentos y después multiplicar por cien.

Un saludo
233  Programación / Programación C/C++ / Re: Opciones de la línea de comandos--> parámetros de main en: 3 Octubre 2014, 03:38 am
El error en el programa se debe a que tratas de leer el operador como si fuera un entero:
Código
  1. sscanf(argv[2],"%d",&b);

No es necesario, en su lugar puedes utilizar directamente el primer carácter de ese argumento para controlar el bucle, de esta forma:
Código
  1. switch(argv[2][0]){
  2. case '+':
  3.   printf("La suma de %d+%d = %d\n",a,c,a+c);
  4.   break;
  5. case '-':
  6.   printf("La resta de %d-%d = %d\n",a,c,a-c);
  7.   break;
  8. case '/':
  9.   printf("La division de %d/%d = %d",a,c,a/c);
  10.   break;
  11. case '*':
  12.   printf("La multiplicacion de %d*%d = %d",a,c,a*c);
  13.   break;
  14. default:
  15.   printf("Introduzca una opcion valida\n");
  16. }

Un saludo
234  Programación / Programación C/C++ / Re: Cambio en billetes y monedas en C++ en: 2 Octubre 2014, 15:44 pm
tengo que devolver el cambio en billetes de 200, 100, 50, 20 y monedas de 10, 5, 2, 1 es basándome en este código
Los pasos del algoritmo ya te los explicaron de una forma satisfactoria, en cuanto a la implementación esta deja que desear ya que deberías utilizar arrays y un bucle para acortar el código fuente. Ejemplos de ello existen en la base de datos de los foros, solo tienes que utilizar el motor de busqueda.

Y una alternativa a realizar las operaciones de división y modulo directamente es utilizar la función div y el tipo div_t (el encabezado es <stdlib.h>):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int den[] = {200, 100, 50, 20, 10, 5, 2, 1};
  7.   char *tipo[] = {"Billetes", " Monedas"};
  8.   int i = 0;
  9.   div_t r = {0, 388};
  10.  
  11.   do {
  12.      r = div(r.rem, den[i]);
  13.  
  14.      if (r.quot != 0)
  15.         printf("%s de %3d: %d\n", tipo[i / 4], den[i], r.quot);
  16.  
  17.      i++;
  18.   }while (r.rem != 0);
  19.  
  20.   return EXIT_SUCCESS;
  21. }

Un saludo
235  Programación / Programación C/C++ / Re: estadisticas en: 2 Octubre 2014, 08:19 am
tengo una pregunta
Cuando eso suceda por favor indica el lenguaje de programación y de ser posible el código fuente del programa así como una descripción en detalle del problema que tienes.

quiero saber como ago para que el programa al salir me diga los números de acierto y los de no aciertos, y un promedio de ellos.
Utilizas dos variables, una para llevar el conteo del total de operaciones y otra para el numero de aciertos. En base a ellas puedes obtener el numero de errores y el promedio de ambos (aciertos y errores).

Un saludo
236  Programación / Programación C/C++ / Re: Como generar numeros aleatorios pares? en: 1 Octubre 2014, 17:31 pm
Si se quiere desactivar el bit menos significativo otra opción es obtener la mascara mediante el operador de complemento a uno con la ventaja de no necesitar la inclusión de <limits.h>:
Código
  1. num = rand() % 51 & ~1;

Un saludo
237  Programación / Programación C/C++ / Re: Números perfectos (lenguaje C) en: 30 Septiembre 2014, 04:34 am
me diste algo que investigar, estuve viendo la progesion completa (sin importar si eran primos o no) en binario y son muy simple en ese aspecto... pero me da un error que no descubro la razón
El problema es que solo presentas la salida del programa, sin el código fuente no es posible conocer la causa del error (imagino tiene que ver con tu otra duda).

para ser sincero se que el metodo 2 necesita casting de tipo, pero no estoy seguro por que
El segundo metodo es:
Código
  1. long unsigned int numero_perfecto_metodo2(int primo)
  2. {
  3.   unsigned long int resultado;
  4.   resultado = (unsigned long int) ((1 << primo) - 1) << (primo - 1);
  5.   return resultado;
  6. }
El cual se puede abreviar a:
Código
  1. long unsigned int numero_perfecto_metodo2(int primo)
  2. {
  3.   return ((1 << primo) - 1) << (primo - 1);
  4. }
El problema ahí es la primera literal 1, esta es de tipo signed int y puede, dependiendo del desplazamiento, generar un numero negativo. Para solucionarlo lo mas fácil es indicar que el tipo de ella es unsigned long mediante sufijos: 1UL.

Un saludo
238  Programación / Programación C/C++ / Re: [Aporte] Libro muy actualizado en: 30 Septiembre 2014, 03:58 am
En el caso de libros sobre C++ de calidad y recomendados como:

The C++ Programming Language (Stroustrup)
The C++ Standard Library (Josuttis)
C++ Primer (Lippman, Lajoie & Moo)

Hay ediciones recientes y actualizadas al ultimo estándar C++11, con  todo me parece mejor dejar pasar un tiempo esperando las nuevas impresiones (por aquello de la corrección de errores). Los tres se pueden conseguir (comprar, lo políticamente correcto) en casi cualquier tienda en linea como Amazon, Barnes & Noble, etc..

Un saludo
239  Programación / Programación C/C++ / Re: Random 1 o 3 en: 29 Septiembre 2014, 17:03 pm
No, no, lo primero que pedía era porque estaba haciendo el código, y puse un if que si era 2 el primer random, el siguiente pudiera ser sólo 1 o 3
Solo tienes que colocar los números a seleccionar en un array y utilizar la función rand para seleccionarlos aleatoriamente. Un ejemplo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main(void)
  6. {
  7.   int num[] = {1, 2, 3};
  8.   int i;
  9.   int j;
  10.  
  11.   srand((unsigned) time(NULL));
  12.  
  13.   for (i = 3; i > 0; i--){
  14.      j = rand() % i;
  15.      printf("%d\n", num[j]);
  16.      num[j] = num[i - 1];
  17.   }
  18.  
  19.   return EXIT_SUCCESS;
  20. }

Un saludo
240  Foros Generales / Foro Libre / Re: Trece años después del 11 de Septiembre, persiste la ceguera en: 29 Septiembre 2014, 16:44 pm
he allí el problema que se tiene años discutiendo, concentrado y en crema  :-X...

es el pueblo estadounidense
Si se trata de ser pesados eso tampoco vale ya que el nombre oficial de México es "Estados Unidos Mexicanos". Mejor dejarlo al contexto ya que difícilmente (salvo el caso del tema) alguien se refiere a su grupo como "americano".

Un saludo
Páginas: 1 ... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines