Foros del Web » Programación para mayores de 30 ;) » C/C++ »

AYUDA DEV-C++ Errores que no entiendo

Estas en el tema de AYUDA DEV-C++ Errores que no entiendo en el foro de C/C++ en Foros del Web. Parte donde aparecen los errores main() { //Linea 14 clrscr(); //Linea 15 alta(int int int int int int char* char* char* char* char* char*); getch(); ...
  #1 (permalink)  
Antiguo 30/04/2006, 22:10
Avatar de Spike_ak  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 442
Antigüedad: 19 años, 9 meses
Puntos: 0
Exclamación AYUDA DEV-C++ Errores que no entiendo

Parte donde aparecen los errores
main()
{
//Linea 14 clrscr();
//Linea 15 alta(int int int int int int char* char* char* char* char* char*);
getch();
}

Errores:

Linea 14--- `clrscr' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)

Linea 15--- expected primary-expression before "int"
In function `void alta(int, int, int, int, int, int, char*, char*, char*, char*, char*, char*)':
__________________
*****************************************
la Ignorancia es la fuerza
  #2 (permalink)  
Antiguo 30/04/2006, 22:34
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 19 años, 5 meses
Puntos: 24
Para evitar el error del clsrc() tienes que incluir la biblioteca que lo contiene:
Código HTML:
#include <conio.h> 
Podrias poner el codigo de la funcion alta?
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #3 (permalink)  
Antiguo 30/04/2006, 23:04
Avatar de Spike_ak  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 442
Antigüedad: 19 años, 9 meses
Puntos: 0
Si,puse los includes,y en Herramientas>Opciones de compilador le indique donde se encuentran las librerias...

---------
Codigo de funcion Alta

void alta(int a,int b,int c,int d,int e,int f,char g[20],char h[30],char i[40],char j[15],char k[200],char l[20])
{ clrscr();
arch=fopen("c:\\administrador.txt","w");
//ACA VA EL CIN>> PARA LOS NUMEROS Y EL GETS PARA LAS PALABRAS,NO PONGO ESTA PARTE POR PRIVACIDAD.
gotoxy(2,28);
cout<<"FIN DE CARGA DE DATOS...";
fprintf(arch,"%s\n%s\n%s\n%s\n%s\n%s\n%d\n%d\n%d\n %d\n%d\n%d\n",g,h,i,j,k,l,a,b,c,d,e,f);
fclose(arch);
}//Fin de funcion Alta
__________________
*****************************************
la Ignorancia es la fuerza
  #4 (permalink)  
Antiguo 01/05/2006, 07:46
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 19 años, 5 meses
Puntos: 24
Al parecer el error esta en la llamada a la función, pero no entiendo esa lista de parámetros alta(int int int...), eso son parametros que le pasas? me parecen raros.
O le pasa valores int reales?
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #5 (permalink)  
Antiguo 01/05/2006, 09:11
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Bueno, de entrada clrsrc no te va a jalr porque esa solo esta disponible en los compiladores de Borland. Te recomiendo que no uses las funciones de conio. Y se de plano te urgen porque estas muy acostumbrado a ellas. Intenta hacerlas tu mismo, no es dificil. Por otro lado, para Dev-Cpp y code::bolcks hay un paquete con la emulacion de conio que podrias usar.

Saludos
  #6 (permalink)  
Antiguo 02/05/2006, 00:56
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses
Puntos: 2
Una funcion con un elevado numero de parametros es una funcion mal diseñada.

podrias hacer una estructura que tenga todos estos datos que usas como miembros, esto te érmitiria un codigo mas limpio y ordenado,
otra es como ya te mencionaron la libreria conio no es estandard por tanto es recomendable no usarla, podrias usar en su caso system("cls"); que no tengo idea que tan estandard sea esto pero supongo que te funcionara.
para tabular tus datos hay formas de hacerlo con la funcion printf o el objeto cout. investiga un poco de salidas con formato en CyC++.
  #7 (permalink)  
Antiguo 02/05/2006, 10:24
Usuario no validado
 
Fecha de Ingreso: julio-2001
Mensajes: 766
Antigüedad: 23 años, 5 meses
Puntos: 0
Cita:
Iniciado por Nivel7
Una funcion con un elevado numero de parametros es una funcion mal diseñada.

Podrias ampliar esto?
  #8 (permalink)  
Antiguo 02/05/2006, 13:34
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Cita:
Iniciado por Instru
Bueno, de entrada clrsrc no te va a jalr porque esa solo esta disponible en los compiladores de Borland. Te recomiendo que no uses las funciones de conio. Y se de plano te urgen porque estas muy acostumbrado a ellas. Intenta hacerlas tu mismo, no es dificil. Por otro lado, para Dev-Cpp y code::bolcks hay un paquete con la emulacion de conio que podrias usar.

Saludos
No es difícil, es imposible.

El estándar C/C++ no define ninguna manera para borrar la pantalla, colocar el cursor en tal posición, borrar un carácter, etc.

Lo único sucio que se podría hacer es asumir una consola de 80x24, y re-pintar el texto continuamente para poder hacer cambios en cualquier sitio y que parezcan inmediatos.
  #9 (permalink)  
Antiguo 02/05/2006, 19:04
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Tu lo has dicho, si se puede.
Saludos
  #10 (permalink)  
Antiguo 03/05/2006, 07:08
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Cita:
Iniciado por Instru
Tu lo has dicho, si se puede.
Saludos
No, no se puede como tal. Sólo se puede imitar, pero nunca estarás modificando realmente caracteres en una posición (x,y), sus colores, o cosas así.

Además de consumir gran cantidad de recursos. Sería como programar un juego :P
  #11 (permalink)  
Antiguo 03/05/2006, 15:16
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Bueno, a eso era a lo que me referia. Imitar las funciones.

Saludos
  #12 (permalink)  
Antiguo 03/05/2006, 19:57
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses
Puntos: 2
Todo esto se puede hacer y muy facil, solo tienes que hacer uso de las demas funciones que el Win32 tienen para su consola.

Claro esta que no solo usando el estandard C\C++, pero se puede hacer.
void alta(int a,int b,int c,int d,int e,int f,char g[20],char h[30],char i[40],char j[15],char k[200],char l[20])

Esta funcion tiene parametros de sobra, imagina que la quiera usar alguien ageno a tí, crees que se acordaria de los parametros, algo similar pasa con las funciones del Win32 jeje, no es que este mal o sea un error, el problema es que podrias hacerlo mas facil.

puedes crear una estructura:

strct Datos
{
int a;
int b;
int b;
int c;
int d;
int e;
int f;
};

y otra

struct Vectores
{
char g[20];
char h[30];
char 1[40];
char j[15];
char k[200];
char l[20];
};

tu funcion quedaria:

void Alta(Datos *dat, Vectores *vec) //si son por referencia

void Alta(Datos dat, Vectores vec) //si son por valor
{
system("cls");;
arch=fopen("c:\\administrador.txt","w");
//ACA VA EL CIN>> PARA LOS NUMEROS Y EL GETS PARA LAS PALABRAS,NO PONGO ESTA PARTE POR PRIVACIDAD.
//gotoxy(2,28); esto deplano no lo uses.
cout<<"FIN DE CARGA DE DATOS...";
fprintf(arch,"%s\n%s\n%s\n%s\n%s\n%s\n%d\n%d\n%d\n %d\n%d\n%d\n",vec.g,vec.h,vec.i,vec.j,vec.k,vec.l, dat.a,dat.b,dat.c,dat.d,dat.e,dat.f);
fclose(arch);
}//Fin de funcion Alta

Hay funciones que tienen Windows para controlar la consola, podrias usar estas si es que quieres darle mas vista a tu programa pero si no sebes usar el Win32, te sea un tanto dificil pero no tanto.

Iniciando la Consola:
AllocConsole()
int hConsoleIn = GetStdHandle(-10)
int hConsoleOut = GetStdHandle(-11)
int hConsoleErr = GetStdHandle(-12)

Liberar la Consola:
FreeConsole()

Escribir:
WriteConsole(hConsoleOut,Texto,strlen(Texto),1,0)

Leer:
ReadConsole(hConsoleIn,Text,255,1,0)

Limpiar:
int Temp=CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,1,0)
SetConsoleActiveScreenBuffer(Temp)
CloseHandle(hConsoleOut)
hConsoleOut=Temp

