190 likes | 317 Views
Programação II Estruturas de Dados. NGUESSAN.DESIRE@POLI.USP.BR. Estruturas Homogêneas: Vetores e Matrizes. Estruturas Homogêneas: Vetores Um Vetor é um arranjo de elementos armazenados na MP: Memória Principal, um após o outro, todos com o mesmo nome.
E N D
Programação IIEstruturas de Dados NGUESSAN.DESIRE@POLI.USP.BR Désiré NGuessan
Estruturas Homogêneas: Vetores e Matrizes • Estruturas Homogêneas: Vetores • Um Vetor é um arranjo de elementos armazenados na MP: Memória Principal, um após o outro, todos com o mesmo nome. • A posição de um elemento é indicada por um índice i que varia de 0 ... N • Declaração de Vetor tipo nome [ dimensão]; • tipo de dado; • nome do vetor • dimensão: numero de elementos ou tamanho Désiré NGuessan
Estruturas Homogêneas: Vetores e Matrizes • Exemplos • int A[5]; • A é um vetor de inteiros dimensionado com 5 elementos • Assim se cada inteiro ocupa 4 bytes a declaração reserva um espaço de memória de 20 bytes como mostra a figura abaixo. A Endereço contiguo de memória Representação na memória Désiré NGuessan
Estruturas Homogêneas: Vetores e Matrizes • Inicializando um Vetor int A[5] = {5,10,15, 20, 25}; ou int A[ ] = {5,10,15, 20, 25}; • Leitura de um vetor Int i ; for (i= 0 ; i <5; i++) // faz o índice varia de 0 a 4 scanf("%d", &A[i]); // lê cada elemento do vetor • Imprimir um vetor Int i ; for (i= 0 ; i <5; i++) // faz o índice varia de 0 a 4 printf("%d", A[i]); // imprime cada elemento do vetor Désiré NGuessan
Estruturas Homogêneas: Vetores e Matrizes • Estruturas Homogêneas: Matriz • Uma matriz é um conjunto bi ou multidimensional de elementos armazenados na MP, todos com o mesmo nome. • A posição de um elemento é indicada por mais de um índice i, j que variam de 0 ... N • Declaração de Vetor tipo nome [ dimensão1] [ dimensão2]; • tipo de dado; • nome do vetor • dimensão1: numero de linhas • dimensão2: numero de colunas Désiré NGuessan
Estruturas Homogêneas: Vetores e Matrizes • Exemplos • int M[3][2]; • M é uma matriz de inteiros com 3 linhas e 2 colunas • Assim se cada inteiro ocupa 4 bytes a declaração reserva um espaço de memória de 24 bytes de maneira continua como mostra a figura abaixo. M Désiré NGuessan
Estruturas Homogêneas: Vetores e Matrizes • Inicializando uma Matriz int A[3] [2]= {{5,10},{15, 20}, {21,25}}; ou int A[ 3] [2]= {5,10,15, 20, 21,25}; • Leitura de ma Matriz Int i,j ; for (i= 0 ; i <3; i++) // faz o índice i varia de 0 a 3 for (j= 0 ; i <2; i++) // faz o índice j varia de 0 a 2 scanf("%d", &A[i][j]); // lê cada elemento do vetor Désiré NGuessan
Estruturas Homogêneas: Vetores e Matrizes • Imprimindo uma Matriz Int i,j ; for (i= 0 ; i <3; i++) // faz o índice i varia de 0 a 3 for (j= 0 ; i <2; i++) // faz o índice j varia de 0 a 2 printf("%d", A[i][j]); // imprime cada elemento do vetor Désiré NGuessan
Atividade Desenvolva um programa que carregue uma matriz 12 X 4 com os valores das vendas de uma loja, em que a cada linha represente um mês do ano, e cada coluna, uma semana do mês. Calcule e imprima: • Total vendido em cada mês do ano; • Total vendido em cada semana durante todo o ano; • Total vendido no ano. Désiré NGuessan
#include <stdio.h> #include <stdlib.h> # define MES 12 # define SEMANA 4 int main(int argc, char *argv[]) { // DECLARAÇÃO DE VARIAVEIS float VENDAS[MES][SEMANA]; float VENDAS_MES[MES]; float VENDAS_SEMANA[SEMANA]; float TOTAL_ANO; int i, j; Désiré NGuessan
// LEITURA DAS VENDAS for (i = 0; i < MES; i ++ ) { printf(“%d\n", i); // VENDAS DE CADA MES for (j = 0 ; j< SEMANA; j ++ ) { // VENDA DE CADA SEMANA printf("entre com a venta da semana %d do mes %d\n", i, j); scanf("%f", &VENDAS[i][j]); } } Désiré NGuessan
// INICIALIZANDO VENDAS for (i = 0; i < MES ; i ++ ) VENDAS_MES[i]= 0; for (j = 0 ; j< SEMANA ; j ++ ) VENDAS_SEMANA[j]; TOTAL_ANO = 0; // CALCULOS DE VENDAS for (i = 0; i < MES ; i ++ ) { for (j = 0 ; j < SEMANA; j ++ ) { VENDAS_MES[i]+= VENDAS[i][j]; VENDAS_SEMANA[j]+= VENDAS[i][j]; TOTAL_ANO += VENDAS[i][j]; } } Désiré NGuessan
// IMPRIMIR RESULTADO printf("Total vendido em cada mes do ano:\n"); for (i = 0; i < MES ; i ++ ) printf (" %.2f\n", VENDAS_MES[i]); printf("Total vendido em cada semana durante todo o ano:\n"); for (j = 0 ; j < SEMANA ; j ++ ) printf (" %.2f\n", VENDAS_SEMANA[j]); printf("TOTAL VENDIDO NO ANO:\n"); printf (" %.2f\n", TOTAL_ANO); system("PAUSE"); return 0; } // FIM Désiré NGuessan
Estruturas Homogêneas: Vetores e Matrizes • int M[3][2]; • M é uma matriz de inteiros com 3 linhas e 2 colunas • Assim se cada inteiro ocupa 4 bytes a declaração reserva um espaço de memória de 24 bytes de maneira continua como mostra a figura abaixo. M Désiré NGuessan
Estruturas Homogêneas: Vetores e Matrizes • Vetor e Matriz como Argumentos de Funções • Passar um vetor ou uma matriz para uma função consiste em passar o endereço da primeira posição ou seja o endereço inicial do vetor ou matriz (nome). • A função chamada deve ter um parâmetro do tipo ponteiro para armazenar este valor • Por exemplo se passamos para uma função um vetor de intdevemos ter um parâmetro de tipo *int M Désiré NGuessan
Estruturas Homogêneas: Vetores e Matrizes • Vetor e Matriz como parâmetro de Funções // função para calcular média do elemento de um vetor float MEDIA(int n , float *nota) { int i; float soma = 0.0f; for (i= 0; i< n; i++) soma+= nota[i]; return soma/n } M Désiré NGuessan
Estruturas Homogêneas: Vetores e Matrizes • Vetor e Matriz como argumento de Funções // chamando a função MEDIA() floatvetor_nota[10]; int i; for (i= 0; i< n; i++) scanf(“%f”,&vetor_nota[i]); printf(“media = %f”, MEDIA(10, vetor_nota) ); M Désiré NGuessan
Exercicio1 Ler um vetor A com 10 elementos. Construir uma matriz C de duas dimensões com três colunas, em que: a primeira coluna da matriz C é formada pelos elementos do vetor A somados com mais 5, a segunda coluna é formada pelo valor do cálculo da variância dos elementos do vetor A (a variância é dada pelas formulas a seguir), a terceira e última coluna deve ser formada pelos quadrados dos elementos correspondentes do vetor A. Apresentar a matriz C. Désiré NGuessan
Exercicio 2 Implemente uma função em C que receba como parâmetro um vetor de números inteiros e retorne quantos números pares estão armazenados nesse vetor. Essa função deve obedecer ao protótipo: int pares ( int n, int* vetor); Désiré NGuessan