No consigo que esto funcione =(

bloodhound

Hola!
Mañana tengo un examen, y he decidido practicar un poquillo. La cosa es que esto de los punteros es un poco lioso, y no se donde he podido meter la pata. =S. Bueno, si, creo que es en la función llamada anadirRegistro. He hecho impresiones del vector en los sitios que creía que fallaban, y no pasaba nada. Menos en este último que he mencionado, que el compilador me dice que no existe alumno, o algo así.
Me podéis echar un ojo a esto?

Código después del Spoiler // Sorry pero la identación se va a la mierda e igual es molesto

spoiler
BLZKZ

ponlo con [ code][ /code] que sino salen emoticonos

bLaKnI

Uff que merder tienes aqui colega...

Usa malloc tanto para simple pointer como para matriciales.
Malloc inicial y luego bucle para malloc interno.

Si la funcion la declaras con ** en los parametros, pasa el argumento sin &.

Y bueno, tampoco me acuerdo mucho de C tendria que remirarlo. Pero tienes un buen cacao ahí.

bloodhound

#2 ya lo he puesto con la etiqueta code

No se donde esta el cacao, lo único que por la identación. Y lo del malloc es un módulo que hicimos en el grupo de prácticas, y no entiendo muy bien que es lo que hace ahí.

Buffoncete

/Estructuras que nos permiten añadir alumnos a distintos profesores./
struct _Alumno{
char nombreAlu[MAXNOM];
};

struct _Prof_alu{
char nombreProf[MAXNOM];
struct _Alumno alumno[MAXALU];
};

typedef struct _Prof_alu Profesores;


De la misma manera que has declarado la última tabla con un nombre (trabajas con ANSI C) debes declarar la primera, tienes dos opciones.

OPCION 1

struct _Alumno{
char nombreAlu[MAXNOM];
};
typedef struct _Alumno Alumno

OPCION 2

typedef struct {
char nombreAlu[MAXNOM];
}_Alumno;


Sobre la programación mejor no comento nada :P pero abusar de los allocs, reallocs etc es malo, aún más sin usar free antes.

bloodhound

La cosa es que se trata de un programa para gestionar la memoria de forma dinámica. Por lo tanto nuestro profesor nos manda usar mallocs, callocs, y reallocs. En cuanto a la declaración del tipo de dato Alumno, no la veo necesaria, ya que solo utilizo el tipo Profesores, aunque dentro este el tipo struct _Alumno.
Pero gracias por intentar ayudar ^^

Buffoncete

Se me ha borrado todo el post anterior, me desautentico mientras escribia ... y lo mismo he perdido 30 lineas de explicación de por qué está mal tu programa y errores muy graves que has cometido.

Así que te pongo tu programa corregido y si tienes dudas o quieres que te explique en que has fallado te lo explico:

spoiler

AVISO - No he solucionado tus errores de programación, sólo cambiado lo justo para que funcionara, que estoy en el curro y no puedo perder más de 2 minutos en esto. Si cuando llegue a casa a las 3 me acuerdo te pongo como lo habría hecho yo.

bloodhound

#7 Gracias. Y si me interesa conocer los errores que tengo programando, porque a pesar de lo que he estudiado, hoy he tenido el examen y suspenderé fijo. Así que me tengo que preparar para junio.

Buffoncete

Siento no haberte contestado pero no he tenido un fin de semana sencillo xD

--

Por qué os obliga a utilizar mallocs, callocs y reallocs ? tu curso es de telecomunicaciones y programarás chipsets ?

Para la programación en más alto nivel se utilizan listas e iteradores. Voy a cargar mi segundo vmware a ver si saco 10 minutos y te pongo como lo habría hecho yo.

NeB1

#9 a todos nos enseñan a trabajar primero con malloc realloc y toda la mierda de los punteros en C antes de pasar a estructuras de datos y a lenguajes de más alto nivel que faciliten todo este proceso.

Buffoncete

No es cierto.

Yo cuando empecé la facultad fui con un nivel avanzado de ANSI C (mientras hacía arquitectura xD) y me enseñaron Java en primero para utilizar directamente estructuras de datos.

a usar mallocs y gestión de memoria me enseñaron en sistemas operativos (en tercero), de esto te hablo hace 10 años o así.

Luego fui profesor de laboratorio de una asignatura de la facultad (Practicas de Programación) en la FIB-UPC, lo mismo alguien me conoce xD, y justo ese año cambiaron el uso de Java a C++ y en ningún momento enseñé a usar gestión dinámica de memoria, lo más que profundicé fue en el uso de referencias, y es la primera asignatura de programación que te encuentras cuando pasas la fase selectiva.

NeB1

#11 Vaya, igual a nosotros nos lo enseñaban (ahora que lo pienson) porque eramos de ingenieria técnica de sistemas, y se supone que tienes que aprender a programar autómatas y PICS.

Porque es verdad que los de gestión y de la superior, empezaban la asignatura de 'metodología y tecnologías de la programación' usando Python, y el último més, pasaban a C, sin embargo nosotros era al revés, todo el año dando C, y el último més dábamos python.

Elektr0_ddr

#12 enseñando python en ITIG y en la superior? No sabía yo eso, pensaba que en la superior se daba ADA al comienzo, y en ITIG yo empecé con C++.

NeB1

#13 en la Uji, en la promoción del 2004 (y que yo sepa se sigue haciendo) MyTP lo hacía así.

C++ lo dabamos en estructuras de datos

dr_Rouman

Aquí en Córdoba se lleva dando C en Informática de Sistemas toda la vida xD

Luego en EDI (que es MTP - II) se da C++

Para Sistemas Operativos: C + lpthread
Para Ampliación de Sistemas Operativos: C + pvm
Para Autómatas y lenguajes formales: C + flex y C + Bison (Lex y yacc)
Para Redes: sockets en C (aka muerte)
Para Ampliación de matemáticas (métodos numéricos): C a pelaco

Luego en Inteligencia Artificial se da CLIPS, un lenguaje de programación basado en reglas, y en las de arquitectura de computadores se da un poco de ensamblador para el 8086 Pero no en C ni nada, con un emulador y pista. Y luego el examen es en papel xDDD

O sea que a nosotros variedad de lenguajes (por defecto): 0. Hay optativas en las que puedes aprender otros (Prolog, Scheme, Mathematica), pero de los gordos?

Java? Una optativa (de 3º) tostón para aprender, y una de programación evolutiva en las que ya tienes que saber.
Python? Ni de cerca, yo estoy haciendo el proyecto en python y porque me interesé hace tiempo.

Otras optativas (gráficos por ordenador) usan C y OpenGL, o una para aprender Algoritmos Genéticos se hace en C

Sí, se supone que cuando ya sabes programar el lenguaje es cuestión de unos días, pero hay cosas de Java que no están en C++, o de Python. La POO es la POO, pero los mecanismos que tiene cada lenguaje son distintos.

De hecho a mi no me ha costado mucho trabajo pasarme a Python para hacer una cosa tocha, y cuando me he puesto a mirar Java no lo veo muy traumático, pero hubiera agradecido tal vez otro lenguaje así más mainstream.

Buffoncete

lo único que tiene Java que no tiene C++ es el JNative y el motivo es obvio.

en C tienes las librerías boost, que si por ejemplo te incomodan los sockets nativos en boost tienes implementaciones.

La única gracia de utilizar Java son los applets, hibernate, y estas funcionalidades para hacer servidores y servicios web, para el resto C++.

--

yo en IA también utilicé CLIPS y es divertido pero poco potente, implementé un A, IDA, minimax en Java y da miedo compararlo eficientemente con su versión en C++. Tuve que hacer una red neuronal para una asignatura de cuarto (Aprendizaje), la hice en C++ con OpenGL para mostrar los resultados de una forma bonita y en Java habría muerto la aplicación.

0buS

putos punteros.... son mi pesadilla xDDD

#18 bufff dudo mucho que les coja aprecio XDDD

Buffoncete

sisi, hasta que los uses a la perfección y no sepas vivir sin ellos :P

NeB1

#15 exactamente igual, en todo, a mi universidad.

#18 hay que tener ganas pues xD, si total la mayoría de los lenguajes modernos hacen la gestión de la memoría de forma nativa, y ni te enteras.

BLZKZ

#19 sí, pero realmente echas en falta algunas veces el controlar exactamente lo que haces con la gestion de memoria xD

Yo en febrero pensaba que odiaba los punteros, ahora sin embargo los uso perfectamente y no me imagino cómo hacer muchas cosas sin ellos xD

NeB1

#20 los punteros aún, pero lo de malloc, realloc y toda la pesca ya es pasarse. El puntero está guay para pasar una variable por referencia, o para crearte tus estructuras de datos (si no hay ya una hecha que se adapte a tus necesidades, lo cual tampoco es extremadamente habitual xD)

BLZKZ

#21 es que tads sin punteros seria un suicidio, además en aplicaciones medianas y grandes llenas la pila echando leches

Usuarios habituales

  • BLZKZ
  • NeB1
  • Buffoncete
  • 0buS
  • dr_Rouman
  • Elektr0_ddr
  • bloodhound