Color de Texto:
SetConsoleTextAttribute(hConsoleOut,Color); // Son 16 Colores del 0-15

Coordenadas:
SetConsoleCursorPosition(hConsoleOut,X+Y*AnchoCons ola)


Eso es lo basico pero hay mas funciones que podrias usar.
  #13 (permalink)  
Antiguo 04/05/2006, 07:36
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Nivel7, estamos hablando de que NO se puede hacer con C/C++, sino simplemente imitarlo.

No sé por qué tienes la manía de poner cosas (Win32 que no es portable) que no vienen al caso :S

Luego, "cls" de estándar tiene 0%.
  #14 (permalink)  
Antiguo 04/05/2006, 16:27
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Obviamente clrsrc no es estandar e igual de no estandar son todas las funciones de conio.h Pero bueno, se puede imitar de cualquier forma, que es lo que yo podria llamar emular las funciones. No necesariamente se tiene que usar la APi de w32. Hasta donde se puedes hacerlo usando C/C++ en el nivel mas bajo posible, escribiendo instrucciones con punteros a la ensamblador. Si no, como hicieron conio.h? y su emulacion?. Eso si, en algo estoy de acuerdo. NO ES PORTABLE Y MUCHO MENOS ESTANDAR

Saludos
  #15 (permalink)  
Antiguo 04/05/2006, 22:45
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses
Puntos: 2
Oye MaxExtreme, no tengo la intencion de crear una discucion lo unico que quiero es solucionar el problema del que creo este hilo y no solo serrarme a C/C++, si esta programando en Windows, por que no usarlo??, esta comprobado que con el standar de C/C++, no se hace nada.
El esta usando el Dev C++, por tanto he de suponer que esta usando Windows, y en Windows no se puede acceder a la tarjeta de video ni a zonas de memoria reales, por tanto es imposible hacer un conio.h, sin usar las funciones del SO. claro si estubiera programando en DOS otra cosa seria, ahi si se puede usar la maquina atu gusto con solo el estandar y en ocaciones ni eso, siempre es indispenzable el ensamblador el cual tampoco es estandar, si por eso bamos a dejar de hacer las cosas pues ya dejemos esto y hagamos otra cosa. mencioname un programa comercial que solo use C/C++ estandar, no lo hay, Qt a pesar de ser una libreia sseudo portable usa el Win32, wxWindows lo usa, GTK lo usa, todos los programas que funcionan sobre windows usan el WIn32.


us saludo.

ya por ultimo el Dev C++ tiene un emulador de nCurses (creo que ese es su nombre) una libreria similar a conio pero para Unix o Linux, que por mencionar esta emulada con el WIn32.

Instru, eso seria lo ideal no usar el Win32 pero windows no te deja acceder ni alas interrupciones ni a la memoria, no targeta, no puertos, no nada. es por eso que tienes que usar el API, hay una forma de hacerlo porsupuesto de alguna forma se hacen los drivers de video, audio y otros, pero la verdad tambien se basan en rutinas del Systema, la cual desconosco.
  #16 (permalink)  
Antiguo 05/05/2006, 16:21
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
REcuerda que existe assembler para windows, es decir programar cosas de windows(ventanas, botones, etc) con asm. Creo que ya es una bobada, pero puede funcionar.
Saludos
  #17 (permalink)  
Antiguo 05/05/2006, 16:23
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 19 años, 5 meses
Puntos: 24
Cita:
Iniciado por Instru
REcuerda que existe assembler para windows, es decir programar cosas de windows(ventanas, botones, etc) con asm. Creo que ya es una bobada, pero puede funcionar.
Saludos
Existe pero es bastante complejo. Es mas facil usar la MFC de Windows bajo C++

Saludos
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #18 (permalink)  
Antiguo 05/05/2006, 16:27
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Jajajaja. Si, por eso dije que ya er una bobada. Usar asm para windows para emular conio.h.

Repito, hay un paquete para Dev-cpp y code::blocks que es la emulacion de conio.h, es decir, la libreria conio como la de borland para cualquier compilador.
No recuerdo si usa dlls, o algo, pero ya la he probado y funciona bastante bien.
SAludos
  #19 (permalink)  
Antiguo 06/05/2006, 00:55
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses
Puntos: 2
Si es cierto hay assembler para windows, pero como dices es complicarse la vida, ya que en realidad lo que hace es lo mismo que hace el C para windows, o el C++. por mucho que uses assembler en windows no se pueden usar interrupciones, ni direccionar fisicamente. todo es memoria virtual.
lo cierto es que como tu mencionas el Dev C++ tiene una emulacion de conio.h
es aceptable, por lo que dicen, yo la verdad no la uso.

aproposito, ¿Que ensamblador usan ustedes?
  #20 (permalink)  
Antiguo 06/05/2006, 00:59
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses
Puntos: 2
Si es que lo usan....
  #21 (permalink)  
Antiguo 06/05/2006, 07:49
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Cita:
Iniciado por Instru
Obviamente clrsrc no es estandar e igual de no estandar son todas las funciones de conio.h Pero bueno, se puede imitar de cualquier forma, que es lo que yo podria llamar emular las funciones. No necesariamente se tiene que usar la APi de w32. Hasta donde se puedes hacerlo usando C/C++ en el nivel mas bajo posible, escribiendo instrucciones con punteros a la ensamblador. Si no, como hicieron conio.h? y su emulacion?. Eso si, en algo estoy de acuerdo. NO ES PORTABLE Y MUCHO MENOS ESTANDAR

Saludos
Me refería al system("cls") que había propuesto él antes, pero es que "cls" es un comando de MS-DOS, y por tanto, no estándar.

