Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

c1c3ru

código

Recommended Posts

Boa tarde!
Gostaria da ajuda de vocês com o seguinte código(ver abaixo),há um trecho dese código cujo,o qual não consigo entender(em destaque).Este código foi passado em sala de aula na faculdade e tô com dificuldade exatamente neste trecho.
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <cstdlib>
#include <time.h>

using namespace std;

int main()

{
	int**m;
	int**m2;

	int linhas;
	int colunas;

	cout << "Indique o numero de linhas" << endl;
	cin >> linhas;
	cout << "Indique o numero de colunas" << endl;
	cin >> colunas;

	cout << " aqui pediu dados e mostrou" << endl;
//========================================================
	m = new int*[linhas];
	m2 = new int*[linhas];
	for (int i = 0; i < linhas; i++) {
		m[i] = new int[colunas];
		m2[i] = new int[colunas];

	}
	cout << "aqui inicializou os ponteiro" << endl;
//========================================================
	srand(time(NULL));

	int cont = 1;
	for (int j = 0; j < linhas; j++) {
		for (int k = 0; k < colunas; k++) {
			m[j][k] = (5 + rand() % 10);
			m2[j][k] = m[j][k];
		}
	}
	cout << "m1" << endl;
	for (int j = 0; j < linhas; j++) {
		for (int k = 0; k < colunas; k++) {
			cout << m[j][k] << "\t";
		}
		cout << endl;
	}
	cout << endl;
	cout << "Aqui preencheu com numeros aleatorios" << endl;
//========================================================
	int tamanho = 3;
	int mask = (tamanho - 1) / 2;
	int soma = 0, temp = 0, media = 0;

	for (int j = mask; j < linhas - mask; j++) {
		for (int k = mask; k < colunas - mask; k++) {
			for (int x = -mask; x <= mask; x++) {
				for (int y = -mask; y <= mask; y++) {
					soma = m[x + j][k + y] + temp;
					temp = soma;
				}

			}
			media = soma / (tamanho * tamanho);
			m2[j][k] = media;
			soma = 0;
			media = 0;
			cout << m2[j][k] << endl;
		}
		cout << endl;

	}
	for (int l = 0; l < linhas; l++) {
		for (int n = 0; n < colunas; n++) {
			m[l][n] = 0;
			cout << m[l][n] << endl;
		}
		cout << endl;
	}
	cout << "Aqui por fim a magica do algoritmo calcula a media e o termo medio"
			<< endl;
//========================================================
	delete[] m;
	delete[] m2;
	system("pause");
}

 


opss o trecho é este:

m = new int*[linhas];
	m2 = new int*[linhas];
	for (int i = 0; i < linhas; i++) {
		m[i] = new int[colunas];
		m2[i] = new int[colunas];

	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O bloco em destaque está instanciando, criando, uma matriz dinamicamente. Utilizando esse recurso, o algoritimo é capaz de criar matrizes com o tamanho definido pelo usuário.

m = new int*[linhas];
m2 = new int*[linhas];

Nesta duas linhas são criados vetores de ponteiros. Você pode interpretar esse vetor como a quantidade de linhas da matriz.

for (int i = 0; i < linhas; i++) 
{
	m[i] = new int[colunas];
	m2[i] = new int[colunas];
}

o laço de repetição são criadas as linhas da matriz, cada posição de m e m2 aponta para um novo vetor recém criado.

 

Sugiro que de uma olhada nos links a seguir:

http://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Aloca%C3%A7%C3%A3o_din%C3%A2mica_de_mem%C3%B3ria

http://www.pontov.com.br/site/cpp/46-conceitos-basicos/57-matrizes-dinamicas

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado

GBecker

Eu nao entedir o por que dele ter feito

m[i] = new int[colunas];
    m2[i] = new int[colunas];

com colunas.Postei esses código em 4 foruns em apenas 2(contado com este) tive algum retorno por este motivo demorei em responder.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.