Commit 19ed8673 authored by Jomaro Rodrigues's avatar Jomaro Rodrigues

Closes #2

parent 755914e6
#define LIM 30 /* define um tamanho p/ a matriz */
void main()
{
/* declara uma matriz de tamanho LIM */
int matriz[LIM];
/* declara um contador e inicia-o com zero */
int i = 0;
do
{
printf("Entre com um numero:");
scanf("%d", &matriz[i]); /* le um numero */
i++;
} while (i ! LIM);
}
...@@ -2,130 +2,109 @@ ...@@ -2,130 +2,109 @@
\begin{document} \begin{document}
Matrizes \chapter{Matrizes}
Uma matriz é uma coleção de localiza,cões para armazenamento de dados, todas contendo o mesmo tipo
Uma matriz é uma coleção de localizações para armazenamento de dados, todas contendo o mesmo tipo
de dados e acessadas pelo mesmo nome. Cada localização de armazenamento da matriz é chamada de de dados e acessadas pelo mesmo nome. Cada localização de armazenamento da matriz é chamada de
êlemento da matriz. elemento da matriz.
\section{Matrizes Unidimensionais}
8.1 Matrizes Unidimensionais Uma matriz unidimensional é uma matriz que possui um único subscrito. Um subscrito é um número
Uma matriz unidimensional é uma matriz que possui um único subscrito. Um subscrito 'e um n'umero entre colchetes colocado após o nome da matriz. Esse número é usado para identificar os elementos
êntre colchetes colocado após o nome da matriz. Esse número é usado para identificar os elementos
individuais de uma matriz. individuais de uma matriz.
Quando uma matriz é declarada, o compilador reserva um bloco de memória com tamanho suficiente Quando uma matriz é declarada, o compilador reserva um bloco de memória com tamanho suficiente
para conter todos os seus elementos. Os elementos individuais da matriz são armazenados seq"uencialmente para conter todos os seus elementos. Os elementos individuais da matriz são armazenados sequencialmente
na memória. na memória.
8.2 Matrizes Multidimensionais \section{Matrizes Multidimensionais}
Uma matriz multidimensional tem mais de um subscrito. Uma matriz bidimensional tem dois subscritos, Uma matriz multidimensional tem mais de um subscrito. Uma matriz bidimensional tem dois subscritos,
uma matriz tridimensional tem tr^es subscritos e assim por diante. Não há qualquer limite ao número de uma matriz tridimensional tem três subscritos e assim por diante. Não há qualquer limite ao número de
dimensões que uma matriz pode ter em C. dimensões que uma matriz pode ter em C.
8.3 Inicialização de Matrizes \section{Inicialização de Matrizes}
Uma matriz pode ser total ou parcialmente inicializada no momento em que é declarada. Para fazer isto, Uma matriz pode ser total ou parcialmente inicializada no momento em que é declarada. Para fazer isto,
basta colocar um sinal de igualdade após a declaração da matriz e acrescentar uma lista de valores entre basta colocar um sinal de igualdade após a declaração da matriz e acrescentar uma lista de valores entre
chaves, separados por vírgulas. Estes valores serão atribu'idos pela ordem aos elementos da matriz. chaves, separados por vírgulas. Estes valores serão atribuídos pela ordem aos elementos da matriz.
êxemplos: exemplos:
int matriz[4] = f 100, 200, 300, 400 g
/* equivale a:
matriz[0] = 100; matriz[1] = 200;
matriz[2] = 300, matriz[3] = 400;
*/
int matriz[ ] = f 100, 200, 300, 400 g \begin{lstlisting}
int matriz[4] = { 100, 200, 300, 400 }
/* equivale a: /* equivale a:
matriz[0] = 100; matriz[1] = 200; matriz[0] = 100;
matriz[2] = 300, matriz[3] = 400; matriz[1] = 200;
matriz[2] = 300,
matriz[3] = 400;
*/ */
int matriz[3][2] = f 1, 2, 3, 4, 5, 6 g int matriz[ ] = { 100, 200, 300, 400 }
/* equivale a: /* equivale a:
matriz[0] = 100;
matriz[1] = 200;
31 matriz[2] = 300,
matriz[3] = 400;
*/
32 CAP int matriz[3][2] = { 1, 2, 3, 4, 5, 6 }
/* equivale a:
' matriz[0][0] = 1;
matriz[0][1] = 2;
ITULO 8. MATRIZES matriz[1][0] = 3;
matriz[1][1] = 4;
matriz[0][0] = 1; matriz[0][1] = 2; matriz[2][0] = 5;
matriz[1][0] = 3; matriz[1][1] = 4; matriz[2][1] = 6;
matriz[2][0] = 5; matriz[2][1] = 6;
*/ */
/* O que seria equivalente a: */ /* O que seria equivalente a: */
int matriz[3][2] = f f1, 2g, f3, 4g, f5, 6g g int matriz[3][2] = { {1, 2}, {3, 4}, {5, 6} }
\end{lstlisting}
\section{Referenciando um elemento na matriz}
8.4 Referenciando um elemento na matriz
Quando referenciamos um elemento da matriz, o subscrito (número que colocamos entre colchetes seguindo Quando referenciamos um elemento da matriz, o subscrito (número que colocamos entre colchetes seguindo
o nome da matriz) irá especificar a posição do elemento na mesma. o nome da matriz) irá especificar a posição do elemento na mesma.
Os elementos da matriz são sempre numerados por índices iniciados em 0 (zero). Ent~ao, o elemento Os elementos da matriz são sempre numerados por índices iniciados em 0 (zero). Então, o elemento
referenciado pelo número 2 não será o segundo elemento da matriz, mas sim o terceiro. Assim, o 'ultimo referenciado pelo número 2 não será o segundo elemento da matriz, mas sim o terceiro. Assim, o último
êlemento de uma matriz de tamanho N é referenciado por N-1. elemento de uma matriz de tamanho N é referenciado por N-1.
8.5 Lendo um número desconhecido de elementos \section{Lendo um número desconhecido de elementos}
Quando não sabemos de antem~ao quantos itens entrar~ao em nossa matriz, podemos usar uma constante
Quando não sabemos de antemão quantos itens entrarão em nossa matriz, podemos usar uma constante
simbólica para definir o tamanho da matriz na declaração. Assim o tamanho da matriz poderá ser simbólica para definir o tamanho da matriz na declaração. Assim o tamanho da matriz poderá ser
facilmente modificado. facilmente modificado.
êxemplo: exemplo:
#define LIM 30 /* define um tamanho p/ a matriz */
void main()
f
/* declara uma matriz de tamanho LIM */ \lstinputlisting{exemplos/matriz_com_define.c}
int matriz[LIM];
/* declara um contador e inicia-o com zero */
int i = 0;
do
f
printf("Entre com um numero:"); \section{Exercício}
scanf("%d", &matriz[i]); /* le um numero */
i++;
gwhile (i ! LIM);
g
8.6 Exercício 1. Crie uma função que receba como parâmetros um vetor e o seu tamanho, e que ordene esse vetor.
A função não deverá retornar nenhum valor.
1. Crie uma função que receba como par^ametros um vetor e o seu tamanho, e que ordene esse vetor. 2. Crie uma função que recebe como parâmetros um vetor, o seu tamanho e um valor X e que retorne
a primeira posição do vetor cujo valor é igual ao de X. Se a função não encontrar o elemento
A função n~ao deverá retornar nenhum valor.
2. Crie uma função que recebe como par^ametros um vetor, o seu tamanho e um valor X e que retorne
a primeira posição do vetor cujo valor é igual ao de X. Se a fun,c~ao n~ao encontrar o elemento
procurado, ela deve retornar -1. procurado, ela deve retornar -1.
3. Escreva um programa em C para gerar cartões de loteria. Ele recebe como entrada o número de 3. Escreva um programa em C para gerar cartões de loteria. Ele recebe como entrada o número de
cartões e a quantidade de números por cartão, além do limite inferior e superior destes números.
cartões e a quantidade de números por cartão, além do limite inferior e superior destes n'umeros.
Ao final, o programa deve imprimir estes cartões. (DICA: para gerar números aleatórios, utilize a Ao final, o programa deve imprimir estes cartões. (DICA: para gerar números aleatórios, utilize a
função random() da biblioteca stdlib.h). função random() da biblioteca stdlib.h).
4. Escreva um programa em C que calcula a determinante de uma matriz 3x3. 4. Escreva um programa em C que calcula a determinante de uma matriz 3x3.
8.6. EXERC
'
ICIO 33
5. Escreva um programa em C que calcula a multiplicação entre duas matrizes R e S, sendo R de
dimensão i \Theta j, e S de dimens~ao j \Theta k.
34 CAP
'
ITULO 8. MATRIZES
5. Escreva um programa em C que calcula a multiplicação entre duas matrizes $R$ e $S$, sendo $R$ de
dimensão $i \Theta j$, e $S$ de dimensão $j \Theta k$.
\end{document} \end{document}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment