Академический Документы
Профессиональный Документы
Культура Документы
01/2013
Variveis Indexadas
No mximo 50 clientes.
2
Entendendo o problema
0 5.99 0
1 7.04 1
2 99.99 2
3 1.99 3
4 42.50 4
3
Problema 1
No mximo 50 clientes.
4
Entendendo o problema
0 5.99 0
1 7.04 1
2 99.99 2
3 1.99 3
4 42.50 4
5
Entendendo o problema
0 5.99 0 3
1 7.04 1 0
2 99.99 2 45
3 1.99 3 12
4 42.50 4 30
6
Codificando o Problema
7
Entendendo o Problema
0 5.99 0 3
1 7.04 1 0
2 99.99 2 45
3 1.99 3 12
4 42.50 4 30
8
Codificando o Problema
9
Codificando o Problema
10
Entendendo o Problema
0 9.99 0 32
1 9.99 1 32
2 9.99 2 32
3 9.99 3 32
4 9.99 4 32
11
Codificando o Problema
12
Codificando o Problema
13
Problema 1
No mximo 50 clientes.
14
Entendendo o problema
0 5.99 0 3
1 7.04 1 0
2 99.99 2 45
3 1.99 3 12
4 42.50 4 30
15
Gerao de nmeros aleatrios
num_produtos = 1 + random(MAX_PRODUTOS);
ou seja, p [5,100].
17
Gerao de nmeros aleatrios
18
Gerao de nmeros aleatrios
t = time(p); ou t = time(NULL);
Podemos escrever:
srand((unsigned)time(NULL));
20
Anlise do programa
21
Anlise do programa
22
Anlise do programa
23
Variveis indexadas
24
Variveis indexadas
Ou seja:
compras 68 45 90 45 44 ...
0 1 2 3 4 5 ... 49
Exemplo: o cliente 0 comprou o produto 68.
precos
? ... 5 57 ... 73 ... 82 ... ? ... ? ...
25
Variveis indexadas
compras[0] = 68
precos[68] = precos[compra[0]] = 73
26
Variveis indexadas
int x[10], i = 5, a;
a = x[3];
a = x[i];
a = x[x[a]];
a = x[random(10)];
27
Variveis indexadas
Ateno!
Ao utilizar variveis indexadas, temos que controlar o
valor do ndice no intervalo 0 a n-1, onde n o
nmero de posies de memria.
Caso contrrio, podemos ter invaso de memria.
28
Variveis indexadas
Variveis indexadas
invaso de memria!
Variveis indexadas
Variveis indexadas
#1 vec[0] 10
#2 vec[1] 20
#3 vec[2] 30
#4 vec[3] 40
#5 i 0
Variveis indexadas
#1 vec[0] 1
#2 vec[1] 1
#3 vec[2] 1
#4 vec[3] 1
#5 i 3
Variveis indexadas
#1 vec[0] 1
#2 vec[1] 1
#3 vec[2] 1
#4 vec[3] 1
#5 i 4
vec[4]
Variveis indexadas
#1 vec[0] 1
#2 vec[1] 1
#3 vec[2] 1
#4 vec[3] 1
#5 i 1
vec[4]
Variveis indexadas
#1 vec[0] 1
#2 vec[1] 1
#3 vec[2] 1
#4 vec[3] 1
#5 i 1
vec[4]
Problema 2
37
Ordenao por contagem
vet 38 97 19 100 23 47 41 8
0 1 2 3 4 5 6 7
38
Ordenao por contagem
pos 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7
39
Ordenao por contagem
Exemplo:
vet 38 97 19 102 23 47 41 8
0 1 2 3 4 5 6 7
Elementos menores do
i vet[i] pos[i]
que vet[i]
0 38 19, 23, 8 3
1 97 38, 19, 23, 47, 41, 8 6
2 19 8 1
3 102 38, 97, 19, 23, 47, 41, 8 7
4 23 19,8 2
5 47 38, 19, 23, 41, 8 5
6 41 38, 19, 23, 8 4
7 8 - 0
40
Anlise do programa
41
Anlise do programa
42
Anlise do programa
43
Anlise do programa
Funo existe:
Usada para evitar a gerao
de nmeros de cheques
repetidos.
44
Vetores e matrizes
int a[10];
char b[3][5];
double c[2][2][3];
46
Vetores e matrizes
a
0 1 2 3 4 5 6 7 8 9
9
8
c
7 b (0,0,0) (0,1,0)
6 (0,0) (0,1) (0,2) (0,3) (0,4) (1,0,0) (1,1,0)
5
(0,0,1) (0,1,1)
4
(1,0) (1,1) (1,2) (1,3) (1,4)
(1,0,1) (1,1,1)
3
2 (0,0,2) (0,1,2)
(2,0) (2,1) (2,2) (2,3) (2,4)
1 (1,0,2) (1,1,2)
a 0
47
Problema 3
48
Anlise preliminar do problema
Pergunta:
Quais so as somas possveis para os valores dos dados?
0 1 2 3 4 5 6 7 8 9 10
Somas: 2 3 4 5 6 7 8 9 10 11 12
49
Anlise do programa
Observe que:
O elemento mat[0][0]
armazena quantas vezes
o resultados foi:
dado1 = 1
dado2 = 1.
O elemento mat[3][5]
armazena quantas vezes
o resultados foi:
dado1 = 4
dado2 = 6.
50
Anlise do programa
Entendeu?
51
Anlise do programa
0 1 2 3 4 5 6 7 8 9 10
Somas: 2 3 4 5 6 7 8 9 10 11 12
Resultado da execuo:
53