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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 [3] 4
21  Programación / Programación C/C++ / Sistema de reservacion de aerolinea[C] en: 11 Diciembre 2010, 23:51 pm
Hola foreros! hacia mucho q no posteaba nada debido a q cursando en la facu no tenia mucho tiempo libre para programar.
Como ya termine volvi a codear en c y queria subir un programa de reserva de aerolinea q pide como ejercicio un libro q estoy leyendo.
Espero comentarios y sugerencias.
Saludos!

Código
  1.  
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<time.h>
  5. #define SIZE_ASIENTOS 10
  6.  
  7. int asignarAsiento(int [], int, int);
  8. void pasaje(int);
  9. void diagrama(int [], int);
  10.  
  11. main()
  12. {
  13.    srand(time(NULL));
  14.    int asientos[SIZE_ASIENTOS] = {0};
  15.    int i, num, cont = 0;
  16.  
  17.    printf("SISTEMA DE RESERVACION DE AEROLINEAS\n\n");
  18.  
  19.    diagrama(asientos, SIZE_ASIENTOS);
  20.  
  21.    while (cont <= SIZE_ASIENTOS - 1){
  22.  
  23.        printf("Por favor ingrese 1 para sector fumadores\n"
  24.               "Por favor ingrese 2 para sector no fumadores\n");
  25.        scanf("%d", &num);
  26.  
  27.        while (num > 2){
  28.            printf("Numero no valido\n\n");
  29.            printf("Por favor ingrese 1 para sector fumadores\n"
  30.                   "Por favor ingrese 2 para sector no fumadores\n");
  31.            scanf("%d", &num);
  32.        }
  33.  
  34.        if ((asignarAsiento(asientos, SIZE_ASIENTOS, num)) != 0)
  35.            cont++;
  36.  
  37.        diagrama(asientos, SIZE_ASIENTOS);
  38.    }
  39.  
  40.    printf("Avion lleno\nProximo vuelo en 3 horas\n");
  41.  
  42.  
  43.    return 0;
  44. }
  45.  
  46.  
  47.  
  48.  
  49.  
  50. int asignarAsiento(int a[], int size, int n)
  51. {
  52.    char rta[1];
  53.    int i, status = 0;
  54.    static int cont1 = 0, cont2 = 0;
  55.  
  56.    switch(n){
  57.        case 1:                     //SECTOR FUMADORES
  58.            if (cont1 < size / 2){
  59.                while (status == 0){
  60.                    i = rand() % size /2;
  61.                    if(a[i] == 0){
  62.                        a[i] = 1;
  63.                        pasaje(i);
  64.                        cont1++;
  65.                        status = 1;
  66.                    }
  67.                }
  68.            }
  69.            else{
  70.                printf("La sección fumadores esta llena. "
  71.                       "Le gustaria q le asignemos un lugar en la sección "
  72.                       "de no fumadores(s/n)");
  73.                scanf("%s", rta);
  74.  
  75.                if(rta[0] == 's' || rta[0] == 'S'){
  76.                    while (status == 0){
  77.                        i = size / 2 + rand() % size / 2;
  78.                        if(a[i] == 0){
  79.                            a[i] = 1;
  80.                            pasaje(i);
  81.                            cont2++;
  82.                            status = 1;
  83.                        }
  84.                    }
  85.                }
  86.  
  87.                else{
  88.                    printf("\nEl proximo vuelo sale en 3 horas\n\n");
  89.                    return 0;
  90.                }
  91.            }
  92.  
  93.            break;
  94.  
  95.  
  96.        case 2:                     //SECTOR NO FUMADORES
  97.            if (cont2 < size / 2){
  98.                while (status == 0){
  99.                    i = size / 2 + rand() % size / 2;
  100.                    if (a[i] == 0){
  101.                        a [i] = 1;
  102.                        pasaje(i);
  103.                        cont2++;
  104.                        status = 1;
  105.                    }
  106.                }
  107.            }
  108.  
  109.            else{
  110.                printf("La sección de no fumadores esta llena. "
  111.                       "Le gustaria q le asignemos un lugar en la sección "
  112.                       "de fumadores(s/n)");
  113.                scanf("%s", rta);
  114.  
  115.                if(rta[0] == 's' || rta[0] == 'S'){
  116.                    while (status == 0){
  117.                        i = rand() % size /2;
  118.                        if(a[i] == 0){
  119.                            a[i] = 1;
  120.                            pasaje(i);
  121.                            cont1++;
  122.                            status = 1;
  123.                        }
  124.                    }
  125.                }
  126.  
  127.                else{
  128.                    printf("\nEl proximo vuelo sale en 3 horas\n\n");
  129.                    return 0;
  130.                }
  131.            }
  132.  
  133.            break;
  134.    }
  135.  
  136. }
  137.  
  138. void pasaje(int numAsiento)
  139. {
  140.    printf("\n************************\n");
  141.    printf("AEROLINEA\n");
  142.    printf("Pase de abordaje\n");
  143.    if (numAsiento >= 0 && numAsiento <= 4){
  144.        printf("Asiento nº %d\n", numAsiento + 1);
  145.        printf("Sector fumadores\n");
  146.    }
  147.    else{
  148.        printf("Asiento nº %d\n", numAsiento + 1);
  149.        printf("Sector no fumadores\n");
  150.    }
  151.    printf("\n************************\n");
  152. }
  153.  
  154. void diagrama(int a[], int size)
  155. {
  156.    int i;
  157.  
  158.    printf("\n");
  159.    printf("%30s\n\n", "DIAGRAMA AVION");
  160.    printf("%15s %26s\n", "FUMADORES", "NO FUMADORES");
  161.    printf("/-------------------\\");
  162.    printf("    /-------------------\\\n");
  163.        for (i = 0; i <= size - 1; i++)
  164.            printf("%-5d", a[i]);
  165.    printf("\n\n");
  166.  
  167. }
  168.  
  169.  
