Logo Passei Direto
Buscar
Material

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Profs
Profs
: 
: 
Ricardo Matos Chaim 
Ricardo Matos Chaim 
Andr
Andr
é
é
Barros de Sales
Barros de Sales
Georges 
Georges 
Amvame
Amvame
-
-
Nze
Nze
Luis
Luis
Filomeno de J. Fernandes 
Filomeno de J. Fernandes 
Universidade de Bras
Universidade de Bras
í
í
lia 
lia 
–
–
UnB 
UnB 
Campus Gama
Campus Gama
•
•
Um 
Um 
vetor
vetor
(
(
ou matriz
ou matriz
) 
) 
é
é
um conjunto de posi
um conjunto de posi
ç
ç
ões de 
ões de 
armazenamento de dados do mesmo tipo. Cada posi
armazenamento de dados do mesmo tipo. Cada posi
ç
ç
ão de 
ão de 
armazenamento 
armazenamento 
é
é
chamado de elemento da matriz (ou do 
chamado de elemento da matriz (ou do 
vetor).
vetor).
•
•
No conte
No conte
ú
ú
do deste material estar
do deste material estar
á
á
apresentando
apresentando
-
-
se esta 
se esta 
estrutura com o termo matriz, apesar da tradu
estrutura com o termo matriz, apesar da tradu
ç
ç
ão de 
ão de 
array
array
, 
, 
em algumas obras, aparecerem como vetor.
em algumas obras, aparecerem como vetor.
•
•
Na declara
Na declara
ç
ç
ão de uma matriz escreve
ão de uma matriz escreve
-
-
se o tipo, seguido do 
se o tipo, seguido do 
nome (identificador) e o tamanho da matriz (n
nome (identificador) e o tamanho da matriz (n
ú
ú
mero de 
mero de 
elementos que ela cont
elementos que ela cont
é
é
m) entre os colchetes ([ ]).
m) entre os colchetes ([ ]).
•
•
<tipo de dado> <identificador> [<quantidade de elementos>]
<tipo de dado> <identificador> [<quantidade de elementos>]
•
•
Exemplo:
Exemplo:
float
float
notas[5];
notas[5];
•
•
As duas expressões (vetor e matriz) são 
As duas expressões (vetor e matriz) são 
sinônimos
sinônimos
para 
para 
alguns casos, onde estes casos são diferenciados por uma 
alguns casos, onde estes casos são diferenciados por uma 
outra expressão que complementa e diferencia uma matriz de 
outra expressão que complementa e diferencia uma matriz de 
um vetor especificamente.
um vetor especificamente.
•
•
Esta 
Esta 
outra expressão 
outra expressão 
referencia a 
referencia a 
quantidade de dimensões
quantidade de dimensões
que esta matriz possui. Dimensão ser
que esta matriz possui. Dimensão ser
á
á
abordado mais a 
abordado mais a 
frente nesta aula, mas por enquanto: 
frente nesta aula, mas por enquanto: 
•
•
expressão 
expressão 
vetor
vetor
: referencia sempre uma matriz com uma 
: referencia sempre uma matriz com uma 
ú
ú
nica dimensão 
nica dimensão 
(unidimensional);
(unidimensional);
•
•
expressão 
expressão 
matriz
matriz
: referencia uma matriz com 
: referencia uma matriz com 
uma ou mais 
uma ou mais 
dimensões
dimensões
, sendo identificada corretamente pelas 
, sendo identificada corretamente pelas 
expressões:
expressões:
–
–
Unidimensional:
Unidimensional:
somente uma dimensão 
somente uma dimensão 
–
–
prateleiras de 
prateleiras de 
uma estante simples de a
uma estante simples de a
ç
ç
o
o
–
–
Multidimensional:
Multidimensional:
mais que uma dimensão 
mais que uma dimensão 
–
–
tabuleiro de 
tabuleiro de 
xadrez (2 dimensões)
xadrez (2 dimensões)
•
•
Observe o exemplo a seguir:
Observe o exemplo a seguir:
int
int
numero[25];
numero[25];
•
•
Neste exemplo, declara
Neste exemplo, declara
-
-
se uma 
se uma 
matriz unidimensional 
matriz unidimensional 
(
(
ou 
ou 
vetor
vetor
) de 25 inteiros com o nome de NUMERO, onde o 
) de 25 inteiros com o nome de NUMERO, onde o 
compilador reservar
compilador reservar
á
á
um espa
um espa
ç
ç
o, em mem
o, em mem
ó
ó
ria cont
ria cont
í
í
gua, 
gua, 
suficiente para conter estes 25 elementos da matriz.
suficiente para conter estes 25 elementos da matriz.
•
•
A mem
A mem
ó
ó
ria cont
ria cont
í
í
gua significa que os dados serão 
gua significa que os dados serão 
armazenados em seq
armazenados em seq
ü
ü
ência cont
ência cont
í
í
nua (um seguido do outro).
nua (um seguido do outro).
•
•
A 
A 
declara
declara
ç
ç
ão de matrizes 
ão de matrizes 
diferencia
diferencia
-
-
se da declara
se da declara
ç
ç
ão de 
ão de 
vari
vari
á
á
veis comuns pelo uso dos colchetes (
veis comuns pelo uso dos colchetes (
‘
‘
[ ]
[ ]
’
’
) preenchidos 
) preenchidos 
com n
com n
ú
ú
meros inteiros.
meros inteiros.
•
•
Este n
Este n
ú
ú
mero entre os colchetes indica o tamanho da matriz.
mero entre os colchetes indica o tamanho da matriz.
•
•
Os valores dentro dos colchetes são diferentes de acordo 
Os valores dentro dos colchetes são diferentes de acordo 
com o contexto que estão sendo empregados. O primeiro 
com o contexto que estão sendo empregados. O primeiro 
é
é
a 
a 
declara
declara
ç
ç
ão das vari
ão das vari
á
á
veis, que indica o tamanho da matriz. O 
veis, que indica o tamanho da matriz. O 
segundo 
segundo 
é
é
a referência de um elemento espec
a referência de um elemento espec
í
í
fico dentro da 
fico dentro da 
matriz.
matriz.
•
•
int
int
nota[5]
nota[5] ≠≠≠≠≠≠≠≠ nota[3]nota[3]
7 5 3 8 9
NOTA
0 1 2 3 4
cria uma matriz 
cria uma matriz 
de cinco elementos
de cinco elementos
posiciona no elemento três
posiciona no elemento três
que 
que 
é
é
o quarto na matriz
o quarto na matriz
•
•
A declara
A declara
ç
ç
ão e a referência a um elemento demonstram 
ão e a referência a um elemento demonstram 
situa
situa
ç
ç
ões diferentes, pois a declara
ões diferentes, pois a declara
ç
ç
ão apresenta a 
ão apresenta a 
quantidade de elementos 
quantidade de elementos 
que uma matriz ter
que uma matriz ter
á
á
, enquanto 
, enquanto 
que a referência apresenta o n
que a referência apresenta o n
ú
ú
mero do 
mero do 
í
í
ndice da matriz que 
ndice da matriz que 
se deseja o elemento
se deseja o elemento
float
float
nota[4];
nota[4]; →→ declaradeclaraçção da matriz de cinco valoresão da matriz de cinco valores
nota[3] 
nota[3] →→ referência ao elemento 3 que referência ao elemento 3 que éé o quarto valor na o quarto valor na 
matriz
matriz
•
•
A solicita
A solicita
ç
ç
ão de grava
ão de grava
ç
ç
ão de um elemento, 
ão de um elemento, 
al
al
é
é
m da matriz 
m da matriz 
declarada, pode provocar conseq
declarada, pode provocar conseq
ü
ü
ências inesperadas, pois o 
ências inesperadas, pois o 
compilador calcula a 
compilador calcula a 
posi
posi
ç
ç
ão de mem
ão de mem
ó
ó
ria 
ria 
onde este 
onde este 
elemento seria armazenado e grava
elemento seria armazenado e grava
-
-
o. No caso do exemplo 
o. No caso do exemplo 
anterior, suponha que seja informado o sexto valor (nota[4]) 
anterior, suponha que seja informado o sexto valor (nota[4]) 
mantendo a declara
mantendo a declara
ç
ç
ão de somente cinco elementos nesta 
ão de somente cinco elementos nesta 
matriz. 
matriz.
•
•
O compilador 
O compilador 
multiplica o deslocamento
multiplica o deslocamento
(4) pelo 
(4) pelo 
tamanho 
tamanho 
de cada elemento
de cada elemento
(4 bytes no exemplo). Então ele passa por 
(4 bytes no exemplo). Então ele passa por 
todos os bytes desde o in
todos os bytes desde o in
í
í
cio da matriz e grava o novo valor 
cio da matriz e grava o novo valor 
na 
na 
posi
posi
ç
ç
ão calculada
ão calculada
.
.
•
•
Não 
Não 
é
é
verificado o 
verificado o 
tamanho m
tamanho m
á
á
ximo
ximo
da matriz e o 
da matriz e o 
compilador grava baseado em seus 
compilador grava baseado em seus 
c
c
á
á
lculos
lculos
, não importando 
, não importando 
sobre o que ele vai estar gravando, mas 
sobre o que ele vai estar gravando, mas 
sobrepõe
sobrepõe
os 
os 
valores.
valores.
•
•
A 
A 
inicializa
inicializa
ç
ç
ão
ão
de uma matriz, de 
de uma matriz, de 
tipos fundamentais
tipos fundamentais
(inteiros ou caracteres), pode ser feita na sua declara
(inteiros ou caracteres), pode ser feita na sua declara
ç
ç
ão.
ão.
int
int
matriz[5] = {10,2,3,40,50};
matriz[5] = {10,2,3,40,50};
•
•
A 
A 
omissão do tamanho
omissão do tamanho
da matriz ocasionar
da matriz ocasionar
á
á
a cria
a cria
ç
ç
ão de 
ão de 
uma matriz de tamanho suficiente para 
uma matriz de tamanho suficiente para 
conter os elementos
conter os elementos
inicializados
inicializados
que foram atribu
que foram atribu
í
í
dos a ela.
dos a ela.
int
int
matriz[ ] = {10,2,3,40,50};
matriz[ ] = {10,2,3,40,50};
•
•
Esta declara
Esta declara
ç
ç
ão criar
ão criar
á
á
uma matriz igual a anterior. Não se 
uma matriz igual a anterior. Não se 
pode inicializar mais elementos do que foi declarado na 
pode inicializar mais elementos do que foi declarado na 
matriz. Caso deseje saber o tamanho da matriz, pode se 
matriz. Caso deseje saber o tamanho da matriz, pode se 
colocar o compilador para encontr
colocar o compilador para encontr
á
á
-
-
lo. O retorno deste c
lo. O retorno deste c
á
á
lculo 
lculo 
ser
ser
á
á
exatamente a 
exatamente a 
quantidade de elementos
quantidade de elementos
da matriz.
da matriz.
const
const
int
int
tam
tam
= 
= 
sizeof
sizeof
(matriz) / 
(matriz) / 
sizeof
sizeof
(matriz[0]);
(matriz[0]);
•
•
Os elementos não inicializados na matriz 
Os elementos não inicializados na matriz 
são nulos
são nulos
.
.
int
int
matriz[5] = {10,20};
matriz[5] = {10,20};
9
1. 
1. 
Vetores
Vetores
�� Tipo de dado usado para representar uma coleTipo de dado usado para representar uma coleçção de varião de variááveis veis 
de um mesmo tipo
de um mesmo tipo
�� Estrutura de dados homogênea unidimensional Estrutura de dados homogênea unidimensional 
�� Ex: Ler a nota de 3 alunos e calcular a mEx: Ler a nota de 3 alunos e calcular a méédiadia
int
int
nota0, nota1, nota2;
nota0, nota1, nota2;
printf
printf
(
(
“
“
entre com a 1a. nota
entre com a 1a. nota
”
”
);
);
scanf
scanf
(
(
“
“
%d
%d
”
”
, &nota0);
, &nota0);
:
:
:
:
:
:
printf
printf
(
(
“
“
m
m
é
é
dia = %d
dia = %d
”
”
, (nota0 + nota1 + nota2) / 3); 
, (nota0 + nota1 + nota2) / 3); 
10
1. 
1. 
Vetores
Vetores
�� Ex: Calcular a mEx: Calcular a méédia de 300 alunosdia de 300 alunos
#include<
#include<
stdio
stdio
.h>
.h>
#define N_ALUNOS 40
#define N_ALUNOS 40
int
int
main( )
main( )
{
{
int
int
i;
i;
float
float
notas [ N_ALUNOS ], media = 0;
notas [ N_ALUNOS ], media = 0;
for ( i = 0; i < N_ALUNOS; i++ ) {
for ( i = 0; i < N_ALUNOS; i++ ) {
printf
printf
(
(
“
“
entre com a nota %d
entre com a nota %d
”
”
, i+1);
, i+1);
scanf
scanf
(
(
“
“
%f
%f
”
”
, &notas[ i ]);
, &notas[ i ]);
media += notas [ i ];
media += notas [ i ];
}
}
printf
printf
(
(
“
“
M
M
é
é
dia = %f 
dia = %f 
\
\
n
n
”
”
, media / N_ALUNOS);
, media / N_ALUNOS);
for ( i = 0; i < N_ALUNOS; i++ ) {
for ( i = 0; i < N_ALUNOS; i++ ) {
printf
printf
(
(
“
“
\
\
n A nota do %d aluno= 
n A nota do %d aluno= 
”
”
, i+1);
, i+1);
printf
printf
(
(
“
“
%f 
%f 
\
\
n
n
”
”
, notas[ i ]);
, notas[ i ]);
}
}
} 
} 
11
1. 
1. 
Vetores
Vetores
�� Em Em ‘‘CC’’ existe declaraexiste declaraçção de vetor dinâmicoão de vetor dinâmico
�� O tamanho de um vetor tem que ser determinado em tempo de O tamanho de um vetor tem que ser determinado em tempo de 
compila
compila
ç
ç
ão 
ão 
�� Ex:Ex:
int alunos; 
int alunos; 
int notas [ alunos ];
int notas [ alunos ];
: :
: :
:
:
printf (
printf (
“
“
entre com o n
entre com o n
ú
ú
mero de alunos
mero de alunos
”
”
);
);
scanf (
scanf (
“
“
%d
%d
”
”
, &alunos);
, &alunos);
NÂO 
NÂO 
É
É
ACEITO !!! 
ACEITO !!! 
12
1. 
1. 
Vetores
Vetores
Solu
Solu
ç
ç
ão: 
ão: 
�� declarar um vetor que suporte um ndeclarar um vetor que suporte um núúmero mmero mááximo ximo 
de elementos 
de elementos 
Ex:
Ex:
int alunos;
int alunos;
int notas [ 70 ];
int notas [ 70 ];
: :
: :
:
:
printf (
printf (
“
“
entre com o n
entre com o n
ú
ú
mero de alunos
mero de alunos
”
”
);
);
scanf (
scanf (
“
“
%d
%d
”
”
, &alunos);
, &alunos);
ACEITO..
ACEITO..
13
1. 
1. 
Vetores
Vetores
�� C não realiza verificaC não realiza verificaçção de limites em vetoresão de limites em vetores
�� nada impede o acesso alnada impede o acesso aléém do fim do vetorm do fim do vetor
�� fafaçça sempre que necessa sempre que necessáário a verificario a verificaçção dos limites ão dos limites 
14
1. 
1. 
Vetores
Vetores
#include <stdio.h>
#include <stdio.h>
#define TAMANHO 100
#define TAMANHO 100
int main( )
int main( )
{ 
{ 
int 
int 
quantidade, media = 0;
quantidade, media = 0;
float 
float 
notas [ TAMANHO ];
notas [ TAMANHO ];
// quantidade deve ser 
// quantidade deve ser ≤≤≤≤≤≤≤≤ TAMANHOTAMANHO
printf ( 
printf ( 
“
“
quantas notas devo ler ?
quantas notas devo ler ?
”
”
);
);
scanf(
scanf(
“
“
%d
%d
”
”
, &quantidade);
, &quantidade);
for ( i = 0; i < quantidade; i++) {
for ( i = 0; i < quantidade; i++) {
printf ( 
printf ( 
“
“
entre com a nota %d
entre com a nota %d
”
”
, i+1);
, i+1);
scanf(
scanf(
“
“
%d
%d
”
”
, &notas [ i ]);
, &notas [ i ]);
}
}
:
:
:
:
:
:
for ( i = 0; i < quantidade; i++) 
for ( i = 0; i < quantidade; i++) 
media += notas [ i ];
media += notas [ i ];
:
:
:
:
:
:
}
}
15
1. 
1. 
Vetores
Vetores
Passando um vetor para uma fun
Passando um vetor para uma fun
ç
ç
ão
ão
#include <stdio.h>
#include <stdio.h>
int maximum( int [ ] ); /* ANSI function prototype */
int maximum(
int [ ] ); /* ANSI function prototype */
int main( )
int main( )
{
{
int values[5], i, max;
int values[5], i, max;
printf("Entre com 5 numeros:
printf("Entre com 5 numeros:
\
\
n");
n");
for( i = 0; i < 5; ++i )
for( i = 0; i < 5; ++i )
scanf("%d", &values[i] );
scanf("%d", &values[i] );
max = maximum( values );
max = maximum( values );
printf("
printf("
\
\
nValor Maximo: %d
nValor Maximo: %d
\
\
n", max );
n", max );
}
}
16
1. 
1. 
Vetores
Vetores
int maximum( int values[5] )
int maximum( int values[5] )
{
{
int max_value, i;
int max_value, i;
max_value = values[0];
max_value = values[0];
for( i = 0; i < 5; ++i )
for( i = 0; i < 5; ++i )
if( values[i] > max_value )
if( values[i] > max_value )
max_value = values[i];
max_value = values[i];
return max_value;
return max_value;
}
}
Sa
Sa
í
í
da:
da:
Entre com 5 numeros:
Entre com 5 numeros:
7 23 45 9 121
7 23 45 9 121
Valor Maximo: 121
Valor Maximo: 121
17
1.A 
1.A 
Exerc
Exerc
í
í
cio
cio
Uma solu
Uma solu
ç
ç
ão em pseudoc
ão em pseudoc
ó
ó
digo para o problema dos 
digo para o problema dos 
funcion
funcion
á
á
rios (para o caso de 100 funcion
rios (para o caso de 100 funcion
á
á
rios). Note que no 
rios). Note que no 
la
la
ç
ç
o, a vari
o, a vari
á
á
vel i assume valores entre 0 e 99, abrangendo 
vel i assume valores entre 0 e 99, abrangendo 
assim todas as 100 posi
assim todas as 100 posi
ç
ç
ões dos vetores.
ões dos vetores.
18
1.A 
1.A 
Solu
Solu
ç
ç
ão
ão
#include <stdio.h>
#include <stdio.h>
int main () {
int main () {
float salario[100];
float salario[100];
int i;
int i;
int nfilhos[100];
int nfilhos[100];
for (i=0; i<100; i++) {
for (i=0; i<100; i++) {
printf("Digite o sal
printf("Digite o sal
á
á
rio do funcion
rio do funcion
á
á
rio %d
rio %d
\
\
n",i+1);
n",i+1);
scanf("%f",&salario[i]);
scanf("%f",&salario[i]);
printf("Digite o n
printf("Digite o n
ú
ú
mero de filhos do funcion
mero de filhos do funcion
á
á
rio %d
rio %d
\
\
n",i+1);
n",i+1);
scanf("%d",&nfilhos[i]);
scanf("%d",&nfilhos[i]);
salario[i]+= 200*nfilhos[i];
salario[i]+= 200*nfilhos[i];
printf("O novo sal
printf("O novo sal
á
á
rio do funcion
rio do funcion
á
á
rio %d 
rio %d 
é
é
de R$%.2f
de R$%.2f
\
\
n",i+1, 
n",i+1, 
salario[i]);
salario[i]);
}
}
system("pause");
system("pause");
return 0;
return 0;
}
}
19
1.B 
1.B 
Exerc
Exerc
í
í
cio
cio
Uma solu
Uma solu
ç
ç
ão em pseudoc
ão em pseudoc
ó
ó
digo para o problema dos 
digo para o problema dos 
funcion
funcion
á
á
rios (para o caso de 100 funcion
rios (para o caso de 100 funcion
á
á
rios). Note que no 
rios). Note que no 
la
la
ç
ç
o, a vari
o, a vari
á
á
vel i assume valores entre 0 e 99, abrangendo 
vel i assume valores entre 0 e 99, abrangendo 
assim todas as 100 posi
assim todas as 100 posi
ç
ç
ões dos vetores.
ões dos vetores.
S
S
ó
ó
que agora, o n
que agora, o n
ú
ú
mero de funcion
mero de funcion
á
á
rios 
rios 
é
é
vari
vari
á
á
vel. (Aqui 
vel. (Aqui 
presume
presume
-
-
se que haverão no m
se que haverão no m
á
á
ximo 100 funcion
ximo 100 funcion
á
á
rios).
rios). 
20
1.B 
1.B 
Solu
Solu
ç
ç
ão
ão
#include <stdio.h>
#include <stdio.h>
int main () {
int main () {
float salario[100];
float salario[100];
int i, nrofunc;
int i, nrofunc;
int nfilhos[100];
int nfilhos[100];
printf("Digite o n
printf("Digite o n
ú
ú
mero de funcion
mero de funcion
á
á
rios
rios
\
\
n");
n");
scanf("%d",&nrofunc);
scanf("%d",&nrofunc);
for (i=0; i<nrofunc && i<100; i++) {
for (i=0; i<nrofunc && i<100; i++) {
printf("Digite o sal
printf("Digite o sal
á
á
rio do funcion
rio do funcion
á
á
rio %d
rio %d
\
\
n",i+1);
n",i+1);
scanf("%f",&salario[i]);
scanf("%f",&salario[i]);
printf("Digite o n
printf("Digite o n
ú
ú
mero de filhos do funcion
mero de filhos do funcion
á
á
rio %d
rio %d
\
\
n",i+1);
n",i+1);
scanf("%d",&nfilhos[i]);
scanf("%d",&nfilhos[i]);
salario[i]+= 200*nfilhos[i];
salario[i]+= 200*nfilhos[i];
printf("O novo sal
printf("O novo sal
á
á
rio do funcion
rio do funcion
á
á
rio %d 
rio %d 
é
é
de R$%.2f
de R$%.2f
\
\
n",i+1, 
n",i+1, 
salario[i]);
salario[i]);
} system("pause");
} system("pause");
return 0;
return 0;
}
}
21
1.C 
1.C 
Exerc
Exerc
í
í
cio
cio
Escreva um algoritmo que leia N notas (N ser
Escreva um algoritmo que leia N notas (N ser
á
á
informado 
informado 
pelo usu
pelo usu
á
á
rio e 
rio e 
é
é
sempre menor ou igual a 100), calcule a 
sempre menor ou igual a 100), calcule a 
m
m
é
é
dia das notas e imprima na tela todas as notas que ficaram 
dia das notas e imprima na tela todas as notas que ficaram 
abaixo dessa m
abaixo dessa m
é
é
dia.
dia.
22
1.C 
1.C 
Solu
Solu
ç
ç
ão
ão
#include <stdio.h>
#include <stdio.h>
int main () {
int main () {
float media, notas[100];
float media, notas[100];
int i, n;
int i, n;
printf("Digite o n
printf("Digite o n
ú
ú
mero de alunos
mero de alunos
\
\
n");
n");
scanf("%d",&n);
scanf("%d",&n);
media = 0.0;
media = 0.0;
for (i=0; i<n; i++) {
for (i=0; i<n; i++) {
printf("Digite a %d
printf("Digite a %d
ª
ª
nota
nota
\
\
n",i+1);
n",i+1);
scanf("%f",&notas[i]);
scanf("%f",&notas[i]);
media+=notas[i];
media+=notas[i];
}
}
media = (float) media/n;
media = (float) media/n;
printf(
printf(
“
“
A m
A m
é
é
dia das notas informadas 
dia das notas informadas 
é
é
%.2f
%.2f
\
\
n",media);
n",media);
for (i=0; i<n; i++) {
for (i=0; i<n; i++) {
if (notas[i]<media)
if (notas[i]<media) 
printf(
printf(
“
“
A nota %d 
A nota %d 
é
é
%.2f e est
%.2f e est
á
á
abaixo da m
abaixo da m
é
é
dia de %.2f
dia de %.2f
\
\
n
n
“
“
, i+1, 
, i+1, 
notas[i], media);
notas[i], media);
}system("pause");
}system("pause");
return 0;
return 0;
}
}
23
1.D 
1.D 
Exerc
Exerc
í
í
cio
cio
Fa
Fa
ç
ç
a um algoritmo que leia um conjunto de N inteiros (N ser
a um algoritmo que leia um conjunto de N inteiros (N ser
á
á
lido e 
lido e 
é
é
sempre menor ou igual a 100), encontre e mostre o 
sempre menor ou igual a 100), encontre e mostre o 
maior deles.
maior deles.
24
1.D 
1.D 
Solu
Solu
ç
ç
ão
ão
#include <stdio.h>
#include <stdio.h>
int main () {
int main () {
int i, n, maior, numeros[100];
int i, n, maior, numeros[100];
printf("Digite a quantia de n
printf("Digite a quantia de n
ú
ú
meros a serem lidos: 
meros a serem lidos: 
\
\
n");
n");
scanf("%d",&n);
scanf("%d",&n);
for (i=0; i<n; i++) {
for (i=0; i<n; i++) {
printf("Digite o %do n
printf("Digite o %do n
ú
ú
mero:
mero: 
\
\
n",i+1);
n",i+1);
scanf("%d",&numeros[i]);
scanf("%d",&numeros[i]);
}
}
maior = numeros[0];
maior = numeros[0];
for (i=0; i<n; i++) {
for (i=0; i<n; i++) {
if (numeros[i]>maior)
if (numeros[i]>maior) 
maior = numeros[i];
maior = numeros[i];
}
}
printf(
printf(
“
“
O maior n
O maior n
ú
ú
meros 
meros 
é
é
%d
%d
\
\
n ",maior);
n ",maior);
system("pause");
system("pause");
return 0;
return 0;
}
}
25
1.D 
1.D 
Exerc
Exerc
í
í
cio 
cio 
--
--
CR
CR
Í
Í
TICA
TICA
Note que no exemplo anterior o vetor 
Note que no exemplo anterior o vetor 
é
é
varrido totalmente por 
varrido totalmente por 
duas vezes, uma para ler os dados e outra para determinar o 
duas vezes, uma para ler os dados e outra para determinar o 
maior elemento. No caso de dois vetores grandes, isso pode 
maior elemento. No caso de dois vetores grandes, isso pode 
aumentar o tempo de execu
aumentar o tempo de execu
ç
ç
ão.
ão.
Como poder
Como poder
í
í
amos melhorar 
amos melhorar 
o algoritmo apresentado, de forma que se obtenha o mesmo 
o algoritmo apresentado, de forma que se obtenha o mesmo 
resultado mas que varra o vetor totalmente apenas uma vez?
resultado mas que varra o vetor totalmente apenas uma vez?
RESPOSTA:
RESPOSTA:
Determinando o maior n
Determinando o maior n
ú
ú
mero durante a leitura dos n
mero durante a leitura dos n
ú
ú
meros.
meros.
Assim, caso os n
Assim, caso os n
ú
ú
meros não fossem mais ser utilizados,
meros não fossem mais ser utilizados,
poder
poder
í
í
amos at
amos at
é
é
mesmo nem armazenar os valores num vetor 
mesmo nem armazenar os valores num vetor 
(mas aqui supomos que o programa pudesse ter outros usos 
(mas aqui supomos que o programa pudesse ter outros usos 
para os valores, então armazenamos mesmo assim).
para os valores, então armazenamos mesmo assim).
26
1.D 
1.D 
Nova solu
Nova solu
ç
ç
ão
ão
#include <stdio.h>
#include <stdio.h>
int main () {
int main () {
int main () { 
int main () { 
int i, n, maior, numeros[100];
int i, n, maior, numeros[100];
printf("Digite a quantia de n
printf("Digite a quantia de n
ú
ú
meros a serem lidos: 
meros a serem lidos: 
\
\
n");
n");
scanf("%d",&n);
scanf("%d",&n);
for (i=0; i<n; i++) {
for (i=0; i<n; i++) {
printf("Digite o %do n
printf("Digite o %do n
ú
ú
mero: 
mero: 
\
\
n",i+1);
n",i+1);
scanf("%d",&numeros[i]);
scanf("%d",&numeros[i]);
if (i==0)
if (i==0)
maior = numeros[0];
maior = numeros[0];
else if (numeros[i]>maior)
else if (numeros[i]>maior) 
maior = numeros[i];
maior = numeros[i];
}
}
printf(
printf(
“
“
O maior n
O maior n
ú
ú
meros 
meros 
é
é
%d
%d
\
\
n ",maior);
n ",maior);
system("pause");
system("pause");
return 0;
return 0;
}
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Mais conteúdos dessa disciplina