c1c3ru 0 Denunciar post Postado Outubro 16, 2014 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
GBecker 51 Denunciar post Postado Outubro 17, 2014 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
c1c3ru 0 Denunciar post Postado Novembro 18, 2014 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