22  Programación / Programación C/C++ / Re: [C]Terna pitagorica(Fuerza bruta) en: 12 Agosto 2010, 21:04 pm
Gracias x la sugerencia do-while!  :D no habia pensado en hacerlo asi q resultara mas rapido ya q como dices, el programa no tendra q llamar funciones.. voy a modificarlo!
Saludos!
23  Programación / Programación C/C++ / Re: [C]Terna pitagorica(Fuerza bruta) en: 12 Agosto 2010, 19:02 pm
ok grax!! ya lo modifique!! :D El programa tarda varios segundos en terminar por la cantidad de calculos q tiene q hacer. Hay alguna otra modif q se le pueda hacer para q realize los calculos mas rapido??
24  Programación / Programación C/C++ / [C]Terna pitagorica(Fuerza bruta) en: 12 Agosto 2010, 17:12 pm
Hola, dejo un programa q saca ternas pitagoricas(a²+b²=c²) mediante fuerza bruta.. El problema q tengo es q no puedo hacer q descarte las ternas q son iguales(ej: 3²+4² = 5² -- 4²+3² = 5²).
En el codigo hay varias sentencias q estan de mas pq las hice para armar la funcion q tendria q descartar los repetidos, las dejo para q vean lo q trataba de hacer, pero si se le sacan el codigo anda igual..

Código
  1. #include<stdio.h>
  2. #include<math.h>
  3. #define LIMITE 500
  4.  
  5. int compara_vector(double vec[], double num, int indice);
  6.  
  7. main()
  8. {
  9.      int i, j, k, m = 1;
  10.      double lado1 = (double)1, lado2 = (double)1, hipotenusa = (double)1;
  11.      double num, rtdoH, rtdoLs, rtdoM[LIMITE*2];
  12.  
  13.      printf("\tL1\tL2\t\tHP\n\n");
  14.  
  15.      for (i = 1; i <= LIMITE; i++){
  16.          lado2 = 1;
  17.  
  18.          for ( j = 1; j <= LIMITE; j++){
  19.              hipotenusa = 1;
  20.  
  21.              for (k = 1; k <= LIMITE; k++){
  22.                  rtdoH = pow((hipotenusa), (double)2);
  23.                  rtdoLs = (pow(lado1, (double)2)) + (pow(lado2, (double)2));
  24.                  rtdoM[m] = lado1 * lado2 * hipotenusa;
  25.  
  26.                        if (rtdoH == rtdoLs){
  27.                                  num = rtdoM[m];
  28.  
  29.                                  if((compara_vector(rtdoM, num, m)) == 0)
  30.                                                           printf("\t%.0f\t%.0f\t=\t%.0f\n", lado1, lado2, hipotenusa);
  31.  
  32.                                  m++;
  33.                                  }
  34.                  hipotenusa++;
  35.              }
  36.              lado2++;
  37.         }
  38.         lado1++;
  39.      }
  40.  
  41.      return 0;
  42. }
  43.  
  44.  
  45.  
  46.  
  47.  
  48. int compara_vector(double vec[], double num, int indice)
  49. {
  50.     int i;
  51.  
  52.     for(i = indice; i >= 0; i--){
  53.  
  54.           if(vec[i] != num){
  55.                     return 0;
  56.           }
  57.     }
  58. }
  59.  

Bueno espero sugerencias!!  :D
25  Programación / Programación C/C++ / Re: [C]Calcular pi en: 10 Agosto 2010, 23:23 pm
Hola leo!! gracias por tu ayuda!! ahora tengo un problema.. cuando copio el codigo q escribiste y lo pego en el dev-c++, al compilarlo me muestra cualquier numero, esta copiado identico pero no funciona :-\ es pq no uso el gcc?
otra preg, pq usas el tipo register? y la ultima.. q significa esta condicion(i & 1), estaba mal la q habia puesto antes??
Bueno espero tu rta :D
Saludo!!
26  Programación / Programación C/C++ / [C]Calcular pi en: 10 Agosto 2010, 19:47 pm
Hola gente!! dejo unos programitas que hice para calcular pi con distintas series infinitas.. y ya q los posteo aprovecho para dejar unas dudas q tengo..

