PDA

Ver la versión completa : Correciones de código y demanda de ayuda variada en C++



AOJ
05/05/2005, 00:39
Buenas,

Sabiendo que tenemos una magnífica colección de coders por el foro (peloteoooo ... aunque es verdad), me he animado a haceros algunas consultas sobre unas dudas que tengo en C++

Lo primero, os pongo el código de una clase "fecha", en la que se construyen y se modifican los objetos de este tipo:



#include "fecha.hpp"

// la parte privada de fecha, usa: nat d, m, a ; siendo nat un número natural.

fecha::fecha(nat dia, nat mes, nat anyo) throw(error)
: d(dia),m(mes),a(anyo){}


// entra un string con el formato "21/07/1983" o variantes tipo
// "21/7/1983" o "21/07/83", etc... También puede entrar una string incorrecto
// y se tiene que comprobar que sea una fecha valida.

fecha::fecha(const string& s) throw(error){

bool bisiesto;
bisiesto = false;
int a=0,b=0;

if (s == ""){
d = 1;
m = 1;
a = 1801;
}

else{
a = s.find("/");
if (((unsigned)a == string::npos) || (a < 1)) throw(21); //barra al inicio de la fecha, o no barra
b = s.find("/",a);
if ((unsigned)b == s.length()) throw(21); //barra al final de la fecha
}
string uno = s.substr(0,a-1);
string dos = s.substr(a+1, b-1);
string tres = s.substr(b+1,s.length());

//isnat y toint son metodos que funcionan bien, de otra clase aparte
if (util::is_nat(uno)){
d = util::toint (uno);
if (util::is_nat(dos)){
m = util::toint (dos);
if (util::is_nat(tres)){
a = util::toint (tres);
}
else throw(21);
}
else throw(21);
}
else throw(21);

//Condición de anyo bisiesto
if (((a % 4) == 0) || ((a % 400) == 0)) bisiesto = true;

if (m > 12 || m < 1){
throw(21);
}

switch (m){
case (2): if (bisiesto){
if (d >29) throw(21);
}
else{
if (d > 28) throw(21);
}
break;
case (4):
case (6):
case (9):
case (11): if (d > 30){ throw(21);
break;}
default: if (d > 31) throw(21);
}
}

fecha::fecha(const fecha& f) throw(error){
d = f.d;
m = f.m;
a = f.a;
}

//Destructora
fecha::~fecha(){
}

//El constructor por copia no sé si se haria así, lo he dejado entre comentarios
/*
fecha& fecha::operator=(const fecha& f) throw(error){
d = f.d;
m = f.m;
a = f.a;
}
*/

//Consultoras
nat fecha::dia() const throw(){
return d;
}

nat fecha::mes() const throw(){
return m;
}

nat fecha::anyo() const throw(){
return a;
}

void fecha::print(ostream& os) const throw(){
cout << d << "/" << m << "/" << a;
}


bool fecha::operator==(const fecha& f) const throw(){
return (d == f.d && m == f.m && a == f.a);
}

bool fecha::operator!=(const fecha& f) const throw(){
return (d != f.d || m != f.m || a != f.a);
}

//Diversas comparaciones entre fechas
bool fecha::operator<(const fecha& f) const throw(){
if (a < f.a) return false;
else {
if (a > f.a){
return true;
}
else{
if (m < f.m) return false;
else{
if(m > f.m) return true;
else{
if (d < f.d) return false;
else return true;
}
}
}
}
}

bool fecha::operator<=(const fecha& f) const throw(){
if (a < f.a) return false;
else {
if (a > f.a){
return true;
}
else{
if (m < f.m) return false;
else{
if(m > f.m) return true;
else{
if (d <= f.d) return false;
else return true;
}
}
}
}
}



bool fecha::operator>(const fecha& f) const throw(){
if (a < f.a) return true;
else {
if (a > f.a){
return false;
}
else{
if (m < f.m) return true;
else{
if(m > f.m) return false;
else{
if (d < f.d) return true;
else return false;
}
}
}
}
}

bool fecha::operator>=(const fecha& f) const throw(){
if (a < f.a) return true;
else {
if (a > f.a){
return false;
}
else{
if (m < f.m) return true;
else{
if(m > f.m) return false;
else{
if (d <= f.d) return true;
else return false;
}
}
}
}
}


Me he hecho un juego de pruebas, y en algunos casos se peta. Sabéis que es lo que estoy haciendo mal? A lo mejor es una chorrez y no lo sé ver :S

Como podeis ver, el código es una porqueria, aún estoy en fase de aprendizaje ;). Si sabéis alguna forma más óptima de hacerlo, estaria agradecido que alguien me lo dijera!


Ahora también estoy batallando con STL list<elem>, junto con los iteradores. Me podéis explicar un poco cómo se definen y funcionan? Muchas de las funciones que implementa, tienen coste lineal, no?


Muchas gracias por todo, espero que alguien me pueda ayudar en ésta, y futuras dudas. Os estaré infinitamente agradecido! :brindis:. Si se necesitan otras partes de código, las iré subiendo.

oankali
05/05/2005, 10:44
Si tenías la esperanza de que yo fuera uno de los que contestaran, aquí me tienes :D.
Pero desgraciadamente no me va a ser posible ayudarte porque de C++ no tengo ni idea. Me lo miré hace casi dos años, pero no llegué a programar nada. Solo me leí un tutorial.
Además parece que estés sobrecargando operadores, o como se llame, con lo que aún te puedo ayudar menos.

A ver si alguien te puede ayudar.

Oankali.

PD: No tengo abandonado nuestro tema pendiente, sigo con ello a ratos. Si consigo hacer lo que prentendo, va a quedar de cojones ;)

Propeller
05/05/2005, 10:49
Yo no tengo experiencia usando C++, solamente me leí el libro de Bjarne Stroustrup hace 4 años y pensé algo como "mira de donde sacó Java su sintaxis".

Por lo demás, lo poco que programo lo hago en C, aunque no tengo inconveniente en refrescar aquello que leí de C++ esta noche, siempre y cuando tus preguntas puedan esperar hasta mañana.

Propeller

zophiel
05/05/2005, 10:55
Buenas AOJ, no se si tienes en un .h la definicion de la clase error...pero según he visto en tu codigo avisas en todas los metodos(funciones) que estos pueden lanzar una excepción pero no veo ningún catch que trate dicha excepción ni ningún bloque try{} donde creas que se va a producir una excepción...no se si me explico o si esto ya lo tienes controlado...puede ser que cuando se produzca un error que no tienes controlado por un try{}catch(...){} el programa pete.

charlyBaby
05/05/2005, 13:05
Yo no veo nada raro en el código, más que tienes throw Exception en métodos que nunca van a lanzar una excepción por lo que no tiene sentido, sease:
nat fecha::mes() const throw(){
return m;
}
y los análogos.

fecha::fecha(nat dia, nat mes, nat anyo) throw(error)
: d(dia),m(mes),a(anyo){}

etc, etc.


Dado que esta clase no se reserva memoria, ni se crean objetos ni hay deletes, .... es decir no se una memoria dinámicamente. ¿cómo estas seguro de que es en esta parde de código donde te casca el programa? No veo motivo por el que te pueda cascar más que el lío de throws Exception que tienes.
¿has traceado el programas? ¿usas algún depurador?

mortimor
05/05/2005, 13:39
bool fecha::operator<(const fecha& f) const throw(){
if (a < f.a) return false;
else {
if (a > f.a){
return true;
}
else{
if (m < f.m) return false;
else{
if(m > f.m) return true;
else{
if (d < f.d) return false;
else return true;
}
}
}
}
}

Uhhmmmm en este operador.... no deberia de ser todo al reves??? si compara el objeto fecha "this" con el que pasamos "f", estamos comparando si "this" es menor que "f" por lo tanto debera devolver true si "a < f.a" vamos digo yo;M esto es aplicable a todos los operadores que has definido :)

