Baixe o app para aproveitar ainda mais
Prévia do material em texto
1.Fazer uma função que a soma n primeiros termos da série abaixo: 2 2 4 6 10 16 26 . . . #include<iostream> using namespace std; int fibo(int n) { int s,nt,a,b,c; if(n==1) s=2; else if(n==2) s=4; else { s=4 a=2;b=2; for(nt=3;nt<=n;nt++) { c=a+b; s=s+c; a=b; b=c; } } return s; } 2. Fazer uma função que calcule os dois maiores elementos divisíveis por 5 distintos de posição ímpar do vetor A(n<=100); void vetor( int a[100],int n, int& m1, int& m2) { int i; m1=0;m2=0; for(i=0;i<n;i++) if(i%2!=0 && a[i]%5==0) if(a[i]>m1) { m2=m1; m1=a[i]; } eles if(a[i]>m2 && a[i]!=m1) m2=a[i]; return; } 3. Fazer uma função que calcule a porcentagem de elementos pares da penúltima linha da matriz e a soma dos elementos da segunda linha e os elementos da última coluna da matriz Bm*n(m<=20,n<=25); void matriz(int b[20][25], int m,int n, float *porc, int *so) { int i,j,ne; ne=0; *so=0; for(i=0;i<m;i++) for(j=0;j<n;j++) { if(b[i][j]%2==0&&i==m-2) ne++; if(i==1 || j==n-1) *so=*so+b[i][j]; } *porc=ne*100/n; } 4. Fazer um programa que: . Ler um número de termos/chamar a primeira função por valor/mostrar o valor; . Ler o número de elementos/gerar o vetor A/chamar a segunda função por referência/mostrar os vaores; . Ler a ordem da matriz/gerar a matriz/chamar a terceira função por ponteiro/mostrar os valores. int main() { int n,so,a[100],b[20][25],soma,ma1,ma2,i,j,m; float porc2; cout<<“\n digite o numero termos”; cin>>n; so=fibo(n); cout<<“\n soma= “<<so; cout<<“\n digite o numero de elementos”; cin>>n; for(i=0;i<n;i++) { cout<<“\n digite um numero inteiro”; cin>>*(a+i); // cin>>a[i]; } vetor(a,n,ma1,ma2); cout<<“\n ma1= ”<<ma1; cout<<“\n ma2= ”<<ma2); cout<<“\n digite a ordem da matriz”; cin>>m>>n; for(i=0;i<m;i++) for(j=0;j<n;j++) { cout<<“\n digite um numero inteiro”; cin>>b[i][j]; } matriz(b,m,n,&porc2,&soma); cout<<“\n porc2= ”<<porc2; cout<<“\n soma= ”<< soma; } Exe2: 1. Fazer uma função para calcular o valor do número (pi), com precisão de 0.0001, usando a série: PI = 4 - 4/3 + 4/5 - 4/7 + 4/9 - . . . Para obter a precisão desejada, adicionar apenas os termos cujo valor absoluto seja maior ou igual a 0.0001. #include<iostream> using namespace std; float calcula() { int s,d,sinal; s=0;d=1;sinal=1; while(4/d>=0.0001) { s=s+(float)4*sinal/d; d=d+2; sinal=(-1)*sinal; } return s; } 2. Fazer uma função de n(n<=60) notas que: a) calcule a freqüência absoluta e a freqüência relativa de cada nota; Obs: Os valores das notas inteiras variam (de 0 a 10) Obs.: 1 - freqüência absoluta de uma nota e o número de vezes que ela aparece no conjunto de dados; 2 - freqüência relativa é a freqüência absoluta dividida pelo numero total de dados. void vetor(int *nota,int n,int *fa, float *fr) { int i,aux; for(i=0;i<11;i++) fa[i]=0; for(i=0;i<n;i++) { aux=nota[i]; fa[aux]=fa[aux]+1 } for(i=0;i<11;i++) fr[i]=fa[i]*100/n; return; } 3. Fazer uma função que calcule uma matriz modificada D(m,n+1), sendo que os elementos de (n+1)-és ima coluna são formados com o produto dos elementos da mesma linha a partir da matriz Cm*n(m<=20,n<=10). Exemplo: C 2 3 4 5 D 2 3 6 4 5 20 void matriz(float c[ ][10],float d[][11], int m,int n) { int i,j; for(i=0;i<m;i++) { d[i][n]=1; for(j=0;j<n;j++) { d[i][j]=c[i][j]; d[i][n]=d[i][n]*d[i][j]; } } return; } 4. Fazer um programa que: . Chamar a primeira função por valor/mostrar o valor; . Ler o número de elementos/gerar o vetor/chamar a segunda função por referência/mostrar os valores; . Ler a ordem/gerar a matriz/chamar a terceira função por ponteiros/mostrar os valores. int main() { float so,fr[11],c[20][10],d[20][11]; int nota[60],fa[11],n,i,j; so=calcula(); cout<<“\n pi= ”<<so; cout<<“\n Digite o numero de notas”; cin>>n; for(i=0;i<n;i++) { cout<<“\n digite a nota variando de 0 a 10”; cin>>*(nota+i); } vetor(nota,n,fa,fr); for(i=0;i<11;i++) cout<<“ “<<fa[i]; for(i=0;i<11;i++) cout<<“ “<<fr[i]; cout<<“\n digite a ordem “; cin>>m>>n; for(i=0;i<m;i++) for(j=0;j<n;j++) { cout<<“\n Digite um valor”; cin>>c[i][j]; } matriz(c,d,m,n): for(i=0;i<m;i++) for(j=0;j<=n;j++) cout<<“\n d= “<<d[i][j]; } 1.Fazer uma função que escreva a soma dos n primeiros termos da série abaixo: S= 3!/2 - 5!/5 + 7!/14 -9!/41 -. . i=i+2 nu=nu*(i-1)*i d=3*d-1 sinal=(-1)*sinal s=s+nu*sinal/d #include<iostream> using namespace std; float serie(int n) { int nu,nt,i,d,sinal; float s; s=0;i=3; nu=6; d=2; sinal=1; for(nt=1;nt<=n;nt++) { s=s+nu*sinal/d; i=i+2; nu=nu*(i-1)*i; d=3*d-1; sinal=(-1)*sinal; } return s; } 2ª. Fazer uma função que leia a idade, altura e o sexo. O último dado que não entrará tem idade igual a -1. Calcule: · A porcentagem de mulheres com altura inferior a 1.67 e idade igual a 26 anos; · Altura do homem de menor idade. void calcula( float& porc, float& aux) { int id,nm,tm,mei float alt; char sexo; tm=0;nm=0;mei=120; cout<<“\n digite idade”; cin>>id; while(id!= -1) { cout<<“\n digite altura e sexo”; cin>>alt>>sexo; if(sexo==’f’) { tm++; if(alt<1.67 && id==26) nm++; } if(sexo==' m '&&id<mei) { mei=id; aux=alt; } cout<<“\n digite idade e id=-1 exit”; cin>>id; } porc=nm*100/tm; return; } 3ª. Fazer uma função que calcule um segundo vetor pegando os elementos divisíveis por 3 do vetor A(n<=100) lido; void vetor(int *a,int n, int *b, int& k) { int i; k=0; for(i=0;i<n;i++) if(a[i]%3==0) { b[k]=a[i]; k++; } return; } 4ª. Fazer uma função que calcule a média dos elementos pares da diagonal secundária da matriz Cm*m(m<=20) e o menor elemento divisível por 5 acima da diagonal secundária. void matriz(int c[][20],int m,float *med,int *me5) { int i,j,so,ne; so=0;ne=0;*me5=100; for(i=0;i<m;i++) for(j=0;j<m;j++) { if(i+j==m-1 && c[i][j]%2==0) { ne++; so=so+c[i][j]; } if(c[i][j]<*me5 && c[i][j] % 5 ==0 && i+j<m-1) *me5 = c[i][j]; } *med=so/ne; return; } 5.Fazer um programa que: .Ler o número de termos/chamar a primeira função por valor/mostrar o valor; .Chamar a segunda função por referência/mostrar os valores; .Ler o número de elementos/gerar o vetor/chamar a terceira função por referência/mostrar o vetor; .Ler a ordem da matriz/gerar a matriz/chamar a quarta função por ponteiros/mostrar os valores. a a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 a30 a31 a32 a33 dp i=j acdp i<j abdp i>j ds i+j=m-1 abds i+j>m-1 acds i+j<m-1 int main() { float s,porcf,auxh,media int a[100],b[100],c[20][20],n,m,med5,i,j,k1; cout<<“\n digite o numero de termos”; cin>>n; s=serie(n); cout<<“\n soma= ”<<s; calcula(porcf,auxh); cout<<“\n porcf= <<”<<porcf; cout<<“\n auxh= ”<<auxh; cout<<“\n digite o numero de elementos”; cin>>n; for(i=0;i<n;i++) { cout<<“\n digite um numero inteiro”; cin>>*(a+i)); //cin>>a[i]; } vetor(a,n,b,k1); for(i=0;i<k1;i++) cout<<“ “<<b[i]; cout<<“\n digite a ordem”; cin>>m; for(i=0;i<m;i++) for(j=0;j<m;j++) { cout<<“\n digite um valor inteiro”; cin>>c[i][j]; } matriz(c,m,&media,&med5); cout<<“\n media= ”<<media; cout<<“\n med5= ”<<med5; } 1. Fazer uma função que escreva a soma dos n primeiros termos da série abaixo: S= 24! /2 – 26!/4 + 28!/10 – 210!/28 + . . . i=i+2 e=e*(i-1)*i d=3*d-2 sinal=(-1)*sinal s=s+pow(2,e)*sinal/d #include <iostream> #include<math.h> using namespace std; float serie(int n) { int nt,e,i,sinal; float s; s=0; i=4; e=24; d= 2; sinal=1; for(nt=1;nt<=n;nt++) { s=s+pow(2,e)*sinal/d; i=i+2; e=e*(i-1)*i; d=3*d-2; sinal=(-1)*sinal; } return s; } 2. Fazer uma função que calcule um vetor pegando a soma dos elementos de cada linha da matriz Am*n(m<=20,n<=25); void vetor(float a[][25],int m,int n, float *vet) { int i,j; for(i=0;i<m;i++) { vet[i]=0; for(j=0;j<n;j++) vet[i]=vet[i] + a[i][j]; } return; } 3. Fazer uma função que calcule o produto dos elementos de valores entre 10 e 20 da diagonal secundária e o menor elemento ímpar acima da diagonal secundária da matriz Cm*m(m<=20); void matriz(int c[][20],int m, int *prod , int *me) { int i,j; *prod=1; *me=101; for(i=0;i<m;i++) for(j=0;j<m;j++) { if(i+j==m-1 && c[i][j]>10 && c[i][j]<20) *prod=*prod*c[i]j]; if(c[i][j]<*me&&c[i][j]%2!=0&&i+j<m-1) *me=c[i][j]; } return; } 4. Fazer um programa que: · Ler o númerode termos/chamar a primeira função por valor/mostrar o valor; · Ler a ordem da matriz Am*n/Gerar a matriz/Chamar a segunda função por referência/Mostrar o vetor; · Ler a ordem da matriz Cm*n/Gerar a matriz/Chamar a terceira função por ponteiro/mostrar os valores. int main() { int n,c[20][20],i,j,m,produto,mei; float s,a[20][25],vet[20]; cout<<”\n digite o numero de termos”; cin>>n; s=serie(n); cout<<”\n soma= “<<s; cout<<”\n Digite a ordem”; cin>>m>>n; for(i=0;i<m;i++) for(j=0;j<n;j++) { cout<<”\n Digite um valor”; cin>>a[i][j]; } vetor(a,m.n,vet); for(i=0;i<m;i++) cout<<vet[i]<<” “; cout<<”\n digite a ordem”; cin>>m; for(i=0;i<m;i++) for(j=0;j<m;j++) { cout<<”\n Digite um num. Inteiro”; cin>>c[i][j]; } matriz(c,m,&produto,&mei); cout<<”\n produto= “<<produto; cout<<”\n mei = “<<mei; } 1.13 - Funções recursivas Uma função é dita recursiva se for definida em termos dela mesma. Isto é, uma função é recursiva quando dentro dela está presente uma instrução de chamada a ela própria. Ex: 1 - Escrever uma função que calcula o fatorial de um número. #include <iostream> using namespace std; int fatorial (int n) { int fat; if (n<=1) fat=1; else fat= n*fatorial(n-1); 5*4*3*2*1=120 return fat; } int main() { int n,fat; cout<<"\nDigite um numero inteiro"; cin>>n; fat=fatorrial(n); cout<<“\n fat= ”<<fat; cout<<"\nAperte enter"; } Quando o programa for executado a função fatorial será acessada repetidamente, uma vem em main e (n-1) vezes dentro dela mesma apesar do usuário não se preocupar com isso. Quando um programa recursivo é executado, as chamadas das funções recursivas não são executadas imediatamente. Elas são colocadas em uma pilha (stack) até que a condição de término da recursão seja encontrada. As chamadas da função são executadas, então, em ordem inversa, à medida que forem retiradas (popped off) da pilha. Quando uma expressão fatorial for avaliada recursivamente, as chamadas de função serão executadas da seguinte ordem: n! = n*(n-1)! (n-1)! = (n-1)*(n-2)! (n-2)! = (n-2)*(n-3)! 2! = 2*1! Os valores serão então devolvidos na seguinte ordem: 1! = 1 2! = 2*1! = 2*1 = 2 3! = 3*2! = 3*2 = 6 4! = 4*3! = 4*6 = 24 Ex2. 1. Fazer uma função que calcula soma de n; #include <iostream> using namespace std; int soma(int n) { int s; if(n==1) s=0; else s=n + soma(n-1); return s; } 2.Fazer um progrma que: . Ler N/ chama a função recursiva/mostrar o valor. int main() { int n,s; cout<<“\n digite n”; cin>>n; s=soma(n); cout<<“\n so= ”<<s; } Ex.2 - Imprime uma frase de ordem inversa a que foi lida. #include <iostream> #include <conio.h> using namespace std; void invert( ) { char ch; if ((ch=getche( ) )!= 'x') invert( ); cout<<ch<<"\a"; } int main() { cout<<"\n"; invert( ); cout<<"\n Aperte qualquer tecla"; } Exemplos: 1ª. Escreva uma função para gerar uma tabela com os valores do seno de um ângulo em radianos, utilizando a série de Mca-Laurin truncada, apresentada a seguir: Sen = - /6 + /120 - /5040 Obs.: Os valores dos ângulos devem variar de 0,0 a 6,3 inclusive 0 e 6,3 de 0,1 em 0,1. #include<iostream> #include<math.h> using namespace std; void mcalaurin() { float teta,seno; teta=0; while(teta<=6.3) { seno=teta -pow(teta,3)/6 +pow(teta,5)/120-pow(teta,7)/5040; cout<<”\n teta= “<<teta<<” seno= “<<seno; teta=teta+0.1; } return; } 2ª. Fazer uma função que calcule os dois menores elementos divisíveis por 5 distinos de posição ímpar; void vetor(int *a,int n,int& m1,int& m2) { int i; m1=100;m2=100; for(i=0;i<n;i++) if(i%2!=0 && a[i]%5==0) if(a[i]<m1) { m2=m1; m1=a[i]; } else if(a[i]<m2&&a[i]!=m1) m2=a[i]; return; } 3ª. Fazer uma função que calcule o maior elemento par da diagonal secundária e o produto dos elementos ímpares abaixo da diagonal principal da matriz bm*m(m<=20); void matriz(int b[][30],int m, int *map, int *prod) { int i,j; *map=0; *prod=1; for(i=0;i<m;i++) for(j=0;j<m;j++) { if(b[i][j]>*map && b[i][j]%2==0 && i+j==m-1) *map=b[i][j]; if(b[i][j]%2!=0 &&i>j) *prod=*prod*b[i][j]; } return; } 4. Fazer um programa que: · Chamar a primeira função por valor; · Ler o número de elementos/gerar o vetor/chamar a segunda função por referência/mostrar os valores; · Ler a ordem/gerar a matriz/chamar a terceira função por ponteiros/mostrar os valores. int main() { int i,j,n,m,a[100],b[30][30],maiorp,produto,ma1ma2; mcalaurin(); cout<<”\n digite o numero de elementos”; cin>>n; for(i=0;i<n;i++) { cout<<”\n Digite um num. Inteiro”; cin>>*(a+i); } vetor(a,n,ma1,ma2); cout<<”\n ma1= “<<ma1; cout<<”\n ma2= “<<ma2; cout<<”\n Digite a ordem”; cin>>m; for(i=0;i<m;i++) for(j=0;j<m;j++) { cout<<”\n Digite um num inteiro”; cin>>b[i][j]; } matriz(b,m,&maiorp,&produto); cout<<”\n maiorp = “<<maiorp; cout<<”\n produto= “<<produto; } 1ª. Fazer uma função que calcule a soma dos n primeiros termos da série: 3 3 4 5 7 10 15 . . . #include<iostream> using namespace std; int fibo(int n) { int nt,a,b,c,so; if(n==1) so=3; else if(n==2) so=6; else { so=6;a=3;b=3; for(nt=3;nt<=n;nt++) { c=a+b-2; so=so+c; a=b; b=c; } return so ; } 2ª.Fazer uma função que calcule que os três maiores elementos divisíveis por 5 distintos do vetor A(n<=100); void vetor(int *a,int n, int& m1,int& m2,int& m3) { int i; m1=0;m2=0;m3=0; for(i=0;i<n;i++) if(a[i]%5==0) if(a[i]>m1) { m3=m2; m2=m1; m1=a[i]; } else if(a[i]>m2&&a[i]!=m1) { m3=m2; m2=a[i]; } else if(a[i] >m3&&a[i]!=m1 &&a[i]!=m2) m3=a[i]; return; } 3ª. Fazer uma função que calcule o maior elemento par abaixo da diagonal secundária e a média de elementos ímpares da diagonal secundária da matriz bm*m(m<=20); a a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 a30 a31 a32 a33 dp i=j acdp i<j abdp i>j ds i+j=m-1 abds i+j>m-1 acds i+j<m-1 void matriz (int b[][20],int m, int *maip,float *med) { int i,j,so,ne; so=0;ne=0;*maip=0; for(i=0;i<m;i++) for(j=0;j<m;j++) { if(b[i][j]>*maip && b[i][j]%2==0 && i+j>m-1) *maip=b[i][j]; if(i+j==m-1 && b[i][j]%2!=0) { so=so=b[i][j]; ne++; } } *med=so/ne; } 4º. Fazer um programa que: · Ler o número de termos/chamar a primeira função por valor/mostrar o valor; · Ler o número de elementos/gerar o vetor/chamar a segunda função por referência/mostrar os valores; · Ler a ordem/gerar a matriz/chamar a terceira função por ponteiro/mostrar os valores. int main() { int i,j,m,n,so,a[100],b[20][20],ma1,ma2,ma3,maiorp; float media; cout<<”\n Digite o num de termos”; cin>>n so=fibo(n); cout<<”\n soma= “<<so; cout<<”\n Digite o num de elemenos”; cin>>n; for(i=0;i<n;i++) { cout<<”\n digite um num inteiro”; cin>>*(a+i); } vetor(a,n,ma1,ma2,ma3); cout<<”\n ma1= “<<ma1; cout<<”\n ma2= “<<ma2; cout<<”\n ma2= “<<ma2; cout<<”\n Digite a ordem”; cin>>m; for(i=0;i<m;i++) for(j=0;j<m;j++) { cout<<”\n Digite um num inteiro”; cin>>b[i][j]; } matriz(b,m,&maiorp,&media); cout<<”\n maiorp= “<<maiorp; cout<<”\n media= “<<media); } Simulado 1ª. Fazer uma função que calcule a soma dos n primeiros termos da série: S=4!/2 – 6!/4 + 8!/10 – 10!/28 + . . . i=i+2 nu=nu*(i-1)*i d=3*d -2 sinal=(-1)*sinal s=s+nu*sinal/d #include<iostream> using namespace std; float serie(int n) { int nt,nu,d,i,sinal; float s; s=0;i=4;nu=24;d=2;sinal=1; for(nt=1;nt<=n;nt++) { s=s+nu*sinal/d; i=i+2; nu=nu*(i-1)*i; d=3*d -2; sinal=(-1)*sinal; } return s; } 2ª. Fazer uma função que calcule um vetor a partir do produto dos elementos de cada linha da matriz am*n(m<=20,n<=25); void vetor(float a[20][25], int m,int n, float *vet) { int i,j; for(i=0;i<m;i++) { vet[i]=1; for(j=0;j<n;j++) vet[i]=vet[i]*a[i][j]; } return; } 3ª. Fazer uma função que calcule a porcentagem de elementos de valores superiores a média da matriz bm*n(m<=20,n<=25); void matriz( float b[20][25],int m.int n, float *porc) { int i,j,nesm; float med,so; so=0;nesm=0; for(i=0;i<m;i++) for(j=0;j<n;j++) so=so+ b[i][j]; med=so/(m*n); for(i=0;i<m;i++) for(j=0;j<n;j++) if(b[i][j]>med) nesm++; *porc=nesm*100/(m*n); return; } 4º. Fazer um programa que: · Ler o número de termos da série/chamar a primeira função por valor/mostrar o valor; · Ler o número de elementos/gerar o vetor/chamar a segundafunção por referência/mostrar o vetor; · Ler a ordem da matriz/gerar a matriz/chamar a terceira função por ponteiro/mostrar o valor; int main() { int i,j,n,m; float a[20][25],b[20][25],vet[20],porcent,soma; cout<<”\n Digite o num de termos”; cin>>n; soma=serie(n); cout<<”\n soma= “<<so; cout<<”\n Digite a ordem”; cin>>m>>n; for(i=0;i<m;i++) for(j=0;i<n;j++) { cout<<”\n Digite um valor”; cin>>a[i][j]; } vetor(a,m,n,vet); for(i=0;i<m;i++) cout<<” “<<vet[i]; cout<<”\n Digite a ordem”; cin>>m>>n; for(i=0;i<m;i++) for(j=0;i<n;j++) { cout<<”\n Digite um valor”; cin>>b[i][j]; } matriz(b,m,n,&porcent); cout<<”\n porcent= “<<porcent; }
Compartilhar