Está en la página 1de 7

Ing.

Ricardo Castañeda

UNIVERSIDAD NACIONAL DE INGENIERÍA


FACULTAD DE INGENIERÍA MECÁNICA

PROFESOR : RICARDO CASTAÑEDA DE LA ROSA

2011
-1-
REGISTROS EN LENGUAJE “C”
7.4 Definición.- Un registro o una estructura en lenguaje “C” es una colección de
variables simples que pueden contener diferentes tipos de datos. Es un tipo de dato
definido por el usuario. El proceso de crear una estructura o registro tiene dos
etapas.
 Crear un modelo de estructura
Ing. Ricardo Castañeda

 Crear una variable estructura


Ejemplo:
struct ciudadano
{ long dni; // dato miembro dni
char nombre[40];// dato miembro nombre
char direccion[50]; // dato miembro dirección
}
7.4.1 Definición de una variable estructura.- Las variables persona1 y persona2 se
definen como cualquier otra variable, en este caso del tipo de nombre de la
estructura.
ciudadano persona1, persona2; // se declaran dos variables tipo registro
7.4.2 Acceso a miembros del registro.- Se realiza utilizando el nombre del registro
seguido del nombre del campo con un punto intermedio.
persona1.dni = 08234101;
persona2.dni = 91012345;
strcpy( persona1.nombre, “ Luis Rojas”);
7.4.3 Inicialización de estructuras.- Los campos de un registro se pueden iniciar
individualmente o todos a la vez :
Ejemplo:
Struct caja
{ int largo;
int ancho;
int altura;
};
caja c1 = { 4,5,2}
caja c2,c3;
c2.largo = 3;
c3.anch0 = 1;
-2-

7.4.4 Asignación de estructuras.- Podemos intercambiar información entre dos


estructuras directamente de registro a registro.
Ejemplo: De los casos anteriores es valido decir:
persona2 = persona1;
c1 = c3;
Ing. Ricardo Castañeda

Los contenidos de los correspondientes campos de persona1 se copiaran en


persona2, los de c3 en c1.

7.4.5 Estructuras anidadas.- Se pueden anidar estructuras dentro de otras


estructuras.
Ejemplo:
struct fecha
{ int dia;
int mes;
int año;
}
struct empleado
{ fecha dia_ingreso;
char nombre[50];
}
EJEMPLO DE APLICACION
Vamos a desarrollar un programa que maneje todos los productos que una tienda de
abarrotes vende, siendo nuestro objetivo principal el automatizar el proceso de una tienda
de abarrotes que nos permitirá realizar las siguientes operaciones de manera eficiente:
 Tener un listado actualizado del stock en todo momento
 Elaborar una lista de pedidos al instante
 Decidir que productos se deben adquirir en mayor volumen y cuales en menor
volumen
 Saber cuanto se ha invertido en cada producto
 Realizar balances mensuales de la tienda de abarrotes para manejar la
contabilidad eficientemente.

-3-

PROGRAMA
/* Programa que crea un menú para manejo de registros
que procesan stock de una tienda de abarrotes */
# include<iostream.h>
Ing. Ricardo Castañeda

# include<conio.h>
# include<string.h>
# include<stdio.h>
# include<fstream.h>
struct item
{ int codite; // código del producto
char desite[20]; // descripción del producto
char ubiite[4]; // ubicación del producto
float nunite; // numero de unidades del producto
int tunite;// tipo de unidades kilo(1), litro(2), c/u(3)
float pruite; // precio por cada unidad del producto
};

void lectura(item prod[50], int *n);


void adicion(item prod[50], int *n);
void eliminacion(item prod[50], int *n);
void busqueda(item prod[50], int n);
void orden1(item prod[50], int n);
void escritura(item prod[50], int n);

