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
”
”
, ¬a0);
, ¬a0);
:
:
:
:
:
:
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
”
”
, ¬as[ i ]);
, ¬as[ 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
”
”
, ¬as [ i ]);
, ¬as [ 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",¬as[i]);
scanf("%f",¬as[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;
}
}