UTNianos

Versión completa: Consulta Final Julio 2012
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola gente, estoy resolviendo el final de julio del 2012
es este https://drive.google.com/file/d/0BztSCom...sp=sharing
Tengo un par de dudas :
Parte Teorica
1. ¿De donde puedo sacar un apunte sobre los 3 (?) tipos de librerias ( compartidas,dinamicas y estaticas ) ? Noo tengo nada en mi cuaderno ( esto lo pregunto porque al menos en este final aparece una pregunta teorica sobre ese tema en la pregunta 1 )
2. la pregunte numero 3 , utiliza la funcion gets , la cual tengo entendido que esta obsoleta, es mas si la utilizas , te tira un warning de que esta desaprobado su uso .. en que queda esta pregunta entonces ?
3. La pregunta 5 , pregunta donde se guarda el valor que devuelve una funcion... se guarda en el stack ?? nose la verdad..
4. ¿Como es el tema de los pesos en bytes de las estructuras ? Por lo que estuve tanteando , es muy raro , los pesos de las variables dependen de si estan solas en la estructura o porque tipo de variables estan acompañadas en la estructura , ya sea int/char o punteros... , alguien sabe bien bien como es esto? ya que en el punto 6 lo preguntan
5.Por ultimo, ¿Cual es la diferencia entre '/0' '0' y 0 , 0 asi solo es el cero propio en valor decimal , entre comillas simples tomas el valor ASCII , cierto? , y para '/0' nose lo que es... ???
Parte Practica https://drive.google.com/file/d/0BztSCom...sp=sharing
Son 3 puntos, subo como aporte el punto 1
1)



#include <stdio.h>
#include <stdlib.h>

#define M 4

typedef struct pack{
char id[M];
float alto,ancho,largo,peso;
}pack_t;

typedef struct camion{
float largo,ancho,alto,peso_permitido;
int cantidad_packs;
pack_t *packs;
}camion_t;

// PUNTO 1
int leerCamion(camion_t *pcamion,FILE *fc)
{
fc=fopen(path,"b+r");
int contador = 0;

while(fseek(fc,-sizeof(camion_t),SEEK_CUR) == 0)
{
contador++;
}
fseek(fc,sizeof(camion_t)*contador,SEEK_CUR);

return contador;
}


El punto 2 , Las rutinas de insertar al inicio,al final , las tengo claras y para doblemente enlazadas ( que no cambia mucho) tambien las se , pero aca con esta funcion ordenar(,) que dan en el enunciado me marea porque nose si tengo que hacer una funcion insertar y adentro integrarle ordenar o que ?
A todo esto, me quedo medio volado el tema de ordenamiento de listas, alguno tiene una rutina copada ? para ordenar ya sea numericamente o alfabeticamentee..?

Bueno eso es todo..
Desde ya les agradezco a cualquiera que se tome unos minutos para darme una mano.

Saludos!
Te dejo de donde saqué toda la teoría para el final.. Son los pdf de furfaro
(23-01-2014 16:37)Feer escribió: [ -> ]Te dejo de donde saqué toda la teoría para el final.. Son los pdf de furfaro

gracias fer, de ahi saco lo de librerias =)
Yo estoy estudiando de los pdf que te dejo Feer y también de este resumen que subieron.

Un abrazo!
Subo como aporte la Parte Practica Resuelta por mi



#include <stdio.h>
#include <stdlib.h>

#define path "~/Informatica1/finales/blabla.dat"
#define M 4

typedef struct pack{
char id[M];
float alto,ancho,largo,peso;
}pack_t;

typedef struct camion{
float largo,ancho,alto,peso_permitido;
int cantidad_packs;
pack_t *packs;
}camion_t;

[b]// PUNTO 1[/b]
int leerCamion(camion_t *pcamion,FILE *fc)
{
fc=fopen(path,"b+r");
int contador = 0;

while(fseek(fc,-sizeof(camion_t),SEEK_CUR) == 0)
{
contador++;
}
fseek(fc,sizeof(camion_t)*contador,SEEK_CUR);

return contador;
}

[b]// PUNTO 2 y 3[/b]

typedef struct camion_n{
camion_t dato;
long volumen_libre;
struct camion_n *next;
}camion_n;

// long volumen_ocupado(pack_t * lpacks)
camion_n * ordenar(camion_n *pcamion,camion_n *pri_camion)
{
camion_n *aux;
camion_n *aux2;

pcamion->volumen_libre = (long)( camion_n->dato.ancho * camion_n->dato.alto * camion_n->dato.largo) - volumen_ocupado(pcamion->dato.packs);

if(pri_camion == NULL) // lista vacia
{
pri_camion=pcamion;
pcamion->next =NULL;

}
else
{
if( pri_camion->volumen_libre < pcamion->volumen_libre) // primer nodo
{
pcamion->next=pri_camion; //el nuevo nodo apunte al primer nodo
pri_camion=pcamion; // el header ahora apunte al nuevo nodo , convirtiendose asi en el nuevo primer nodo

}
else
{
aux=pri_camion->next;
aux2=pri_camion;
while(aux->volumen_libre > pcamion->volumen_libre && aux->next != NULL )
{
aux=aux->next;
aux2=aux2->next;
}
if(aux->volumen_libre < pcamion->volumen_libre)
{
pcamion->next=aux;
aux2->next=pcamion;
}
else // llegue al final de la lista
{
aux->next = pcamion;
pcamion->next = NULL;
}
}
}
return pri_camion;
}



URLs de referencia