feed://
Anotaciones
Comentarios

Odio los exámenes

Pero los odio más que nada por el nerviosismo estúpido con que los realizo. Hoy he hecho uno de prácticas de programación. Y entre que he llegado cinco minutos tarde y no he podido escuchar la explicación completa del profesor sobre el examen y que estaba como un flan, no he conseguido realizar por completo las cosas que pedía el examen.

Cuando el profesor me ha dado el examen, me pongo a leerlo detenidamente: « Realizar un programa que lea la información
contenida en el fichero de texto “aforado.txt” que contiene el código de las carreteras de una ciudad, una fecha y el número de coches que pasaron en dicha fecha por esa carretera. La forma que tiene ese archivo es

Codigo_de_la_Via(alfanumerico);    fecha_circulacion(entero);    numero_vehiculos(real);

- El programa debe pedir un código de vía y sacar todas las líneas de información contenidas en el fichero dado correspondiente a ese código
- Calcular la media de vehículos totales entre toda la información sacada
»

Algo así decía (ni me acuerdo ya). Es decir, que tu tenías un archivo llamado aforado.txt y en él habían 37 líneas de este tipo:

$ cat
aforado.txt

   13061   22/04/2003:10:00    206
   2220    22/04/2003:10:00    555
   6000    22/04/2003:10:00    686
   6001    22/04/2003:10:00    514
   9010    22/04/2003:10:00    891
   9011    22/04/2003:10:00    411
   13061   22/04/2003:11:00    206
   2220    22/04/2003:11:00    444
   6000    22/04/2003:11:00    686
   6001    22/04/2003:11:00    514
   9010    22/04/2003:11:00    891
   9011    22/04/2003:11:00    411
   13061   22/04/2003:12:00    549
   2220    22/04/2003:12:00    345
   6000    22/04/2003:12:00    720
   6001    22/04/2003:12:00    686

   [ ... ]

Y tú tienes que inicialmente pedir un código (primer campo de los tres que contiene cada línea de información del archivo dado), lees el archivo y vas comparando el código introducido por el usuario con los existentes, “guardándote” los que coincidan e imprimiendo por pantalla los dos campos siguientes. Y después queda sacar la media de la suma de los números que hay en el tercer campo (media aritmética) y ya está. Osea, un ejemplo de ejecución sería:

$ ./examen
INTRODUZCA CODIGO DE LA VIA: 6000
22/04/2003:10:00 -- 686
22/04/2003:11:00 -- 686
22/04/2003:12:00 -- 720
22/04/2003:13:00 -- 686
22/04/2003:14:00 -- 617
22/04/2003:15:00 -- 206
LA MEDIA DE LOS VEHICULOS TOTALES ES:
600.167

Pues bien, yo en el examen he hecho la primera parte y me ha faltado realizar eso que dice en la última línea anterior (la media) Y todo porque he empleado tres variables (una para cada campo) y todas de tipo string –ahí el error– Debería haber definido la tercera variable de tipo entero para poder ir sumando esos números del tercer campo en una variable auxiliar y con otra de tipo entero (un contador) contar los números totales y hacer finalmente una estúpida división! aaarrrjjj! Pero me he puesto nervioso, y en vez de ver el error en la tercera variable me he dicho: “Pues ahora voy a convertir la variable “campo3″ de tipo string a tipo int” y bueno… me ha dado por usar sprintf(); –no me preguntéis para qué… se me fue completamente la cabeza en ese momento. Porque podría haber intentado hacer casting, osea: (int)campo3 y ya esta :\– Pppffff… me odio. Si ya no tengo bastante con ser un patoso con la programación pues…. encima me pongo como un flan con estas cosas (tenía 20 minutos para hacerlo –entre que he llegado tarde y que ha
tardado en darme el examen… de 30 minutos que tenía, se habrán quedado en 20 :\­–)

En fin… aquí os deleito con el código que he hecho en el examen. Y bueno, también he terminado ahora el ejercicio añadiendo el par de líneas que me han faltado :(

#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
void Codigo_de_la_Via(string cod) {
    fstream fic;
    string code, campo2; // aqui puse campo3, como tipo string, :(
    int i=0, vehiculos=0, campo3;
 
 
    fic.open("aforado.txt" , ios::in); // apertura de fichero en modo lectura
    if (!fic)                          // comprobacion de apertura correcta
      cout << "ERROR. APERTURA\n";
    else {
      fic >> code;
 
      while (!fic.eof()) {
          if (code == cod) {
            fic >> campo2 >> campo3;
            cout << campo2 << " -- " << campo3 << endl;
 
            i++;
            vehiculos += campo3;     // voy sacando el total de coches
          }
 
          fic >> code;
      }
 
      fic.close();
    }
 
    // Asi de tonto se calcularia la media. ARJ! :
    cout<<"LA MEDIA DE LOS VEHICULOS TOTALES ES:"<<(float)vehiculos/i<<endl;
}
 
int main() {
  string codigo;
 
  cout << "INTRODUZCA CODIGO DE LA VIA: ";
  cin>>codigo;
 
  Codigo_de_la_Via(codigo);
}

En fin… ¡¡qué vaya peste de exámenes!!

[ Actualización 21/05/2003 @ 1:27 AM ] , me acabo de dar cuenta de que aun quedan muchos grupos de prácticas por realizar este examen. Muchos de mis compañeros de clase conocen esta página; varios (casi todos) son los que aun no han hecho el examen… Ehhhmmm…. hace cinco minutos que he estado a punto de quitar el código del ejercicio y reponerlo la semana que viene, que ya estará hecho el examen en todos los grupos. Uhhhmmm… he decidido no quitarlo de la página: primero porque han pasado ya unas horas y en los logs de mi servidor web he visto varios accesos de distintas IPs, con lo que tal vez algún compañero mío ya vio el código y lo tenga en su poder y con intenciones de distribuirlo … y segundo (la razón más importante. Porque la primera es una gilipollez paranoica mía) porque quiero hacer un experimento sociológico digamos…

Para quien se sienta tentado a copiar el código con la esperanza de que le toque el mismo ejercicio que a mí… recordarle que el DLSI controla mucho el tema de copias así que solo pido una cosa: ser responsables con lo que hagáis y pensar un poco las cosas antes de hacer alguna tontería pues, si llegase a ocurrir algo malo, no os jodéis a vosotros mismos… me joderéis a mí también. Y eso quizás os sople la polla un rato pero a mí no :\ Hacer lo que queráis con el código, como si lo imprimís y os limpiáis el culo con él :D, pero hagáis lo que hagáis: usar la cabeza y pesar por un momento que leches estáis haciendo.

… Recemos porque dentro de unos días no tenga que lamentar esta decisión de dejar aquí el código al aire libre. Por supuesto lo hago asumiendo las posibles consecuencias. Y la culpa, si pasa algo, sería mía: por ser tan inocente gilipollas de dejar libre este insinuante caramelo con la esperanza de que la gente no se lo copie como si nada.

( recemos… Padre nuestro que estás en los cielos. Santificado sea tú… )

Hay 2 comentarios

  1. on 21 May 2003 at 19:23 frank

    jeje, ya veo que te pego duro lo de los examenes

  2. on 21 May 2003 at 21:30 ebarbeito

    Si, estoy algo obsesionado… no creo que sea bueno eso! pero bueno… es algo que no puedo evitar jeje

    Saludos!

Trackback URI |