Buscar

15 - Matrizes, Ordenação

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

Prévia do material em texto

Matrizes, Ordenação
Problema: Ler a nota de todos os alunos do 1 primeiro período. 
Solução: int mat1[40], mat2[40], mat3[40], mat4[40];
Ex. 
cout << “Entre com as notas da materia 1”;
for (i=0; i<40; i++) 
	cin>> mat1[i];
cout << “Entre com as notas da materia 2”;
for (i=0; i<40; i++) 
	cin>> mat2[i];
cout << “Entre com as notas da materia 3”;
for (i=0; i<40; i++) 
	cin>> mat3[i];
cout << “Entre com as notas da materia 4”;
for (i=0; i<40; i++) 
	cin>> mat4[i];
Em C++ podemos definir um vetor em que cada posição contém um outro vetor. 
int materia [4] [40];
onde temos 4 materias, cada uma com 40 alunos. 
Ex:
int i, j, materia[4][40];
for (i=0; i<4; i++) {
	cout << “Entre com as notas da materia “ << i+1<< endl;
	for (j=0; j<40; j++) 
		cin >> materia[i][j];
}
dado:
#define linhas 3
#define colunas 4
int nota [3][4] = { {0,0,0,0},{0,0,0,0},{0,0,0,0} }
ou 
nota [0][0] = 0;
nota [3][2] = 25;
ou usar laços for:
for (i=0; i<linhas; i++)
	for (j=0; j< colunas; j++)
		nota[i][j] = 0;
Ordenação pelo método da Bolha (bubblesort)
1. Em cada passo, cada elemento é comparado ao próximo
2. Se o elemento estiver fora de ordem, é realizada a troca
3. Realizam-se tantos passos quanto necessários, até que não ocorram mais trocas.
#include <iostream.h>
#include <conio.h>
/*Ordenacao pelo metodo da bolha (bublesort)*/
void ordena(int vetor[], int tam) {
 int aux;
 bool troca=true;
 while (troca == true) {
 troca = false;
 for(int i=0; i<tam-1; i++) {
 if (vetor[i] > vetor[i+1]) {
 aux = vetor[i];
 vetor[i] = vetor[i+1];
 vetor [i+1] = aux;
 troca = true;
 }
 }
 }
}
void main () {
 const int MAX = 5;
 int nums[MAX]={3,2,0,4,1};
 ordena(nums, MAX);
 for (int i=0; i<MAX; i++)
 cout << nums[i]<<endl;
 getch();
}
Exemplo:
25 57 48 37 12 92 86 33
1o passo 25 48 37 12 57 86 33 92 // maior valor está no final da seqüência
2o. passo 25 37 12 48 57 33 86 92 // 2o. maior valor já está na posição correta
3o. passo 25 12 37 48 33 57 86 92
4o. passo 12 25 37 33 48 57 86 92
5o. passo 12 25 33 37 48 57 86 92
6o. passo Sem trocas

Outros materiais