SlideShare ist ein Scribd-Unternehmen logo
1 von 19
UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE INGENIERIA MECANICA COMPUTACION II MB_544  Tema:  FUNCIONES AMIGAS Ing. Daniel Osorio Maldonado
Funciones Amigas ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
Para declarar una función amiga simplemente se antepone la palabra   friend  al prototipo de la función. Sintaxis: class  nombre_clase { friend  funcion_amiga ( );   { (sentencias )  } // Considere el siguiente ejemplo #include<iostream.h> #include<conio.h> #include<iomanip.h> #include<stdlib.h> class CLASS{ private: int a; int b; public: CLASS(int i,int j)//constructor  {a=i;b=j;}
friend int sumaCLASS(CLASS X) //funcion Amiga {return X.a + X.b;  } friend int restaCLASS(CLASS X) {  return X.a - X.b;  } friend int divisionCLASS(CLASS X){ if(X.b) //verifica si es cierto que ´b´no es cero return X.a % X.b; else{ cout<<&quot;No Hay division por cero&quot;; exit(0);} } };
main(){ int m,n; cout<<&quot;Ingrese el valor de a:&quot;;cin>>m; cout<<&quot;Ingrese el valor de b:&quot;;cin>>n; CLASS X(m,n); cout<<setw(5);//Establece un ancho de 5  int X1=sumaCLASS(X);//Legal int X2=restaCLASS(X);//Legal int X3=divisionCLASS(X);//ILegal cout<<&quot;La suma es: &quot;<<X1<<setw(3)<<endl <<&quot;La resta es: &quot;<<X2<<setw(3)<<endl <<&quot;El resto es:&quot;<<X3<<setw(3); // <<&quot;EL producto  es: &quot;<<X3<<setw(3); getch(); }
/* El siguiente programa permitirá tener una idea concreta de la forma como se aplica una funcion amiga */ #include<iostream.h> #include<conio.h> #include<iomanip.h> #include<stdlib.h> class myclass{ private: int n,d; public: myclass(int i,int j){ n=i;d=j;} friend int isfactor(myclass ob); };
“ Aquí está la definición de la función amiga. Devuelve verdadero si d es un factor de n. Observe que en la definición de  isfactor( )  no se utiliza la palabra clave friend”  int isfactor(myclass ob){ if(!(ob.n%ob.d))  return 1; else  return 0;  }
main() { myclass ob1(10,2),ob2(13,3); if(isfactor(ob1)) cout<<&quot;2 es un factor de 10 &quot;; else cout<<&quot;2 no es un factor de 10 &quot;; if(isfactor(ob2)) cout<<&quot;3 es un factor de 13 &quot;; else cout<<&quot;3 no es un factor de 13 &quot;; getch(); }
#include <iostream.h> #include <conio.h> class dat{ int dato; public: friend void cargar(dat & , int x); void visualizar(); }; void dat::visualizar(){     cout<<&quot; El Valor Visualizado es: &quot;;   cout<<dato;   }
void cargar(dat &t, int x) //  pasa un objeto de tipo dat   {t.dato=x;} imain() { int w; dat t; cout<<&quot;Ingrese el Valor del dato t= : &quot;;cin>>w; cargar(t, w); t.visualizar(); getch(); }
/* Uso de la funcion amiga en una serie con factorial   */  #include<iostream.h> #include<conio.h> class SFa{ private: int i,N; float S; public:  SFa(int x); friend long Facto(SFa Z) {if(Z.N==1) return(1); else return(Z.N*(Facto(Z.N-1))); }
float Suma(int N); //void Show(int N); }; SFa::SFa(int x) {N=x;} float SFa::Suma(int N){ S=0; for(i=1;i<=N;i++) S=S+i*1.0/Facto(i); return(S); } //void SFa::Show(int N) //{cout<<S;} // Pruebe ud con show y  haga las modificaciones del caso
main() { int M; cout<<&quot;Ingrese el numero de términos:&quot;; cin>>M; SFa SF(M); cout<<&quot;La suma es &quot;<<SF.Suma(M); getch(); }
// Se trata de saber cual es mas rápido o un tractor o un coche #include<iostream.h> #include<conio.h> class tractor ; class car { int possengers; int speed; public: car(int p , int s) {   possengers=p;   speed=s; } friend int sp_greater(car c ,tractor t); } ;
int sp_greater(car c , tractor t) {  return (c.speed-t.speed); } main()  {  int t ; car c1(6,55),c2(2,120); tractor t1(10000,55),t2(20000,72); cout<<&quot;comparando c1 y t1 :&quot;; t=sp.greater(c1,t1);  if (t<0) cout<<&quot;el tractor es mas rapido &quot;; else
if (t==0) cout<<&quot;la velocidad del tractor y del coche son iguales&quot; ; else cout<<&quot;el coche es mas rapido &quot;; cout<<&quot;comparando c2 y t2 &quot;; t=sp_greater(c2,t2); if(t<0) cout<<&quot;el tractor es mas rapido &quot;; else if(t==0) cout<<&quot;la velocidad del coche y del tractor es la misma&quot;; else cout<<&quot;el coche es mas rapido &quot;; getch(); }
//Una aplicación con Números complejos simple #include<iostream.h> #include<conio.h> #include<conio.h> class complejo{  float real; float imag; public: complejo(float a,float b); void show(); friend void suma(complejo x,complejo y, complejo &z);   }; complejo::complejo(float a,float b) {  real =a; imag=b; } void complejo::show(){ cout<<real<<&quot; + &quot;<<imag<<&quot;i&quot;; }
void suma(complejo x,complejo y,complejo &z) {z.real=x.real+y.real;  z.imag=x.imag+y.imag; } main(){   complejo x(1.0,2.0);   complejo y(2.0,1.0);   complejo z(0,0);   cout<<&quot;Suma de : &quot;;   x.show();   cout<<&quot; =&quot;;   y.show();   cout<<&quot; =&quot;;   suma(x,y,z);   z.show();   getch(); /*Realice las modificaciones para valores no constantes y para valores aleatorios*/

Weitere ähnliche Inhalte

Was ist angesagt?

Electroestatica en la xerografia
Electroestatica en la xerografiaElectroestatica en la xerografia
Electroestatica en la xerografiakarenfanny123
 
análisis de circuitos eléctricos en estado estable y transciente.pdf
análisis de circuitos eléctricos en estado estable y transciente.pdfanálisis de circuitos eléctricos en estado estable y transciente.pdf
análisis de circuitos eléctricos en estado estable y transciente.pdfssuser64d38e
 
Ejercicos propuestos corriente continua
Ejercicos propuestos corriente continuaEjercicos propuestos corriente continua
Ejercicos propuestos corriente continuaERICK CONDE
 
Tippens fisica 7e_diapositivas_05b
Tippens fisica 7e_diapositivas_05bTippens fisica 7e_diapositivas_05b
Tippens fisica 7e_diapositivas_05bRobert
 
Lineas de transmision elementos constituyentes
Lineas de transmision elementos constituyentesLineas de transmision elementos constituyentes
Lineas de transmision elementos constituyentesnorenelson
 
Capítulo II de Física II - Campo Eléctrico - Definitivo
Capítulo II de Física II - Campo Eléctrico - DefinitivoCapítulo II de Física II - Campo Eléctrico - Definitivo
Capítulo II de Física II - Campo Eléctrico - Definitivoguestf39ed9c1
 
Laplaciano de una función escalar
Laplaciano de una función escalarLaplaciano de una función escalar
Laplaciano de una función escalarSabio Online
 
Ecuaciones de nodos
Ecuaciones de nodosEcuaciones de nodos
Ecuaciones de nodosJorge Quispe
 

Was ist angesagt? (20)

Electrostática
ElectrostáticaElectrostática
Electrostática
 
Electroestatica en la xerografia
Electroestatica en la xerografiaElectroestatica en la xerografia
Electroestatica en la xerografia
 
análisis de circuitos eléctricos en estado estable y transciente.pdf
análisis de circuitos eléctricos en estado estable y transciente.pdfanálisis de circuitos eléctricos en estado estable y transciente.pdf
análisis de circuitos eléctricos en estado estable y transciente.pdf
 
Ejercicos propuestos corriente continua
Ejercicos propuestos corriente continuaEjercicos propuestos corriente continua
Ejercicos propuestos corriente continua
 
ley de la termodinamica
ley de la termodinamicaley de la termodinamica
ley de la termodinamica
 
Tippens fisica 7e_diapositivas_05b
Tippens fisica 7e_diapositivas_05bTippens fisica 7e_diapositivas_05b
Tippens fisica 7e_diapositivas_05b
 
Condensadores
CondensadoresCondensadores
Condensadores
 
Circuitos ley de ohm
Circuitos ley de ohmCircuitos ley de ohm
Circuitos ley de ohm
 
Lineas de transmision elementos constituyentes
Lineas de transmision elementos constituyentesLineas de transmision elementos constituyentes
Lineas de transmision elementos constituyentes
 
Capítulo II de Física II - Campo Eléctrico - Definitivo
Capítulo II de Física II - Campo Eléctrico - DefinitivoCapítulo II de Física II - Campo Eléctrico - Definitivo
Capítulo II de Física II - Campo Eléctrico - Definitivo
 
Trabajo y energía
Trabajo y energíaTrabajo y energía
Trabajo y energía
 
Corriente alterna
Corriente alternaCorriente alterna
Corriente alterna
 
La corriente eléctrica
La corriente eléctricaLa corriente eléctrica
La corriente eléctrica
 
Ondas Sonoras
Ondas SonorasOndas Sonoras
Ondas Sonoras
 
04 diodo
04 diodo04 diodo
04 diodo
 
Importancia en los capacitores de
Importancia en los capacitores deImportancia en los capacitores de
Importancia en los capacitores de
 
Laplaciano de una función escalar
Laplaciano de una función escalarLaplaciano de una función escalar
Laplaciano de una función escalar
 
Ejercicios Para Parcial
Ejercicios Para ParcialEjercicios Para Parcial
Ejercicios Para Parcial
 
Ecuaciones de nodos
Ecuaciones de nodosEcuaciones de nodos
Ecuaciones de nodos
 
Ca tema 1 nvo
Ca tema 1 nvoCa tema 1 nvo
Ca tema 1 nvo
 

Ähnlich wie Funciones amigas en C

Capitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en cCapitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en cecastelocc
 
Intro classes(1)
Intro classes(1)Intro classes(1)
Intro classes(1)claudiocj7
 
Clase lenguaje c xxxxxx
Clase lenguaje c xxxxxxClase lenguaje c xxxxxx
Clase lenguaje c xxxxxxMar15marian
 
Clase lenguaje c xxxxxx
Clase lenguaje c xxxxxxClase lenguaje c xxxxxx
Clase lenguaje c xxxxxxMar15marian
 
Clase lenguaje c
Clase lenguaje c Clase lenguaje c
Clase lenguaje c Mar15marian
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Axel
 
Repaso del lenguaje
Repaso del lenguajeRepaso del lenguaje
Repaso del lenguajeg_torrealba
 
Linq
LinqLinq
Linqblo85
 
Linq
LinqLinq
Linqblo85
 
Repaso del lenguaje C++
Repaso del lenguaje C++Repaso del lenguaje C++
Repaso del lenguaje C++g_torrealba
 
Sobrecarga de operadores
Sobrecarga de operadoresSobrecarga de operadores
Sobrecarga de operadoresr0na91
 

Ähnlich wie Funciones amigas en C (20)

Apunfun2
Apunfun2Apunfun2
Apunfun2
 
Estructuras y clases
Estructuras y clasesEstructuras y clases
Estructuras y clases
 
Capitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en cCapitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en c
 
Intro classes(1)
Intro classes(1)Intro classes(1)
Intro classes(1)
 
Clase lenguaje c xxxxxx
Clase lenguaje c xxxxxxClase lenguaje c xxxxxx
Clase lenguaje c xxxxxx
 
Clase lenguaje c xxxxxx
Clase lenguaje c xxxxxxClase lenguaje c xxxxxx
Clase lenguaje c xxxxxx
 
Clase lenguaje c
Clase lenguaje c Clase lenguaje c
Clase lenguaje c
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 
Repaso del lenguaje
Repaso del lenguajeRepaso del lenguaje
Repaso del lenguaje
 
Linq
LinqLinq
Linq
 
Linq
LinqLinq
Linq
 
Linq
LinqLinq
Linq
 
Curso9 estructuras
Curso9 estructurasCurso9 estructuras
Curso9 estructuras
 
Curso9 estructuras
Curso9 estructurasCurso9 estructuras
Curso9 estructuras
 
Repaso del lenguaje C++
Repaso del lenguaje C++Repaso del lenguaje C++
Repaso del lenguaje C++
 
Sobrecarga de operadores
Sobrecarga de operadoresSobrecarga de operadores
Sobrecarga de operadores
 
Encuentro Linux 2011
Encuentro Linux 2011Encuentro Linux 2011
Encuentro Linux 2011
 
!Prograc7
!Prograc7!Prograc7
!Prograc7
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 

Kürzlich hochgeladen

Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Marketing BRANDING
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 

Kürzlich hochgeladen (20)

Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 

Funciones amigas en C

  • 1. UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE INGENIERIA MECANICA COMPUTACION II MB_544 Tema: FUNCIONES AMIGAS Ing. Daniel Osorio Maldonado
  • 2.
  • 3.
  • 4. Para declarar una función amiga simplemente se antepone la palabra friend al prototipo de la función. Sintaxis: class nombre_clase { friend funcion_amiga ( ); { (sentencias ) } // Considere el siguiente ejemplo #include<iostream.h> #include<conio.h> #include<iomanip.h> #include<stdlib.h> class CLASS{ private: int a; int b; public: CLASS(int i,int j)//constructor {a=i;b=j;}
  • 5. friend int sumaCLASS(CLASS X) //funcion Amiga {return X.a + X.b; } friend int restaCLASS(CLASS X) { return X.a - X.b; } friend int divisionCLASS(CLASS X){ if(X.b) //verifica si es cierto que ´b´no es cero return X.a % X.b; else{ cout<<&quot;No Hay division por cero&quot;; exit(0);} } };
  • 6. main(){ int m,n; cout<<&quot;Ingrese el valor de a:&quot;;cin>>m; cout<<&quot;Ingrese el valor de b:&quot;;cin>>n; CLASS X(m,n); cout<<setw(5);//Establece un ancho de 5 int X1=sumaCLASS(X);//Legal int X2=restaCLASS(X);//Legal int X3=divisionCLASS(X);//ILegal cout<<&quot;La suma es: &quot;<<X1<<setw(3)<<endl <<&quot;La resta es: &quot;<<X2<<setw(3)<<endl <<&quot;El resto es:&quot;<<X3<<setw(3); // <<&quot;EL producto es: &quot;<<X3<<setw(3); getch(); }
  • 7. /* El siguiente programa permitirá tener una idea concreta de la forma como se aplica una funcion amiga */ #include<iostream.h> #include<conio.h> #include<iomanip.h> #include<stdlib.h> class myclass{ private: int n,d; public: myclass(int i,int j){ n=i;d=j;} friend int isfactor(myclass ob); };
  • 8. “ Aquí está la definición de la función amiga. Devuelve verdadero si d es un factor de n. Observe que en la definición de isfactor( ) no se utiliza la palabra clave friend” int isfactor(myclass ob){ if(!(ob.n%ob.d)) return 1; else return 0; }
  • 9. main() { myclass ob1(10,2),ob2(13,3); if(isfactor(ob1)) cout<<&quot;2 es un factor de 10 &quot;; else cout<<&quot;2 no es un factor de 10 &quot;; if(isfactor(ob2)) cout<<&quot;3 es un factor de 13 &quot;; else cout<<&quot;3 no es un factor de 13 &quot;; getch(); }
  • 10. #include <iostream.h> #include <conio.h> class dat{ int dato; public: friend void cargar(dat & , int x); void visualizar(); }; void dat::visualizar(){ cout<<&quot; El Valor Visualizado es: &quot;; cout<<dato; }
  • 11. void cargar(dat &t, int x) // pasa un objeto de tipo dat {t.dato=x;} imain() { int w; dat t; cout<<&quot;Ingrese el Valor del dato t= : &quot;;cin>>w; cargar(t, w); t.visualizar(); getch(); }
  • 12. /* Uso de la funcion amiga en una serie con factorial */ #include<iostream.h> #include<conio.h> class SFa{ private: int i,N; float S; public: SFa(int x); friend long Facto(SFa Z) {if(Z.N==1) return(1); else return(Z.N*(Facto(Z.N-1))); }
  • 13. float Suma(int N); //void Show(int N); }; SFa::SFa(int x) {N=x;} float SFa::Suma(int N){ S=0; for(i=1;i<=N;i++) S=S+i*1.0/Facto(i); return(S); } //void SFa::Show(int N) //{cout<<S;} // Pruebe ud con show y haga las modificaciones del caso
  • 14. main() { int M; cout<<&quot;Ingrese el numero de términos:&quot;; cin>>M; SFa SF(M); cout<<&quot;La suma es &quot;<<SF.Suma(M); getch(); }
  • 15. // Se trata de saber cual es mas rápido o un tractor o un coche #include<iostream.h> #include<conio.h> class tractor ; class car { int possengers; int speed; public: car(int p , int s) { possengers=p; speed=s; } friend int sp_greater(car c ,tractor t); } ;
  • 16. int sp_greater(car c , tractor t) { return (c.speed-t.speed); } main() { int t ; car c1(6,55),c2(2,120); tractor t1(10000,55),t2(20000,72); cout<<&quot;comparando c1 y t1 :&quot;; t=sp.greater(c1,t1); if (t<0) cout<<&quot;el tractor es mas rapido &quot;; else
  • 17. if (t==0) cout<<&quot;la velocidad del tractor y del coche son iguales&quot; ; else cout<<&quot;el coche es mas rapido &quot;; cout<<&quot;comparando c2 y t2 &quot;; t=sp_greater(c2,t2); if(t<0) cout<<&quot;el tractor es mas rapido &quot;; else if(t==0) cout<<&quot;la velocidad del coche y del tractor es la misma&quot;; else cout<<&quot;el coche es mas rapido &quot;; getch(); }
  • 18. //Una aplicación con Números complejos simple #include<iostream.h> #include<conio.h> #include<conio.h> class complejo{ float real; float imag; public: complejo(float a,float b); void show(); friend void suma(complejo x,complejo y, complejo &z); }; complejo::complejo(float a,float b) { real =a; imag=b; } void complejo::show(){ cout<<real<<&quot; + &quot;<<imag<<&quot;i&quot;; }
  • 19. void suma(complejo x,complejo y,complejo &z) {z.real=x.real+y.real; z.imag=x.imag+y.imag; } main(){ complejo x(1.0,2.0); complejo y(2.0,1.0); complejo z(0,0); cout<<&quot;Suma de : &quot;; x.show(); cout<<&quot; =&quot;; y.show(); cout<<&quot; =&quot;; suma(x,y,z); z.show(); getch(); /*Realice las modificaciones para valores no constantes y para valores aleatorios*/