Estrutura de dados
P1: 20/09 P2: 29/11
Estrutura de dados memória principal(RAM) alocação estática( matrizes e vetores) e alocação dinâmica (ponteiros int *p)
Vantagem da alocação estática: bastante simples e eficiente, mas perde espaço no servidor em situações simples, programas pequenos utilizamos:
Estático:
ex: sistema de venda em loja: qtos produtos? Difícil quantificar. Na prática é difícil quantificar
alocação dinâmica: através de ponteiros (linguagem C) permite implementar estrutura de alocação dinâmica. Na alocação dinâmica eu quantifico o tamanho apenas quando vou utilizar. int *p
vetor índices indice > = 0 e índice < tamanho vetor OK v[-1] não existe vetor negativo
Cuidado com posição e índice!!!!!!!!! índice é o local no vetor
for (int i = 4; i > = 0; i-- ) { printf(" %d ", v[ i ] ); }
O for é dividido em 4 blocos: A) inicialização: int i = 4 executado só no inicio B) condição: i > = 0 executado até q a condição seja falsa C) bloco a ser repetido: { printf(" %d ",v[i]); } D) pós operação: i--
teste de mesa:
|i |v[i] |
|4 |1 |
|3 |8 |
|2 |4 |
|1 |5 |
|0 |6 |
int maior = v[0]; for (int i=1; i maior) maior= v[i]; }
teste de mesa
|i |v[i] |maior |
|1 |4 |6 |
|2 |5 |FALSO |
|3 |8 |8 |
|4 |1 |FALSO |
| |Maior é |8 |
O scanf não limpa o teclado! Tem que ser feito um fflush(stdin)
Exercicico 3
Para deixar tudo em uma única linha: if(v[i]==1) r[0]++; else if(v[i]==2) r[1]++; else if(v[i]==3) r[2]++;