Sunteți pe pagina 1din 18

Faculdade Adjetivo-CETEP Engenharia de Produo Mdulo I Disciplina: Programao de Computadores I Professor: Moacir Pereira

Aluna : Patrcia Dias Goes Resoluo Lista de Exerccios VETORES E MATRIZES QUESTO 1. Escreva um programa que exiba as componentes de um vetor na ordem inversa daquela em que foram armazenadas.

#include <iostream> using namespace std; int main() { int v[10],i; for(i=0; i < 10; i++){ cout<<"digite o valor na posicao"<<i<<endl; cin>>v[i]; } for(i=9; i >= 0; i--) cout<<v[i]<<" "; cout<<endl; system ("pause"); return 0; } QUESTO 2. Um vetor palndromo se ele no se altera quando as posies dos componentes so invertidas. Por exemplo, o vetor v = {1, 3, 5, 2, 2, 5, 3, 1} palndromo. Escreva uma funo que verifique se um vetor palndromo.

#include <iostream> using namespace std;

int main() { int v[10],w[10],i; for(i=0; i < 10; i++){ cout<<"digite o valor na posicao"<<i<<endl; cin>>v[i]; } for(i = 9; i >=0; i--){ cin>>w[i]; cout<< "O inverso :" <<w[i]<<; } for(i=0; i < 10; i++){ if (v[i]=w[i]) { cout<<"o vetor e palindromo";

} } system ("pause"); return 0;

} QUESTO 4. Escreva um programa que decomponha um vetor de inteiros em dois outros vetores, um contendo as componentes de valor mpar e o outro contendo as componentes de valor par. Por exemplo, se o vetor dado for v = {3, 5, 6, 8, 1, 4, 2, 3, 7} o programa deve gerar os vetores u = {3, 5, 1, 3, 7} e w = {6, 8, 4, 2}. #include <iostream> using namespace std; int main() { int v[10],i,pos; for(i=0; i < 10; i++){ cout<<"digite o valor na posicao"<<i<<endl; cin>>v[i];

} cout<<"digite a posicao do vetor q deseja deletar: "<<endl; cin>>pos; for(i=pos-1; i < 9; i++){ v[i] = v[i+1]; } for(i=0; i < 9; i++) cout<<v[i]<<" "; cout<<endl; system ("pause"); return 0; }

QUESTO 5. Escreva um procedimento que delete uma componente de ordem dada de um vetor dado. Por exemplo, se o vetor dado for v = {2, 5, 7, 10, 12, 13} e a componente a ser deletada for a de ordem 4, o programa deve fornecer o vetor v = {2, 5, 7, 12, 13}. #include <iostream> using namespace std; int main() { int v1[5],v2[5],v[10],i,k=0; for(i=0; i < 5; i++){ cout<<"digite o valor na posicao"<<i<<" do vetor 1"<<endl; cin>>v1[i]; } for(i=0; i < 5; i++){ cout<<"digite o valor na posicao"<<i<<" do vetor 2"<<endl; cin>>v2[i]; } for(i=0; i < 5; i++){

v[k++] = v1[i]; v[k++] = v2[i]; } for(i=0; i < 10; i++) cout<<v[i]<<" "; cout<<endl; system ( "pause"); return 0; }

QUESTO 6. O produto escalar de dois vetores do Rn a soma dos produtos das componentes correspondentes, isto , se u = {x1, x2, ..., xn} e v = {y1, y2, ..., yn}, o produto escalar x1.y1 + x2.y2 ... + xn.yn. Escreva uma funo que receba dois vetores do Rn, n dado, e fornea o produto escalar deles.

#include <iostream> using namespace std; int main() { int u[1000],v[1000],i,n,r=0; cout<<"digite o tamanho do vetor"<<endl; cin>>n; for(i=0; i < n; i++){ cout<<"digite o valor numero sortado da"<<i<<" do vetor 1"<<endl; cin>>u[i]; }

for(i=0; i < n; i++){ cout<<"digite o valor numero sortado da"<<i<<" do vetor 2"<<endl; cin>>v[i]; } for(i=0; i < n; i++){

r = r + u[i] * v[i]; cout<<r<<" "<<u[i]<<" "<<v[i]<<endl; } cout<<"produto escalar e "<<r<<endl; return 0; } QUESTO 7. Escreva um programa que fornea as componentes distintas de um vetor dado. Por exemplo, se o vetor dado for v = {3, 2, 1, 3, 4, 1, 5, 5, 2}, o programa deve fornecer v = {3, 2, 1, 4, 5}.

#include <iostream> #include <string> using namespace std;