Por otro lado, te pasas unpoco declarando el uso de excepciones "throw()" en los metodos, cuando luego no se usan ni nada.

Lo de la utilizacion de STL... estamuy bien, es muy util sobre todo clases como string, array, vector, list, map,... y demas historias de uso comun. El uso de iteradores es muy sencillo, basicamente es como si tuvieras definida una variable solo para recorrer la lista y esta variable esta contenida en la clase que genera la plantilla como un dato miembro. Tu utilizas un bucle for para recorrer de principio a fin o de forma inversa la lista, existen en la plantilla declarados unos metodos y datos que permiten conocer cuando estamos en la posicion del principio o del final o cual es la posicion exacta en la lista (mira la ayuda de la template LIST para obtener los metodos miembro).

PD: si tengo tiempo te cuelgo un ejemplo de utilizacion de LIST o MAP. En cualquier libro de C++ que se precie tendra al menos un par de capitulos dedicados a STL donde vendran ejemplos de tipo gestion de listas de alumnos o usuarios de video club... En cualquier caso, si has estudiado TDAs sabras de sobra como funcionan las listas y estas plantillas tienen las funciones habitulaes y alguna mas ;) (no se porque me da que no sabes de lo que hablo, si fuera asi no habrias hecho la pregunta :))

AOJ
06/05/2005, 01:22
Muchas gracias a todos por responder! :brindis:

Ahora me toca a mi :)


Si tenías la esperanza de que yo fuera uno de los que contestaran, aquí me tienes .
Pero desgraciadamente no me va a ser posible ayudarte porque de C++ no tengo ni idea. Me lo miré hace casi dos años, pero no llegué a programar nada. Solo me leí un tutorial.
Además parece que estés sobrecargando operadores, o como se llame, con lo que aún te puedo ayudar menos.

A ver si alguien te puede ayudar.

Oankali.

PD: No tengo abandonado nuestro tema pendiente, sigo con ello a ratos. Si consigo hacer lo que prentendo, va a quedar de cojones

Pues si, esperaba que fueras tu uno de los que respondiera, y así ha sido :D. Pensaba enviarte las dudas por mail, a modo personal ... pero como ayer no tenia mucho tiempo y iba un poco estresado, lo acabé poniendo en el foro.

Vaya, una pena que no domines C++, pero veo que es una cosa generalizada. Pensaba que la gente tiraba más a éste, ya que es más nuevo y tiene mejoras respecto al C típico :confused:

Así me gusta, que "aquello que tienes a medias" no lo hayas olvidado :). Ah, y al final me quedé con las ganas de saber algo de los nuevos proyectos :p



Por lo demás, lo poco que programo lo hago en C, aunque no tengo inconveniente en refrescar aquello que leí de C++ esta noche, siempre y cuando tus preguntas puedan esperar hasta mañana.


Gracias Prop, pero no es necesario que te tomes las molestias!

En principio el código que he puesto, es de la primera clase de una mega practica de la Uni; en la que tenemos que hacer una especie de base de datos de fotografias, con una colección de datos; y luego hacer consultas sobre ellas. A simple vista puede parecer facil, pero hay unas idas de olla tremendas. Tablas de hash, BSTs, AVLs, diccionarios, algoritmos de ordenación ... todo esto va a entrar >_<.
Aunque tengo alguna idea para portarlo a la GP32, en forma de otro tipo de aplicación :)
De momento no tengo una prisa inminente, pero tengo que tenerlo todo acabado, sin ningun error y optimizado al máximo ... para el 10 de Junio a las 12 del mediodia :shock:



Buenas AOJ, no se si tienes en un .h la definicion de la clase error...pero según he visto en tu codigo avisas en todas los metodos(funciones) que estos pueden lanzar una excepción pero no veo ningún catch que trate dicha excepción ni ningún bloque try{} donde creas que se va a producir una excepción...no se si me explico o si esto ya lo tienes controlado...puede ser que cuando se produzca un error que no tienes controlado por un try{}catch(...){} el programa pete.


