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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 ... 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 [118] 119 120 121 122 123 124 125 126 127 128 129 130 131 132
1171  Programación / Programación C/C++ / Re: calcular media aritmética con while en: 8 Noviembre 2012, 22:49 pm
Con system creo que necesitas cstdlib:
Código
  1. #include<iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.    int main(){
  5.    double suma=0,n;
  6.    int contador=0;
  7.    cout << "Introduzca numero: " ;
  8.    cin>>n;
  9.    while(n>0){
  10.        suma+=n;
  11.        contador+=1;
  12.        cout << "Introduzca numero: " ;
  13.        cin>>n;
  14.    }
  15.    cout<<suma/contador<<endl;
  16.    system("pause");
  17.    return 0;
  18. }
Saludos!.
1172  Programación / Programación C/C++ / Re: RETOS C++ en: 8 Noviembre 2012, 22:37 pm
15-(Similar al anterior)Crear un programa que obtenga el numero phi o aureo a partir de la serie de Fibonacci (el bucle tiene que tener un minimo de 30 ciclos) .
15p
Citar
Pues aquí está una posible solución:
Código
  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    long num,cont=0;
  8.    long f0=0,f1=1;
  9.    while (cont<=30)
  10.        {
  11.            long f2 = f0 + f1;
  12.            f0 = f1;
  13.            f1 = f2;
  14.            if (cont==30) cout << (float) f1/f0;
  15.            cont++;
  16.        }
  17.   return 0;
  18. }
Saludos!. ... y puntos, puntos
1173  Programación / Programación C/C++ / Re: Corrección de programa en C en: 7 Noviembre 2012, 06:28 am
Citar
Tienes varios errores más, como en algunos printf, en poner en lugar de sueldo la Zona, usar el formato %d en los case en lugar de %c, ya que se va a tomar una letra la ausencia del caso default. En fin, creo que ya te funciona:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<conio.h>
  4. main()
  5. {
  6.  /* Mis variables */
  7.  int horas;
  8. float ZonA=62.33, ZonaB=60.57, ZonaC=59.08, sueldo;
  9. char opc;
  10. do
  11. {
  12.  /* Lectura del número de horas trabajadas */
  13.  printf("Ingrese el numero de horas trabajadas:" );
  14.  scanf("%d", &horas);
  15.  printf("Introduzca la zona geografica que le corresponda:\n" );
  16.  printf("\n a. ZonA. \n b. ZonaB. \n c. ZonaC. \n d. Salir ");
  17.   /*system("cls");*/
  18.   opc=getche();
  19.  switch(opc)
  20.  {
  21.            case'a':("Selecciono ZonA\n");
  22.            scanf("%c", &ZonA);
  23.            sueldo = ZonA * horas;
  24.            printf("\nSu sueldo es: %1.2f\n\n ", sueldo);
  25.            system("pause");
  26.            break;
  27.  
  28.            case'b':("Selecciono ZonaB \n");
  29.            scanf("%c", &ZonaB);
  30.            sueldo =ZonaB * horas;
  31.            printf("\nSu sueldo es: %1.2f\n\n ", sueldo);
  32.            system("pause");
  33.            break;
  34.  
  35.            case'c':("Selecciono ZonaC \n");
  36.            scanf("%c", &ZonaC);
  37.            sueldo = ZonaC * horas;
  38.            printf("\nSu sueldo es: %1.2f\n\n ",sueldo);
  39.            system("pause");
  40.            break;
  41.  
  42.            case'd': printf("\n\nAdios\n");
  43.             system("pause");
  44.                 break;
  45.                     printf("\n\n OpcionInvalida");
  46.            default: printf("\n\n OpcionInvalida\t");break;
  47.    }/*Fin dela Selección Múltiple*/
  48.  
  49.    }while (opc!='d');
  50.  return 0;
  51. }
Saludos!.
1174  Programación / Programación C/C++ / Re: Manejar valores más altos que los de un int en: 7 Noviembre 2012, 05:47 am
Hola buenas, necesito en un programa manejar valores más altos que los máximos de los int (ya sabéis, 2^31 - 1). Más concretamente, necesito manejar valores entre 1.000.000 y 9.999.999.
Citar
Puedes usar la libreria de C: #include <inttypes.h>. En ella el entero en lugar de ser int es uint64_t y el formato %llu, en lugar de %d:
Código
  1. #include <stdio.h>
  2. #include <inttypes.h>
  3. //Definición de funciones
  4.  
  5. int cantidadDigitos(int num);
  6. int sumaDigitos(int num);
  7. int ultimoDigito(int num);
  8. void comprobaciones(int numero);
  9.  
  10. //Cuerpo del programa
  11.  
  12. int main()
  13. {
  14.      //Número de tarjeta de crédito
  15.    uint64_t numero;
  16.   printf("Mete el numero de la tarjeta de credito: ");
  17.  
  18.   //Hasta meter un número positibo, no saldrá del bucle
  19.   do{
  20.      scanf("%llu", &numero);
  21.      if(numero < 0)
  22.      {
  23.         printf("\nEl numero tiene que ser positibo! Metelo otra vez: ");
  24.      }
  25.   }while(numero < 0);
  26.  
  27.   comprobaciones(numero);
  28.  
  29.   printf("\nIntro para salir...");
  30.   fflush(stdin);
  31.   getchar();
  32.  
  33.   return 0;
  34. }
  35.  
  36. int cantidadDigitos(int num)
  37. {
  38.   int i = 0;            //Para contar el número de dígitos
  39.   int numAux = num;      //Variable auxiliar
  40.  
  41.   while(numAux > 0)      //Hasta que no sea 0...
  42.   {
  43.      numAux /= 10;      //...pasamos al siguiente dígito
  44.      i++;            //...y un dígito más que tenemos
  45.   }
  46.  
  47.   return i;
  48. }
  49.  
  50. int sumaDigitos(int num)
  51. {
  52.   int suma = 0;            //para guardar la suma entre los 9 primeros digitos del numero de la tarjeta
  53.   int divisor = 1000000000;   //Para sacar los dígitos de uno en uno, empezando por el más significativo
  54.   int resto = num;         //auxiliar, para avanzar de dígito en dígito
  55.   int ultimo_digito = 0;         //Batuketaren azken digitua gordeko duen aldagaia
  56.   int i;                     //Buklerako
  57.  
  58.   for(i=0; i<9; i++)
  59.   {
  60.      suma += (resto/divisor);      //la suma entre los dígitos
  61.      resto = resto % divisor;      //pasamos al siguiente dígito
  62.      divisor /= 10;                  //y para sacar el siguiente digito
  63.   }
  64.  
  65.   ultimo_digito = ultimoDigito(suma);      //El último dígito de la suma
  66.  
  67.   return ultimo_digito;
  68. }
  69.  
  70. int ultimoDigito(int num)
  71. {
  72.   int digito = 0;
  73.  
  74.   digito = num % 10;
  75.  
  76.   return digito;
  77. }
  78.  
  79. void comprobaciones(int numero)
  80. {
  81.   int cantidad = 0;
  82.   int suma_digitos = 0;
  83.  
  84.   //Calculamos en número de dígitos
  85.   cantidad = cantidadDigitos(numero);
  86.  
  87.   //Si la cantidad de dígitos es correcta (10)
  88.   if(cantidad == 10)
  89.   {
  90.      printf("\nLa cantidad de digitos es correcta.\n");
  91.  
  92.      //Si el último dígito de la suma de los primeros 9 dígitos es igual al último dígito de la tarjeta:
  93.      if(sumaDigitos(numero) == ultimoDigito(numero))
  94.      {
  95.         printf("\nSe cumplen las condiciones.\n");
  96.      }
  97.      else
  98.      {
  99.         printf("\nEl numero de tarjeta de credito no cumple las condiciones.\n");
  100.      }
  101.   }
  102.   //Si el número de dígitos no es el correcto
  103.   else
  104.   {
  105.      printf("\nEl numero de digitos no es el adecuado.\n");
  106.   }
  107. }
Saludos!.
1175  Programación / Programación C/C++ / Re: [C][?]Como determinar que imprima ciertos caracteres en: 6 Noviembre 2012, 23:11 pm
Esto imprime todas las combinaciones de letras mayus/minus con números
Citar
Perdona mi observación, pero construir una función que lo haga todo no tiene como mucho sentido, para eso lo incluyes en la función main.
En el lado opuesto está mi función, que hace algo repetitivo y que puede ser invocada cada vez desde main. Fíjate en la simplicidad: un solo for y nigún if.
Con números, mayúsculas y minúsculas quedaría así:
Código
  1. #include <stdio.h>
  2.  
  3. void uno(int MIN, int MAX) ;
  4. void uno(int MIN, int MAX) {
  5. int i;
  6. for(i=MIN; i<=MAX; i++) {
  7. printf("%c   ", i);
  8. }
  9. }
  10.  
  11. int main(){
  12.    int  MIN1 =48,MAX1 =57,MIN2=65,MAX2= 90,MIN3=97,MAX3= 122;
  13.    uno(MIN1,MAX1);
  14.    puts("\n");
  15.    uno(MIN2,MAX2);
  16.    puts("\n");
  17.    uno(MIN3,MAX3);
  18.    return 0;
  19. }
