Você está na página 1de 28

PROGRAMAO

FUNES NA LINGUAGEM C
1

Funes em C
Implementaes bsicas: a) Implementar o procedimento LerMatriz que preenche uma matriz de L linhas por C colunas de inteiros (L, C 1); b) Implementar o procedimento EscreverMatriz que escreve uma matriz de L linhas por C colunas de inteiros (L, C 1) no cran; a) Implementar a funo LerValorValido que verifica se um valor introduzido pelo utilizador pertence ao conjunto limitado por dois dados valores inteiros, devolvendo o primeiro valor que pertena quele intervalo;

Funes em C
Procedimento: LerMatriz Parmetros:

Uma matriz X vazia (sem valores) Dois nmeros inteiros L e C (L, C 1 a dimenso de X)

Sada:

A matriz X preenchida (com valores)

Funes em C
Algoritmo: Para i com valores desde 0 at L-1 Fazer Mostrar a mensagem Inserir a linha i da matriz Para j com valores desde 0 at C-1 Fazer Mostrar a mensagem Inserir um valor inteiro Introduzir um valor inteiro para X[i][j]

Funes em C
void LerMatriz (int X[][], int L, int C) { int i, j; for (i = 0; i <= L-1; i++) { printf (Inserir a linha %d da matriz.\n, i); for (j = 0; j <= C-1; j++) { printf (Inserir um valor inteiro: ); scanf (%d, &X[i][j]); } } }
5

Funes em C
Procedimento: EscreverMatriz Parmetros:

Uma matriz X preenchida Dois nmeros inteiros L e C (L, C 1 a dimenso de X)

Sada:

Apresenta no cran os elementos da matriz X

Funes em C
Algoritmo: Para i com valores desde 0 at L-1 Fazer Mostrar a mensagem Linha i da matriz: Para j com valores desde 0 at C-1 Fazer Mostrar o valor de X[i][j]

Funes em C
void EscreverMatriz (int X[][], int L, int C) { int i, j; for (i = 0; i <= L-1; i++) { printf (Linha %d da matriz: , i); for (j = 0; j <= C-1; j++) printf (%d , X[i][j]); printf (\n); } }

Funes em C
Funo: LerValorValido Parmetros:

Dois valores inteiros, inf e sup, correspondentes aos limites inferior e superior do intervalo vlido

Retorno:

Um nmero inteiro pertencente ao conjunto {inf, ..., sup}

Funes em C
Algoritmo: Fazer Mostrar a mensagem Inserir um inteiro entre inf e sup Introduzir um valor inteiro para Dim Enquanto 'Dim < inf ou Dim > sup' verdadeira Devolver (Dim)

10

Funes em C
int LerValorValido (int inf, int sup) { int do { printf (Insira um inteiro entre %d e %d: , inf, sup); scanf (%d, &Dim); } while (Dim < inf || Dim > sup); return (Dim); } Dim;

11

Funes em C
Enunciado: a) Implementar a funo NumNulosMatriz para calcular a quantidade de elementos nulos de uma matriz de inteiros de L linhas por C colunas; a) Implementar o procedimento MatrizTransposta que constri a transposta de uma matriz quadrada de ordem N (N linhas por N colunas) X; b) Construir um programa em C que leia uma matriz quadrada Mat de ordem N (1 N 10), determine e escreva no cran a quantidade de nulos de Mat e, calcule e escreva a matriz transposta de Mat, usando as funes anteriores.
12

Funes em C
Procedimento: NumNulosMatriz Parmetros:

Uma matriz X preenchida Dois nmeros inteiros L e C (L, C 1 a dimenso de X)

Sada:

Um valor inteiro correspondente quantidade de nulos que esto na matriz X

13

Funes em C
Algoritmo: Atribuir a Nulos o valor inteiro 0 Para i com valores desde 0 at L-1 Fazer Para j com valores desde 0 at C-1 Fazer Se 'Mat[i][j] = 0' verdadeira Fazer Atribuir a Nulos o valor inteiro Nulos+1 Devolver (Nulos)

14

Funes em C
int NumNulosMatriz (int X[][], int L, int C) { int i, j, Nulos; Nulos = 0; for (i = 0; i <= L-1; i++) for (j = 0; j <= C-1; j++) if (X[i][j] == 0) Nulos++; return (Nulos); }
15

Funes em C
Procedimento: MatrizTransposta Parmetros:

Uma matriz quadrada preenchida, X Uma matriz quadrada vazia, XT Um nmero inteiro N (N 1 a ordem de X e XT)

Sada:

A matriz transposta de X, XT (a linha k da matriz X corresponde coluna k da matriz XT)

16

Funes em C
Algoritmo: Para i com valores desde 0 at N-1 Fazer Para j com valores desde 0 at N-1 Fazer Atribuir a XT[j][i] o valor inteiro X[i][j]

17

Funes em C
void MatrizTransposta (int X[][], int XT[][], int N) { int i, j; for (i = 0; i <= N-1; i++) for (j = 0; j <= N-1; j++) XT[j][i] = X[i][j]; }

18

Funes em C
Algoritmo (principal): Atribuir a N o valor inteiro LerValorValido(1, 10) LerMatriz(X, N, N) Atribuir a Nulos o valor inteiro NumNulosMatriz(X, N, N) Mostrar a mensagem Quantidade de nulos da matriz: Mostrar o valor de Nulos MatrizTransposta(X, XT, N) Mostrar a mensagem Matriz transposta EscreverMatriz(XT, N, N)

19

Funes em C
#include <stdio.h> void LerMatriz (int X[][], int L, int C); void EscreverMatriz (int X[][], int L, int C); int LerValorValido (int inf, int sup); int NumNulosMatriz (int X[][], int L, int C); void MatrizTransposta (int X[][], int XT[][], int N);

20

Funes em C
main ( ) { int X[10][10], XT[10][10], N, Nulos; N = LerValorValido(1, 10); LerMatriz(X, N, N); Nulos = NumNulosMatriz(X, N, N); printf (A quantidade de nulos da matriz : %d.\n, Nulos); MatrizTransposta(X, XT, N); printf(Matriz transposta\n); } EscreverMatriz(XT, N, N);

21

Funes em C
Enunciado: a) Implementar o procedimento MatrizProduto que calcula o produto de duas matrizes de inteiros, X (de L1 linhas por C1 colunas) e Y (de L2 linhas por C2 colunas); b) Construir um programa em C que leia duas matrizes de inteiros, A (de M1 linhas por N1 colunas) e B (de M2 linhas por N2 colunas) (com N1 = M2), determine a matriz produto entre A e B, e escreva a matriz resultante, usando as funes anteriores.

22

Funes em C
Procedimento: MatrizProduto Parmetros:

Uma matriz preenchida de inteiros X Uma matriz preenchida de inteiros Y Uma matriz vazia de inteiros XY Um nmero inteiro associado ao nmero de linhas de X, M1 Um nmero inteiro associado ao nmero de colunas de X, N1 Um nmero inteiro associado ao nmero de linhas de Y, M2 Um nmero inteiro associado ao nmero de colunas de Y, N2

Sada:

A matriz produto de X por Y, XY (de M1 linhas por N2 colunas)

23

Funes em C
Algoritmo: Para i com valores desde 0 at M1-1 Fazer Para j com valores desde 0 at N2-1 Fazer Atribuir a S o valor inteiro 0 Para k com valores desde 0 at N1-1 Fazer Atribuir a S o valor inteiro (S + X[i][k]*Y[k][j]) Atribuir a XY[i][j] o valor inteiro S

24

Funes em C
void MatrizProduto (int X[][], int Y[][], int XY[][], int M1, int N1, int M2, int N2) { int i, j, k, S; for (i = 0; i <= M1-1; i++) for (j = 0; j <= N2-1; j++) { S = 0; for (k = 0; k <= N1-1; j++) S = S + X[i][k] * Y[k][j]; XY[i][j] = S; } }
25

Funes em C
Algoritmo (principal): Atribuir a M1 o valor inteiro LerValorValido(1, 15) Atribuir a N1 o valor inteiro LerValorValido(1, 10) Mostrar a mensagem Matriz A: LerMatriz (A, M1, N1) Atribuir a M2 o valor inteiro N1 Atribuir a N2 o valor inteiro LerValorValido(1, 20) Mostrar a mensagem Matriz B: LerMatriz (B, M2, N2) MatrizProduto (A, B, PROD, M1, N1, M2, N2) Mostrar a mensagem Matriz produto obtida : EscreverMatriz (PROD, M1, N2)
26

Funes em C
#include <stdio.h> void LerMatriz (int Mat[][], int L, int C); void EscreverMatriz (int Mat[][], int L, int C); int LerValorValido (int inf, int sup); void MatrizProduto (int X[][], int Y[][], int XY[][], int M1, int N1, int M2, int N2); main ( ) { int int A[15][10], B[10][20], PROD[15][20]; M1, N1, M2, N2;
27

Funes em C
M1 = LerValorValido (1, 15); N1 = LerValorValido (1, 10); printf (Matriz A:\n); LerMatriz (A, M1, N1); M2 = N1; N2 = LerValorValido (1, 20); printf (Matriz B:\n); LerMatriz (B, M2, N2); MatrizProduto (A, B, PROD, M1, N1, M2, N2); printf (Matriz produto obtida :\n); EscreverMatriz (PROD, M1, N2); }
28

Você também pode gostar