Primeirojmeuultimoj cout meuj cout endl maximo

This preview shows page 179 - 184 out of 243 pages.

for (int j=meu.primeiro();j<=meu.ultimo();j++) cout<< meu[j]<< " "; cout << endl << "Maximo:" << meu.maximo(); return 0; } ------------------------------------------------------------------------ Comentários: Se você substituísse no template do vetor o tipo fração que vamos definido em 4.1.2, o resultado seria igual ao apresentado no sub-tópico resultado do programa em comentários. Isto é só a título de curiosidade. Você não precisa tentar implementar um tipo fração para uso neste template ainda. Resultado de teste do programa em comentários: Entre com valor da posicao:0 1 2 Entre com valor da posicao:1 5 4 Entre com valor da posicao:2 6 1 Entre com valor da posicao:3 2 8 Entre com valor da posicao:4 4 2 (1/2) (5/4) (6/1) (1/4) (2/1) Maximo: (6/1) 179
Image of page 179

Subscribe to view the full document.

Resultado do programa com o tipo float parametrizado: Entre com valor da posicao:0 1.2 Entre com valor da posicao:1 2.1 Entre com valor da posicao:2 5.3 Entre com valor da posicao:3 1.5 Entre com valor da posicao:4 1.9 1.2 2.1 5.3 1.5 1.9 Maximo:5.3 Exercícios: 1)Crie uma função membro troca que recebe como argumentos dois índices do vetor e faz a troca deles. 4.3.2. TEMPLATE DE FUNÇÃO Template de função , introduziremos tipos parametrizados na função mdc que calcula o máximo divisor comum tanto para long quanto para int e outros tipos que definam o operador %: ------------------------------------------------------------------------ //exemplo facil de templates de funcao #include <iostream.h> template<class T> T mdc(T n,T d) //maximo divisor comum //metodo de Euclides { if (n<0) n=-n; if (d<0) d=-d; while (d!=0) { 180
Image of page 180
T r=n % d; //template T %=MOD n=d; d=r; } return n; } void main(void) { int a=5; long b=6; long c=7; int d=14; cout << "mdc(5,6)=" << mdc(a,6) << "\n"; //int int cout << "mdc(2,3)=" << mdc(2,3) << "\n"; //int int || long long cout << "mdc(6,7)=" << mdc(b,c) << "\n";//long long cout << "mdc(7,14)=" << mdc(c,d) << "\n"; //long int //erro!!!! } ------------------------------------------------------------------------ //Versao que nao produz erro. //exemplo facil de templates de funcao #include <iostream.h> template<class T> T mdc(T n,T d) //maximo divisor comum //metodo de Euclides { if (n<0) n=-n; if (d<0) d=-d; 181
Image of page 181

Subscribe to view the full document.

while (d!=0) { T r=n % d; //template T %=MOD n=d; d=r; } return n; } long mdc(long m,long n); //definicao exata, long prevalece sobre int em termos de conversao //nao acrescente int mdc(int a,int b); voce tera ambiguidades e o compilador nao fara a //conversao void main(void) { int a=5; long b=6; long c=7; int d=14; cout << "mdc(5,6)=" << mdc(a,6) << "\n"; //int int cout << "mdc(2,3)=" << mdc(2,3) << "\n"; //int int || long long cout << "mdc(6,7)=" << mdc(b,c) << "\n";//long long cout << "mdc(7,14)=" << mdc(c,d) << "\n"; //long int OK, conversao. } ------------------------------------------------------------------------ Comentários: Na primeira versão do programa tudo funciona bem, com exceção da última linha, ela produz um erro que é corrigido na segunda versão do programa. Vamos explicar esse erro: Quando o compilador resolve, decide, uma chamada de função ele primeiro tentar achar uma definição exata dela (tipos já definidos) exemplo long mdc (int a,long b);. Se não houver nenhuma versão exata o compilador tenta achar uma versão com tipos paramétricos que aceite os tipos da chamada da função, no caso uma definição de template que aceitaria seria: 182
Image of page 182
template<class T1,class T2> T2 max(T2 n,T1 d) , que é um tanto perigosa em termos de operações entre tipos, por isso também não foi fornecida.
Image of page 183

Subscribe to view the full document.

Image of page 184

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern