[ Foro de C ]
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);
}
¿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.
Si estoy utilizando CodeBlocks no tengo acceso a la biblioteca Conio.h, ¿en este caso cómo haría?
Saludos.
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
Yo utilizo Code Blocks bajo Windows. He tratado de usas la biblioteca curse.h, pero no la reconoce.
Saludos.
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".
Cuando voy a las opciones para "linkear" no aparece ninguna biblioteca allí.
Ya descargué pdcurs32, ahora no sé como compilarlo de manera que pueda usarlo como biblioteca en mis programas C.
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?
Tengo instalada la versión 10.05 de CodeBlocks.
Saludos.
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.
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.)