Mostrar en forma de lista! [solucionado]

Iniciado por ;c1v!c, 27 Enero 2012, 16:55 PM

0 Miembros y 1 Visitante están viendo este tema.

;c1v!c

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!!

   

rir3760

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.

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

;c1v!c

claro si entiendo pero mira este es mi ejemplo!!
probalo y fijate q no salen bien abajo de cada palabra los resultados.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

float prod1 (float n1, float f1);
float prod2 (float n1, float f1);
float subtotal (float n1, float f1, float desc);

int main()
{
int i,j;
float PreUni,CantSoli,desc;
char p1[6]="prod1";
char p2[6]="prod2";
char p3[6]="prod3";
char producto[7];
//-------------------CARGAMOS DATOS--------------------//
printf("\tIngrese nombre del producto → ");
fgets(producto,7,stdin);
if (producto[strlen(producto)-1] == '\n');
producto[strlen(producto)-1] = '\0';
printf("\tIngrese precio unitario → ");
scanf("%f",&PreUni);
printf("\tIngrese cantidad solicitada → ");
scanf("%f",&CantSoli);
//-------------------MOSTRAMOS LOS DATOS--------------//

if(strcmp(producto,p1)==0)
{
desc=prod1(PreUni,CantSoli);
printf("|| producto | Cantidad | P.Unitario | Desc. | Subtotal ||\n");
printf("|| [%s] | [%0.0f] | [%0.2f] | [%0.2f] | [%0.2f] || \n",producto,CantSoli,PreUni,prod1(PreUni,CantSoli),subtotal(PreUni,CantSoli,desc));
}
else if (strcmp(producto,p2)==0)
{
desc=prod2(PreUni,CantSoli);
printf("|| producto | Cantidad | P.Unitario | Desc. | Subtotal || \n");
printf("|| [%s] | [%0.0f] | [%0.2f] | [%0.2f] | [%0.2f] || \n",producto,CantSoli,PreUni,prod2(PreUni,CantSoli),subtotal(PreUni,CantSoli,desc));
}
else
{
printf("|| producto | Cantidad | P.Unitario | Desc. | Subtotal ||\n");
printf("|| [%s] | [%0.0f] | [%0.2f] | [0.00] | [%0.2f] ||\n",producto,CantSoli,PreUni,CantSoli);
}
return 0;
}
/////---------------------FUNCIONESSSSS----------------///////////
float prod1 (float n1, float f1)
{
return ((n1*f1)*10)/100;
}
float prod2 (float n1, float f1)
{
return ((n1*f1)*15)/100;
}
float subtotal (float n1, float f1, float descu)
{
return (n1*f1)-descu;
}

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

;c1v!c

Buenisimo!! Muchas gracias la verdad que solucione el problema!!

aca dejo el codigo:#include <stdio.h>
#include <stdlib.h>
#include <string.h>

float prod1 (float n1, float f1);
float prod2 (float n1, float f1);
float subtotal (float n1, float f1, float desc);

int main()
{
int i,j;
float PreUni,CantSoli,desc;
char p1[6]="prod1";
char p2[6]="prod2";
char p3[6]="prod3";
char producto[7];
//-------------------CARGAMOS DATOS--------------------//
printf("\tIngrese nombre del producto → ");
fgets(producto,7,stdin);
if (producto[strlen(producto)-1] == '\n');
producto[strlen(producto)-1] = '\0';
printf("\tIngrese precio unitario → ");
scanf("%f",&PreUni);
printf("\tIngrese cantidad solicitada → ");
scanf("%f",&CantSoli);
//-------------------MOSTRAMOS LOS DATOS--------------//

if(strcmp(producto,p1)==0)
{
desc=prod1(PreUni,CantSoli);
printf("\n||-----------------------------------------------------------||\n|| producto | Cantidad | P.Unitario | Descuento |  Subtotal  ||\n");
printf("|| [%.5s]  | %8.0f | %10.2f | %9.2f | %10.2f || \n||-----------------------------------------------------------||\n",producto,CantSoli,PreUni,prod1(PreUni,CantSoli),subtotal(PreUni,CantSoli,desc));
}
else if (strcmp(producto,p2)==0)
{
desc=prod2(PreUni,CantSoli);
printf("\n||-----------------------------------------------------------||\n|| producto | Cantidad | P.Unitario | Descuento |  Subtotal  || \n");
printf("|| [%.5s]  | %8.0f | %10.2f | %9.2f | %10.2f || \n||-----------------------------------------------------------||\n",producto,CantSoli,PreUni,prod2(PreUni,CantSoli),subtotal(PreUni,CantSoli,desc));
}
else
{
printf("\n||-----------------------------------------------------------||\n|| producto | Cantidad | P.Unitario | Descuento |  Subtotal  ||\n");
printf("||  [%.5s]  | %8.0f | %10.2f |   0.00    | %10.2f ||\n||-----------------------------------------------------------||\n",producto,CantSoli,PreUni,CantSoli);
}
return 0;
}
/////---------------------FUNCIONESSSSS----------------///////////
float prod1 (float n1, float f1)
{
return ((n1*f1)*10)/100;
}
float prod2 (float n1, float f1)
{
return ((n1*f1)*15)/100;
}
float subtotal (float n1, float f1, float descu)
{
return (n1*f1)-descu;
}