Y te equivocas, en cualquier sistema opeartivo decente no puedes tocar la memoria de vídeo.

La conio.h simplemente usa la Win32 API.
  #22 (permalink)  
Antiguo 06/05/2006, 07:54
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Cita:
Oye MaxExtreme, no tengo la intencion de crear una discucion lo unico que quiero es solucionar el problema del que creo este hilo y no solo serrarme a C/C++, si esta programando en Windows, por que no usarlo??, esta comprobado que con el standar de C/C++, no se hace nada.
Se hace todo lo necesario, y posible, dentro del margen del sentido común, de la portabilidad y la seguridad.

Cita:
mencioname un programa comercial que solo use C/C++ estandar
Creo que no entiendes el objetivo del estándar.

Cita:
Qt a pesar de ser una libreia sseudo portable usa el Win32, wxWindows lo usa, GTK lo usa, todos los programas que funcionan sobre windows usan el WIn32.
Qt, wxWindows, y demás, son portables; evidentemente, usan la API de Win32, o usan las X, o lo que sea, evidente.

Tu programas algo con ellos, y lo puedes usar en cualquier sistema operativo. Precisamente esa es la idea: Que en cada sistema las Qt usarán Win32, las X, lo que sea; pero tú te olvides de ello.
  #23 (permalink)  
Antiguo 06/05/2006, 14:57
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Creo que Nivel7 tiene un mal conepto de "estandar". Estandar significa que en donde estes el lenguaje C++ es el mismo. Si usas un compilador estandar, entonces ten por seguro que va a usar el C++ estandar. Ese es el punto. No es como assembler, que con cada arquitectura cambia. Y las librerias estandar son las que deben estar en todo compilador estandar sin importar arquitectura o plataforma.
Ahora, portabilidad es lo que te menciona MaxExtreme ariiba.
Saludos
  #24 (permalink)  
Antiguo 06/05/2006, 17:52
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses
Puntos: 2
hey,hey

hey tranquilos ya la agarraron en contra de mi, no tenemos por que hacer esto personal, es solo una discucion con el fin de aclarar una duda...

claro que comprendo el estandar.
se que es la base del lenguaje C/C++, pero ningun compilador se conforma con esto y mucho menos una aplicacion,
se que el gcc es uno de los que mas se basan en el estandar y que Builder y Visual C++, agregan unas cosillas mas asi como no cumplen con otras, y que hay otras cosillas que no son contempladas por este.

por ejemplo el Builder agrega propiedades, un bloque de visibilidad mas, __finaly,entre otras cosas, y que visual C++, tambien agrega otras ademas de tener problemas con las variables de bucles, y que la pragma es para directivas de compiladores en particular, tambien se que el estandar incluye ciertas libreias, para el manejo de entrada y salida de datos, ficheros, cadenas, memoria, tipos, etc.
y por tabilidad es otra cosa que nada tiene que ver con el estandar,
pero se da gracias a el.

esto refuerza mi insistencia en poder usar el Win32 para resolver este problema en particular, como?

usando funciones que usen las funciones del Win32, y hacer las mismas funciones que usen a X, de esta forma lograriamos portabilidad,
esto hacen las demas librerias graficas, si los demas lo hacen, por que no hacerlo personalmente.

lo qeu dije anteriormente es que con lo que establece el estandar no se puede hacer mucho, por ejemplo en DOS:
con el estandar no se puede acceder a las interrupciones.

en windows: las direcctivas de llamadas a Dlls no es estandar.
en Linux, desconosco.

el problema de conio.h es que ni es estandar ni es portable, a menos que kilix tenga una implementacion de conio.h para linux.


Saludos.
  #25 (permalink)  
Antiguo 06/05/2006, 22:23
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Nadie esta encontra tuya. solo estamos aclarando algunos puntos.
Y bueno, lo que pusiste es una repeticion de lo que te dijimos MaxExtreme y yo.
Saludos
  #26 (permalink)  
Antiguo 07/05/2006, 02:07
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Cita:
Iniciado por Nivel7
usando funciones que usen las funciones del Win32, y hacer las mismas funciones que usen a X, de esta forma lograriamos portabilidad,
esto hacen las demas librerias graficas, si los demas lo hacen, por que no hacerlo personalmente.
Precisamente por eso: PORQUE YA ESTA HECHO.

No necesitamos 1000 versiones de librerías gráficas, sino 1 buena.
  #27 (permalink)  
Antiguo 07/05/2006, 03:26
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses
Puntos: 2
Ok.

Ok estoy de acuerdo con ust´s, no hago nada ya todo esta hecho. y de C/C++, no se nada.ni modo.

Saludos.
  #28 (permalink)  
Antiguo 07/05/2006, 13:38
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 17:57.