Beruflich Dokumente
Kultur Dokumente
La instruccin typedes permite al usuario definir alias o sinnimos, es decir, nuevos tipos
de datos equivalentes a los ya existentes. El objetivo de esta instruccin consiste en
utilizar nombres ms apropiados y ms cortos para los tipos de datos, puesto evitamos
escribir la palabra struct en la declaracin de la variables.
La instruccin typedef se puede utilizar tanto como datos de datos simples como con
estructurados. Con los tipos de datos simples su uso no resulta muy prctico, ms bien
redundante. Por ejemplo, si tenemos que declarar cinco variables de tipo entero, c1, c2,
c3, c4, c5, para un problema en particular, lo hacemos de esta forma:
Estructuras anidadas
Las estructuras representan un tipo de datos estructurados, que tiene por lo tanto varios
componentes. Cada uno de estos componentes puede a su vez ser un tipo de datos simple
o estructurado. Las estructuras anidadas se presentan cuando en la declaracin se una
estructura, por los menos uno de sus componentes es una estructura.
Ejemplo 1
Consideremos que en una empresa requieren almacenar la siguiente informacin de cada
empleado:
-Nombre del empleado (cadena de caracteres).
-Departamento de la empresa (cadena de caracteres).
-sueldo (sueldo).
-Domicilio
.Calle (cadena de caracteres), numero (entero), cdigo postal (entero), localidad (cadena
de caracteres).
A continuacin se muestra la representacin grfica de esta estructura:
Problemas propuestos
1. La informacin de todos los empleados dela empresa DATASYSTEM esta almacena en una
variable de tipo struct llamada empleado. La informacin con que se cuenta de cada
empelado es: nombre, sexo, sueldo.
Se pide realizar un programa que lea en un array de estructuras los datos de los n
trabajadores de la empresa y que imprima los datos del empelado con mayor y menor
salario.
2. A partir de la declaracin de las siguientes estructuras realice un programa en c que lea el
array ats y devuelva los datos(nombre ,pas, deporte) del atleta que ha ganado mayor
nmero de medallas.
Struct datos
{ char nombre [40];
Char pais [25];
};
Struct atleta
{ char deporte [30]
Struct datos pers;
Int nmedallas;
};
Struct atleta ats [30];
3. Un struct que almacene datos de una cancin en formato MP3: Artista, Ttulo, Duracin
(en segundos), Tamao del fichero (en KB). Un programa debe pedir los datos de una
cancin al usuario, almacenarlos en dicho struct y despus mostrarlos en pantalla.
Salir del programa (lgicamente, este men debe repetirse hasta que se escoja la opcin
de salir).
8. Los trminos de un polinomio los podemos colocar como una estructura (coeficiente y
exponente). Ingresar el grado y los trminos de un polinomio y Escriba una funcion
que encuentre el valor numrico del polinomio.
9. Ingresar los datos de n clientes de un banco (cdigo, nombre, saldo). Haga un men
donde se pueda crear una Cuenta, consultar Saldo, depositar una cantidad, retirar
una cantidad y Mostrar todas las cuentas ingresadas.
10. Ingresar el nombre, nota del Examen1, nota del Examen2 y nota de Trabajos de n
alumnos si los pesos de los exmenes son 0.25 y del trabajo 0.5 encontrar el
promedio ponderado de cada alumno y reportarlos en orden de Merito, adems
reportar el Promedio general.
Problemas propuestos
1. Hacer un programa para ingresar los nombres y las notas de los alumnos de Lenguaje
de Programacin y se reporte:
a) Una Lista en orden Alfabtico
b) Una Lista en orden de Merito.
#include<iostream>
#include<string.h>
using namespace std;
struct Alumno{
char nombre[40];
float nota;
};
void
void
void
void
void
numAlumnos(int &n);
ingreso(Alumno A[i], int n);
reporte(Alumno A[i], int n);
ordenAlfabetico(Alumno A[ i], int n);
ordenMerito(Alumno A[i], int n);
int main()
{
Alumno A[100];
int n;
numAlumnos(n);
ingreso(A,n);
ordenAlfabetico(A,n);
cout<<"Lista en orden alfabetico"<<endl;
reporte(A,n);
ordenMerito(A,n);
cout<<"Lista en orden de Merito"<<endl;
reporte(A,n);
system("pause");
return 0;
}
void numAlumnos(int &n)
{
do{
cout<<"Numero de alumnos : ";
cin>>n;
}while(n<=0);
}
void ingreso(Alumno A[ i], int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<"Datos del alumno"<<i+1<<endl;
cout<<"Nombre : ";
cin.get();
cin.getline(A[i].nombre,40);
do{
cout<<"Nota : ";
cin>>A[i].nota;
}while(A[i].nota<0 || A[i].nota>20);
}
}
void reporte(Alumno A[], int n)
{
int i;
for(i=0;i<n;i++)
cout<<A[i].nombre<<"t "<<A[i].nota<<endl;
}
void ordenAlfabetico(Alumno A[], int n)
{
int i,j;
Alumno temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(A[i].nombre,A[j].nombre)>0)
{
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
void ordenMerito(Alumno A[ i], int n)
{
int i,j;
Alumno temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(A[i].nota<A[j].nota)
{
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
2. Programa para ingresar las coordenadas de 2 puntos del plano cartesiano. Reportar la
distancia que hay entre ellos y la ecuacin de la recta que pasa por ellos.
#include<iostream>
#include<math.h>
using namespace std;
struct Punto{
float x;
float y;
};
void ingresoPunto(Punto &P,char mensaje[i]);
float distancia(Punto P1, Punto P2);
int main()
{
Punto P1, P2;
ingresoPunto(P1,"Primer Punto");
ingresoPunto(P2,"Segundo Punto");
cout<<"La distancia entre los puntos es :"<<distancia(P1,P2)<<endl;
system("pause");
return 0;
}
void ingresoPunto(Punto &P,char mensaje[ i])
{
cout<<mensaje<<endl;
cout<<"Valor de x : ";
cin>>P.x;
cout<<"Valor de y : ";
cin>>P.y;
}
float distancia(Punto P1, Punto P2)
{
return sqrt(pow(P1.x-P2.x,2)+pow(P1.y-P2.y,2));
}
3. Hacer un programa para ingresar 2 complejos y reporte la suma, resta,
{
Complejo M;
M.real=C1.real*C2.real-C1.imag*C2.imag;
M.imag=C1.imag*C2.real+C1.real+C2.imag;
return M;
}
Complejo division(Complejo C1, Complejo C2)
{
Complejo D;
float den;
den=pow(C2.real,2)+pow(C2.imag,2);
D.real=(C1.real*C2.real+C1.imag*C2.imag)/den;
D.imag=(C1.imag*C2.real-C1.real+C2.imag)/den;
return D;
}
void reporteComplejo(Complejo C,char mensaje[i])
{
cout<<mensaje<<endl;
cout<<C.real;
if(C.imag>0) cout<<"+";
cout<<C.imag<<"i"<<endl;
}
4. Realice un programa de array de estructura con el cual haga un ingreso de registro
de factura*/
#include<iostream>
#include<stdlib.h>
#include<conio.h>
using namespace std;
struct factura
{
char nombre[30];
char apellido[20];
int ruc;
char producto[10];
double precio;
};
factura regware;
int main ()
{
clrscr();
gotoxy(15,3);cout<<"registro de factura..";
gotoxy(15,5);cout<<"ingrese el nombre del cliente: ";cin>>regware.nombre;
gotoxy(15,6);cout<<"ingrese el apellido:"; cin>>regware.apellido;
cin.ignore(1);
gotoxy(15,7);cout<<"ingrese el ruc:"; cin>>regware.ruc;
cin.ignore(1);
gotoxy(15,8);cout<<"ingrese el producto:"; cin>>regware.producto;
cin.ignore(1);
gotoxy(15,9);cout<<"ingrese el precio:"; cin>>regware.precio;
cout<<"enter para que imprima reporte..."<<endl;
system("cls");
gotoxy(15,3);cout<<"reporte de la factura:";
gotoxy(15,5);cout<<"nombre: "<<regware.nombre<<endl;
gotoxy(15,6);cout<<"apellido:"<<regware.apellido<<endl;
gotoxy(15,7);cout<<"ruc:"<<regware.ruc<<endl;
gotoxy(15,8);cout<<"producto:"<<regware.producto<<endl;
gotoxy(15,9);cout<<"precio:"<<regware.precio<<endl;
cout<<endl;
system("pause");
return 0;
}
/registro hardware un registro
//codigo: entero
//nombre: caracter
//tipo: caracter
//cantidad:entero
//precio:entero decimal
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
struct hardware
{
int codigo;
char Nombre[30];
char tipo[20];
int cantidad;
double precio;
};
hardware regware;
int main()
{
clrscr();
gotoxy(15,3);cout<<"entrada de datos..";
gotoxy(10,5);cout<<"ingrese codigo:";cin>>regware.codigo;
cin.ignore(1);
gotoxy(10,6);cout<<"ingrese el nombre dispositivo:"; gets(regware.Nombre);
gotoxy(10,7);cout<<"ingrese el tipo dispositivo:"; gets(regware.tipo);
cin.ignore(1);
gotoxy(10,8);cout<<"ingrese la cantidad:"; cin>>regware.cantidad;
gotoxy(10,9); cout<<"ingrese el precio:";cin>>regware.precio;
cout<<"enter para imprimir reporte....."<<endl; getch();
system("cls");
gotoxy(15,3);cout<<"reporte del hardware..";
gotoxy(10,5);cout<<"codigo:"<<regware.codigo;
gotoxy(10,6);cout<<" dispositivo:"<<regware.Nombre;
gotoxy(10,7);cout<<"tipo:"<<regware.tipo;
gotoxy(10,8);cout<<" cantidad:"<<regware.cantidad;
gotoxy(10,9); cout<<" precio:"<<regware.precio;
cout<<endl;
system("pause");
return 0;
}
5. Realice un programa de array de estructura con el cual haga un ingreso de registro
de transporte
#include<iostream>
#include<stdlib.h>
#include<conio.h>
using namespace std;
struct transporte
{
char nomb_uni[30];
int num_uni;
int num_asiento;
char destino [10];
double precio;
};
transporte regware;
int main ()
{
clrscr();
gotoxy(15,3);cout<<"registro de boleto..";
gotoxy(15,5);cout<<"ingrese el nombre de la unidad: ";cin>>regware.nomb_uni;
gotoxy(15,6);cout<<"ingrese el nmero de la unidad:"; cin>>regware.num_uni;
gotoxy(15,7);cout<<"ingrese el nmero del asiento:"; cin>>regware.num_asiento;
gotoxy(15,8);cout<<"ingrese el destino:"; cin>>regware.destino;
gotoxy(15,9);cout<<"ingrese el precio:"; cin>>regware.precio;
cout<<"enter para que imprima reporte..."<<endl;
system("cls");
gotoxy(15,3);cout<<"reporte de destino:";
gotoxy(15,5);cout<<"nombre de la unidad: "<<regware.nomb_uni<<endl;
gotoxy(15,6);cout<<"num_uni:"<<regware.num_uni<<endl;
gotoxy(15,7);cout<<"num_asi:"<<regware.num_asiento<<endl;
gotoxy(15,8);cout<<"destino:"<<regware.destino<<endl;
gotoxy(15,9);cout<<"precio:"<<regware.precio<<endl;
cout<<endl;
system("pause");
}
#include<conio.h>
using namespace std;
struct CONSULTA
{
string codigo;
long cedula;
char nombre[10];
char apellido[10];
int fecha;
int consulta;
};
int main()
{
int nmero, cantidad;
gotoxy(15,5);cout<<"Ingresando el N de registro:";
cin>>cantidad;
CONSULTA REGISTRO[cantidad];
for(int i=0;i<cantidad++)
{
system("cls");
gotoxy(15,5);cout<<"INGRESADOS DATOS";
gotoxy(10,6);cout<<"INGRESE EL CODIGO:";cin>>REGISTRO[i].cdigo;
gotoxy(10,7);cout<<"INGRESE EL N CEDULA:";cin>>REGISTRO[i].cedula;
cin.ignore(1);
gotoxy(10,8);cout<<"INGRESE EL NOMBRE:";gets(REGISTRO[i].nombre);
gotoxy(10,9);cout<<"INGRESE EL APELLIDO:";gets(REGISTRO[i].apellido);
cin.ignore(1);
gotoxy(10,10);cout<<"INGRESE LA FECHA:";cin>>REGISTRO[i].fecha;
gotoxy(10,11);cout<<"INGRESE EL NUMERO DE
CONSULTA:";cin>>REGISTRO[i].consulta;
cin.ignore(1);
system("pause");
}
for(int p=0;p<cantidad++)
{
system("cls");
gotoxy(15,5);cout<<"VISUALIZANDO DATOS...";
gotoxy(10,6);cout<<"CODIGO:"<<REGISTRO[p].codigo;
gotoxy(10,7);cout<<" CEDULA:"<<REGISTRO[p].cedula;
gotoxy(10,8);cout<<" NOMBRE:"<<REGISTRO[p].nombre;
gotoxy(10,9);cout<<"APELLIDO:"<<REGISTRO[p].apellido;
gotoxy(10,10);cout<<"FECHA:"<<REGISTRO[p].fecha;
gotoxy(10,11);cout<<"CONSULTA:"<<REGISTRO[p].consulta;
system("pause");
}
system("cls");
cout<<"Buscar el nmero de consulta"<<endl;
cin>>numero;
for(int i=0;i<cantidad++)
{
if(REGISTRO[i].consulta==numero)
{
gotoxy(20,5);cout<<"LA CONSULTA:"<<REGISTRO[i].consulta
<<"SE ENCUENTRA EN LA POSICION:"<<i+1;
}
else
gotoxy(25,5);cout<<"NO EXISTE LA CONSULTA";
}
system("pause");
return 0;
}
6. PROGRAMA DE CALCULANDO NOTAS.
#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
struct estudiante
{ int codigo; char nombres[100];
float examen_parcial;
float examen_final;
float prom;
};
estudiante reg[30];
int main()
{
int n,i;
cout<<"ingrese nmero de alumnos ";
cin>>n;
clrscr();
cout<<"codigo:";
cin>>reg[i].codigo;
cout<<"nombres:"; gets(reg[i].nombres);
cout<<"nombres:"; cin>>reg[i].examen_parcial;
cout<<"nombres:"; cin>>reg[i].examen_final;
reg[i].prom=(reg[i].examen_parcial+reg[i].examen_final)/2;
getch();
}
7. Realizar una estructura de un estudiante, donde se pide:
a) ingresar 3 registros de alumnos
b) mostrar el contenido de los alumnos ingresados*/
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
struct ALUMNOS
{
char nombre[10];
char apellido[15];
char direccion[20];
int edad;
};
int main( )
{
int cantidad,numero;
gotoxy(15,5);cout<<"INGRESE # DE REGISTRO:";
cin>>cantidad;
system("cls");
ALUMNOS REGISTRO[cantidad];
for(int i=0;i<cantidad;i++)
{
system("cls");
gotoxy(15,3);cout<<"INGRESANDOS REGISTROS..";
cin.ignore(1);
gotoxy(10,5);cout<<"INGRESE ELNOMBRE:";gets(REGISTRO[i].nombre);
gotoxy(10,6);cout<<"INGRESE EL APELLIDO:"; gets(REGISTRO[i].apellido);
cin.ignore(1);
gotoxy(10,7);cout<<"INGRESE LA DIRECCION:"; gets(REGISTRO[i].direccion);
gotoxy(10,8);cout<<"INGRESE LA EDAD:"; cin>>REGISTRO[i].edad;
}
gotoxy(15,5);cout<<"VISUALIZANDO EL REGISTRO....."<<endl;
for(int p=0;p<cantidad;p++)
{
system("cls");
gotoxy(15,3);cout<<"VISUALIZANDO EL REGISTRO.......";
gotoxy(10,5);cout<<"NOMBRE:"<<REGISTRO[p].nombre;
gotoxy(10,6);cout<<"APELLIDO:"<<REGISTRO[p].apellido;
gotoxy(10,7);cout<<"DIRECCION:"<<REGISTRO[p].direccion;
gotoxy(10,8);cout<<"EDAD:"<<REGISTRO[p].edad;
cout<<endl;
system("pause");
}
return 0;
}
8. Realizar una estructura de un estudiante:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
char apellido[15];
char direccion[20];
int edad;
};
int main( )
{
int cantidad,numero;
gotoxy(15,5);cout<<"INGRESE # DE REGISTRO:";
cin>>cantidad;
system("cls");
ALUMNOS REGISTRO[cantidad];
for(int i=0;i<cantidad;i++)
{
system("cls");
gotoxy(15,3);cout<<"INGRESANDOS REGISTROS..";
cin.ignore(1);
gotoxy(10,5);cout<<"INGRESE ELNOMBRE:";gets(REGISTRO[i].nombre);
gotoxy(10,6);cout<<"INGRESE EL APELLIDO:"; gets(REGISTRO[i].apellido);
cin.ignore(1);
gotoxy(10,7);cout<<"INGRESE LA DIRECCION:"; gets(REGISTRO[i].direccion);
gotoxy(10,8);cout<<"INGRESE LA EDAD:"; cin>>REGISTRO[i].edad;
}
gotoxy(15,5);cout<<"VISUALIZANDO EL REGISTRO....."<<endl;
for(int p=0;p<cantidad;p++)
{
system("cls");
gotoxy(15,3);cout<<"VISUALIZANDO EL REGISTRO.......";
gotoxy(10,5);cout<<"NOMBRE:"<<REGISTRO[p].nombre;
gotoxy(10,6);cout<<"APELLIDO:"<<REGISTRO[p].apellido;
gotoxy(10,7);cout<<"DIRECCION:"<<REGISTRO[p].direccion;
gotoxy(10,8);cout<<"EDAD:"<<REGISTRO[p].edad;
cout<<endl;
system("pause");
}
return 0;
}
#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
struct estudiante
{ int codigo; char nombres[100]; //campos de la estructura//
float examen_parcial;
float examen_final;
float prom;
};
estudiante reg[30];
int main()
{
int n,i;
cout<<"ingrse numero de laumnos ";
cin>>n;
for(i=0;i<n;i++)
{ clrscr();
cout<<"coidgo:";
cin>>reg[i].codigo;
cout<<"nombres:"; gets(reg[i].nombres);
cout<<"nombres:"; cin>>reg[i].examen_parcial;
cout<<"nombres:"; cin>>reg[i].examen_final;
reg[i].prom=(reg[i].examen_parcial+reg[i].examen_final)/2;
} // en otro for ya lo muestras getch();
}
9. Realizar una estructura
a.- sobre consultas
b.- Visualizar el numero de consultas */
#include<iostream>
#include<stdlib.h>
#include<conio.h>
using namespace std;
struct CONSULTA
{
string codigo;
long cedula;
char nombre[10];
char apellido[10];
int fecha;
int consulta;
};
int main()
{
int numero,cantidad;
gotoxy(15,5);cout<<"Ingresando el N de registro:";
cin>>cantidad;
CONSULTA REGISTRO[cantidad];
for(int i=0;i<cantidad;i++)
{
system("cls");
gotoxy(15,5);cout<<"INGRESADOS DATOS";
gotoxy(10,6);cout<<"INGRESE EL CODIGO:";cin>>REGISTRO[i].codigo;
gotoxy(10,7);cout<<"INGRESE EL N CEDULA:";cin>>REGISTRO[i].cedula;
cin.ignore(1);
gotoxy(10,8);cout<<"INGRESE EL NOMBRE:";gets(REGISTRO[i].nombre);
gotoxy(10,9);cout<<"INGRESE EL APELLIDO:";gets(REGISTRO[i].apellido);
cin.ignore(1);
gotoxy(10,10);cout<<"INGRESE LA FECHA:";cin>>REGISTRO[i].fecha;
gotoxy(10,11);cout<<"INGRESE EL NUMERO DE CONSULTA:";cin>>REGISTRO[i].consulta;
cin.ignore(1);
system("pause");
}
for(int p=0;p<cantidad;p++)
{
system("cls");
gotoxy(15,5);cout<<"VISUALIZANDO DATOS...";
gotoxy(10,6);cout<<"CODIGO:"<<REGISTRO[p].codigo;
gotoxy(10,7);cout<<" CEDULA:"<<REGISTRO[p].cedula;
gotoxy(10,8);cout<<" NOMBRE:"<<REGISTRO[p].nombre;
gotoxy(10,9);cout<<"APELLIDO:"<<REGISTRO[p].apellido;
gotoxy(10,10);cout<<"FECHA:"<<REGISTRO[p].fecha;
gotoxy(10,11);cout<<"CONSULTA:"<<REGISTRO[p].consulta;
system("pause");
}
system("cls");
cout<<"Buscar el numero de consulta"<<endl;
cin>>numero;
for(int i=0;i<cantidad;i++)
{
if(REGISTRO[i].consulta==numero)
{
gotoxy(20,5);cout<<"LA CONSULTA:"<<REGISTRO[i].consulta
<<"SE ENCUENTRA EN LA POSICION:"<<i+1;
}
else
system("pause");
return 0;
}
#include<iostream>
#include<stdlib.h>
#include<conio.h>
using namespace std;
struct CONSULTA
{
string codigo;
long cedula;
char nombre[10];
char apellido[10];
int fecha;
int consulta;
};
int main()
{
int numero, cantidad;
gotoxy(15,5);cout<<"Ingresando el N de registro:";
cin>>cantidad;
CONSULTA REGISTRO[cantidad];
for(int i=0;i<cantidad;i++)
{
system("cls");
gotoxy(15,5);cout<<"INGRESADOS DATOS";
gotoxy(10,6);cout<<"INGRESE EL CODIGO:";cin>>REGISTRO[i].codigo;
gotoxy(10,7);cout<<"INGRESE EL N CEDULA:";cin>>REGISTRO[i].cedula;
cin.ignore(1);
gotoxy(10,8);cout<<"INGRESE EL NOMBRE:";gets(REGISTRO[i].nombre);
gotoxy(10,9);cout<<"INGRESE EL APELLIDO:";gets(REGISTRO[i].apellido);
cin.ignore(1);
gotoxy(10,10);cout<<"INGRESE LA FECHA:";cin>>REGISTRO[i].fecha;
gotoxy(10,11);cout<<"INGRESE EL NUMERO DE CONSULTA:";cin>>REGISTRO[i].consulta;
cin.ignore(1);
system("pause");
}
for(int p=0;p<cantidad;p++)
{
system("cls");
gotoxy(15,5);cout<<"VISUALIZANDO DATOS...";
gotoxy(10,6);cout<<"CODIGO:"<<REGISTRO[p].codigo;
gotoxy(10,7);cout<<" CEDULA:"<<REGISTRO[p].cedula;
gotoxy(10,8);cout<<" NOMBRE:"<<REGISTRO[p].nombre;
gotoxy(10,9);cout<<"APELLIDO:"<<REGISTRO[p].apellido;
gotoxy(10,10);cout<<"FECHA:"<<REGISTRO[p].fecha;
gotoxy(10,11);cout<<"CONSULTA:"<<REGISTRO[p].consulta;
system("pause");
}
system("cls");
cout<<"Buscar el numero de consulta"<<endl;
cin>>numero;
for(int i=0;i<cantidad;i++)
{
if(REGISTRO[i].consulta==numero)
{
gotoxy(20,5);cout<<"LA CONSULTA:"<<REGISTRO[i].consulta
<<"SE ENCUENTRA EN LA POSICION:"<<i+1;
}
else
system("pause");
return 0;
}
/* R. Programa de Producto de */
#include<iostream>
#include<stdlib.h>
#include<conio.h>
using namespace std;
struct productos
{
char nomb [10];
int codig;
int f_elv;
int f_ven;
int cant;
double precio;
};
int main ()
{
cout<<endl;
system("CLS");
}
system ("pause");
return 0;
}