Operações com Vectores e Matrizes

Documentos relacionados
Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

Funções de Entrada e Saída

Programação: Vetores

Linguagem C. André Tavares da Silva.

Algoritmos e Programação

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

Ponteiros e Tabelas. K&R: Capítulo 5

LINGUAGEM C: ARRAY: VETORES E MATRIZES

12 - Dados Estruturados Vetores, Matrizes e Strings

Introdução à Programação em C Input / Output

Conceito de procedimentos e funções

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

Vetores. e o programa deverá ler os valores separadamente:

Introdução a Programação. Tipos Estruturados de Dados

ponteiros INF Programação I Prof. Roberto Azevedo

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

LINGUAGEM DE PROGRAMAÇÃO C AULA 2. Professor: Rodrigo Rocha

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Linguagem C (repetição)

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Linguagem C: Introdução

Introdução à Linguagem C

Fundamentos de Programação

Algoritmos e Programação

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Algoritmos II prof. Daniel Oliveira

Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes

Linguagem C Controle do Fluxo de Execução. Lógica de Programação

Programação 11543: Engenharia Informática 6619: Tecnologias e Sistemas de Informação. Cap. 8 Endereçamento de Memória Endereçamento de Memória

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

TÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados

Programação I Matrizes e Strings. Prof. Carlos Alberto

Aula 06 Introdução à Programação Matrizes

Introdução à Linguagem C Variáveis e Expressões

LINGUAGEM C Estrutura / Funções

Vetores Unimensionais

Linguagem de Programação

Vetores são estruturas indexadas utilizadas para armazenar dados de um mesmo tipo: int, char, float ou double. Oexemploaseguirédeumvetordeinteiros:

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Escreva a função e_caracter que verifica se um determinado caracter é um numero ou não. Escreva um Programa de teste da função.

Introdução à Programação

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Estrutura do programa

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Aula 3 Constantes e funções de E/S

Introdução a Programação de Jogos

Métodos Computacionais. Vetores e Matrizes Dinâmicas

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

LINGUAGEM C++ Prof. Bruno Gomes ESTRUTURAS DE DADOS HOMOGÊNEAS PARTE II - MATRIZES. Currais Novos, 2011

Funções getchar() e putchar()

Programação de Computadores I Funções de Repetição da Linguagem C PROFESSORA CINTIA CAETANO

Linguagem C Princípios Básicos (parte 1)

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Métodos Computacionais em Física

Linguagem C. Prof.ª Márcia Jani Cícero

CI208 - Programação de Computadores. Aula 24: Arrays. Prof. MSc. Diego Roberto Antunes

Programação Básica. Estrutura de um algoritmo

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 3 de setembro de 2010

Variáveis, Tipos de Dados e Operadores

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

Introdução à Programação

Alocação Dinâmica em C

Transcrição:

Operações com Vectores e Matrizes Tópicos Introdução Vectores Definição de vectores Criação/Declaração de vectores Inicialização de vectores exemplos Matrizes Definição de matrizes Criação/Declaração de matrizes Inicialização de matrizes exemplos 1

Operações com Vectores e Matrizes Introdução Até agora já aprendemos em linguagem C o seguinte: Tipos de dados básicos em linguagem C (int, float, char, double) Funções de entrada e saída de dados (printf, puts,putchar, scanf,gets e getchar) Estruturas de controlo de execução de instruções (if-else, switch, operador?:) Estruturas de repetição Ciclos (while, do-while, for) Agora vamos aprender como tratar dados homogéneos (do mesmo tipo) vectores e matrizes, são estruturas para armazenamento de dados do mesmo tipo Um vector é uma estrutura unidimensional Vectores com mais de uma dimensão chamam-se matrizes ou arrays 2

Criação/Declaração de vectores em linguagem C Exemplo de uma pauta Nº Nome Proc. T1 T2 Iniciais 2ªExame Nota Final 1 Albertina Júlio Pedro 5060 13,25 13 A 2 Alberto Jerson F. Ferrão 6134 4,75 5 A 3 André A. Q. Malungo 9349 19,5 20 A 4 Angelina Calenguelela 5883 5,75 6 A 5 António EuclidesAndré 4784 8,25 8 A 6 Aurélio Lumenhe Tchimbungo 7572 8,0 8 A 8 Carlos M. F. Gaspar 4749 11,75 12 C 7 Carlos Mateus Cupapala Filho 4641 10,5 11 C 9 Cláudio R. Ambriz de Carvalho 7343 4,25 4 C 10 Cleney Rafael M. Neto 7515 11,75 12 C 11 Cleusio da Costa Dias dos Santos 5070 4,75 5 C 12 Constantino Quissenguele C. Zua 6777 10,0 10 C 13 Daniel Monteiro Reis Viana 6984 14,25 14 D 14 Delcio Homero Marcolino da Costa 3990 13,75 14 D 15 Délcio M. Carvalho Fernandes 7608 13,25 13 D 16 Diudésio Edgar Pedro de Barros 7605 14,75 15 D 17 Domingas Mateus J. Francisco 5264 9,5 10 D 18 Edna Andreia de F. Brás 4320 12,5 13 E 19 Edna Solange Gomes Ximbi 7160 17,75 18 E 20 Eduarda Carvalho Paixão Franco 7259 14,0 14 E int int char float ou double Para que servem os vectores? No exemplo da pauta podemos criar os seguintes vectores: Um vector para guardar o nº do processo de cada aluno. Um vector para guardar as notas de cada aluno. Um vector para guardar as notas arredondadas de cada aluno, etc. 3

Como definir os vectores? Sintaxe tipo nome_do_vector [dimensão]; Numero de elementos que constitui o vector Nome do vector, um nome qualquer tipo, int, float, double, char Exemplos Um vector para guardar o nº do processo de cada aluno. int processo[20]; Um vector para guardar as notas de cada aluno. float notas[20]; ou double notas[20]; Um vector para guardar as notas arredondadas de cada aluno int notas_arredondadas[20]; 4

Exemplos (continuação) Um vector para guardar a primeira letra do nome de cada aluno. char iniciais[20]; porque 20? - Porque queremos guardar a primeira letra do nome de 20 alunos Não há um limite da dimensão dos vectores, sendo assim, o dimensionamento é da responsabilidade do programador. Quando um vector é criado, em cada posição contêm valores aleatórios (LIXO) Vector -> iniciais Vector com 20 posições lixo lixo lixo lixo lixo lixo lixo lixo lixo lixo lixo lixo lixo lixo lixo lixo lixo lixo lixo lixo 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 índice O índice do primeiro elemento de um vector em C é sempre 0 (Zero) 5

Como inicializar os vectores? Para simplificar vamos considerar apenas os 1ºs 5 alunos: Ou seja: int processo[5]; int notas_arredondadas[5] float notas[5] char iniciais[5]; iniciais lixo lixo lixo lixo lixo Nº Nome Proc. T1 T2 Iniciais 2ªExame Nota Final 1 Albertina Júlio Pedro 5060 13,25 13 A 2 Alberto Jerson F. Ferrão 6134 4,75 5 A 3 André A. Q. Malungo 9349 19,5 20 A 4 Angelina Calenguelela 5883 5,75 6 A 5 António EuclidesAndré 4784 8,25 8 A 6 Aurélio Lumenhe Tchimbungo 7572 8,0 8 A 8 Carlos M. F. Gaspar 4749 11,75 12 C 7 Carlos Mateus Cupapala Filho 4641 10,5 11 C 9 Cláudio R. Ambriz de Carvalho 7343 4,25 4 C 10 Cleney Rafael M. Neto 7515 11,75 12 C 11 Cleusio da Costa Dias dos Santos 5070 4,75 5 C 12 Constantino Quissenguele C. Zua 6777 10,0 10 C 13 Daniel Monteiro Reis Viana 6984 14,25 14 D 14 Delcio Homero Marcolino da Costa 3990 13,75 14 D 15 Délcio M. Carvalho Fernandes 7608 13,25 13 D 16 Diudésio Edgar Pedro de Barros 7605 14,75 15 D 17 Domingas Mateus J. Francisco 5264 9,5 10 D 18 Edna Andreia de F. Brás 4320 12,5 13 E 19 Edna Solange Gomes Ximbi 7160 17,75 18 E 20 Eduarda Carvalho Paixão Franco 7259 14,0 14 E Tal como numa variável, um vector pode ser inicializado no momento da sua criação/declaração int processo[5] = { 5060, 6134, 9349, 5883, 4784 ; float notas[5] = { 13.25, 4.75, 19.5, 5.75, 8.25 int notas_arredondadas[5] = { 13, 5, 20, 6, 8 char iniciais[5] = { A, A, A, A, A ; processo notas notas_arredondadas 5060 6134 9349 5883 4784 13.25 4.75 19.5 5.75 8.25 13 5 20 6 8 iniciais A A A A A Codigo ASCII do caracter A é 65 iniciais 65 65 65 65 65 0 1 2 3 4 6

Inicialização de vectores Tal como numa variável, um vector pode ser inicializado após sua criação/declaração /* definição dos vectores */ int processo[5]; int notas_arredondadas[5] float notas[5] char iniciais[5]; /*inicializações*/ índice processo[0] = 5060; processo[1] = 6134; processo[2] = 9349; processo[3] = 5883; processo[4] = 4784; notas_arredondadas[0] = 13; notas_arredondadas[1] = 5; notas_arredondadas[2] = 20; notas_arredondadas[3] = 6; notas_arredondadas[4] = 8; notas[0] = 13.25; notas[1] = 4.75; notas[2] = 19.5; notas[3] = 5.75; notas[4] = 8.25; iniciais[0] = A ; iniciais[1] = A ; iniciais[2] = A ; iniciais[3] = 65; iniciais[4] = A ; 7

índice notas nota[0] nota[1] nota[2] nota[3] nota[4] 13.25 4.75 19.5 5.75 8.25 notas[0] = 13.25; notas[1] = 4.75; notas[2] = 19.5; notas[3] =5.75; notas[4] =8.25; Forma de aceder a cada elemento do vector Os brasileiros dizem acessar 8

Exemplo de inicialização de vectores no momento da sua criação/declaração #include <stdio.h> int notas_arredondadas[5]= {13,5,20,6,8; char iniciais[]={ A, A, A,65, A ; printf( %c\n,iniciais[0]); printf( %c\n,iniciais[1]); printf( %c\n,iniciais[2]); printf( %c\n,iniciais[3]); printf( %c\n,iniciais[4]); Para exemplificar a inicialização a partir do teclado vamos considerar apenas os vector iniciais e notas_arredondadas Para os outros vectores processo, notas_arredondadas, iniciais, o processo é análogo. O compilador cria um vector com 5 elementos; printf( %d\n,notas_arredondadas[0]); printf( %d\n,notas_arredondadas[1]); printf( %d\n,notas_arredondadas[2]); printf( %d\n,notas_arredondadas[3]); printf( %d\n,notas_arredondadas[4]); 9

Exemplo de inicialização de vectores após sua criação/declaração #include <stdio.h> float notas[5] /*declarações de variáveis*/ /*inicializações*/ notas[0] = 13.25; notas[1] = 4.75; notas[2] = 19.5; notas[3] = 5.75; notas[4] = 8.25; Para exemplificar a inicialização a partir do teclado vamos considerar apenas o vector notas. Para os outros vectores processo, notas_arredondadas, iniciais, o processo é análogo. O programa imprime o seguinte printf( %f\n, notas[0]); printf( %.1f\n,notas[1]); printf( %.2f\n,notas[2]); printf( %.3f\n,notas[3]); printf( %.4f\n,notas[4]); 13.250000 4.8 19.50 5.750 8.2500 6 casas decimais 1 casas decimais 2 casas decimais 3 casas decimais 4 casas decimais Controlo das casas decimais a serem imprimidas, só válido para números reais 10

Inicialização de vectores Exemplo de inicialização de vectores a partir do teclado. Podemos usar a função scanf ou getchar no caso de vectores de caracteres #include <stdio.h> int i; int processo[5]; scanf( %d,&processo[0]); scanf( %d,&processo[1]); scanf( %d,&processo[2]); scanf( %d,&processo[3]); scanf( %d,&processo[4]); /*podemos usar um ciclo para escrita, em vez de 5 instruções printf*/ for( i = 0 ; i < 5 ; i++ ) printf( %d\n,processo[i]); Para exemplificar a inicialização a partir do teclado vamos considerar apenas o vector processo. Para os outros vectores notas, notas_arredondadas, iniciais, o processo é análogo. O que é que o programa imprime? Depende dos que o utilizador inserir 11

Inicialização de vectores Exemplo de inicialização de vectores a partir do teclado. Podemos usar um ciclo para leitura de dados do teclado #include <stdio.h> int i; int processo[5]; /*ciclo para leitura de dados do teclado*/ for( i = 0 ; i < 5 ; i++ ) scanf( %d,&processo[i]); Para exemplificar a inicialização a partir do teclado vamos considerar apenas o vector processo. Para os outros vectores notas, notas_arredondadas, iniciais, o processo é análogo. /*ciclo para escrita*/ for( i = 0 ; i < 5 ; i++ ) printf( %d\n,processo[i]); 12

Inicialização de vectores Exemplo de inicialização de vectores a partir do teclado. Podemos definir uma constante, para representar o tamanho do vector #include <stdio.h> #define DIM 5 int i; int processo[dim]; /*ciclo para leitura de dados do teclado*/ for( i = 0 ; i < DIM ; i++ ) scanf( %d,&processo[i]); /*ciclo para escrita*/ definição de constantes Este programa é genérico, ou seja, O programa cria um vector com uma dimensão arbitrária. Lê os dados do teclado. Imprime os valores no ecrã. Com a directiva #define DIM 5, compilador substitui por 5 onde ele encontrar o identificador DIM for( i = 0 ; i < DIM ; i++ ) printf( %d\n,processo[i]); 13

Inicialização de vectores Exemplo de inicialização de vectores a partir do teclado. Podemos definir uma constante, para representar o tamanho do vector #include <stdio.h> int Dim=5; int i; int processo[5]; /*ciclo para leitura de dados do teclado*/ for( i = 0 ; i < Dim ; i++ ) scanf( %d,&processo[i]); definição uma variável A diferença entre esse exemplo e o exemplo anterior, é que esse consome mais 4 bytes que o anterior. Por causa da variável Dim. /*ciclo para escrita*/ for( i = 0 ; i < Dim ; i++ ) printf( %d\n,processo[i]); 14

Passagem de vectores para funções Se pretendermos ler valores de diferentes vectores, teríamos que utilizar o ciclo de leitura varias vezes. Podemos desenhar uma função para leitura dos elementos de um vector e utiliza-la para ler os elementos dos vários vectores. A função terá que receber como parâmetro de entrada o vector a ser inicializado. Vamos desenhar uma função de leitura dos elementos do vector processos. void leitura(int processos[5]) int i; /*ciclo de leitura*/ for(i = 0 ; i < 5 ; i++){ printf( insira o elemento: ); scanf( %d,&processos[i]); 15

Passagem de vectores para funções Essa função é limitada, para vectores com 5 elementos. Podemos reescrever a função de modo a funcionar com vectores com uma dimensão n qualquer void leitura2(int vector[],int n) int i; /*ciclo de leitura*/ for(i = 0 ; i < n ; i++){ printf( insira o elemento: ); scanf( %d,&vector[i]); Analogamente, pode-se criar uma função para escrita dos elementos do vector no ecrã. void escrita(int vector[5]) int i; /*ciclo de escrita*/ for(i = 0 ; i < 5 ; i++) printf( %d,vector[i]); Para 5 elementos void escrita2(int vector[],int n) int i; /*ciclo de escrita*/ for(i = 0 ; i < n ; i++) printf( %d,vector[i]); genérico 16

Leitura e escrita dos dados de um vector sem usar funções Leitura e escrita dos dados de um vector usando funções #include <stdio.h> #define DIM 5 #include <stdio.h> #define DIM 5 #include <stdio.h> #define DIM 5 int i; int processo[dim]; /*ciclo para leitura de dados do teclado*/ for( i = 0 ; i < DIM ; i++ ) scanf( %d,&processo[i]); /*ciclo para escrita*/ for( i = 0 ; i < DIM ; i++ ) printf( %d\n,processo[i]); void leitura(int processo[5]); void escrita(int processo[5]); int i; int processo[dim]; /*leitura de dados do teclado*/ leitura(processo); /*ciclo para escrita*/ escrita(processo); void leitura2(int vector[],int n); void escrita2(int vector[],int n); int i; int processo[dim]; /*leitura de dados do teclado*/ leitura2(processo,dim); /*ciclo para escrita*/ escrita2(processo,dim); 17

Matrizes Declaração/criação de matrizes Inicialização de matrizes no momento da sua declaração Inicialização de matrizes após sua criação Inicialização de matrizes após sua criação, com dados provenientes do teclado Exemplo de operações com matrizes 18

Matrizes Criação de matrizes Sintaxe tipo nome_da_matriz [dimensão][dimensão]; Número de colunas da matriz Número de linhas da matriz Nome do vector, um nome qualquer Tipo: int, float, double, char Vamos criar as matrizes abaixo: 1.2 4.3 1.4 A = 3.0 2.5 0 3.2 5.1 2.8 0 1 2 B = 3 4 5 E d n a H u g o C = E l s a I n e s 1.2 1.3 2.9 D = 0.7 4.1 5.2 19

Matrizes Criação de matrizes 1.2 4.3 1.4 A = 3.0 2.5 0 3.2 5.1 2.8 0 1 2 B = 3 4 5 matriz A Constituída por números reais (tipo float ou double) Tem 3 linhas e 3 colunas (dimensão 3x3) matriz B Constituída por números inteiros (tipo int) Tem 2 linhas e 3 colunas (dimensão 2x3) E d n a H u g o C = E l s a I n e s 1.2 1.3 2.9 D = 0.7 4.1 5.2 float matriza[3][3]; int matrizb[2][3]; matriz C Constituída por caracteres (tipo char) Tem 4 linhas e 4 colunas (dimensão 4x4) char matrizc[4][4]; matriz D Constituída por número reais (tipo float ou double) Tem 2 linhas e 3 colunas (dimensão 2x3) float matrizd[2][3]; 20

Matrizes Criação de matrizes 1.2 4.3 1.4 A = 3.0 2.5 0 3.2 5.1 2.8 0 1 2 B = 3 4 5 E d n a H u g o C = E l s a I n e s 1.2 1.3 2.9 D = 0.7 4.1 5.2 float matriza[3][3]; é reservado 3x3 posições de memória, cada uma com 4bytes int matrizb[2][3]; é reservado 2x3 posições de memória, cada uma com 4 bytes char matrizc[4][4]; é reservado 4x4 posições de memória, cada uma com 1 byte float matrizd[2][3]; é reservado 2x3 posições de memória, cada uma com 4 bytes Essas posições de memória são inicialmente inicializadas com valores aleatórios (LIXO) 21

Matrizes Inicialização de matrizes no momento da sua criação 1.2 4.3 1.4 A = 3.0 2.5 0 3.2 5.1 2.8 0 1 2 B = 3 4 5 E d n a H u g o C = E l s a I n e s 1.2 1.3 2.9 D = 0.7 4.1 5.2 float matriza[3][3] = { { 1.2, 4.3, 1.4, { -3.0, 2.5, 0.0, { 3.2, 5.1, 2.8 ; int matrizb[2][3] = { { 0, 1, 2, { 3, 4, 5 ; char matrizc[4][4] = { { E, d, n, a, { H, u, g, o, { E, l, s, a, { I, n, e, s ; float matrizc[2][3] = { { 1.2, 1.3, 2.9, { 0.7, 4.1, 5.2 ; 22

Matrizes Exemplo de inicialização de matrizes no momento da sua criação #include <stdio.h> int matrizb[2][3] = {{0,1,2,{3,4,5; Para exemplificar a inicialização de matrizes após sua criação, vamos considerar apenas a matrizb. Para as outras matrizes, matriza, matrizc, matrizd, o processo é análogo. /*escrita dos elementos da matriz no ecrã. */ printf( %d,matrizb[0][0]); printf( %d,matrizb[0][1]); printf( %d\n,matrizb[0][2]); printf( %d,matrizb[1][0]); printf( %d,matrizb[1][1]); printf( %d,matrizb[1][2]); Matriz B 0 1 2 B = 3 4 5 Para imprimir os elementos da matizb usou-se 6 instruções/funções printf. Não é a melhor forma de programar. Convém usar ciclos. Nesse caso tem que se usar dois ciclos Um para controlar as linhas da matriz. Um para controlar as colunas da matriz. 23

Matrizes Inicialização de matrizes após sua criação #include <stdio.h> int i,j; float matrizd[2][3]; /*inicialização da matriz D*/ matrizd[0][0] = 1.2; matrizd[0][1] = 1.3; matrizd[0][2] = 2.9; matrizd[1][0] = 0.7; matrizd[1][1] = 4.1; matrizd[1][2] = 5.2; /*ciclos de escrita*/ for( i = 0 ; i < 2 ; i++ ) { for( j = 0 ; j < 3 ; j++ ) { printf( %.1f,matrizD[i][j]); printf( \n ); Matriz D 1.2 1.3 2.9 D = 0.7 4.1 5.2 Para exemplificar a inicialização de matrizes após sua criação, vamos considerar apenas a matrizd. Para as outras matrizes, matriza, matrizb, matrizc, o processo é análogo. O programa imprime no ecrã o seguinte: 1.2 1.3 2.9 0.7 4.1 5.2 24

Matrizes Inicialização de matrizes a partir do teclado #include <stdio.h> int i,j; float matrizd[2][3]; /*inicialização da matriz D*/ scanf( %f,&matrizd[0][0]); scanf( %f,&matrizd[0][1]); scanf( %f,&matrizd[0][2]); scanf( %f,&matrizd[1][0]); scanf( %f,&matrizd[1][1]); scanf( %f,&matrizd[1][2]); /*ciclos de escrita*/ for( i = 0 ; i < 2 ; i++ ) { for( j = 0 ; j < 3 ; j++ ) { printf( %.1f,matrizD[i][j]); printf( \n ); Matriz D 1.2 1.3 2.9 D = 0.7 4.1 5.2 O programa em analise efectua as seguintes Operações: Lê 6 números reais do teclado Guarda-os numa matriz rectangular, do tipo 2x3 Escreve esses números em duas linhas Obs.: É possível fazer o mesmo programa usando um vector com dimensão 6. O que o programa imprime no ecrã? É possível fazer a leitura desses dados Usando ciclos 25

Matrizes Exemplo de um programa em linguagem C que efectua a soma da matriz B com a matriz D e escreve O resultado no ecrã. #include <stdio.h> int i,j; int matrizb[2][3] = {{0,1,2,{3,4,5; float matrizd[2][3] = {{1.2,1.3,2.9,{0.7,4.1,5.2; float resultado[2][3]; /*cálculo da soma*/ for( i = 0 ; i < 2 ; i++ ) for( j = 0 ; j < 3 ; j++ ) resultado[i][j] = matrizb[i][j]+matrizd[i][j]; /*ciclos de escrita*/ for( i = 0 ; i < 2 ; i++ ) { for( j = 0 ; j < 3 ; j++ ) printf( %.1f,resultado[i][j]); printf( \n ); 26

#include <stdio.h> int i,j; int mat_a[3][3]; int mat_b[3][3]; int mat_c[3][3]; /*leitura dos valores da matriz A*/ for( i = 0 ; i < 3 ; i++ ) for( j = 0 ; j < 3 ; j++ ){ printf( insira A[%d][%d]:,i,j); scanf( %d,&mat_a[i][j]); /*leitura dos valores da matriz B*/ for( i = 0 ; i < 3 ; i++ ) for( j = 0 ; j < 3 ; j++ ){ printf( insira B[%d][%d]:,i,j); scanf( %d,&mat_b[i][j]); /*calculo da soma*/ for( i = 0 ; i < 3 ; i++ ) for( j = 0 ; j < 3 ; j++ ) mat_c[i][j] = mat_a[i][j] + mat_b[i][j]; Exemplo de um programa em linguagem C que efectua a soma de duas matrizes de números inteiros quaisquer do tipo 3x3, e apresenta o resultado no ecrã. /*ciclos de escrita*/ for( i = 0 ; i < 2 ; i++ ){ for( j = 0 ; j < 3 ; j++ ) printf( %.1f,mat_C[i][j]); printf( \n ); 27

Matrizes Analogamente do que se fez nos vectores podemos criar funções para leitura e escrita dos elementos de uma matriz Função para leitura dos dados Função para escrita dos dados void leitura(int mat[3][3]){ int i,j; /*ciclo de leitura*/ for( i = 0 ; i < 3 ; i++ ) for( j = 0 ; j < 3 ; j++ ) { scanf( %d,&mat[i][j]); void escrita(int mat[3][3]){ int i,j; /*ciclos de escrita*/ for( i = 0 ; i < 3 ; i++ ) { for( j = 0 ; j < 3 ; j++ ) printf( %d,mat[i][j]); printf( \n ); 28

Matrizes Exemplo de um programa em linguagem C que efectua a soma de duas matrizes de números inteiros quaisquer do tipo 3x3, e apresenta o resultado no ecrã. #include <stdio.h> void leitura(int mat[3][3]); /*prototipo das funções*/ void escrita(int mat[3][3]); int i,j; int mat_a[3][3]; int mat_b[3][3]; int mat_c[3][3]; /*leitura dos valores da matriz A*/ leitura(mat_a); /*leitura dos valores da matriz B*/ leitura(mat_b); /*calculo da soma*/ for( i = 0 ; i < 3 ; i++ ) for( j = 0 ; j < 3 ; j++ ) mat_c[i][j] = mat_a[i][j] + mat_b[i][j]; Código mais compacto /*escrita do resultado*/ escrita(mat_c); 29