PCI- Matrizes Profa. Mercedes Gonzales Márquez Algoritmos e Estruturas de Dados I Aula 6 - Matrizes Conceito • Uma matriz é um conjunto de variáveis de mesmo tipo que possui duas dimensões. • Declaração: <tipo> nome da matriz [<linhas>] [<colunas>] Uma matriz possui linhas x colunas variáveis do tipo <tipo>. As linhas são numeradas de 0 a linhas - 1. As colunas são numeradas de 0 a colunas -1. Algoritmos e Estruturas de Dados I Aula 6 - Matrizes Exemplo Lendo uma matriz n x n do teclado: /*Leitura*/ for (i = 0; i < n; i++) for (j = 0; j < n; j++) { printf ("Matriz[%d][%d]: ", i, j); scanf ("%d", &matriz[i][j]); } Algoritmos e Estruturas de Dados I Aula 6 - Matrizes Exemplo Escrevendo uma matriz n x n na tela: /*Escrita*/ for (i = 0; i < n; i++) { for (j = 0; j < n; j++) printf ("%d ", matriz[i][j]); printf ("\n"); } Implemente os exemplos 1 ao 13 dos slides de matrizes da disciplina AEDI: http://www.comp.uems.br/~mercedes/disciplinas /2015/AEDI/ Algoritmos e Estruturas de Dados I Aula 6 - Matrizes Exercício Fazer um algoritmo que: a) leia uma matriz inteira A de M X N. onde os elementos de cada linha e os valores de M são fornecidos (M <=20, N<=10); b) imprima a matriz lida; c) calcule e imprima uma matriz modificada B (M x N + I). sendo que os elementos da (N+1-é sima coluna são formados com o produto dos elementos da mesma linha (exercício 2.5.2.7 Farrer) #include<stdio.h> int main(){ int A[20][10], i, j, B[20][11],m,n; do { printf ("Informe o numero de linhas de A: "); scanf("%d", &m); }while (m<1 && m>20); do { printf ("Informe o numero de colunas de A: "); scanf("%d", &n); Algoritmos e Estruturas de Dados I Aula 6 - Matrizes for (i=0; i<m; i++){ B[i][n]=1; for(j=0; j<n; j++){ printf(" Informe A[%d][%d] =", i, j); scanf("%d", &A[i][j]); B[i][j]=A[i][j]; B[i][n]*=B[i][j]; } } printf ("Matriz A"); for (i=0; i<m; i++){ printf ("\n"); for(j=0; j<n; j++){ printf(" %d",A[i][j]); } } printf ("\n Matriz B"); for (i=0; i<m; i++){ printf ("\n"); for(j=0; j<=n; j++){ printf(" %d", B[i][j]); } } } Algoritmos e Estruturas de Dados I Aula 6 - Matrizes Exercício Um grupo de pessoas respondeu a um questionário composto de 10 perguntas. Cada pergunta contém cinco opções ou respostas possíveis codificadas de I a 5 Cada pergunta é respondida com a escolha de apenas uma opção dentre as cinco opções possíveis. São fornecidos os nomes das pessoas e suas respectivas respostas. A última informação utilizada, como flag, contém o nome da pessoa igual a "VAZIO". Fazer um algoritmo para ler e imprimir os dados lidos e calcular e imprimir o número de pessoas que responderam a cada uma das cinco opções de cada pergunta.(exercício 2.5.2.9 Farrer) #include<stdio.h> #include <string.h> int main(){ int R[10], i, j, O[5], c=0; char N[20]; for(j=0;j<5; j++) O[j]=0; printf("Digite o nome da pessoa 1: "); scanf ("%s",N); Algoritmos e Estruturas de Dados I Aula 6 - Matrizes while (strcmp(N,"vazio")){ for(j=0;j<10; j++){ printf("Digite a resposta da pergunta %d: ", j+1); scanf("%d", &R[j]); O[R[j]-1]++; } c++; printf ("\nRespostas da pessoa %d ===>", c); for(j=0;j<10; j++) printf("%d", R[j]); printf("\n\nDigite o nome da pessoa numero %d:", c+1); scanf ("%s", N); } printf ("\nFim dos dados\n"); for(j=0;j<5; j++) printf ("\n O numero de pessoas que responderam a opcao %d foi: %d", j+1, O[j]); }