[ Foro de C ]

no se como hacer un cuadro para mi factura

13-Jun-2014 23:21
Invitado (jonathan omar )
11 Respuestas

quiero ponerle un cuadro a este programa


#include<stdio.h>
#include<conio.h>

float ca,pu,vt,t;
int i=1,c,f,ci;
char s[20],cl[30],d[30];
int i; 

gotoxy(23,4); 
printf("-------------------------"); 
gotoxy(23,11); 
printf("-------------------------"); 
for(i=0;i<6;i++) 
{ 
gotoxy(23,5+i); 
cprintf("|"); 
gotoxy(47,5+i); 
cprintf("|"); 
} 

main()
{
 gotoxy(18,1);printf("jona's.");
 gotoxy(1,3);printf("Cliente: ");
 gotoxy(40,3);printf("Factura Nº: ");
 gotoxy(1,5);printf("Dirección: ");
 gotoxy(40,5);printf("RUC (CI): ");
 gotoxy(1,3);printf("Cliente: ");
 scanf("%s",&cl);
 gotoxy(40,3);printf("Factura Nº: ");
 scanf("%d",&f);
 gotoxy(1,5);printf("Dirección: ");
 scanf("%s",&d);
 gotoxy(40,5);printf("RUC (CI): ");
 scanf("%d",&ci);
 gotoxy(1,6);printf("----------------------------------------------------------------------");
 gotoxy(1,7);printf("Ingrese el número de productos: ");
 scanf("%d",&c);
 gotoxy(1,9);printf("Num.");
 gotoxy(9,9);printf("Detalle"); 
 gotoxy(19,9);printf("Cantidad");
 gotoxy(29,9);printf("Precio U.");
 gotoxy(40,9);printf("Precio T.");
 while(i<=c)
 {
  gotoxy(1,i+9+i);printf("%d",i);
  gotoxy(9,i+9+i);scanf("%s",&d);
  gotoxy(22,i+9+i);scanf("%f",&ca);
  gotoxy(31,i+9+i);scanf("%f",&pu);
                vt=ca*pu;
  gotoxy(40,i+9+i);printf("$ %2.2f",vt);
  gotoxy(1,i+10+i);printf("----------------------------------------------------------------------"); 
  i++;
         t=vt+t;
  
  }
  getch();
  gotoxy(24,i+12+i);printf("Total a pagar| $ %5.2f",t);
 
}



16-Jun-2014 11:48
Nacho Cabanes (+84)

¿Un recuadro que bordee todo lo que aparece en pantalla? Con "gotoxy" y un "for" lo puedes hacer. Por ejemplo, la línea superior podría ser:


for (i=1; i<79; i++)
{
    gotoxy(i,1);
    printf("-");
}


De igual modo dibujarías la línea inferior y dos verticales, una a cada lado.


16-Jun-2014 14:33
Luis Torres (+18)

Si estoy utilizando CodeBlocks no tengo acceso a la biblioteca Conio.h, ¿en este caso cómo haría?
Saludos.


16-Jun-2014 15:36
Nacho Cabanes (+84)

CodeBlocks no es un compilador, sino un editor. Por debajo suele tener el compilador GCC, con el que deberías usar "ncurses.h", en vez de "conio.h". Tienes las ideas básicas en el apartado 10.4 del curso:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=326


16-Jun-2014 18:31
Luis Torres (+18)

Yo utilizo Code Blocks bajo Windows. He tratado de usas la biblioteca curse.h, pero no la reconoce.

Saludos.


16-Jun-2014 20:35
Nacho Cabanes (+84)

Eso de "no la reconoce" es un poco ambiguo.

Prueba a "copiar y pegar" el ejemplo básico de "ncurses" y ver si funciona o no, y, en caso de que no, a decir el mensaje de error exacto que obtienes.

En general, debería bastar con que, en las opciones del proyecto, le digas que enlace la biblioteca "ncurses".


16-Jun-2014 21:32
Luis Torres (+18)

Cuando voy a las opciones para "linkear" no aparece ninguna biblioteca allí.


17-Jun-2014 01:01
Luis Torres (+18)

Ya descargué pdcurs32, ahora no sé como compilarlo de manera que pueda usarlo como biblioteca en mis programas C.


17-Jun-2014 11:12
Nacho Cabanes (+84)

No debería hacer falta que instalaras nada, porque CodeBlocks suele emplear el compilador GCC, y "ncurses" es una de las bibliotecas que suele venir instaladas con GCC. ¿Qué versión de CodeBlocks usas?


17-Jun-2014 18:32
Luis Torres (+18)

Tengo instalada la versión 10.05 de CodeBlocks.
Saludos.


18-Jun-2014 02:57
Luis Torres (+18)

Acabo de instalar CodeBlocks 13.12, o sea la última versión, pero al incluir la biblioteca en cuestión en mi programa se genera el siguiente error:
Fatal error. No such file o directory.


22-Jun-2014 16:23
Nacho Cabanes (+84)

A ver... he probado a repetir el problema, y yo también me he encontrado con él. He dado los siguientes pasos:

- He descargado CodeBlocks en su última versión (13.12) incluyendo el compilador MinGW y lo he instalado.

- He creado un nuevo proyecto de tipo "Console Application", en lenguaje C, con nombre "ejemploCurses".

- He copiado sobre él un ejemplo básico de "curses":


#include <curses.h>
 
int main() {
  initscr();
  clear();
  move(10,10);
  printw("hola");
  refresh();
  getch();
  endwin();
  return 0;  
}


- Efectivamente, se obtiene el error:


fatal error: curses.h: No such file or directory


y en la carpeta "include" del compilador no aparece ese fichero, ni tampoco "ncurses.h". Existe un "conio.h", pero que no incluye órdenes para posicionar en pantalla sino sólo para teclado (kbhit, getch). En la carpeta "lib" tampoco está la correspondiente biblioteca que sería necesario enlazar.

Por tanto, veo dos alternativas, si es vital escribir texto en ciertas coordenadas:

1) Usar otro entorno de desarrollo (un Linux virtualizado, un Turbo C / Borland C++ antiguo, o quizá esté incluido "ncurses" en algún otro entorno reciente para Windows, como "CodeLite" o como "Orwell Dev-C++").

2) Crear un array bidimensional de caracteres que actúe como una "pantalla virtual", y escribir información en él poco a poco, para finalmente volcar todo ese array a la pantalla.


Una tercera alternativa es "hacer cosas incompatibles" (algo que debería ir totalmente en contra del uso del lenguaje C, pero bueno). Por ejemplo, con CodeBlocks para Windows quizá se pueda "definir un gotoxy", así:


#include <windows.h> 
COORD coord = {0, 0};
void gotoxy (int x, int y) 
{  
        coord.X = x; coord.Y = y;
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); 
}


(leído en http://projectsofashok.blogspot.in/2010/05/gotoxy-in-codeblocks.html, no sé si funcionará en versiones recientes de CodeBlocks y desde luego no funcionará en entornos no-Windows).






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)