int main() { int v[10],v1[10],i,j,k=0,aux; for(i=0; i < 10; i++){ cout<<"digite o valor na posicao"<<i<<endl; cin>>v[i]; } cout<<len(v)<<endl; for(i=0; i < 10; i++){ aux=1; for(j=0; j < k; j++){ if(v[i] == v1[j]) aux = 0; } if(aux) v1[k++] = v[i]; } for(i=0; i < k; i++)

cout<<v1[i]<<" "; cout<<endl; return 0; } QUESTO 8. Algumas empresas que realizam sorteios de prmios entre seus clientes o fazem atravs dos sorteios da loteria federal, sendo ganhador o nmero formado pelos algarismos das casas das unidades dos nmeros sorteados no cinco prmios da referida loteria. Por exemplo, se o sorteio da loteria federal deu como resultado os nmeros 23451, 00234, 11236, 01235 e 23452, o prmio da tal empresa seria dado ao cliente que possusse o bilhete de nmero 14652. Escreva uma funo que receba os nmeros sorteados pela loteria federal e fornea o nmero que ganhar o prmio de acordo com as regras acima.

#include <iostream>

using namespace std;

int loteria(int v[], int n){ int num=0,i,aux=1; for(i=0;i<n-1;i++) aux = aux * 10; for(i=0;i<n;i++){ num += (v[i] % 10) * aux; aux = aux / 10; } return num; }

int main() { int v[5],i; for(i=0; i < 5; i++){ cout<<"digite o valor numero sortado da"<<i<<endl;

cin>>v[i]; } cout<<loteria(v,5)<<endl; return 0; } QUESTO 9. Escreva um programa que insira um valor dado num vetor numa posio dada. Por exemplo, se o vetor for v = {3, 8, 5, 9, 12, 3}, o valor dado for 10 e a posio dada for 4, o programa deve gerar v = {3, 8, 5, 10, 9, 12, 3}.

#include <iostream>

using namespace std;

int main() { int v[11],i,pos,n; for(i=0; i < 10; i++){ cout<<"digite o valor na posicao"<<i<<endl; cin>>v[i]; } cout<<"digite o valor deseja adicionar: "; cin>>n; cout<<"digite a posicao do vetor que deseja adicionar um elemento: "; cin>>pos; for(i=10; i >= pos-1; i--){ v[i] = v[i-1]; }

v[pos-1] = n; for(i=0; i < 11; i++){ cout<<v[i]<<" "; }

return 0; } QUESTO 10. Escreva um programa que insira um valor dado num vetor ordenado de modo que o vetor continue ordenado. Por exemplo, se o vetor dado for v = {2, 5, 7, 10, 12, 13} e o valor dado for 6, o programa deve fornecer o vetor v = {2, 5, 6, 7, 10, 12, 13}.

#include <iostream>

using namespace std;

int main() { int v[11],i,pos,n; for(i=0; i < 10; i++){ cout<<"digite o valor na posicao"<<i<<" de forma ordenada"<<endl; cin>>v[i]; } cout<<"digite o valor deseja adicionar: "; cin>>n; i=10; while(v[i-1] > n){ v[i] = v[i-1]; i--; } v[i] = n; for(i=0; i < 11; i++){ cout<<v[i]<<" "; } return 0; }

QUESTO 11. . Escreva um procedimento que fornea a transposta de uma matriz dada.

#include <iostream>

using namespace std;

int main() { int v[3][3],v1[3][3],i,j; for(i=0; i < 3; i++){ for(j=0;j < 3; j++){ cout<<"digite os valores da matriz"<<endl; cin>>v[i][j]; } } for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) v1[j][i] = v[i][j]; for(i=0; i < 3; i++){ for(j=0;j < 3; j++){ cout<<v1[i][j]<<" "; } cout<<endl; } return 0; } QUESTO 12. Um dos mtodos para se estudarem as solues de um sistema linear de n equaes a n incgnitas aplica operaes elementares sobre as linhas da matriz dos coeficientes, sendo a permuta de duas linhas uma destas operaes elementares. Escreva um procedimento que permute as posies de duas linhas de uma matriz dadas.

#include <iostream>

using namespace std;

int main() { int v[3][3],i,j,l1,l2,aux; for(i=0; i < 3; i++){ for(j=0;j < 3; j++){ cout<<"digite os valores da matriz"<<endl; cin>>v[i][j]; } } cout<<"Digite as as linhas que deseja trocar"<<endl; cin>>l1; cin>>l2; for(i=0; i < 3; i++){ aux = v[l1-1][i]; v[l1-1][i] = v[l2-1][i]; v[l2-1][i] = aux; } for(i=0; i < 3; i++){ for(j=0;j < 3; j++){ cout<<v[i][j]<<" "; } cout<<endl; } return 0; }

QUESTO 13. Escreva um programa que determine o menor valor de cada uma das linhas de uma matriz dada, fornecendo o ndice da coluna que contm este menor valor. Por exemplo, se a matriz dada for 3 7 4 6

5 2

2 6

5 5

4 1

, a funo deve fornecer uma tabela do tipo Linha 1 2 3 Menor valor 3 2 1 Coluna 1 2 4

Um programa como este poderia receber os preos de diversos produtos praticados por vrios supermercados e forneceria, para cada produto, o menor preo e o supermercado que pratica este melhor preo.

#include <iostream> using namespace std; int main() { int v[3][3],i,j,l1,l2,aux; for(i=0; i < 3; i++){ for(j=0;j < 3; j++){ cout<<"digite os valores da matriz"<<endl; cin>>v[i][j]; } } cout<<"linha\tmenor preco\t\tcoluna"<<endl; for(i=0; i < 3; i++){ aux = v[i][0]; l1 = i; l2 = 0; for(j=1;j < 3; j++){ if(v[i][j] < aux){ l1 =i; l2 = j; aux = v[i][j]; }

} cout<<i<<"\t\t"<<aux<<"\t\t"<<j<<endl; } return 0; } ESTRUTURAS DE REPETIO 1. Escreva um programa que determine a soma dos quadrados dos n primeiros nmeros naturais, n dado. #include <iostream>

using namespace std;

int main() { int n,i; cout<<"Digite o valor de n"<<endl; cin>>n; for(i=1;i <= n;i++) cout<<"quadrado de "<<i<<" e "<<i*i<<endl; system ("pause"); return 0; } 2. Um nmero inteiro dito perfeito se o dobro dele igual soma de todos os seus divisores. Por exemplo, como os divisores de 6 so 1, 2, 3 e 6 e 1 + 2 + 3 + 6 = 12, 6 perfeito. A matemtica ainda no sabe se a quantidade de nmeros perfeitos ou no finita. Escreva um programa que liste todos os nmeros perfeitos menores que um inteiro n dado. #include <iostream>

using namespace std;

int main() { int n,j,i,soma; cout<<"Digite o valor de n"<<endl; cin>>n;

for(i=1;i <= n;i++){ soma = 0; for(j=1;j <= i; j++) if(i%j==0) soma = soma + j; if(i*2 == soma) cout<<i<<endl; } system ("pause"); return 0; }

3. Os sistemas de computao que gerenciam caixas de lojas e supermercados fornecem ao operador, aps a informao do valor do pagamento, o troco, em nmeros decimais, que ele deve dar ao cliente. Talvez fosse interessante que, para otimizar a utilizao das notas e das moedas de menor valor, visando a minimizar o problema da "falta de troco", o sistema fornecesse ao operador as quantidades de cada nota e de cada moeda para um "troco timo". Admitindo que o supermercado fornea tambm troco para pagamentos em cheque de qualquer valor, escreva um programa que, recebendo o valor da compra e o valor do pagamento, fornea o "troco timo" no sentido comentado acima. #include <iostream>

using namespace std;

int main() { int nota[6],i,aux,moedas[6]; double compra,pagamento,troco; cout<<"digite a quantidade de notas de R$100: "; cin>>nota[0]; cout<<"digite a quantidade de notas de R$50: "; cin>>nota[1]; cout<<"digite a quantidade de notas de R$20: "; cin>>nota[2]; cout<<"digite a quantidade de notas de R$10: "; cin>>nota[3]; cout<<"digite a quantidade de notas de R$5: "; cin>>nota[4]; cout<<"digite a quantidade de notas de R$2: "; cin>>nota[5];

cout<<"digite a quantidade de moedas de R$1,00: "; cin>>moedas[0]; cout<<"digite a quantidade de moedas de R$0,50: "; cin>>moedas[1]; cout<<"digite a quantidade de moedas de R$0,25: "; cin>>moedas[2]; cout<<"digite a quantidade de moedas de R$0,10: "; cin>>moedas[3]; cout<<"digite a quantidade de moedas de R$0,05: "; cin>>moedas[4]; cout<<"digite a quantidade de moedas de R$0,01: "; cin>>moedas[5]; cout<<"Informe o valor da compra"<<endl; cin>>compra; cout<<"digite o valor do pagamento"<<endl; cin>>pagamento; troco = pagamento - compra; nota[0] = troco/100; troco = troco - nota[0]*100; nota[1] = troco/50; troco = troco - nota[1]*50; nota[2] = troco/25; troco = troco - nota[2]*25; nota[3] = troco/10; troco = troco - nota[3]*10; nota[4] = troco/5; troco = troco - nota[4]*5; nota[5] = troco/2; troco = troco - nota[5]*2; moedas[0] = troco/1; troco = troco - moedas[0]; moedas[1] = (double)troco/0.50; troco = troco - moedas[1]*0.50; moedas[2] = (double)troco/0.25; troco = troco - moedas[2]*0.25; moedas[3] = (double)troco/0.10; troco = troco - moedas[3]*0.10; moedas[4] = (double)troco/0.05; troco = troco - moedas[4]*0.05; moedas[5] = (double)troco/0.01;

troco = troco - moedas[5]*0.01; cout<<"notas de 100\t50\t20\t10\t5\t2"<<endl; for(i=0;i<6;i++){ cout<<"\t"<<nota[i]; } cout<<endl<<endl; cout<<"moedas de 1,00\t0,50\t0,25\t0,10\t0,05\t0,01"<<endl; for(i=0;i<6;i++){ cout<<"\t"<<moedas[i]; } cout<<endl; system ("pause"); return 0; }

4. Escreva um programa que escreva todos os pares de nmeros de dois algarismos que apresentam a seguinte propriedade: o produto dos nmeros no se altera se os dgitos so invertidos. Por exemplo, 93x13 = 39x31 = 1.209. #include <iostream>

using namespace std;

int revert(int n) { int ret=0; int i=1;

while(i<=n) { ret*=10; ret+=(n%(i*10)-n%i)/i; i*=10; } return ret; }

int main() { int i,j,aux1,aux2; for(i=10;i<100;i++){ for(j=10;j<100;j++){

aux1 = revert(i); aux2 = revert(j); if(aux1*aux2 == i*j) cout<<i<<"x"<<j<<" = "<<i*j<<endl; } } system ("pause"); return 0; } 5. Escreva um programa para repetir a leitura de um nmero enquanto o valor fornecido for diferente de 0. Para cada nmero fornecido, imprimir se ele NEGATIVO ou POSITIVO. Quando o nmero 0 for fornecido a repetio de ser encerrada sem imprimir mensagem alguma. #include <iostream>

using namespace std;

int main() { int n; cout<<"Digite um valor"<<endl; cin>>n; while(n != 0){ if(n<0) cout<<"negativo"<<endl; else cout<<"positivo"<<endl; cin>>n; } system ("pause"); return 0; } 6. Um Posto de combustveis deseja determinar qual de seus produtos tem a preferncia de seus clientes. Escreva um programa para ler o tipo de combustvel abastecido (codificado da seguinte forma: 1.lcool 2.Gasolina 3.Diesel 4.Fim). Caso o usurio informe um cdigo invlido (fora da faixa de 1 a 4) deve ser solicitado um novo cdigo (at que seja vlido). Ao ser informado o cdigo do combustvel, o seu respectivo nome deve ser impresso na tela. O programa ser encerrado quando o cdigo informado for o nmero 4 escrevendo ento a mensagem: "MUITO OBRIGADO" e a quantidade de clientes que abasteceram cada tipo de combustvel. #include <iostream>

using namespace std;

int main() { int n,alcool=0,gasolina=0,diesel=0; do{ cout<<"Digite o numero do combustivel 1.alcool, 2.Gasolina, 3.Diesel ou Fim"<<endl; cin>>n; if(n==1) alcool++; else if(n==2) gasolina++; else if(n==3) diesel++; else cout<<"entrada invalida, digite novamente"<<endl; }while(n != 4); cout<<"MUITO OBRIGADO"<<endl; cout<<"alcool = "<<alcool<<"\ngasolina = "<<gasolina<<"\ndisel = "<<diesel<<endl; system ("pause"); return 0; }

7. Ler um nmero indeterminado de dados, contendo cada um, a idade de um indivduo. O ltimo dado, que no entrar nos clculos, contm o valor de idade negativa. Calcular e imprimir a idade mdia deste grupo de indivduos. #include <iostream> using namespace std; int main() { int n=0,idade; double soma=0; cout<<"Digite a idade e uma idade para finalizar"<<endl; cin>>idade; while(idade > 0){ soma = soma + idade; n++; cout<<"Digite a idade e uma idade para finalizar"<<endl; cin>>idade; } cout<<"media de idade e "<<soma/n<<endl; system ("pause");

return 0; }

S-ar putea să vă placă și