Saludos!.
1176  Programación / Programación C/C++ / Re: función random en: 6 Noviembre 2012, 20:18 pm
En tu programa el uso de la sentencia "continue;" no es necesario ya que, si revisas con cuidado, es la ultima sentencia del bucle.
Pardillo, que soy un pardillo.....

Citar
Y los dos cambios al contador se pueden reducir a uno si se utiliza un bucle "while" o "do ... while"
Eso ya es lo clásico de un for o un while o do while, pero se agradece la observación.

Citar
Código
  1.   size_t num_opers = sizeof opers;
  2.   size_t i;
Me asalta la duda, tonta supongo: ¿por qué usar size_t en lugar de int?.
Saludos!.
1177  Programación / Programación C/C++ / Re: función random en: 6 Noviembre 2012, 16:23 pm
una última pregunta en el else de tu código pusiste i-- ¿por qué? no entiendo para qué pusiste ese contador
Citar
Si resulta un valor no válido -si entra en el else- habrá que descontarlo, de ahí el i--, si no tendrías menos de cinco valores, ya que se contarían también los valores no válidos
Saludos!.
1178  Programación / Programación C/C++ / Re: Como planteariais este problema?( en C) en: 5 Noviembre 2012, 22:56 pm
.La complejidad de mi algoritmo es simplemente O(n). ( ya sé que no estamos discutiendo eficiencia)
Citar
Eso no lo dudo, pero te recuerdo que el algoritmo, tal como lo planteates daría para la serie de números:
121 174 39 158 144 167 76 80 112 167 59 152 161 136 129
max=174    cuasi_max=121, cuando este último debería ser 167.
De ahí la introducción de :
Código
  1. else if (a[i]>cuasi_maxi ) {cuasi_maxi=a[i];}
Saludos!.
1179  Programación / Programación C/C++ / Re: Problemas con el vuelto en monedas en: 5 Noviembre 2012, 22:19 pm

....... y la salida:

Código:
Introduce la cantidad: 1.4
Monedas de 0.25: 5
Monedas de 0.10: 1
Monedas de 0.05: 0 <==aqui deberia ser 1
Monedas de 0.01: 4 <==aqui deberia ser 0
Citar
Salida que se obtiene con la ligera modiicación de los valores M, como comenté por los redondeos:
Código
  1. #include <stdio.h>
  2.  
  3. #define M1 0.2499
  4. #define M2 0.099
  5. #define M3 0.049
  6. #define M4 0.0099
  7.  
  8. int main() {
  9.  
  10. int m1, m2, m3, m4;
  11. float cantidad;
  12.  
  13. printf("Introduce la cantidad: ");
  14. scanf("%f", &cantidad);
  15.  
  16. m1=(int)(cantidad/M1);
  17. cantidad-=m1*M1;
  18.  
  19. m2=(int)(cantidad/M2);
  20. cantidad-=m2*M2;
  21.  
  22. m3=(int)(cantidad/M3);
  23. cantidad-=m3*M3;
  24.  
  25. m4=(int)(cantidad/M4);
  26. cantidad-=m4*M4;
  27.  
  28. printf("Monedas de 0.25:\t%d\nMonedas de 0.10:\t%d\nMonedas de 0.05:\t%d\n"
  29.   "Monedas de 0.01:\t%d\n", m1, m2, m3, m4);
  30.  
  31. return 0;
  32. }
  33.  
Muy aguda la solución !!!.
Saludos!.

1180  Programación / Programación C/C++ / Re: función random en: 5 Noviembre 2012, 21:38 pm
Citar
Tal como tienes planteado el if sólo sería cierto en los dos casos en que debe ser falso. Además hay que tener en cuenta si el aleatorio genera un valor no válido, lo que está contemplado en el "else" y para que lo veas he puesto "OTRO", que puedes quitar una vez entiendas como funciona:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define OPERACIONES 5
  5.  
  6. int main()
  7. {
  8.    int i,numero1,numero2,resultado;
  9.    char operacion;
  10.    srand(time(0));
  11.    for(i=0;i<OPERACIONES;i++)
  12.    {
  13.        numero1 = rand()%11;
  14.        numero2 = rand()%11;
  15.        operacion = rand()% 6+42;
  16.  
  17.        if(operacion==42 || operacion==43  || operacion==45 || operacion==47)
  18.            {
  19.                printf("%d %c %d = ",numero1,operacion,numero2);
  20.                scanf("%d",&resultado);
  21.            }
  22.        else
  23.            {
  24.                i--;puts ("Otro");continue;
  25.            }
  26.    }
  27.    return 0;
  28. }
Saludos!.
Páginas: 1 ... 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 [118] 119 120 121 122 123 124 125 126 127 128 129 130 131 132
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines