Documente Academic
Documente Profesional
Documente Cultură
UNIDADE
VETORES E MATRIZES
ROTEIRO
ROTEIRO
4 VETORES E MATRIZES
4.1 Vetores
4.2 Matrizes
2/41
4 VETORES E MATRIZES
ROTEIRO
3/41
4.1 Vetores
ROTEIRO
4/41
ROTEIRO
4.1 Vetores
ALUNO
NOTA1
NOTA2
NOTA3
NOTA4
MEDIA
4.0
6.0
5.0
3.0
4.5
9.0
8.0
9.0
6.0
8.0
3.0
5.0
4.0
2.0
3.5
6.0
7.0
5.0
8.0
6.5
4.0
6.0
6.0
8.0
6.0
7.0
7.0
7.0
7.0
7.0
8.0
7.0
6.0
5.0
6.5
6.0
7.0
2.0
9.0
6.0
5/41
4.1 Vetores
ROTEIRO
6/41
4.1 Vetores
ROTEIRO
Na linguagem C
7/41
4.1 Vetores
ROTEIRO
programa MEDIA_TURMA
var
MD [8] : real;
SOMA, MEDIA : real;
I : inteiro;
inicio
SOMA = 0;
para I de 0 at 7 passo 1 faa
leia (MD[I]);
SOMA = SOMA + MD[I];
fim para;
MEDIA = SOMA / 8;
escreva (Media = , MEDIA);
fim.
PROFESSOR: EDILSON LIMA
8/41
4.1 Vetores
ROTEIRO
Em C o portugol fica:
//programa MEDIA_TURMA
#include <stdio.h>
#include <stdlib.h>
float MD [8];
float
SOMA, MEDIA;
int
I;
main (){
SOMA = 0;
for(I = 0; I <= 7; I++){
printf("Digite a %i. nota: ",I+1);
scanf("%f", &MD[I]);
SOMA = SOMA + MD[I];
}
MEDIA = SOMA / 8;
printf("Media = %.2f\n\n",MEDIA);
system("pause");
return 0;
}
PROFESSOR: EDILSON LIMA
9/41
ROTEIRO
4.1 Vetores
ndice
Elemento
4.5
8.0
3.5
6.5
6.0
7.0
6.5
6.0
10/41
4.1 Vetores
ROTEIRO
11/41
4.1 Vetores
ROTEIRO
//programa MEDIA_TURMA
#include <stdio.h>
#include <stdlib.h>
float MD [5];
float
SOMA, MEDIA;
int
I;
main (){
SOMA = 0;
for(I = 0; I <= 4; I++){
printf("Digite a %i. nota: ",I+1);
scanf("%f", &MD[I]);
SOMA = SOMA + MD[I];
}
MEDIA = SOMA / 5;
12/41
4.1 Vetores
ROTEIRO
1.
2.
3.
4.
Como resolver:
Iniciar o contador de ndice, varivel I como 0 em um contador at 9;
Ler os 10 valores, um a um;
Verificar se o ndice par se sim multiplicar por 5, se no somar 5.
Criar a matriz B;
Apresentar os contedos das duas matrizes.
13/41
4.1 Vetores
ROTEIRO
Programa INDICE_PAR_OU_IMPAR;
var
A[10], B[10]: inteiro;
I, R: inteiro;
Inicio
para I de 0 at 9 passo 1 faa
leia A[I];
fim para;
para I de 0 at 9 passo 1 faa
R = (I div 2);
se (R = 0) ento
B[I] = A[I] * 5;
seno
B[I] = A[I] + 5;
fim se;
fim para;
para I de 0 at 9 passo 1 faa
escreva B[I];
fim para;
fim.
PROFESSOR: EDILSON LIMA
14/41
4.1 Vetores
ROTEIRO
//Programa INDICE_PAR_OU_IMPAR;
#include <stdio.h>
#include <stdlib.h>
int A[9], B[9], I, R;
main(){
for(I = 0; I <= 9; I++){
printf("Digite o %i. numero: ",I+1);
scanf("%i", &A[I]);
}
for(I = 0; I <= 9; I++){
R = I%2;
if(R == 0){
B[I] = A[I] * 5;
} else {
B[I] = A[I] + 5;
}
}
printf("\n\nO VETOR B E\n\n");
for(I = 0; I <= 9; I++){
printf("%i. numero: %i %i\n",I+1, A[I],B[I]);
}
system("pause");
return 0;
}
15/41
4.2 Matrizes
ROTEIRO
1.
2.
3.
4.
Como resolver:
Iniciar o contador de ndice, varivel I como 0 em um contador at 4;
Ler os 5 valores, um a um;
Verificar se o elemento impar; se sim efetuar a soma dos
elementos;
Apresentar o total somado de todos os elementos mpares da matriz.
16/41
4.1 Vetores
ROTEIRO
Programa ELEMENTO_IMPAR;
var
A [5]: inteiro;
R, I, SOMA: inteiro;
Inicio
SOMA = 0;
para I de 0 at 4 passo 1 faa
leia A[I];
fim para;
para I de 0 at 4 passo 1 faa
R = (A[I] div 2);
se (R = 1) ento
SOMA = SOMA + A[I];
fim se;
fim para;
escreva SOMA;
fim.
17/41
4.1 Vetores
ROTEIRO
//Programa ELEMENTO_IMPAR;
#include <stdio.h>
#include <stdlib.h>
int A[5], I, R, SOMA;
main(){
SOMA = 0;
for(I = 0; I <= 4; I++){
printf("Digite o %i. numero: ",I+1);
scanf("%i", &A[I]);
}
for(I = 0; I <= 4; I++){
R = A[I]%2;
if(R == 1){
SOMA = SOMA + A[I];
}
}
printf("\n\nA SOMA DOS VALOR E %i \n\n", SOMA);
system("pause");
return 0;
}
PROFESSOR: EDILSON LIMA
18/41
4.2 Matrizes
ROTEIRO
19/41
4.2 Matrizes
ROTEIRO
Programa ORDENA_VETOR
var
N [5]: inteiro;
I, J, X: inteiro;
inicio
para I de 0 at 4 passo 1 faa
leia (N[I]);
fim para;
para I de 0 at 3 passo 1 faa
para J de I + 1 at 4 passo 1 faa
se (N[I] > N[J]) ento
X = N[I];
N[I] = N[J];
N[J] = X;
fim se;
fim para;
fim para;
para I de 0 at 4 passo 1 faa
escreva (N[I]);
fim para;
fim.
PROFESSOR: EDILSON LIMA
20/41
4.2 Matrizes
ROTEIRO
//Programa ORDENA_VETOR;
#include <stdio.h>
#include <stdlib.h>
int N[5], I, J, X;
main(){
for(I = 0; I <= 4; I++){
printf("Digite o %i. numero: ",I+1);
scanf("%i", &N[I]);
}
for(I = 0; I <= 3; I++){
for(J = I+1; J <= 4; J++){
if(N[I] > N[J]){
X = N[I];
N[I] = N[J];
N[J] = X;
}
}
}
printf("\n\nO VETOR ORDENADO \n\n");
for(I = 0; I <= 4; I++){
printf("%i\n",N[I]);
}
system("pause");
return 0;
}
21/41
4.2 Matrizes
ROTEIRO
22/41
4.2 Matrizes
ROTEIRO
23/41
4.2 Matrizes
ROTEIRO
Programa PESQUISA_SEQUENCIAL
var
NOME [5]: caractere;
I: inteiro;
PESQ, RESP : caractere;
ACHA: lgico;
inicio
para I de 0 at 4 passo 1 faa
leia (NOME [I]);
fim para;
RESP = SIM;
enquanto (RESP = SIM) faa
escreva Entre com o nome a ser pesquisado: ;
leia PESQ;
I = 0;
ACHA = falso;
24/41
4.2 Matrizes
ROTEIRO
25/41
4.2 Matrizes
ROTEIRO
//Programa PESQUISA_SEQUENCIAL;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char NOME[5][100];
int I;
char PESQ[100], RESP, ACHA;
main(){
for(I = 0; I <= 4; I++){
printf("Digite o %i. nome: ",I+1);
gets (NOME[I]);
}
RESP = 'S';
while(RESP == 'S' || RESP == 's'){
printf("Entre com o nome a ser pesquisado: ");
fflush (stdin);
gets(PESQ);
26/41
4.2 Matrizes
ROTEIRO
I = 0;
ACHA = 'F';
while((I <= 4) && (ACHA == 'F')){
if(strcmp(PESQ, NOME[I]) == 0){
ACHA = 'V';
} else {
I++;
}
}
if(ACHA == 'V'){
printf("%s foi localizado na posicao %i\n\n", PESQ, I+1);
} else {
printf("%s nao foi localizado\n\n", PESQ);
}
printf("Deseja continuar (S/N)?");
scanf("%s", &RESP);
}
system("pause");
return 0;
}
27/41
4.2 Matrizes
ROTEIRO
28/41
4.2 Matrizes
ROTEIRO
Programa PESQUISA_BINRIA
var
NOME [5]: caractere;
I, X, J , COMECO, MEIO, FINAL : inteiro;
PESQ, RESP: caractere;
ACHA: lgico;
inicio
para I de 0 at 4 passo 1 faa
leia (NOME [I]);
fim para;
//ordenao
para I de 0 at 3 passo 1 faa
para J de I + 1 at 4 passo 1 faa
se (NOME[I] > NOME[J]) ento
X = NOME[I];
NOME[I] = NOME[J] ;
NOME[J] = X;
fim se;
fim para;
fim para;
29/41
4.2 Matrizes
ROTEIRO
//treco de pesquisa
RESP = SIM;
enquanto (RESP = SIM) faa
escreva Entre com o nome a ser pesquisado: ;
leia PESQ;
COMECO = 0;
FINAL = 4;
ACHA = falso;
enquanto (COMECO <= FINAL) e (ACHA = falso) faa
MEIO = (COMECO + FINAL) / 2;
se (PESQ = NOME[MEIO]) ento
ACHA = verdadeiro;
se no
se (PESQ < NOME[MEIO]) ento
FINAL = MEIO -1;
se no
COMECO = MEIO + 1;
fim se;
fim se;
fim enquanto;
30/41
4.2 Matrizes
ROTEIRO
31/41
4.2 Matrizes
ROTEIRO
O exemplo na linguagem C.
//Programa PESQUISA_BINARIA;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char NOME[10][100];
int I, J, COMECO, MEIO, FINAL;
char PESQ[100], RESP, ACHA;
char X[100];
main(){
for(I = 0; I <= 9; I++){
printf("Digite o %i. nome: ",I+1);
gets (NOME[I]);
}
//ordenao
for(I = 0; I <= 8; I++){
for(J = I+1; J <= 9; J++){
if(strcmp(NOME[I], NOME[J]) > 0){
strcpy(X, NOME[I]);
strcpy(NOME[I], NOME[J]);
strcpy(NOME[J], X);
}
}
}
32/41
4.2 Matrizes
ROTEIRO
//treco de pesquisa
RESP = 'S';
while(RESP == 'S' || RESP == 's'){
printf("Entre com o nome a ser pesquisado: ");
fflush (stdin);
gets(PESQ);
COMECO = 0;
FINAL = 9;
ACHA = 'F';
while((COMECO <= FINAL) && (ACHA == 'F')){
MEIO = (COMECO + FINAL) / 2;
if(strcmp(PESQ, NOME[MEIO]) == 0){
ACHA = 'V';
} else {
if(strcmp(PESQ, NOME[MEIO]) < 0){
FINAL = MEIO -1;
} else {
COMECO = MEIO + 1;
}
}
}
PROFESSOR: EDILSON LIMA
33/41
4.2 Matrizes
ROTEIRO
if(ACHA == 'V'){
printf("%s foi localizado na posicao %i\n\n", PESQ, MEIO);
} else {
printf("%s nao foi localizado\n\n", PESQ);
}
printf("Deseja continuar (S/N)?");
scanf("%s", &RESP);
}
system("pause");
return 0;
}
34/41
4.2 Matrizes
ROTEIRO
35/41
4.2 Matrizes
ROTEIRO
36/41
ROTEIRO
4.2 Matrizes
[0]
[1]
[1]
[2]
[3]
[4]
37/41
4.2 Matrizes
ROTEIRO
38/41
4.2 Matrizes
ROTEIRO
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int A[4][2];
int B[4][2];
int X, I, J;
39/41
4.2 Matrizes
ROTEIRO
main(){
printf("Digite o valor de X: ");
scanf("%i",&X);
printf("ELEMENTOS DA MATRIZ A \n\n");
for(I = 0; I <= 3; I++){
for(J = 0; J < 2; J++){
printf("digite o elemento da linha %i coluna %i: ",I, J);
scanf("%i",&A[I][J]);
B[I][J] = A[I][J]/X;
}
}
printf("\n\nELEMENTOS DA MATRIZ B (elemento da matriz A dividido pelo valor numrico X) \n\n");
for(I = 0; I <= 3; I++){
for(J = 0; J < 2; J++){
printf("elementos da matriz B [%i, %i]........: %i \n",I, J, B[I][J]);
}
}
system("pause");
return 0;
}
PROFESSOR: EDILSON LIMA
40/41
Bibliografia
ROTEIRO
ARAJO, Everton C. Algoritmos: fundamento e prtica. Captulo 6 Estrutura de Dados Homogneas I; Captulo
7 Aplicaes Prticas do Uso de Matrizes do Tipo Vetor; e Captulo 8 Estrutura de Dados Homogneas II.
VICTORINA, VIVIANE, MIZRANE. Treinamento em Linguagem C: curso completo. Captulo 7 Matrizes e
Strings; Captulo 1 Introduo e Captulo Funes.
41/41