Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ;c1v!c en 27 Enero 2012, 16:55 pm



Título: Mostrar en forma de lista! [solucionado]
Publicado por: ;c1v!c en 27 Enero 2012, 16:55 pm
Hola bueno estaba realizando un programa en  C y necesito mostrar los datos asi.
El tema es que la primera linea la puedo mostrar sin problemas
el tema es mostrar la segunda fila que tiene los guiones y la tercera fila q los resultados vienen de una funcion.

Lo q yo quiero es que me muestre asi centrados los resultados como una lista si alguien me tira una idea o alguna funcion nose, a mi se me ocurrio una matriz pero pensandolo bien nose como mostrar los resultados de la funcion.


       Producto    Cantidad  P.Unitario   Descuento   Subtotal
   --------   --------  ----------      ---------     ---------
   PROD1       1000        1.00          100.00      900.00

Saludos!!

   


Título: Re: Mostrar matriz en forma de lista!
Publicado por: rir3760 en 27 Enero 2012, 17:06 pm
Para ello puedes utilizar la función printf.

Si no tienes material de referencia de calidad es hora de conseguirlo, una referencia en linea (pero en ingles) sobre salida con formato es Formatted Output (http://www.dinkumware.com/manuals/?manual=compleat&page=lib_prin.html).

Por ejemplo con los números enteros puedes utilizar "%Nd" que imprime, en un campo de N caracteres el valor de tipo signed int.

Con los números de punto flotante (float y double) puedes utilizar "%N.Mf" donde N es la anchura del campo y M el numero de decimales a mostrar.

Hay mas opciones, es cuestión de leer y practicar.

Un saludo


Título: Re: Mostrar matriz en forma de lista!
Publicado por: ;c1v!c en 27 Enero 2012, 17:10 pm
claro si entiendo pero mira este es mi ejemplo!!
probalo y fijate q no salen bien abajo de cada palabra los resultados.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. float prod1 (float n1, float f1);
  6. float prod2 (float n1, float f1);
  7. float subtotal (float n1, float f1, float desc);
  8.  
  9. int main()
  10. {
  11. int i,j;
  12. float PreUni,CantSoli,desc;
  13. char p1[6]="prod1";
  14. char p2[6]="prod2";
  15. char p3[6]="prod3";
  16. char producto[7];
  17. //-------------------CARGAMOS DATOS--------------------//
  18. printf("\tIngrese nombre del producto &#8594; ");
  19. fgets(producto,7,stdin);
  20. if (producto[strlen(producto)-1] == '\n');
  21. producto[strlen(producto)-1] = '\0';
  22. printf("\tIngrese precio unitario &#8594; ");
  23. scanf("%f",&PreUni);
  24. printf("\tIngrese cantidad solicitada &#8594; ");
  25. scanf("%f",&CantSoli);
  26. //-------------------MOSTRAMOS LOS DATOS--------------//
  27.  
  28. if(strcmp(producto,p1)==0)
  29. {
  30. desc=prod1(PreUni,CantSoli);
  31. printf("|| producto | Cantidad | P.Unitario | Desc. | Subtotal ||\n");
  32. printf("|| [%s] | [%0.0f] | [%0.2f] | [%0.2f] | [%0.2f] || \n",producto,CantSoli,PreUni,prod1(PreUni,CantSoli),subtotal(PreUni,CantSoli,desc));
  33. }
  34. else if (strcmp(producto,p2)==0)
  35. {
  36. desc=prod2(PreUni,CantSoli);
  37. printf("|| producto | Cantidad | P.Unitario | Desc. | Subtotal || \n");
  38. printf("|| [%s] | [%0.0f] | [%0.2f] | [%0.2f] | [%0.2f] || \n",producto,CantSoli,PreUni,prod2(PreUni,CantSoli),subtotal(PreUni,CantSoli,desc));
  39. }
  40. else
  41. {
  42. printf("|| producto | Cantidad | P.Unitario | Desc. | Subtotal ||\n");
  43. printf("|| [%s] | [%0.0f] | [%0.2f] | [0.00] | [%0.2f] ||\n",producto,CantSoli,PreUni,CantSoli);
  44. }
  45. return 0;
  46. }
  47. /////---------------------FUNCIONESSSSS----------------///////////
  48. float prod1 (float n1, float f1)
  49. {
  50. return ((n1*f1)*10)/100;
  51. }
  52. float prod2 (float n1, float f1)
  53. {
  54. return ((n1*f1)*15)/100;
  55. }
  56. float subtotal (float n1, float f1, float descu)
  57. {
  58. return (n1*f1)-descu;
  59. }


Título: Re: Mostrar matriz en forma de lista!
Publicado por: rir3760 en 27 Enero 2012, 17:54 pm
No "sale bien" porque no indicas la anchura del campo "producto" (debes utilizar "%Ns") y si indicas en los demás campos que la anchura es cero (por ejemplo con "%0.0f") es igual a no indicarla.

Un saludo


Título: Re: Mostrar matriz en forma de lista!
Publicado por: ;c1v!c en 30 Enero 2012, 14:36 pm
Buenisimo!! Muchas gracias la verdad que solucione el problema!!

aca dejo el codigo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. float prod1 (float n1, float f1);
  6. float prod2 (float n1, float f1);
  7. float subtotal (float n1, float f1, float desc);
  8.  
  9. int main()
  10. {
  11. int i,j;
  12. float PreUni,CantSoli,desc;
  13. char p1[6]="prod1";
  14. char p2[6]="prod2";
  15. char p3[6]="prod3";
  16. char producto[7];
  17. //-------------------CARGAMOS DATOS--------------------//
  18. printf("\tIngrese nombre del producto &#8594; ");
  19. fgets(producto,7,stdin);
  20. if (producto[strlen(producto)-1] == '\n');
  21. producto[strlen(producto)-1] = '\0';
  22. printf("\tIngrese precio unitario &#8594; ");
  23. scanf("%f",&PreUni);
  24. printf("\tIngrese cantidad solicitada &#8594; ");
  25. scanf("%f",&CantSoli);
  26. //-------------------MOSTRAMOS LOS DATOS--------------//
  27.  
  28. if(strcmp(producto,p1)==0)
  29. {
  30. desc=prod1(PreUni,CantSoli);
  31. printf("\n||-----------------------------------------------------------||\n|| producto | Cantidad | P.Unitario | Descuento |  Subtotal  ||\n");
  32. printf("|| [%.5s]  | %8.0f | %10.2f | %9.2f | %10.2f || \n||-----------------------------------------------------------||\n",producto,CantSoli,PreUni,prod1(PreUni,CantSoli),subtotal(PreUni,CantSoli,desc));
  33. }
  34. else if (strcmp(producto,p2)==0)
  35. {
  36. desc=prod2(PreUni,CantSoli);
  37. printf("\n||-----------------------------------------------------------||\n|| producto | Cantidad | P.Unitario | Descuento |  Subtotal  || \n");
  38. printf("|| [%.5s]  | %8.0f | %10.2f | %9.2f | %10.2f || \n||-----------------------------------------------------------||\n",producto,CantSoli,PreUni,prod2(PreUni,CantSoli),subtotal(PreUni,CantSoli,desc));
  39. }
  40. else
  41. {
  42. printf("\n||-----------------------------------------------------------||\n|| producto | Cantidad | P.Unitario | Descuento |  Subtotal  ||\n");
  43. printf("||  [%.5s]  | %8.0f | %10.2f |   0.00    | %10.2f ||\n||-----------------------------------------------------------||\n",producto,CantSoli,PreUni,CantSoli);
  44. }
  45. return 0;
  46. }
  47. /////---------------------FUNCIONESSSSS----------------///////////
  48. float prod1 (float n1, float f1)
  49. {
  50. return ((n1*f1)*10)/100;
  51. }
  52. float prod2 (float n1, float f1)
  53. {
  54. return ((n1*f1)*15)/100;
  55. }
  56. float subtotal (float n1, float f1, float descu)
  57. {
  58. return (n1*f1)-descu;
  59. }