En la practica nos dan la clase error y la utils, junto con los hpp de las clases. Entonces tenemos que programar los cpp y asegurarnos que todo funcione correcto (mediante juegos de prueba hechos por nosotros mismos).
Tienes razón, no he hecho ningún try/catch. Lo voy a dejar para el final de todo, aunque si peta no creo que sea por eso :S



Yo no veo nada raro en el código, más que tienes throw Exception en métodos que nunca van a lanzar una excepción por lo que no tiene sentido, sease:
...
Dado que esta clase no se reserva memoria, ni se crean objetos ni hay deletes, .... es decir no se una memoria dinámicamente. ¿cómo estas seguro de que es en esta parde de código donde te casca el programa? No veo motivo por el que te pueda cascar más que el lío de throws Exception que tienes.
¿has traceado el programas? ¿usas algún depurador?


Tienes toda la razón, no tiene sentido hacer throw en metodos que no van a usar memoria dinámica ... pero así viene especificado en el hpp que nos dan, y no lo puedo modificar para nada >_<.
Hmmm no sé que es un traceador :o ... un depurador es un debugger? (Así me gusta, denotando que no tengo ni idea de programar xDDDD). Sé para que sirve un debugger, pero nunca lo he usado. A lo mejor va siendo hora ...



Uhhmmmm en este operador.... no deberia de ser todo al reves??? si compara el objeto fecha "this" con el que pasamos "f", estamos comparando si "this" es menor que "f" por lo tanto debera devolver true si "a < f.a" vamos digo yo;M esto es aplicable a todos los operadores que has definido


La intención del método, es comparar si una fecha es menor que otra. Ahora me has hecho dudar, ya que lo miraba comparando 2 fechas de nacimiento ... el que tiene el año más grande, es en realidad el más joven, por esto que esté así. Si lo que se refiere simplemente es en saber que fecha va antes, o después, tengo que cambiar todos los true por false.
Esto lo tengo que preguntar al profe, a ver que me dice.



Lo de la utilizacion de STL... estamuy bien, es muy util sobre todo clases como string, array, vector, list, map,... y demas historias de uso comun. El uso de iteradores es muy sencillo, basicamente es como si tuvieras definida una variable solo para recorrer la lista y esta variable esta contenida en la clase que genera la plantilla como un dato miembro. Tu utilizas un bucle for para recorrer de principio a fin o de forma inversa la lista, existen en la plantilla declarados unos metodos y datos que permiten conocer cuando estamos en la posicion del principio o del final o cual es la posicion exacta en la lista (mira la ayuda de la template LIST para obtener los metodos miembro).


Me lo he estado mirando hoy y me parece que lo he pillado. He tenido un poco de lio usando el iterador (ya que es diferente un "iterator" que un "const_iterator"). Lo habia definido en la representación de la clase (al igual que la list), y he visto que estaba mal, el iterador se tiene que definir en los métodos.
De momento no he hecho juego de pruebas con la list, cuando pueda miraré a ver si lo he hecho bien (he visto que es sencillo de usar, pero seguro que la he cagado en algo).



PD: si tengo tiempo te cuelgo un ejemplo de utilizacion de LIST o MAP. En cualquier libro de C++ que se precie tendra al menos un par de capitulos dedicados a STL donde vendran ejemplos de tipo gestion de listas de alumnos o usuarios de video club... En cualquier caso, si has estudiado TDAs sabras de sobra como funcionan las listas y estas plantillas tienen las funciones habitulaes y alguna mas (no se porque me da que no sabes de lo que hablo, si fuera asi no habrias hecho la pregunta )


MAP no tengo ni idea de que es :). Sabes de algun buen libro de C++? Necesitaria alguno que hablara especialmente del tema memoria dinámica y estructuras de datos, que es lo más preferente.
TDA = Tipo abstracto de Datos, no?. El problema que me encuentro, es que nos hemos dedicado a hacer mucha algorítmica y lógica durante el curso; y a la hora de la verdad no sé usar plantillas ni cosas que te facilitan la vida al programador (de momento me la complican).



