Está en la página 1de 20

ARREGLOS DE ESTRUCTURAS

ENUNCIADO
1. Realizar un programa con un men de opciones para hacer altas, bajas y
modificaciones (ABM) de una agenda.
CODIFICACION

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define TAM 10

struct datos
{
char nombre[40];
char tel[20];
};

void main()
{
struct datos agenda[TAM];
int i,j,k,flag,ant=0,flagb = 0;
char op,auxs[60],seguir = 'n',auxsb[50];

do
{
clrscr();
printf("1<--- INGRESAR DATOS\n");
printf("2<--- MODIFICAR DATOS\n");
printf("3<--- ELIMINAR DATOS\n");
printf("4<--- MOSTRAR DATOS\n");
printf("0<--- SALIR\n");
printf("\nINGRESE OPCION:");

op = getche();

switch(op)
{
case '1':
flagb = 1;
clrscr();
printf("INGRESE NOMBRE:");
fflush(stdin);
gets(auxs);
printf("INGRESE TEL:");
fflush(stdin);
gets(auxsb);
flag = 0;
for(i=ant;i<TAM;)
{
if(ant!= TAM)
{
flag = 1;
strcpy(agenda[i].nombre,auxs);
strcpy(agenda[i].tel,auxsb);
ant = i+1;
break;
}
}
if(flag==0)
{
printf("\nNO HAY MAS CAPACIDAD PARA
GUARDAR DATOS");
getch();

}
break;

case '2':
if(flagb == 0)
{
printf(" <--- NO INGRESO DATOS");
getch();
}
else
{
clrscr();
printf("1 INGRESE NOMBRE Y 2
TELEFONO\n\n");
printf(":");
fflush(stdin);
gets(auxs);
printf(":");
fflush(stdin);
gets(auxsb);
flag = 0;
for(i=0;i<ant;i++)
if(strcmp(auxs,agenda[i].nombre)==0 &&
strcmp(auxsb,agenda[i].tel)==0)
{
flag = 1;
printf("INGRESE NUEVO
NOMBRE:");
fflush(stdin);
gets(agenda[i].nombre);
printf("INGRESE NUEVO
TELEFONO:");
fflush(stdin);
gets(agenda[i].tel);
break;
}
if(flag == 0)

{
printf("\nNO SE ENCONTRO DATO");
getch();
}
}
break;
case '3':
if(flagb == 0)
{
printf(" <--- NO INGRESO DATOS");
getch();
}
else
{
clrscr();
printf("1 INGRESE NOMBRE Y 2 TEL DE LOS
DATOS A BORRAR\n\n");
printf(":");
fflush(stdin);
gets(auxs);
printf(":");
fflush(stdin);
gets(auxsb);
flag = 0;
for(i=0;i<ant;i++)
if(strcmp(auxs,agenda[i].nombre)==0 &&
strcmp(auxsb,agenda[i].tel)==0)
{
flag = 1;
for(j=i;j<ant-1;j++)
for(k=j+1;k<ant;k++)
{

strcpy(agenda[j].nombre,agenda[k].nombre);
strcpy(agenda[j].tel,agenda[k].tel);
break;
}
ant = ant - 1;
break;
}
if(flag==0)
{
printf("\nNO SE ENCONTRO DATO");
getch();
}
}
break;
case '4':
if(flagb==0)
{
printf(" <--- NO INGRESO DATOS");
}
else
{
printf("\n");
for(i=0;i<ant;i++)
printf("\nNOMBRE %s TELEFONO
%s",agenda[i].nombre,agenda[i].tel);
}
getch();
break;
case '0':
printf(" <--- SALIR s/n ?");
seguir = getch();

// VALIDAR
break;
default:
printf(" <--- OPCION INCORRECTA");
getch();
}
}while(seguir == 'n');
}
COMPILACION Y DEPURACION

EJECUCION

ENUNCIADO
2. Realizar una agenda para guardar los datos de hasta 200 personas de las cuales
se toman los siguientesdatos:
Nombre
Apellido
Direccin
Localidad
Cdigo Postal
Fecha de nacimiento ( Da, Mes y Ao)
Utilizar estructuras anidadas.
Se pide que una vez cargados los datos, se disponga de un men de opciones que
me permita hacer las siguientes consultas:
1- Consulta por apellido
2- Consulta por localidad
3- Consulta por Ao de nacimiento
4- Consulta por cumpleaos
CODIFICACION
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define TAM 2

struct fecha
{
int dia,mes,anio;
};

struct datos
{
struct fecha fechanac;
char nombre[40],apellido[40];
char direccion[100],localidad[100];
int codigo;
};
void main()
{
struct datos agenda[TAM];

int i,flag,auxi,auxib;
char op,seguir='n',auxs[100];

// CARGA DE LOS DATOS


for(i=0;i<TAM;i++)
{
clrscr();
printf("NOMBRE:");fflush(stdin);gets(agenda[i].nombre);
printf("APELLIDO:");fflush(stdin);gets(agenda[i].apellido);
printf("DIRECCION:");fflush(stdin);gets(agenda[i].direccion);
printf("LOCALIDAD:");fflush(stdin);gets(agenda[i].localidad);
printf("COD POSTAL:");scanf("%d",&agenda[i].codigo);
printf("FECHA NACIMIENTO...");
printf("\n\tDIA xx/:");scanf("%d",&agenda[i].fechanac.dia);
printf("\tMES xx/:");scanf("%d",&agenda[i].fechanac.mes);
printf("\tAO xxxx:");scanf("%d",&agenda[i].fechanac.anio);
// VALIDAR TODOS LOS DATOS
}
do
{
clrscr();
printf("1<--- CONSULTA POR APELLIDO\n");
printf("2<--- CONSULTA POR LOCALIDAD\n");
printf("3<--- CONSULTA POR AO DE NACIMIENTO\n");
printf("4<--- CONSULTA POR CUMPLEAOS\n");
printf("0<--- SALIR");
printf("\nINGRESAR OPCION:");
op = getche();

switch(op)
{
case '1':

clrscr();
printf("INGRESE APELLIDO A BUSCAR:");
fflush(stdin);
gets(auxs);
flag = 0;
for(i=0;i<TAM;i++)
if(strcmp(auxs,agenda[i].apellido)==0)
{
printf("\n\nNOMBRE:
%s",agenda[i].nombre);
printf("\nAPELLIDO:
%s",agenda[i].apellido);
printf("\nDIRECCION:
%s",agenda[i].direccion);
printf("\nLOCALIDAD:
%s",agenda[i].localidad);
printf("\nCODIGO POSTAL:
%d",agenda[i].codigo);
printf("\nFECHA NACIMIENTO:
%d/%d/%d",agenda[i].fechanac.dia,agenda[i].fechanac.mes,agenda[i].fechanac.anio);
flag = 1;
}

if(flag == 0)
printf("\nNO SE ENCONTRO DATO");

getch();
break;
case '2':
clrscr();
printf("INGRESE LOCALIDAD A BUSCAR:");
fflush(stdin);
gets(auxs);
flag = 0;

for(i=0;i<TAM;i++)
if(strcmp(auxs,agenda[i].localidad)==0)
{
printf("\n\nNOMBRE:
%s",agenda[i].nombre);
printf("\nAPELLIDO:
%s",agenda[i].apellido);
printf("\nDIRECCION:
%s",agenda[i].direccion);
printf("\nLOCALIDAD:
%s",agenda[i].localidad);
printf("\nCODIGO POSTAL:
%d",agenda[i].codigo);
printf("\nFECHA NACIMIENTO:
%d/%d/%d",agenda[i].fechanac.dia,agenda[i].fechanac.mes,agenda[i].fechanac.anio);
flag = 1;
}

if(flag == 0)
printf("\nNO SE ENCONTRO DATO");

getch();
break;
case '3':
clrscr();
printf("INGRESE AO NACIMIENTO A BUSCAR /xxxx:");
scanf("%d",&auxi);
flag = 0;
for(i=0;i<TAM;i++)
if(auxi == agenda[i].fechanac.anio)
{
printf("\n\nNOMBRE:
%s",agenda[i].nombre);
printf("\nAPELLIDO:
%s",agenda[i].apellido);

printf("\nDIRECCION:
%s",agenda[i].direccion);
printf("\nLOCALIDAD:
%s",agenda[i].localidad);
printf("\nCODIGO POSTAL:
%d",agenda[i].codigo);
printf("\nFECHA NACIMIENTO:
%d/%d/%d",agenda[i].fechanac.dia,agenda[i].fechanac.mes,agenda[i].fechanac.anio);
flag = 1;
}

if(flag == 0)
printf("\nNO SE ENCONTRO DATO");

getch();
break;
case '4':
clrscr();
printf("INGRESE FECHA DE CUMPLEAOS");
printf("\nDIA xx/:");scanf("%d",&auxi);
printf("MES xx/:");scanf("%d",&auxib);
flag = 0;
for(i=0;i<TAM;i++)
if(auxi == agenda[i].fechanac.dia && auxib ==
agenda[i].fechanac.mes)
{
printf("\n\nNOMBRE:
%s",agenda[i].nombre);
printf("\nAPELLIDO:
%s",agenda[i].apellido);
printf("\nDIRECCION:
%s",agenda[i].direccion);
printf("\nLOCALIDAD:
%s",agenda[i].localidad);
printf("\nCODIGO POSTAL:
%d",agenda[i].codigo);

printf("\nFECHA NACIMIENTO:
%d/%d/%d",agenda[i].fechanac.dia,agenda[i].fechanac.mes,agenda[i].fechanac.anio);
flag = 1;
}

if(flag == 0)
printf("\nNO SE ENCONTRO DATO");

getch();
break;
case '0':
printf(" <--- SALIR s/n ?");
seguir = getch();
// VALIDAR
break;
default:
printf(" <--- OPCION INCORRECTA");
getch();
}
}while(seguir== 'n');
}
COMPILACION Y DEPURACION

EJECUCION

ENUNCIADO
3. Se ingresa el apellido, la nota y el legajo de los 3 alumnos de un curso. Realizar un
programa que me permita modificar los datos ingresados hasta que el usuario lo
determine. Para ello se ingresa el legajo y la nota a modificar. Si no encuentra el
legajo se deber mostrar un mensaje de error.
CODIFICACION
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define TAM 3
struct alumno
{
char apellido[20];
float nota,legajo;
};
void main()
{
struct alumno curso[TAM];
int i,j,flag;
char mod;
float leg;
for(i=0;i<TAM;i++)//INGRESO DE DATOS
{
clrscr();
printf("\nNOTAS\n*****\n\n");
printf("APELLIDO:");
fflush(stdin);

gets(curso[i].apellido);
printf("NOTA:");
scanf(" %f",&curso[i].nota);
printf("LEGAJO:");
scanf(" %f",&curso[i].legajo);
}
do
{

clrscr();
printf("\nNOTAS\n*****\n");
printf("\nDESEA MODIFICAR ALGUNA NOTA s/n ?
\n\nINGRESE OPCION: ");
mod = getche();
if(mod!='s'&&mod!='n')
printf(" <--- ERROR");getch();
if(mod == 's')
{
printf("\nINGRESE LEGAJO:");scanf("%f",&leg);
for(i=0;i<TAM;i++)
{
flag = 0;
if(curso[i].legajo == leg)
{
printf("\nANTERIOR NOTA: %.2f",curso[i].nota);
printf("\nINGRESE NUEVA NOTA:");
scanf("%f",&curso[i].nota);
flag = 1;
break;
}
}
if(flag == 0)
{
printf("\nEL LEGAJO %.f, NO SE
ENCUENTRA",leg);
getch();
}
}
}while(mod != 'n');
}

COMPILACION Y DEPURACION

EJECUCION

ENUNCIADO
4. Crear una estructura llamada "jugador", que almacene la siguiente informacin
sobre jugadores de ftbol:
nombre del jugador
nombre del equipo
cantidad de partidos jugados
cantidad de goles convertidos
promedio de goles por partido
Utilizando la estructura, declarar un array de 100 elementos de estructuras de
ese tipo.
Escribir un programa que cargue los datos del array. Se ingresan: nombre del
jugador, nombre del equipo, cantidad de partidos jugados y cantidad de goles
convertidos. Por cada jugador se calcula el promedio de
goles por partido y se almacena en el miembro la informacin contenida en el
array (nombre del jugador, nombre del equipo, cantidad de partidos jugados,
cantidad de goles convertidos y promedio de goles por partido.
CODIFICACION
#include <stdio.h>
#include <conio.h>
#define TAM 3

struct persona

{
char nombre[50];
char equipo[100];
int partidos;
int goles;
float promedio;
};

void main()
{
struct persona jugadores[TAM];
int i;
float auxf;

for(i=0;i<TAM;i++)
{
clrscr();
printf("FICHA DE JUGADOR\n\n");
printf("NOMBRE:");fflush(stdin);gets(jugadores[i].nombre);
printf("EQUIPO:");fflush(stdin);gets(jugadores[i].equipo);
printf("PARTIDOS:");scanf("%d",&jugadores[i].partidos);
printf("GOLES:");scanf("%d",&jugadores[i].goles);
jugadores[i].promedio =(float) jugadores[i].goles / jugadores[i].partidos;
// VALIDAR LA INFORMACION INGRESADA
}

for(i=0;i<TAM;i++)
printf("\nNOMBRE %s EQUIPO %s PARTIDOS %d GOLES %d
PROMEDIO DE GOLES %.2f POR
PARTIDO",jugadores[i].nombre,jugadores[i].equipo,jugadores[i].partidos,jugadores[
i].goles,jugadores[i].promedio);

getch();

}
COMPILACION Y DEPURACION

EJECUCION

ENUNCIADO
5. Para un censo se debe tomar la edad, el nombre, la direccin y telfono de 3
personas. Realizar el programa que permita cargar los datos, mostrarlos
ordenados alfabticamente por apellido.
CODIFICACION
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define TAM 3
struct registros
{
int edad;
char nombre[40],direccion[100],tel[15];
};
void main()
{
struct registros personas[TAM],auxst;
int i,j;

for(i=0;i<TAM;i++)
{
clrscr();
printf("INGRESE NOMBRE:");
fflush(stdin);
gets(personas[i].nombre);
// VALIDAR QUE NO SUPERE LOS 40 CARACTERES
printf("INGRESE EDAD:");
scanf("%d",&personas[i].edad);
// VALIDAR QUE NO SEA MENOR DE 0
printf("INGRESE DIRECCION:");
fflush(stdin);
gets(personas[i].direccion);
// VALIDAR QUE NO SUPERE LOS 100 CARACTERES

printf("INGRESE TEL:");
fflush(stdin);
gets(personas[i].tel);
// VALIDAR
}
// ORDENO ALFABETICAMENTE POR APELLIDO
for(i=0;i<TAM-1;i++)
for(j=i+1;j<TAM;j++)
if(strcmp(personas[i].nombre,personas[j].nombre)>0)
{
auxst = personas[i];
personas[i] = personas[j];
personas[j] = auxst;
}
for(i=0;i<TAM;i++)
printf("\nNOMBRE %s EDAD %d DIRECCION %s TEL
%s",personas[i].nombre,personas[i].edad,personas[i].direccion,personas[i].tel);

getch();
}
COMPILACION Y DEPURACION

EJECUCION

También podría gustarte