Skip to content

Instantly share code, notes, and snippets.

@mfurquimdev
Created September 24, 2013 23:27
Show Gist options
  • Save mfurquimdev/6692777 to your computer and use it in GitHub Desktop.
Save mfurquimdev/6692777 to your computer and use it in GitHub Desktop.
Triângulo de Pascal para variados números de padrões.
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
int main()
{
int numero_de_lados;
// cin >> numero_de_lados;
numero_de_lados = 3;
int numero_de_linhas;
// cin >> numero_de_linhas;
numero_de_linhas = 6;
int numero_de_colunas;
numero_de_colunas = 1 + ((numero_de_lados - 1) * numero_de_linhas);
// cout << numero_de_lados << endl;
// cout << numero_de_linhas << endl;
// cout << numero_de_colunas << endl;
int** triangulo_de_pascal;
triangulo_de_pascal = (int**) malloc (sizeof (int*) * numero_de_linhas);
for (int i = 0; i < numero_de_linhas; ++i)
{
triangulo_de_pascal[i] = (int*) malloc (sizeof (int) * numero_de_colunas);
}
for (int i = 0; i < numero_de_linhas; ++i)
{
for (int j = 0; j < numero_de_colunas; ++j)
{
triangulo_de_pascal[i][j] = 0;
}
}
/*
for (int i = 0; i < numero_de_linhas; ++i)
{
for (int j = 0; j < numero_de_colunas; ++j)
{
printf("%3d ", triangulo_de_pascal[i][j]);
}
cout << endl;
}
cout << endl;
*/
int element_counter;
int element_limit;
for (int i = 0; i < numero_de_linhas; ++i)
{
element_limit = 1 + ((numero_de_lados -1) * (i + 1));
element_counter = 0;
for (int j = 0; j < numero_de_colunas; ++j)
{
if (element_counter >= element_limit)
{
break;
}
if (i == 0)
{
triangulo_de_pascal[i][j] = 1;
element_counter ++;
}
else
{
if (j == 0)
{
triangulo_de_pascal[i][j] = triangulo_de_pascal[i-1][j];
element_counter ++;
}
else if (j == 1)
{
triangulo_de_pascal[i][j] = triangulo_de_pascal[i-1][j] + triangulo_de_pascal[i-1][j-1];
element_counter ++;
}
else
{
triangulo_de_pascal[i][j] = triangulo_de_pascal[i-1][j] + triangulo_de_pascal[i-1][j-1] + triangulo_de_pascal[i-1][j-2];
element_counter ++;
}
/*
if (j == 2)
else
{
triangulo_de_pascal[i][j] = triangulo_de_pascal[i-1][j] + triangulo_de_pascal[i-1][j-1] + triangulo_de_pascal[i-1][j-2] + triangulo_de_pascal[i-1][j-3];
element_counter ++;
}
*/
}
}
}
for (int i = 0; i < numero_de_linhas; ++i)
{
for (int j = 0; j < numero_de_colunas; ++j)
{
printf("%3d ", triangulo_de_pascal[i][j]);
}
cout << endl;
}
cout << endl;
for (int i = 0; i < numero_de_linhas; ++i)
{
free (triangulo_de_pascal[i]);
}
free (triangulo_de_pascal);
return 0;
}
@mfurquimdev
Copy link
Author

Criando matriz de acordo com número de lados do dado e a quantidade de lançamentos.

@mfurquimdev
Copy link
Author

Preenchendo a matriz com 0 e preenchendo seguindo a lógica do triângulo de pascal [falta automatizar].

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment