Ejemplo de punteros a estructuras
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string"
using namespace std;
struct Alumno
{
string nombre;
double nota;
};
void ingresoDatos(Alumno *p,int n)
{
for(int i=0;i<n;i++)
{
cout<<"Nombre "<<i+1<<": ";cin>>(*p).nombre;
do{
cout<<"Nota: ";cin>>(*p).nota;
}while((*p).nota<0 || (*p).nota>20);
p++;
cout<<endl;
}
}
void mostrarLista(Alumno *p,int n)
{
cout<<endl<<"Lista:"<<endl<<endl;
cout<<"Nombre:\t\tNota:"<<endl<<endl;
for(int i=0;i<n;i++)
{
cout<<(*p).nombre<<"\t\t"<<(*p).nota<<endl;
p++;
}
}
void main()
{
int n;
cout<<"Cantidad de alumnos: ";cin>>n;
Alumno *alumnos = new Alumno [n];
cout<<endl;
ingresoDatos(alumnos,n);
mostrarLista(alumnos,n);
_getch();
}
Mostrando entradas con la etiqueta Estructuras. Mostrar todas las entradas
Mostrando entradas con la etiqueta Estructuras. Mostrar todas las entradas
viernes, 16 de septiembre de 2011
Moda de un arreglo
En estadística, la moda es el valor con una mayor frecuencia en una distribución de datos.
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int n;
struct structFrec
{
int element;
int frecuencia;
};
void ordenarvector(int *V)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(V[i]>V[j])
{
int temp = V[i];
V[i] = V[j];
V[j] = temp;
}
}
}
}
//Ordenar una estructura
void ordenarStruct(structFrec *S)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(S[i].frecuencia<S[j].frecuencia)
{
structFrec aux = S[i];
S[i] = S[j];
S[j] = aux;
}
}
}
}
void main()
{
cout<<"Ingrese el numero de elementos: ";cin>>n;
int *V = new int [n];
structFrec *frecuencias = new structFrec[n];
cout<<endl;
for(int i=0;i<n;i++)
{
cout<<"Nro "<<i+1<<" = ";
cin>>V[i];
}
ordenarvector(V);
int iFrec = 0;//Indice que recorrerá la estructura de frecuencias
double contador=1;
for(int i=0;i<n;i++)
{
if(V[i]==V[i+1])
contador++;
else
{
frecuencias[iFrec].element=V[i];
frecuencias[iFrec].frecuencia=contador;
iFrec++;
contador = 1;
}
}
//Ordenamos las frecuencias de MAYOR a MENOR
ordenarStruct(frecuencias);
//El primer elemento será el de mayor frecuencia
int maxFrec = frecuencias[0].frecuencia;
//Los que tengan esa frecuencia son las modas (incluyendo al primer elemento)
cout<<endl<<"MODA(S):"<<endl<<endl;
for(int i=0;i<iFrec;i++)
if(frecuencias[i].frecuencia==maxFrec)
cout<<"Nro: "<<frecuencias[i].element<<" ("<<frecuencias[i].frecuencia<<") veces"<<endl;
_getch();
}
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int n;
struct structFrec
{
int element;
int frecuencia;
};
void ordenarvector(int *V)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(V[i]>V[j])
{
int temp = V[i];
V[i] = V[j];
V[j] = temp;
}
}
}
}
//Ordenar una estructura
void ordenarStruct(structFrec *S)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(S[i].frecuencia<S[j].frecuencia)
{
structFrec aux = S[i];
S[i] = S[j];
S[j] = aux;
}
}
}
}
void main()
{
cout<<"Ingrese el numero de elementos: ";cin>>n;
int *V = new int [n];
structFrec *frecuencias = new structFrec[n];
cout<<endl;
for(int i=0;i<n;i++)
{
cout<<"Nro "<<i+1<<" = ";
cin>>V[i];
}
ordenarvector(V);
int iFrec = 0;//Indice que recorrerá la estructura de frecuencias
double contador=1;
for(int i=0;i<n;i++)
{
if(V[i]==V[i+1])
contador++;
else
{
frecuencias[iFrec].element=V[i];
frecuencias[iFrec].frecuencia=contador;
iFrec++;
contador = 1;
}
}
//Ordenamos las frecuencias de MAYOR a MENOR
ordenarStruct(frecuencias);
//El primer elemento será el de mayor frecuencia
int maxFrec = frecuencias[0].frecuencia;
//Los que tengan esa frecuencia son las modas (incluyendo al primer elemento)
cout<<endl<<"MODA(S):"<<endl<<endl;
for(int i=0;i<iFrec;i++)
if(frecuencias[i].frecuencia==maxFrec)
cout<<"Nro: "<<frecuencias[i].element<<" ("<<frecuencias[i].frecuencia<<") veces"<<endl;
_getch();
}
Agenda
Guarda los nombres y telefonos en una estructura y la ordena.
#include "stdafx.h"
#include "conio.h"
#include "iostream"
using namespace std;
struct TPersona
{
char nombre[35];
int telefono;
}*agenda;
void ordenarStruct(TPersona *S,int n)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(strcmp(S[i].nombre,S[j].nombre)>0)//Si la condicion se cumple retorna 1, sino 0
{
TPersona aux = S[i];
S[i] = S[j];
S[j] = aux;
}
}
}
}
void main()
{
int n;
cout<<"Ingrese numero de contactos: ";cin>>n;
agenda = new TPersona [n];
for(int i=0;i<n;i++)
{
cout<<endl<<"CONTACTO Nro "<<i+1<<endl;
cout<<"Nombre: ";cin>>agenda[i].nombre;
cout<<"Telefono: ";cin>>agenda[i].telefono;
}
ordenarStruct(agenda,n);
cout<<endl<<"AGENDA: "<<endl<<endl;
cout<<"Nro"<<"\t"<<"Name: "<<"\t"<<"Phone: "<<endl<<endl;
for(int i=0;i<n;i++)
cout<<i+1<<"\t"<<agenda[i].nombre<<"\t"<<agenda[i].telefono<<endl;
_getch();
}
#include "stdafx.h"
#include "conio.h"
#include "iostream"
using namespace std;
struct TPersona
{
char nombre[35];
int telefono;
}*agenda;
void ordenarStruct(TPersona *S,int n)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(strcmp(S[i].nombre,S[j].nombre)>0)//Si la condicion se cumple retorna 1, sino 0
{
TPersona aux = S[i];
S[i] = S[j];
S[j] = aux;
}
}
}
}
void main()
{
int n;
cout<<"Ingrese numero de contactos: ";cin>>n;
agenda = new TPersona [n];
for(int i=0;i<n;i++)
{
cout<<endl<<"CONTACTO Nro "<<i+1<<endl;
cout<<"Nombre: ";cin>>agenda[i].nombre;
cout<<"Telefono: ";cin>>agenda[i].telefono;
}
ordenarStruct(agenda,n);
cout<<endl<<"AGENDA: "<<endl<<endl;
cout<<"Nro"<<"\t"<<"Name: "<<"\t"<<"Phone: "<<endl<<endl;
for(int i=0;i<n;i++)
cout<<i+1<<"\t"<<agenda[i].nombre<<"\t"<<agenda[i].telefono<<endl;
_getch();
}
Ordenar por nombre o promedio
Ordena una estructura de 2 diferentes maneras según el tipo de elementos que la componen.
#include "stdafx.h"
#include "iostream"
#include "string"
using namespace std;
struct datos
{
int carnet;
string name;
double promedio;
}*alumno;
void intercambio(int i, int j)
{
datos aux=alumno[i];
alumno[i]=alumno[j];
alumno[j]=aux;
}
void main()
{
int n,modo;
cout<<"Ingrese numero de alumnos: ";cin>>n;
alumno = new datos [n];
for(int i=0;i<n;i++)
{
cout<<endl<<"Nro de carnet:\t";cin>>alumno[i].carnet;
cout<<"Nombre: ";cin>>alumno[i].name;
cout<<"Promedio: ";cin>>alumno[i].promedio;
}
int repeat;
do{
do{
cout<<endl<<endl<<"MODO DE ORDENAMIENTO: (0) Alfabetico; (1) Promedios ";cin>>modo;
}while(modo<0 || modo>1);
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(modo)
{
if(alumno[i].promedio<alumno[j].promedio)
intercambio(i,j);
}
else
{
if(alumno[i].name>alumno[j].name)
intercambio(i,j);
}
}
}
cout<<endl<<"Carnet\tNombre\tPromedio"<<endl;
for(int i=0;i<n;i++)
cout<<alumno[i].carnet<<"\t"<<alumno[i].name<<"\t"<<alumno[i].promedio<<endl;
do{
cout<<endl<<"Ordenar de nuevo (1 SI, 0 NO)";cin>>repeat;
}while(repeat<0 || repeat>1);
}while(repeat);
}
#include "stdafx.h"
#include "iostream"
#include "string"
using namespace std;
struct datos
{
int carnet;
string name;
double promedio;
}*alumno;
void intercambio(int i, int j)
{
datos aux=alumno[i];
alumno[i]=alumno[j];
alumno[j]=aux;
}
void main()
{
int n,modo;
cout<<"Ingrese numero de alumnos: ";cin>>n;
alumno = new datos [n];
for(int i=0;i<n;i++)
{
cout<<endl<<"Nro de carnet:\t";cin>>alumno[i].carnet;
cout<<"Nombre: ";cin>>alumno[i].name;
cout<<"Promedio: ";cin>>alumno[i].promedio;
}
int repeat;
do{
do{
cout<<endl<<endl<<"MODO DE ORDENAMIENTO: (0) Alfabetico; (1) Promedios ";cin>>modo;
}while(modo<0 || modo>1);
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(modo)
{
if(alumno[i].promedio<alumno[j].promedio)
intercambio(i,j);
}
else
{
if(alumno[i].name>alumno[j].name)
intercambio(i,j);
}
}
}
cout<<endl<<"Carnet\tNombre\tPromedio"<<endl;
for(int i=0;i<n;i++)
cout<<alumno[i].carnet<<"\t"<<alumno[i].name<<"\t"<<alumno[i].promedio<<endl;
do{
cout<<endl<<"Ordenar de nuevo (1 SI, 0 NO)";cin>>repeat;
}while(repeat<0 || repeat>1);
}while(repeat);
}
Partida de nacimiento
Ejemplo de una estructura anidada con otra. Guarda el nombre y la fecha de nacimiento, entre otros.
#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include "string"
using namespace std;
struct TFecha
{
int dia;
int mes;
int anio;
};
struct TPartida
{
string paterno;
string materno;
string nombres;
string ciudad;
TFecha fechaNac; //Estructura anidada
}partida;
void leerDatos()//Ingresa datos al arreglo de estructuras
{
cout<<"Apellido paterno: ";cin>>partida.paterno;
cout<<"Apellido materno: ";cin>>partida.materno;
cout<<"Nombres: ";cin>>partida.nombres;
cout<<"Ciudad: ";cin>>partida.ciudad;
cout<<"Fecha de Nacimiento:"<<endl;
cout<<"\t"<<"Dia: ";cin>>partida.fechaNac.dia;
cout<<"\t"<<"Mes: ";cin>>partida.fechaNac.mes;
cout<<"\t"<<"Anio: ";cin>>partida.fechaNac.anio;
}
void imprimirDatos() //Imprime la lista
{
cout<<"Apellido paterno: "<<partida.paterno<<endl;
cout<<"Apellido materno: "<<partida.materno<<endl;
cout<<"Nombres: "<<partida.nombres<<endl;
cout<<"Ciudad: "<<partida.ciudad<<endl;
cout<<"Fecha de Nacimiento: "<<partida.fechaNac.dia<<"/"<<partida.fechaNac.mes<<"/"<<partida.fechaNac.anio;
}
void main()
{
leerDatos();
cout<<endl<<"Partida:"<<endl<<endl;
imprimirDatos();
_getch();
}
#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include "string"
using namespace std;
struct TFecha
{
int dia;
int mes;
int anio;
};
struct TPartida
{
string paterno;
string materno;
string nombres;
string ciudad;
TFecha fechaNac; //Estructura anidada
}partida;
void leerDatos()//Ingresa datos al arreglo de estructuras
{
cout<<"Apellido paterno: ";cin>>partida.paterno;
cout<<"Apellido materno: ";cin>>partida.materno;
cout<<"Nombres: ";cin>>partida.nombres;
cout<<"Ciudad: ";cin>>partida.ciudad;
cout<<"Fecha de Nacimiento:"<<endl;
cout<<"\t"<<"Dia: ";cin>>partida.fechaNac.dia;
cout<<"\t"<<"Mes: ";cin>>partida.fechaNac.mes;
cout<<"\t"<<"Anio: ";cin>>partida.fechaNac.anio;
}
void imprimirDatos() //Imprime la lista
{
cout<<"Apellido paterno: "<<partida.paterno<<endl;
cout<<"Apellido materno: "<<partida.materno<<endl;
cout<<"Nombres: "<<partida.nombres<<endl;
cout<<"Ciudad: "<<partida.ciudad<<endl;
cout<<"Fecha de Nacimiento: "<<partida.fechaNac.dia<<"/"<<partida.fechaNac.mes<<"/"<<partida.fechaNac.anio;
}
void main()
{
leerDatos();
cout<<endl<<"Partida:"<<endl<<endl;
imprimirDatos();
_getch();
}
Tercio superior
Obtiene el tercio superior de una lista de alumnos
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string"
using namespace std;
struct datos
{
string nombre;
double nota;
}*alumno;
void main()
{
int n;
cout<<"Ingrese cantidad de alumnos (mas de 3): ";cin>>n;
alumno = new datos [n];
cout<<endl<<"Ingrese nombre (sin espacios) y luego notas:"<<endl<<endl;
for(int i=0;i<n;i++)
{
cout<<"Nombre "<<i+1<<": ";cin>>alumno[i].nombre;
do{
cout<<"Nota: ";cin>>alumno[i].nota;
}while(alumno[i].nota<0 || alumno[i].nota>20);
cout<<endl;
}
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(alumno[i].nota<alumno[j].nota)
{
datos aux=alumno[i];
alumno[i]=alumno[j];
alumno[j]=aux;
}
}
}
cout<<endl<<"Lista del tercio superior queda asi:"<<endl<<endl;
cout<<"Nombre:\tNota:"<<endl;
for(int i=0;i<n/3;i++)
cout<<alumno[i].nombre<<"\t"<<alumno[i].nota<<endl;
_getch();
}
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string"
using namespace std;
struct datos
{
string nombre;
double nota;
}*alumno;
void main()
{
int n;
cout<<"Ingrese cantidad de alumnos (mas de 3): ";cin>>n;
alumno = new datos [n];
cout<<endl<<"Ingrese nombre (sin espacios) y luego notas:"<<endl<<endl;
for(int i=0;i<n;i++)
{
cout<<"Nombre "<<i+1<<": ";cin>>alumno[i].nombre;
do{
cout<<"Nota: ";cin>>alumno[i].nota;
}while(alumno[i].nota<0 || alumno[i].nota>20);
cout<<endl;
}
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(alumno[i].nota<alumno[j].nota)
{
datos aux=alumno[i];
alumno[i]=alumno[j];
alumno[j]=aux;
}
}
}
cout<<endl<<"Lista del tercio superior queda asi:"<<endl<<endl;
cout<<"Nombre:\tNota:"<<endl;
for(int i=0;i<n/3;i++)
cout<<alumno[i].nombre<<"\t"<<alumno[i].nota<<endl;
_getch();
}
Suscribirse a:
Entradas (Atom)