Bueno, otra vez gracias por las respuestas! Seguiré currando; cuando tenga más dudas y cosas petando demasiado, os vuelvo a poner un peacho post :). Si me salgo de esta, os lo tendré que premiar de algun modo (esta asignatura es el hueso de la carrera).

Saludos!

mortimor
06/05/2005, 10:04
Los MAP si no me equivoco euivalen a las tipicas TDA Correspondencia y hacen equivaler un valor de un tipo con otro.

Te recomiendo "C++,Como programar" es de Prentice Hall de Deitel y Deitel :D:D:D Yo pille este cuando empece con C++ y explica casi todo, por no decir todo, incluidas las STL :) Espero que te sirva de ayuda.

AOJ
31/05/2005, 20:58
Buenas a todos, aprobecho para hacer un reflote del post, ya que me quedan 10 dias antes de palmarla (entregar la práctica) xDDDDDD

Curiosamente, hay gente de mi clase que buscando por internet via Google, a ver si encontraban algo de la práctica ... han dado con el código que he puesto arriba! Si señores, no es seguro que ponga muchas cosas, para evitar copias jejeje :p. Saludos a la gente pringada que esta haciendo EDAL como yo! :rolleyes:


Hoy ha salido el juego de pruebas .. 4983 líneas de código para hacer que las clases implementadas peten por todos sitios ... y lo han conseguido! xD El código que he puesto en el primer post (que esta fataaaaaaaal), peta en la segunda línea de prueba, jajajaaaaaaaj (risa psicótica). Almenos los que se lo han copiado, estan igual que yo :).

Pos nada, si hay alguien que se aburre y no tiene nada que hacer, y sabe de C++ y memoria dinámica ..., pues si se ofreciera a darme una ayudita, seria de agradecer ^_^

De momento he trasladado mi residencia a la aula de PCs de la Universidad, estaré mañanas, tardes y fin de semana, allí pringando con los errores.

Saludos!

(me hacia ilu seguir este post :cool: )

Malenko
31/05/2005, 21:26
Podrías poner que hace la parte que hace que te pete la práctica? Si acaso ya miraremos de contestarte por MP ;)

AOJ
31/05/2005, 23:25
Los primeros fallos que he visto en esta clase, es que por ejemplo si entra una fecha como "32/03/2004", se la come y la da por buena; mientras no tendria que ser así. Esto tiene fácil arreglo, mañana lo voy a implementar ya que es una chorradita, jejeje.

Luego hay casos más chungos, tipo que entre una fecha (string) tipo "12/-12/208", "0//", "//////////", "/13/2004", y un laaargo etc .... En este aspecto, creo que tengo mal implementado las funciones del substring, dónde hago cosas como:



a = s.find("/");
if (((unsigned)a == string::npos) || (a < 1)) throw(21); //barra al inicio de la fecha, o no barra
b = s.find("/",a);
if ((unsigned)b == s.length()) throw(21); //barra al final de la fecha

string uno = s.substr(0,a-1);
string dos = s.substr(a+1, b-1);
string tres = s.substr(b+1,s.length());



Que me parece que no acaban de seccionar correctamente los 3 valores que forman una fecha.

Pero vamos, esta clase no me preocupa para nada, no va a ser chungo solucionarla. El problema va a venir cuando peten un par de estructuras guarras que tengo enlazadas con nodos de 4 punteros xDDDDD. Ahí si que me voy a cagar :miedo:

Cuando vaya un poco más apurado, te voy a pasar alguna clase y la documentación, a ver si le vees los problemos :brindis:


Ah otra cosa ... sabéis como hacer un makefile sencillito para compilar y linkar 5 archivos? Es que los tutoriales que he encontrado, son bastante complejos (demasiado scripting, no me aclaro).

Gracias! :saltando:

Malenko
31/05/2005, 23:38
Pon aquí los ficheros que quieres compilar y enlazar o dimelo por MP y ya te paso un makefile ;) Si tienes problemas con estructuras con punteros dime algo que eso me mola.

time2sail
01/06/2005, 00:01
¿No estudiarás en la UPC, verdad ? ...
Hace 1 año hice la práctica de EDA, 9 módulos, de un programa matemático por consola. (C++).
El bicho tenía tambien un diccionario donde guardar variables. Las variables podían ser literales o expresiones, a su vez las expresiones podían contener más variables, junto con operaciones matemáticas, desde logaritmos hasta derivación de polinomios.
Las variables tenían que ser actualizables, y todas las expresiones calculables. Tuvimos que programar que todas las funciones tuviesen un coste asimptótico como mucho logarítmico, y unas 120 reglas de simplificación de expresiones ( y en memoria dinámica para encontrar errores ahí uno puede llegar a morirse, como casi fué nuestro caso... el módulo expresión fueros más de 2000 lineas, si no recuerdo mal ...).

Si te interesa, te puedo enviar la práctica para que la veas, incluso puede que te inspire algo si no estás muy entrenado en c++.
Está implementado el diccionario con un árbol binario de búsqueda equilibrado.

Salud y suerte!!.

Malenko
01/06/2005, 00:14
Que suerte, yo que me tocó sufrir EDA en MODULA-2 ... :_(

time2sail
01/06/2005, 00:23
Que suerte, yo que me tocó sufrir EDA en MODULA-2 ... :_(

Tampoco me lo pasé "de muerte" con esta asignatura ... De echo, eran 9 créditos, pero sumando las horas de clase ya daban 11,5 (las clases teóricas) y encima con práctica y un examen final que valía el 70% de la nota.

Aprové siendo el 3º del ránking de eficiencia, pero con un 6,5 de nota. Y eso, mosquea un poco ...

Malenko
01/06/2005, 00:33
Me acuerdo que cuando yo la hice, era el primer o segundo cuatrimestre que no era obligatorio aprobar la práctica para aprobar la asignatura. Tuvieron que tomar esa medida ya que el elevado número de repetidores hacia que se colapsaran las clases y no hubiesen profesores suficientes. Lo que es una pasada es el tiempo que chupa la practica de EDA... :canon2:

time2sail
01/06/2005, 09:57
Me acuerdo que cuando yo la hice, era el primer o segundo cuatrimestre que no era obligatorio aprobar la práctica para aprobar la asignatura. Tuvieron que tomar esa medida ya que el elevado número de repetidores hacia que se colapsaran las clases y no hubiesen profesores suficientes. Lo que es una pasada es el tiempo que chupa la practica de EDA... :canon2:

Ciertamente. Antes tanto, y ahora tan poco ... (en el nuevo plan de estudios no si hace ni la mitad de la teoría de EDA, y las prácticas que se evalúan son como las introductorias de laboratorio que tuvimos que hacer al inicio ...)

AOJ
01/06/2005, 14:52
¿No estudiarás en la UPC, verdad ? ...
Hace 1 año hice la práctica de EDA, 9 módulos, de un programa matemático por consola. (C++).

Hmmm yo también hice esa practica >_<. Calculadora con notación polaca inversa? (algo así). Es que fue la de hace un año, jejeje. Aquella no la llegué a acabar ... entonces lo dejé 1 quatrimestre, y ahora vuelvo a atacar de nuevo; aunque esta vez parece ser más fácil (pero no sé si la voy a terminar :llorosa: ). Si me la puedes pasar, seguro que algo me puede ser util! :D. Vas a estudiar a Vilanova o Barcelona? :)

La línea que uso para linkar es:

g++ -o driver coleccion_fotos.o driver_imdaba.o fotografia.o query.o descriptores.o fecha.o -L ./lib/ -lps

Con esto ya puedes imaginar los cpp que tengo, jejeje.

Ahora empiezo a ver la gran utilidad de tener un makefile, porque llevo toda la mañana haciendo:

- Cambiar errores
- Compilar
- Linkar
- Ejecutar
- Ver el resultado en un archivo

- Cambiar errores
.....


Malenko, luego te mando algo por MP, que ahora me piro a comer :)