Algoritmo Gottfried Wilhem von Leibniz
= 4(1/1-1/3+1/5-1/7+1/9...)

Código
  1. #include<stdio.h>
  2.  
  3. main()
  4. {
  5.      int i, j = 1;
  6.      double pi = 0, rtdo;
  7.  
  8.      for (i = 0; i < 1000000000; i++){
  9.          rtdo = 4 / (double)j;
  10.  
  11.               if (i % 2 == 1)
  12.                  pi -= rtdo;
  13.               else
  14.                   pi += rtdo;
  15.          j += 2;
  16.      }
  17.  
  18.      printf("Valor de Pi: %.16f", pi);
  19.  
  20.      return 0;
  21. }
  22.  

Algoritmo John Wallis
= 2 ( 2/1 x 2/3 x 4/3 x 4/5 x 6/5 x 6/7 ....)

Código
  1. #include<stdio.h>
  2.  
  3. main()
  4. {
  5.      int i, j = 2, k = 1;
  6.      double pi = 2;
  7.  
  8.      for (i = 0; i < 1000000000; i++){
  9.          pi *= (j / (double)k);
  10.  
  11.          if (i % 2 == 0)
  12.             k += 2;
  13.          else
  14.              j += 2;
  15.      }
  16.  
  17.      printf("Valor de Pi: %.16f", pi);
  18.  
  19.      return 0;
  20. }
  21.  

Estos 2 funcionan bien pero me devuelven solo 16 decimales, desp de ese devuelve todo 0.. pq??

Algoritmo Leonhard Euler
=  1 + 1/3 + 1x2 / 3x5 + 1x2x3 / 3x5x7 +....

Código
  1. #include<stdio.h>
  2.  
  3. main()
  4. {
  5.      int i, cte = 1, cte2 = 1;
  6.      double pi = 1, j = 1, k = 1;
  7.  
  8.      for (i = 0; i < 100; i++){
  9.          j *= cte++;
  10.          k *= (cte2 += 2);
  11.  
  12.          pi += (j / k);
  13.          }
  14.  
  15.      printf("%.15f", pi);
  16.  
  17.      return 0;
  18. }
  19.  

En este tengo el problema de q como se forman nº tan grandes no puedo hacer un bucle de mas de 100 vueltas y ademas no da el rtdo, no pude encontrarle solucion, creo q el codigo esta bien hecho..

Saludos! :D
27  Programación / Programación C/C++ / Re: [C]Factorial de un numero en: 9 Agosto 2010, 18:38 pm
Lo modifique a double y efectivamente funciono!  :D ahora si el programa factoriza cualquier numero.. Muchas gracias x la ayuda!!  :D

Saludos!!
28  Programación / Programación C/C++ / Re: [C]Factorial de un numero en: 9 Agosto 2010, 17:34 pm
Hola rob! gracias x tu ayuda! lo acabo de probar asi pero tampoco da el rtdo correcto..  :-\ t hago una preg, pq lo declaras unsigned?
29  Programación / Programación C/C++ / [C]Factorial de un numero en: 9 Agosto 2010, 17:11 pm
Hola foreros!! :D aca dejo un programita que calcula el factorial de un numero. El problema que tiene es que cuando se ingresa un numero mayor a 12 da un resultado erroneo, declare la variable factorial con todos los tipos pero en ningun caso funciono.. como se podria solucionar??

Código
  1. #include<stdio.h>
  2.  
  3. main()
  4. {
  5.      int i, num;
  6.      double factorial = 1;
  7.  
  8.      printf("FACTORIAL DE UN NUMERO\n\n");
  9.      printf("Ingrese un numero: ");
  10.      scanf("%d", &num);
  11.  
  12.      for (i = 1; i <= num; i++)
  13.          factorial *= i;
  14.  
  15.      printf("\n%d! = %.0f\n", num, factorial);
  16.  
  17.      return 0;
  18. }
  19.  

P.D: Acabo de modificar el codigo, ahora si factorea cualquier nº. Grax rob1104!
30  Programación / Programación C/C++ / Re: [C]Fuerza Bruta en: 12 Julio 2010, 15:35 pm
Gracias x la explicacion! me baje el libro de como programar en C.. el de kernighan y Ritchie lo tengo, pero hay varias cosas q no logro entender, me resulta bastante complejo en algunas cosas.. voy a ver q tal con este otro :D
Páginas: 1 2 [3] 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines