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

Duda con estructuras en C

Estas en el tema de Duda con estructuras en C en el foro de C/C++ en Foros del Web. Hola, estoy haciendo este ejercicio: Se define una lista de enteros de longitud máxima 20 implementada como un registro con un campo contenido que es ...
  #1 (permalink)  
Antiguo 29/05/2009, 12:37
 
Fecha de Ingreso: noviembre-2006
Mensajes: 2
Antigüedad: 17 años, 5 meses
Puntos: 0
Duda con estructuras en C

Hola, estoy haciendo este ejercicio:

Se define una lista de enteros de longitud máxima 20 implementada como un
registro con un campo contenido que es un array de 20 posiciones y el campo
longitud que representa el numero de posiciones del array ocupadas. Con esta
nueva representación, es posible manipular listas que estén sólo parcialmente
llenas y, por tanto, insertar en ella nuevos elementos o eliminar elementos ya
existentes. Con la definición anterior y considerando que los elementos de la
lista están ordenados en orden NO DECRECIENTE, implementar las funciones
siguientes:
· El subproblema inicializar que inicialice a vacía la lista argumento.
· El subproblema vacia que devuelva TRUE en caso de que la lista lo esté y
FALSE en caso contrario.
· El subproblema llena que devuelva TRUE si existen max_elementos válidos
dentro de la lista y FALSE en caso contrario.
· El subproblema mostrar que muestre el contenido de la lista.
· El subproblema buscar que busque un elemento en la lista y devuelva si el
elemento está en la lista y si está, la posición en la que dicho elemento aparece
por primera vez. Contemplar el caso en el que todos los elementos son
distintos.
· El subproblema insertar que introduce un elemento en la lista en la posición
adecuada (si ello fuera posible).
· El subproblema eliminar que elimina la primera ocurrencia de un elemento en
la lista si dicho elemento existe (si ello fuera posible).


Y tengo hecho esto del código:

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


const int max_elementos = 20;

typedef struct
{
int numeros[20];
int longitud;
}lista_enteros;

lista_enteros l;

typedef enum {false=0, true=1} bool;

void inicializar(lista_enteros l);
bool leerDatos(lista_enteros l);
bool listaVacia(lista_enteros l);
bool listaLlena(lista_enteros l);

int main()
{
inicializar(l);
printf("%d\n", l.longitud);
leerDatos(l);
printf("%d\n", l.longitud);
if(listaVacia(l))
printf("La lista esta vacia\n");
if(listaLlena(l))
printf("La lista esta llena\n");

system("pause");
return 0;
}

void inicializar(lista_enteros l)
{
l.longitud = 0;
printf("%d\n", l.longitud);
}

bool leerDatos(lista_enteros l)
{
int i;
bool longok = true;
printf("Introduzca la longitud de la lista: ");
scanf("%d", &l.longitud);
if(l.longitud > max_elementos)
{
printf("\nEl numero maximo de elementos permitidos es %d\n", max_elementos);
printf("\n");
longok = false;
}
else
{
for(i=0; i<l.longitud; i++)
{
printf("Introduzca el numero %d: ", i+1);
scanf("%d", &l.numeros[i]);
}
}
printf("%d\n", l.longitud);
return longok;
}

bool listaVacia(lista_enteros l)
{
bool vacia = false;
if(l.longitud == 0);
vacia = true;

return vacia;
}

bool listaLlena(lista_enteros l)
{
bool llena = false;
if(l.longitud == max_elementos)
llena = true;
return llena;
}

El problema es que cuando cambio la longitud en inicializar (por ejemplo) me la cambia solo en la función, como puedo hacer se quede cambiada para el resto del programa??

Muchas gracias

Última edición por ikune; 29/05/2009 a las 13:09
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




La zona horaria es GMT -6. Ahora son las 09:49.