Malenko
01/06/2005, 18:08
Bueno, si quieres puedes enviarme un MP o si quieres te envio mi cuenta de hotmail y lo hablamos mejor,no? Ya me diras. Un saludo!

AOJ
09/06/2005, 00:14
Señoras y señores, me dispongo a anunciarles que ...


¡¡¡¡MI PRÁCTICA DE EDAL HA LLEGADO A SUPERAR EL JUEGO DE PRUEBAS PÚBLICO!!!!

:llorosa: :llorosr: :llorosa: :llorosr:

Estoy terriblemente emocionado, no me pensaba ni mucho menos que podria llegar a acabarla y tener oportunidad de presentarla ... y ayer noche, aproximadamente a la 1:30 de la madrugada en la sala de PCs I-102 de la Escola Politècnica Superior d'Enginyeria de Vilanova i la Geltrú ... hacia la última compilación y llegaba a pasar todo el juego de pruebas. Tremendo.

Después de dedicar 28 horas diarias exclusivamente programando durante las últimas 2 semanas, estar el Sábado pasado hasta las 5:30h en la sala de PCs, y Domingo hasta las 3:30h (entre muchos otros dias torturosos) ... llegar a hacer un diff y que llegue a la línea 5820, no tiene precio :)

Quiero dar las gracias a todas las personas que se han interesado de algún modo en mi problema, que se han dignado a postear y a darme alguna idea. En especial quiero dar gracias a Malenko, por enseñarme como hacer un makefile y darme algunos truquillos para poder tener un código fuente bastante "profesional", y a Wave ... que bueno no me ha podido ayudar mucho ya que también esta pringando con exámenes y tal, pero la intención es lo que cuenta :).


Ahhh ahora sólo falta documentar la cosa, y tengo hasta el viernes a las 12 del mediodía para acabar :D.

Saludos y gracias a todos! ^o^ :brindis:

(Tenía que manifestar mi alegria de algún modo, aunque ahora me toca aprobar el exámen xDDDD)

Malenko
09/06/2005, 00:28
No hay de que, no me costaba nada hecharte una mano y que menos podía hacer por un colega de foro y de carrera :musico:

Ya sabes, para lo que necesites aquí me tienes (o en el messenger :p). También grácias a ti por ofrecerte como betatester de mi futuro emulador de Spectrum.

Por cierto, ya me dirás que nota te ponen, y si quiere algún consejo más para el código ya sabes ;)

AOJ
30/06/2005, 01:00
Bueno gente, pues hoy ha salido la nota final de EDAL. Nervios, dolor de barriga, miles de "actualizar" a la web de las notas, histeria colectiva ... y finalmente ...


¡¡¡HE APROVADO EDAL!!!

Diox, aún no me lo creo, estoy hiper feliz ^o^!

La nota final de práctica no ha sido una maravilla, un 6'7 .. pero no esta nada mal. Solamente la han presentado 20 personas de 69 matriculados (29%), y la nota más alta ha sido un 8'7 (increíble nota por cierto). Se tiene que decir que nadie ha pasado completamente el juego de pruebas privado xD

Del exámen me ha quedado un 6'3, y finalmente la nota final ha sido de un 6'5 :musico:

Ha habido 18 aprobados, un 26% de la clase. Realmente este año ha ido muy bien la asignatura xDDDD (otros años era muy peor, hay gente repitiendo por octava vez y más >_<).


Pues muchas gracias a toda la gente que me ha ayudado en lo que sea, dando apoyo moral, consejos de programación, recomendaciones, etc ....en general: gracias a ésta, nuestra comunidad :brindis:

Ahora puedo considerar que ya he "aprovado la carrera" :llorosa:, he superado el hueso de la peor asignatura de todas. Ahora 1 cuatri, el proyecto ... y pa la calle yeeeeeeeeeeah! :abeber:

Saludos a todosssss!!! :_)

Malenko
30/06/2005, 09:16
ENHORABUENA!!!! :musico: