Você está na página 1de 18

UNIVERSIDADE ESTADUAL DE MONTES CLAROS Centro de Cincias Exatas e Tecnolgicas CCET Curso Sistemas de Informao

Vetores e Matrizes

Vctor de Freitas Arruda Professora Gilmara Dias Algoritmos e Estruturas de Dados Montes Claros MG Abril 2014

Vctor de Freitas Arruda

Vetores e Matrizes

Montes Claros MG Abril 2014

Pg. 140 1. Faa um programa que leia cinco grupos de quatro valores (A,B,C,D) e mostre-os na ordem lida. Em seguida, organize-os em ordem crescente e decrescente. #include <stdio.h> #include <stdlib.h> int main(){ int vet[4], i, j, p, cont5, troca, x=1; for(cont5=0;cont5<=4;cont5++){ printf("\nDigite os 4 valores do %d vetor: ", x); for(i=0;i<=3;i++){ scanf("%d", &vet[i]); } printf("O vetor %d na ordem lida: ", x); for(i=0;i<=3;i++){ printf("%d ", vet[i]); } printf("\n"); for(p=0;p<i;p++){ for(j=p+1;j<i;j++){ if(vet[p]>vet[j]){ troca=vet[p]; vet[p]=vet[j]; vet[j]=troca; } } } printf("O vetor %d crescente: ", x); for(i=0;i<=3;i++){ printf("%d ", vet[i]); } printf("\n"); printf("O vetor %d decrescente: ", x); for(i=3;i>=0;i--){ printf("%d ", vet[i]); } x++; } } 6. Uma loja utiliza o cdigo V para transao vista e P para transao a prazo. Faa um programa que receba o cdigo e o valor de quinze transaes, calcule e mostre: O valor total das compras vista; O valor total das compras a prazo; O valor total das compras efetuadas; O valor da primeira prestao das compras a prazo juntas, sabendo-se que sero pagas em trs vezes.

#include<string.h> #include<stdio.h> int main() { char tipo[2]; int totv=0, totp=0, tot=0, vend=0, compv, compp; float media; printf("Digite V para compras vista e P para compras prazo: \n"); for(vend=0;vend<=14;vend++){ gets(tipo); if(strcmp(tipo,"V")==0){ printf("Digite o valor da compra vista: "); scanf("%d", &compv); totv=totv+compv; } else{ if(strcmp(tipo,"v")==0){ printf("Digite o valor da compra vista: "); scanf("%d", &compv); totv=totv+compv; } else{ if(strcmp(tipo, "P")==0){ printf("Digite o valor da compra prazo: "); scanf("%d", &compp); totp=totp+compp; } else{ if(strcmp(tipo, "p")==0){ printf("Digite o valor da compra prazo: "); scanf("%d", &compp); totp=totp+compp; } else{ printf("Digite V para compras vista e P para compras prazo: \n"); vend--; } } } } } tot=totp+totv; media=totp/3; printf("O Valor total das compras vista : %d\nO valor total das compras a prazo : %d\nO valor total das compras : %d\nO valor da primeira prestao de todas as compras a prazo : %.2f", totv, totp, tot, media); return(0); }

8. Faa um programa que receba a idade, o peso, a altura, a cor dos olhos (A Azul, P Preto, V Verde e C Castanho) e a cor dos cabelos(P Preto, C Castanho, L Louro e R Ruivo) de vinte pessoas, e que calcule e mostre: A quantidade de pessoas com idade superior a 50 anos e peso inferior a 60 quilos; A mdia das idades das pessoas com altura inferior a 1,50 metro; A percentagem de pessoas com olhos azuis entre todas as pessoas analisadas; A quantidade de pessoas ruivas e que no possuem olhos azuis.

#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ int idade=0, cont, sup50=0, olhoaz=0, contruiv=0, perc=0; float somid=0, medid=0, altura=0, contid=0, peso=0; char olhos[2], cabelo[2]; for(cont=0;cont<=19;cont++){ printf("Digite a idade da pessoa: "); scanf("%d", &idade); printf("Digite o peso (Kg) da pessoa: "); scanf("%f", &peso); printf("Digite a altura (m) da pessoa: "); scanf("%f", &altura); fflush(stdin); printf("Digite a cor dos olhos da pessoa (A-Azul, P-Preto, V-Verde, C-Castanho): "); gets(olhos); fflush(stdin); printf("Digite a cor dos cabelos da pessoa (P-Preto, C-Castanho, L-Louro, RRuivo): "); gets(cabelo); if((idade>50)&&(peso<60)){ sup50++; } if(strcmp(olhos, "A")==0){ olhoaz++; } if((strcmp(cabelo, "R")==0) && (strcmp(olhos, "A")!=0)){ contruiv++; } if(altura<1,50){ contid++; somid=somid+idade; } } medid=(somid/contid); perc=(olhoaz*100)/20; printf("\nA quantidade de pessoas com idade superior a 50 anos e com peso menor que 60 quilos %d.\n", sup50);

} 18. Foi feita uma pesquisa entre os habitantes de uma regio. Foram coletados os dados de idade, sexo (M/F) e salrio. Faa um programa que calcule e mostre: A mdia do salrio do grupo; A maior e a menor idade do grupo; A quantidade de mulheres com salrio at R$ 200,00; A idade e o sexo da pessoa que possui o menor salrio.

printf("A media da idade das pessoas com altura inferior a 1.50m %.2f.\n", medid); printf("A percentagem de pessoas com olhos azuis% %d %.\n", perc); printf("A quantidade de pessoas ruivas que no possuem olhos azuis %d.\n", contruiv); system("pause"); return(0);

Finalize a entrada de dados ao ser digitada uma idade negativa. #include <stdio.h> #include <stdlib.h> #include <string.h> int main (){ int idade, maidade=0, meidade=0, mulher_200=0, menorsalidade=0, cont=0; float sal, medsal, menorsal=0, totsal=0; char sexo[2], menorsalsex[2]; while(idade>=0){ printf("Digite a idade da pessoa: "); scanf("%d", &idade); if(meidade==0){ meidade=idade; } if(idade>0){ printf("Digite o salrio da pessoa: "); scanf("%f", &sal); if(menorsal==0){ menorsal=sal; } fflush(stdin); printf("Digite o sexo da pessoa (M-Masculino ou F-Feminino): "); gets(sexo); cont++; totsal=totsal+sal; if(idade>=maidade){ maidade=idade; } if(idade<=meidade){ meidade=idade; } if((strcmp(sexo, "F")==0) && sal<=200){ mulher_200++; } if(sal<=menorsal){

menorsalidade=idade; menorsal=sal; strncpy(menorsalsex, sexo, 2); } } } medsal=totsal/cont; printf("A mdia do salrio do grupo : %.2f.\n", medsal); printf("A menor idade do grupo %d e a maior %d.\n", meidade, maidade); printf("A quantidade de mulheres com salrio at R$ 200 %d.\n", mulher_200); printf("A pessoa que possui menor salrio do sexo %s e tem %d anos.\n", menorsalsex, menorsalidade); return(0); } 23. Faa um programa que apresente o menu de opes a seguir, que permita ao usurio escolher a opo desejada, receba os dados necessrios para executar a operao e mostre os resultados. Verifique a possibilidade de opo invlida e no se preocupe com as restries como salrio invlido. Menu de opes: 1. Novo salrio 2. Frias 3. Dcimo terceiro 4. Sair Digite a opo desejada: Na opo 1: Receber o salrio de um funcionrio, calcular e mostrar o novo salrio usando as regras a seguir: SALRIOS At R$ 210,00 De R$ 210,00 a R$ 600,00 Acima de R$ 600,00 PERCENTAGEM DE ALMENTO 15% 10% 5%

Na opo 2: Receber o salrio de um funcionrio, calcular e mostrar o valor de suas frias. Sabe-se que as frias equivalem ao seu salrio acrescido de um tero do salrio. Na opo 3: Receber o salrio de um funcionrio e o nmero de meses de trabalho na empresa, no mximo doze, calcular e mostrar o valor do dcimo terceiro. Sabe-se que o dcimo terceiro equivale ao seu salrio multiplicado pelo nmero de meses de trabalho dividido por 12. Na opo 4: Sair do programa.

#include<stdio.h> #include<stdlib.h> int main(){ int i, meses; float novosal, salfinal; printf("Menu de opes:\n1. Novo Salrio\n2. Frias\n3. Dcimo Terceiro\n4. Sair\n"); scanf("%d", &i); switch (i){ case 1: printf("Digite o salrio: "); scanf("%f", &novosal); if(novosal<=210){ novosal=(novosal*1.15); } else{ if(novosal>600){ novosal=(novosal*1.05); } else novosal=(novosal*1.10); } printf("O novo salrio : %.2f.\n", novosal); break; case 2: printf("Digite o salrio: "); scanf("%f", &novosal); novosal=(novosal/3)+novosal; printf("O valor das frias : %.2f\n", novosal); break; case 3: printf("Digite o salrio: "); scanf("%f", &novosal); printf("Digite a quantidade de meses trabalhados (No Mximo 12): "); scanf("%d", &meses); salfinal=novosal*meses; salfinal=(salfinal/12); printf("O valor do dcimo terceiro : %.2f.\n", salfinal); break; case 4: break; } system("pause"); return(0); } Pag 182 4. Faa um programa que preencha um vetor com quinze elementos inteiros e verifique a existncia de elementos iguais a 30, mostrando as posies que aparecem.

#include <stdio.h> #include <stdlib.h> int main (){ int vet[15], i; printf("Digite 15 valores: "); for(i=0;i<=14;i++){ scanf("%d", &vet[i]); } for(i=0;i<=14;i++){ if(vet[i]==30){ printf("A posio do vetor %d\n", i+1); } } system("pause"); return(0); } 9. Faa um programa que preencha trs vetores com dez posies cada um: o primeiro vetor com o nome de dez produtos; o segundo vetor, com os cdigos dos dez produtos, e o terceiro vetor, com os preos dos produtos. Mostre um relatrio apenas com o nome, o cdigo, o preo e o novo preo dos produtos que sofrero aumento. Sabe-se que os produtos que sofrero aumento so aqueles que possuem cdigo par ou preo superior a R$ 1.000,00. Sabe-se ainda que, para os produtos que satisfizerem s duas condies anteriores, cdigo e preo, o aumento ser de 20%; para aqueles que satisfizerem apenas condio de cdigo, o aumento ser de 15%; e para aqueles que satisfizerem apenas condio de preo, o aumento ser de 10%. #include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ char vetnome[10][30]; int vetcodigo[10], p; float vetpreco[10]; for(p=0;p<=9;p++){ printf("Digite o nome do produto: "); scanf("%s", &vetnome[p]); printf("Digite o cdigo do produto: "); scanf("%d", &vetcodigo[p]); printf("Digite o preo do produto: "); scanf("%f", &vetpreco[p]); } for(p=0;p<=9;p++){ if(((vetcodigo[p]%2)==0) && (vetpreco[p]>1000)){ vetpreco[p]=(vetpreco[p]*1.20);

} else{ if((vetcodigo[p]%2)==0){ vetpreco[p]=(vetpreco[p]*1.15); } else{ if(vetpreco[p]>1000){ vetpreco[p]=(vetpreco[p]*1.1); } } } } for(p=0;p<=9;p++){ printf("%s\t", vetnome[p]); printf("cdigo: %d\t", vetcodigo[p]); printf("preo: %.2f\n", vetpreco[p]); } system("pause"); return(0); } 10. Faa um programa que preencha um vetor com dez nmeros inteiros e o segundo vetor com cinco nmeros inteiros, calcule e mostre dois vetores resultantes. O primeiro vetor resultante ser composto pela soma de cada nmero par do primeiro vetor somado a todos os nmeros do segundo vetor. O segundo vetor resultante ser composto pela quantidade de divisores que cada nmero mpar do primeiro vetor tem no segundo vetor.

#include <stdio.h>

#include <stdlib.h> int main(){ int v1[10], v2[5], vr1[10], vr2[10], p, p2, somavet2=0; printf("D 10 valores para o primeiro vetor: "); for(p=0;p<=9;p++){ scanf("%d", &v1[p]); } printf("D 5 valores para o segundo vetor: "); for(p2=0;p2<=4;p2++){ scanf("%d", &v2[p2]); } for(p2=0;p2<=4;p2++){ somavet2=somavet2+v2[p2]; } for(p=0;p<=9;p++){ vr2[p]=0; } for(p=0;p<=9;p++){ if((v1[p]%2)==0){ vr1[p]=v1[p]+somavet2; } } printf("O primeiro vetor resultante : \n"); for(p=0;p<=9;p++){ if((v1[p]%2)==0){ printf("%d\t", vr1[p]); } } for(p=0;p<=9;p++){ for(p2=0;p2<=4;p2++){ if(((v1[p]%2)!=0)&&((v1[p]%v2[p2])==0)){ vr2[p]++; } } } printf("\nO segundo vetor resultante : \n"); for(p=0;p<=9;p++){ if((v1[p]%2)!=0){ printf("%d\t", vr2[p]); } } printf("\n"); system("pause"); return(0); } 16. Faa um programa que receba o nome de cinco produtos e seus respectivos preos, calcule e mostre: A quantidade de produtos com peo inferior a R$ 50,00;

O nome do produto com preos entre R$ 50,00 e R$ 100,00; A mdia dos preos dos produtos com preo superior a R$ 100,00.

#include<string.h> #include<stdio.h> #include<stdlib.h> int main(){ char nome[5][30]; float preco[5], somapreco=0, medpreco=0; int i, contpreco=0, contpreco100=0; for(i=0;i<=4;i++){ printf("Digite o nome do produto: "); scanf("%s", &nome[i]); printf("Digite o preo do produto: "); scanf("%f", &preco[i]); } for(i=0;i<=4;i++){ if(preco[i]<50){ contpreco++; } if(preco[i]>100){ contpreco100++; somapreco=somapreco+preco[i]; } } medpreco=somapreco/contpreco100; printf("A quantidade de produtos com preo inferior a R$ 50,00 %d.\n", contpreco); printf("Os produtos com preo entre R$ 50,00 e R$ 100,00 so: "); for(i=0;i<=4;i++){ if((preco[i]>=50)&&(preco[i]<=100)){ printf("%s\t", nome[i]); } } printf("\nA mdia dos produtos com preo superior a R$ 100,00 %.2f.\n", medpreco); } 25. Faa um programa que leia um vetor com quinze posies para nmeros inteiros. Depois da leitura, divida todos os seus elementos pelo maior valor do vetor. Mostre o vetor aps os clculos. #include<stdio.h> #include<stdlib.h> int main(){ int vet[15], i; float result[15], aux; printf("D 15 valores ao vetor: "); for(i=0;i<=14;i++){ scanf("%d", &vet[i]); }

for(i=0;i<=0;i++){ aux=vet[i]; } for(i=0;i<=14;i++){ if(vet[i]>aux){ aux=vet[i]; } } for(i=0;i<=14;i++){ result[i]=vet[i]/aux; } for(i=0;i<=14;i++){ printf("%.2f ", result[i]); } printf("\n"); system("pause"); return 0; } Pag 227 5. Elabore um programa que preencha a matriz 12x4 com os valores das vendas de uma loja, em que cada linha representa um ms do ano e cada coluna representa uma semana do ms. O programa dever calcular e mostrar: O total vendido em cada ms do ano, mostrando o nome do ms por extenso; O total vendido em cada semana durante todo ano; O total vendido pela loja no ano.

#include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ int l, c; char mes[12][15] ={"Janeiro","Fevereiro","Maro","Abril","Maio","Junho","Julho","Agosto","Setembro","Out ubro","Novembro","Dezembro"}; float mat[12][4], somames[12], somaano=0; printf("Digite o valor vendido nas 4 semanas de cada ms: \n"); for(l=0;l<=11;l++){ for(c=0;c<=3;c++){ scanf("%f", &mat[l][c]); } } for(l=0;l<=3;l++){ somames[l]=0; } for(l=0;l<=11;l++){ for(c=0;c<=3;c++){ somames[l]=somames[l]+mat[l][c]; } }

for(l=0;l<=11;l++){ for(c=0;c<=3;c++){ somaano=somaano+mat[l][c]; } } for(l=0;l<=11;l++){ printf("No ms de %s vendeu R$ %.2f.\n", mes[l], somames[l]); } for(l=0;l<=11;l++){ printf("\nO total vendido em cada semana do ms de %s foi:", mes[l]); for(c=0;c<=3;c++){ printf("%.2f ", mat[l][c]); } } printf("\nO total vendido pela loja no ano foi %.2f\n", somaano); system("pause"); return (0); } 10. Crie um programa que preencha uma matriz 5x5 com nmeros inteiros, calcule e mostre a soma: Dos elementos da linha 4; Dos elementos da coluna 2; Dos elementos da diagonal principal; Dos elementos da diagonal secundria; De todos os elementos da matriz.

#include <stdio.h> #include <stdlib.h> int main(){ int mat[5][5], l, c, soma=0, somadiagonalp=0, somadiagonals=0, somal4=0, somac2=0; printf("Digite os elementos da matriz: \n"); for(l=0;l<=4;l++){ for(c=0;c<=4;c++){ scanf("%d", &mat[l][c]); } } for(l=0;l<=4;l++){ for(c=0;c<=4;c++){ soma=soma+mat[l][c]; if(l==c){ somadiagonalp=somadiagonalp+mat[l][c]; } if(l+c==4){ somadiagonals=somadiagonals+mat[l][c]; } if(c==1){ somac2=somac2+mat[l][c];

} if(l==3){ somal4=somal4+mat[l][c]; } } } printf("A soma dos elementos da linha 4 : %d.\nA soma dos elementos da coluna 2 : %d.\nA soma dos elementos da diagonal principal %d.\nA soma dos elementos da diagonal secundria %d.\nA soma de todos os elementos %d.", somal4, somac2, somadiagonalp, somadiagonals, soma); system("pause"); return(0); } 14. Crie um programa que preencha uma matriz 12x13 e divida todos os elementos de cada linha pelo maior elemento em mdulo daquela linha. O programa dever escrever a matriz lida e a modificada. #include<stdio.h> #include<stdlib.h> int main(){ int mat[12][13], l, c; float result[12][13], div[12]; printf("Digite os valores para a matriz: \n"); for(l=0;l<=11;l++){ for(c=0;c<=12;c++){ scanf("%d", &mat[l][c]); div[l]=mat[l][c]; } } for(l=0;l<=11;l++){ for(c=0;c<=12;c++){ if(mat[l][c]>div[l]){ div[l]=mat[l][c]; } } } for(l=0;l<=11;l++){ for(c=0;c<=12;c++){ result[l][c]=mat[l][c]/div[l]; } } printf("A matriz sem modificaes: \n"); for(l=0;l<=11;l++){ for(c=0;c<=12;c++){ printf("%d ", mat[l][c]); } printf("\n"); } printf("A matriz modificada: \n"); for(l=0;l<=11;l++){

for(c=0;c<=12;c++){ printf("%.2f ", result[l][c]); } printf("\n"); } system("pause"); return(0); } 21. Crie um programa que preencha uma matriz 6x10, some as colunas individualmente e acumule as somas na 7 linha da matriz. O programa dever mostrar o resultado de cada coluna. #include <stdio.h> #include <stdlib.h> int main(){ int mat[6][10], l, c, vet[10]; printf("Digite os valores da matriz: \n"); for(l=0;l<=5;l++){ for(c=0;c<=9;c++){ scanf("%d", &mat[l][c]); vet[c]=0; } } for(l=0;l<=5;l++){ for(c=0;c<=9;c++){ vet[c]=vet[c]+mat[l][c]; } } for(c=0;c<=9;c++){ printf("%d\t", vet[c]); } system("pause"); return(0); } 24. Crie um programa que: Receba o preo de dez produtos e armazene-os em um vetor; Receba a quantidade estocada de cada um desses produtos em cinco armazns diferentes, utilizando uma matriz 5x10. O programa dever calcular e mostrar: A quantidade de produtos estocados em cada um dos armazns; A quantidade de cada um dos produtos estocados em todos armazns juntos; O preo do produto que possui maior estoque em um nico armazm; O menor estoque armazenado;

O custo de cada armazm. #include <stdio.h> #include <stdlib.h> int main(){ int vetpreco[10], matarmazem[5][10], l, c, totalcadaar[5], totalcadapr[10], aux[5], aux2[10], menorestoque,x=0, totalcusto[5]; printf("Digite os preos dos 10 produtos: "); for(c=0;c<=9;c++){ scanf("%d", &vetpreco[c]); } printf("Digite a quantidade de produtos armazenados em cada armazem: \n"); for(l=0;l<=4;l++){ for(c=0;c<=9;c++){ scanf("%d", &matarmazem[l][c]); } } for(l=0;l<=4;l++){ for(c=0;c<=9;c++){ totalcadaar[l]=0; totalcadapr[c]=0; } } for(l=0;l<=4;l++){ for(c=0;c<=9;c++){ totalcadaar[l]=totalcadaar[l]+matarmazem[l][c]; totalcadapr[c]=totalcadapr[c]+matarmazem[l][c]; } } for(l=0;l<=4;l++){ aux[l]=0; totalcusto[l]=0; } for(l=0;l<=4;l++){ for(c=0;c<=9;c++){ totalcusto[l]=((matarmazem[l][c])*(vetpreco[c]))+totalcusto[l]; } } for(l=0;l<=4;l++){ for(c=0;c<=9;c++){ if((matarmazem[l][c])>aux[l]){ aux[l]=matarmazem[l][c]; aux2[l]=vetpreco[c]; } } } for(l=0;l<=4;l++){ for(c=0;c<=9;c++){ menorestoque=matarmazem[l][c]; }

} for(l=0;l<=4;l++){ for(c=0;c<=9;c++){ if(menorestoque>matarmazem[l][c]){ menorestoque=matarmazem[l][c]; } } } for(l=0;l<=4;l++){ x++; printf("O total de produtos no %d armazem : %d.\n", x, totalcadaar[l]); } x=0; for(c=0;c<=9;c++){ x++; printf("O total do %d protudo : %d.\n", x, totalcadapr[c]); } x=0; for(l=0;l<=4;l++){ x++; printf("O preo do produto que possui maior estoque no %d armazem %d.\n", x, aux2[l]); } x=0; for(l=0;l<=4;l++){ x++; printf("O total do %d armazem %d.\n", x, totalcusto[l]); } printf("O menor estoque %d.\n", menorestoque); system("pause"); return(0); }

Você também pode gostar