Buscar

Vetores e Matrizes em Programação Estruturada

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

PROGRAMAÇÃO ESTRUTURADA
Professora: Luciana Rocha Cardoso
- Objetivo dessa aula: vetores e matrizes
10. Estruturas de Dados Homogêneas - Arrays
Estruturas de dados e algoritmos são temas fundamentais da ciência da computação sendo utilizados nas mais diversas áreas do conhecimento e com os mais diferentes propósitos de aplicação. Sabe-se que algoritmos manipulam dados. Quando estes dados estão organizados (dispostos) de forma coerente, caracterizam uma forma, uma estrutura de dados. São a organização e os métodos que manipulam esta determinada estrutura que lhes conferem singularidade. As estruturas de dados são chamadas tipos de dados compostos que se dividem em dois: homogêneos (vetores e matrizes) e heterogêneos (registros).
10.1. Vetores
Em C, vetores são matrizes unidimensionais de elementos do mesmo tipo. Esse tipo de estrutura de dado tem uma aplicação bastante vasta, vejamos abaixo como se declara um vetor:
/*declaração de um vetor*/
tipo nome_do_vetor[número _de_elementos];
Ao ler uma expressão como a de cima, o compilador reserva na memória espaço suficiente para armazenar o número de elementos especificado na declaração.
Um mesmo problema pode ser solucionado utilizando variáveis simples ou variáveis compostas unidimensionais, porem os vetores podem armazenar vários dados em sua estrutura, e com isso pode manipular um maior número de informações de forma mais rápida. Vamos analisar a seguir um exemplo resolvido de duas formas: com vetor e sem vetor.
Criar um programa que solicite como entrada 10 nomes de funcionários, e logo exibi-os.
Exemplo sem vetor:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
main(){
 char func1[15], func2[15], func3[15], func4[15],func5[15], func6[15], func7[15], func8[15], func9[15], func10[15];
 printf("Entre com 10 funcionario: \n");
 scanf("%s",&func1);
 scanf("%s",&func2);
 scanf("%s",&func3);
 scanf("%s",&func4);
 scanf("%s",&func5);
 scanf("%s",&func6);
 scanf("%s",&func7);
 scanf("%s",&func8);
 scanf("%s",&func9);
 scanf("%s",&func10);
 
 getchar();
 printf("\nLimpando a tela");
 _sleep(5000);
 system("cls");
 printf(" Funcionario: ");
 printf("\n -----------\n");
 printf("%s\n",func1);
 printf("%s\n",func2);
 printf("%s\n",func3);
 printf("%s\n",func4);
 printf("%s\n",func5);
 printf("%s\n",func6);
 printf("%s\n",func7);
 printf("%s\n",func8);
 printf("%s\n",func9);
 printf("%s\n",func10);
 system("pause");
}
Com o exemplo acima, teve que declarar 10 variáveis simples para armazenar os nomes dos funcionários (func1 a func10). Com isso vemos, que a resolução não foi utilizada nenhuma estrutura de dados, as informações foram armazenadas em 10 variáveis diferentes. Mas nesse caso, é relativamente baixo o número de variáveis, pois se fosse 10.000 funcionários, ai sim, teríamos um problema maior pois ficaria muito trabalhoso escrever um código como mostrado acima.
O ideal para casos em que a quantidade de nomes é muito grande, é utilizar uma única variável que consegue armazenar muitos dados e cada um em uma posição diferente. Veja a seguir o mesmo exemplo refeito com a utilização de vetor:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
main(){
 char func[10][15]; //vetor
 int i;
 printf("Entre com 10 funcionario: \n");
 for(i=0;i<10;i++){
 scanf("%s",&func[i]);
 }
 getchar();
 printf("\nLimpando a tela");
 _sleep(5000);
 system("cls");
 printf(" Funcionario: ");
 printf("\n -----------\n");
 for(i=0;i<=9;i++){
 printf("%s\n",func[i]);
 
 }
 system("pause");
}
Percebe-se que a forma de resolver com vetores é menos tediosa e mais simples do que sem vetor, pois com apenas uma estrutura de repetição que utiliza três linhas, foi feita a leitura de 10 nomes. Essa possibilidade de criar quantas posições forem necessárias é uma das principais vantagens dessa estrutura de dados, já que se houver necessidade de armazenar mais informações, basta alterar a dimensão do vetor e mudar o valor final da instrução for.
	Veja um outro exemplo:
#include <stdio.h>
#include <stdlib.h>
int main () {
 int numeros[50] = {0}; /* Declara um vetor int de 50 posições e inicializados com 0 */
 int i, j;
 int total=0;
 float media;
 printf("Insira números inteiros para calcular a média, para parar a inserção digite -999");
 for (i=0; (numeros[i-1] != -999) &&(i!=50); i++)
 scanf ("%d",&numeros[i]);
 
 for(i=0;numeros[i]!=-999;i++)
 printf("%3d",numeros[i]);
 printf("\n\n");
 i--;
 for(j = 0 ; j != i ; j++)
 total = total + numeros[j];
 media = (float) total/i;
 printf ("\n\n A média dos numeros eh %f\n",media);
 system("pause");
 return(0);
}
O programa acima lê números inteiros e armazena em um vetor, a leitura continua até que o usuário insira o número -999, em seguida a média é calculada.
Atividades 
1) Receber um nome e imprimir as 4 primeiras letras do nome.
2) Preencher um vetor de 100 posições com números inteiros aleatórios (usar rand()) solicitar um número do usuário através teclado, e pesquisar se esse número existe no vetor. Se existir, imprimir em qual posição do vetor. Se não existir, imprimir “Número inexistente”.
3) Preencher um vetor com 3 nomes com 20 letras no máximo cada. Imprimir os Nomes.
4) Neste exércicio temos dois vetores com 5 posições (0 a 4). Em cada vetor entraremos com cinco números. Mostrar os números e depois somar números que pertençam a mesma posição ou seja:
[0]+[0],[1]+[1],...
5) Preencher um vetor com 6 numeros e mostra-los na tela.
6) Preencher um vetor com 5 numeros e a medida que for digitado o numero, calcular o dobro e armazenar em outro vetor e mostrar os dois vetores.
7) Preencher um vetor com 100 numeros aleatórios, depois mostre todos os números pares desse vetor.
8) Assumindo-se que se tenha um vetor de inteiros randômicos com tamanho 100. Implemente as seguintes funções, sem ordenar previamente o vetor:
• Mostrar os valores do vetor;
• encontrar o maior valor deste vetor;
9) Faça um programa que entre com 10 números pelo teclado; armazene-os em um vetor de dez posições; imprima-o na tela na ordem em que os números foram entrados e depois na ordem inversa.
10) Faça um programa que toma as notas dos alunos (vinte números fracionários) do usuário e guarda em um vetor. Depois disso, calcula e imprime na tela a média dos alunos, a nota mais alta, a nota mais baixa e o número de notas 7.0. Restrição: primeiro guarde as notas no vetor, sem fazer cálculos ou comparações; só depois determine os valores.
11) Dado dois vetores, A (5 elementos) e B (8 elementos), faça um programa em C que imprima todos os elementos comuns aos dois vetores. 
12) Suponha um vetor N com 10 elementos e outro vetor M com 10 elementos. Faça um programa em C que calcule o produto escalar P de A por B. (Isto é, P = A[1]*B[1] + A[2]*B[2] + ... A[N]+B[N]). 
13) Fazer um programa em C para ler um vetor de inteiros positivos de 50 posições. Imprimir a quantidade de números pares e de múltiplos de 5. 
14) Fazer um programa que leia vários números(um por vez) e imprima 0(zero) se o número não for múltiplo de 2,3, 5 nem 7. Imprimir 1(um) se o número for múltiplo de 2 ou 3 e 2(dois) se o número for múltiplo de 5 e 7. Sair do programa quando for digitado o valor -1.(Não é necessário nenhuma consistência ou crítica dos dados).

Outros materiais