void main( )
{ int vprod[50];
int num;
char opcion;
clrscr();
do {
clrscr();
gotoxy(30,2); cout<< "MENU ARREGLOS";
gotoxy(30,5); cout<< "1.- Lectura";
gotoxy(30,6); cout<< "2.- Adición";
gotoxy(30,7); cout<< "3.- Eliminación";
gotoxy(30,8); cout<< "4.- Búsqueda";
gotoxy(30,9); cout<< "5.- Ordenamiento ";
gotoxy(30,10); cout<< "6.- Escritura";
gotoxy(30,11); cout<< "7.- Salir ";
gotoxy(30,16); cout<< "Ingrese Opción"; cin >> opcion;
-4-

switch(opcion)
{ case '1' : lectura(vprod, &num);break;
case '2' : adicion(vprod, &num);break;
case '3' : eliminacion(vprod, &num);break;
case '4' : busqueda(vprod, num);break;
Ing. Ricardo Castañeda

case '5' : orden1(vprod, num);break;


case '6' : escritura(vprod, num);break;
}
}while(opcion != '7');
}
void lectura(item prod[50], int *n)
{ int i,rpta;
item buf ;
fstream f1;
clrscr();
cout<< "desea cargar de archivo(1) o ingresar manualmente(2)";
cin>>rpta;
if (rpta == 1)
{
clrscr( );
i = 0;
f1.open( "A:stock2.dat", ios :: in | ios:: binary);
while (! f1.eof( ))
{ if ( f1.eof( )) break;
f1.read( ( unsigned char *)&buf, sizeof(buf));
i = i +1;
prod[i].codite = buf.codite;
strcpy(prod[i].desite , buf.desite);
strcpy(prod[i].ubiite , buf.ubiite);
prod[i].nunite = buf.nunite;
prod[i].tunite = buf.tunite;
prod[i].pruite = buf.pruite ;

}
(*n) = i-1;
f1.close ( );
}
else{
cout << " Ingrese n => ";
cin >> *n;

-5-
for ( i=1; i<=(*n);i++)
{
cout<< " Ingrese # código "<< i<<" : "; cin>> prod[i].codite;
cout<< " Ingrese descripción "<< i<<" : "; gets(prod[i].desite);
cout<< " Ingrese ubicación "<< i<<" : "; cin>> prod[i].ubiite;
cout<< " Ingrese # de unidades"<< i<<" : "; cin>> prod[i].nunite;
Ing. Ricardo Castañeda

cout<< " Tipo de unidad kilo(1),litro(2),c/u(3)"<< i<<" : ";


cin>> prod[i].tunite;
cout<< " Ingrese precio por unidad del producto"<< i<<" : ";
cin>> prod[i].pruite;
}}
}
void adicion(item prod[50], int *n)
{ int codx,i;
item reg1;
clrscr();
cout<<"Ingrese codigo : ";
cin>> codx;
for( i=1;i<=(*n);i++)
if(prod[i].codite == codx)
break;
if(prod[i].codite == codx)
{cout<< "error código ya existe "; getch();}
else
{ reg1.codite = codx;
cout<< " Ingrese descripción : "; gets(reg1.desite);
cout<< " Ingrese ubicación : "; cin>> reg1.ubiite;
cout<< " Ingrese # de unidades : "; cin>> reg1.nunite;
cout<< " Tipo de unidad kilo(1),litro(2),c/u(3): ";
cin>> reg1.tunite;
cout<< " Ingrese precio por unidad del producto: ";
cin>> reg1.pruite;
prod[*n+1] = reg1;
(*n)=(*n) +1; cout<< " Registro adicionado..."; getch(); }
}
void eliminacion(item prod[50], int *n)
{/* int i,j;
clrscr();
cout<<"Ingrese posición de valor a eliminar : ";
cin>> j;
for( i=j+1 ; i<=(*n);i++)
v[i-1] = v[i];
-6-
(*n)=(*n) - 1;*/ Se elimina registro
}
void busqueda(item prod[50], int n)
{ /*int i, x, pos;
clrscr();
cout<<"Ingrese valor a buscar : ";
Ing. Ricardo Castañeda

cin>> x;
for( i=1;i<=n;i++)
if ( v[i]== x)
{ pos = i;
break ;
}
if ( v[i]== x)
cout<< " Valor hallado en posición: "<<pos;
else
cout<< " Valor no hallado ";
getch(); */
}
void orden1(item prod[50], int n)
{ int i, j;
item temp;
for ( i=1; i<n ;i++)
for (j=i+1;j<=n;j++)
if( prod[i].codite> prod[j].codite)
{ temp = prod[i];
prod[i] = prod[j];
prod[j] = temp ;
}
}
void escritura(item prod[50], int n)
{int i;
clrscr();
cout<<" CODIGO PRODUCTO UBICACION # UNIDADES TIPO PRECIO/U ";
cout<<endl<<endl;
for ( i=1; i<=n;i++)
{ cout<< prod[i].codite<<" ";
cout<< prod[i].desite<<" ";
cout<< prod[i].ubiite<<" ";
cout<< prod[i].nunite<<" ";
cout<< prod[i].tunite<<" ";
cout<< prod[i].pruite<<endl; }
getch(); }
-7-

También podría gustarte