Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #define SALTO cout<<"\n\n"
- using namespace std;
- void personas(int);
- int varios(int *, int, int);
- int varios(float *, int, int);
- void spaces(string, int);
- int nameL(string *, int);
- int leerPersona();
- int numscpy(string);
- float floatcpy(string);
- void leerName(string &, int);
- void leerEdad(int &, string);
- void leerAltura(float &, string);
- int masOld(int *, int);
- int masAlto(float *, int);
- int masYoung(int *, int);
- int masBajo(float *, int);
- void mayoriaEdad(string *, int *, int);
- void estaturaMin(string *, float *, int);
- int main(){
- personas(leerPersona());
- return 0;
- }
- void personas(int cant){
- string names[cant];
- int edades[cant];
- float alturas[cant];
- int old, alto, joven, bajo;
- for(int i=0; i<cant; i++){
- system("cls");
- cout<<"PERSONA "<<i+1<<"\n\n";
- leerName(names[i], i+1);
- leerEdad(edades[i], names[i]);
- leerAltura(alturas[i], names[i]);
- }
- old=masOld(edades, cant);
- alto=masAlto(alturas, cant);
- joven=masYoung(edades, cant);
- bajo=masBajo(alturas,cant);
- system("cls");
- cout<<"TABLA DE DATOS";
- SALTO;
- int q_letras=nameL(names, cant);
- cout<<"Nombre";
- spaces("Nombre", q_letras);
- cout<<"\tEdad\tAltura";
- SALTO;
- for(int i=0; i<cant; i++){
- cout<<names[i];
- spaces(names[i], q_letras);
- cout<<"\t"<<edades[i]<<"\t"<< alturas[i]<< endl;
- }
- SALTO<<endl;
- cout<<"CONCLUSIONES DE LA TABLA";
- SALTO;
- //VIEJO(s)
- int q=varios(edades, cant, old);
- if( q>1 ){
- if( q==cant )
- cout<<"Todos tienen "<<edades[old]<<" anios de edad.";
- else{
- cout<<"Los más abuelos son: ";
- for(int i=0, c=0; i<cant; i++)
- if( edades[old]==edades[i] ){
- q--;
- cout<<names[i]<<" ("<<edades[old]<<" anios)"<<((q>1)?", ":(q==1?" y ":"."));
- }
- }
- }
- else
- cout<<"El más abuelo es: "<<names[old]<<" con "<<edades[old]<<" anios de edad";
- SALTO;
- //ALTO(S)
- q=varios(alturas, cant, alto);
- if( q>1 ){
- if( q==cant )
- cout<<"Todos tienen "<<alturas[alto]<<" mts de altura.";
- else{
- cout<<"Los más altos son: ";
- for(int i=0, c=0; i<cant; i++)
- if( alturas[alto]==alturas[i] ){
- q--;
- cout<<names[i]<<" ("<<alturas[alto]<<" mts)"<<((q>1)?", ":(q==1?" y ":"."));
- }
- }
- }
- else
- cout<<"El más alto es: "<<names[alto]<<" con "<<alturas[alto]<<" mts";
- SALTO;
- //JOVEN(ES)
- q=varios(edades, cant, joven);
- if( q>1 ){
- if( q==cant )
- cout<<"Todos tienen "<<edades[joven]<<" anios de edad.";
- else{
- cout<<"Los más jovenes son: ";
- for(int i=0, c=0; i<cant; i++)
- if( edades[joven]==edades[i] ){
- q--;
- cout<<names[i]<<" ("<<edades[joven]<<" anios)"<<((q>1)?", ":(q==1?" y ":"."));
- }
- }
- }
- else
- cout<<"El más joven es: "<<names[joven]<<" con "<<edades[joven]<<" anios de edad";
- SALTO;
- //CHAPERRITO(S)
- q=varios(alturas, cant, bajo);
- if( q>1 ){
- if( q==cant )
- cout<<"Todos tienen "<<alturas[alto]<<" mts de altura.";
- else{
- cout<<"Los más chaperritos son: ";
- for(int i=0, c=0; i<cant; i++)
- if( alturas[bajo]==alturas[i] ){
- q--;
- cout<<names[i]<<" ("<<alturas[bajo]<<" mts)"<<((q>1)?", ":(q==1?" y ":"."));
- }
- }
- }
- else
- cout<<"El más chaperrito es: "<<names[bajo]<<" con "<<alturas[bajo]<<" mts";
- SALTO;
- SALTO;
- mayoriaEdad(names, edades, cant);
- SALTO;
- estaturaMin(names, alturas, cant);
- }
- int leerPersona(){
- string opc;
- int personas;
- do{
- cout<<"Cuantas personas deseas ingresar?\n";
- cin>>opc;
- }while( !isdigit(opc[0]) );
- personas=numscpy(opc);
- return personas;
- }
- int numscpy(string cad){
- vector <int> digits;
- int num=0;
- for(int i=0; i<cad.length(); i++)
- if( isdigit(cad[i]) ){
- int x=(int)(cad[i]-'0');
- digits.push_back(x);
- }
- for(int i=digits.size()-1, m=1; i>=0; i--, m*=10)
- num += m*(digits[i]);
- return num;
- }
- void sdigitsa(string cad, int pos, char *a){
- int j=2;
- for(int i=pos; i<cad.length() && j<4; i++)
- if( isdigit(cad[i]) )
- a[j++]=cad[i];
- if( j==2 ){
- a[j++]='0';
- a[j]='0';
- }
- else if( j==3 )
- a[j]='0';
- }
- void sdigitsb(string cad, int pos, char *a){
- int j=0;
- for(int i=pos; i>=0 && j==0; i--)
- if( isdigit(cad[i]) )
- a[j++]=cad[i];
- if( j==0 )
- a[j]='0';
- }
- float floatcpy(string cad){
- char arrf[4];
- int pos=-1, t_cad=cad.length();
- float numf=0.0, decs=0.0;
- arrf[1]='.';
- for(int i=0; i<t_cad && pos==-1; i++)
- if( cad[i] == '.' )
- pos=i;
- if( pos==-1 ){
- arrf[0]=cad[0];
- pos=1;
- sdigitsa(cad, pos, arrf);
- }
- else{
- sdigitsb(cad, pos, arrf);
- sdigitsa(cad, pos, arrf);
- }
- numf=(float)(arrf[0]-'0');
- decs=((float)(arrf[2]-'0'))*10 + (float)(arrf[3]-'0');
- numf+=(decs/100);
- return numf;
- }
- void leerName(string &name, int i){
- cout<<"Introduce el nombre de la persona "<<i<<"."<<endl;
- cin>>name;
- }
- void leerEdad(int &edad, string name){
- string cant;
- do{
- cout<<"Cuál es la edad de "<<name<<"?\n";
- cin>>cant;
- }while( !isdigit(cant[0]) );
- edad=numscpy(cant);
- }
- void leerAltura(float &h, string name){
- string cant;
- do{
- cout<<"Cual es la altura en cm de "<<name<<"?\n";
- cin>>cant;
- }while( !isdigit(cant[0]) );
- h=floatcpy(cant);
- }
- int masOld(int *v, int q){
- int pos=0;
- for(int i=1; i<q; i++)
- if( v[i]>v[pos] ) pos=i;
- return pos;
- }
- int masAlto(float *v, int q){
- int pos=0;
- int a[q];
- for(int i=0; i<q; i++)
- a[i]=(int)(100*v[i]);
- for(int i=1; i<q; i++)
- if( a[i]>a[pos] ) pos=i;
- return pos;
- }
- int masYoung(int *v, int q){
- int pos=0;
- for(int i=1; i<q; i++)
- if( v[i]<v[pos] ) pos=i;
- return pos;
- }
- int masBajo(float *v, int q){
- int pos=0;
- int a[q];
- for(int i=0; i<q; i++)
- a[i]=(int)(100*v[i]);
- for(int i=1; i<q; i++)
- if( a[i]<a[pos] ) pos=i;
- return pos;
- }
- void spaces(string name, int q ){
- if( name.length()<q )
- for(int n=q-name.length();n>=0; n--)
- cout<<" ";
- }
- int nameL(string *names, int q){
- int mayor=names[0].length();
- for(int i=0; i<=q; i++)
- if( names[i].length()>mayor )
- mayor=names[i].length();
- return mayor;
- }
- int varios(int *v, int q, int d){
- int cont=0;
- for(int i=0; i<q; i++)
- if( v[d]==v[i] )
- cont++;
- return cont;
- }
- int varios(float *v, int q, int d){
- int cont=0;
- for(int i=0; i<q; i++)
- if( v[d]==v[i] )
- cont++;
- return cont;
- }
- void mayoriaEdad(string *names, int *ages, int q){
- const int edad=18;
- int q_letras=nameL(names, q);
- cout<<"TABLA DE MAYORES DE EDAD";
- SALTO;
- cout<<"Nombre";
- spaces("Nombre", q_letras);
- cout<<"\tEdad";
- SALTO;
- for(int i=0; i<q; i++)
- if( ages[i]>=edad ){
- cout<<names[i];
- spaces(names[i], q_letras);
- cout<<"\t"<<ages[i]<< endl;
- }
- }
- void estaturaMin(string *names, float *h, int q){
- const float hMin=1.65;
- int q_letras=nameL(names, q);
- cout<<"TABLA DE PERSONAS CON ESTATURA MINIMA ("<<hMin<<" mts)";
- SALTO;
- cout<<"Nombre";
- spaces("Nombre", q_letras);
- cout<<"\tAltura";
- SALTO;
- for(int i=0; i<q; i++)
- if( h[i]>=hMin ){
- cout<<names[i];
- spaces(names[i], q_letras);
- cout<<"\t"<<h[i]<< endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement