#include <iostream>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m[3][50], s[3][3], a=2, b=2, c=23, i=0, j=0, l=0, q=0, ucp=0, dep=0, p=0, k=0, r=0, t=0, w=0, soglia=100, dim=30;
for(i=0;i<3;i++) //riempio di zeri la matrice m
{
for(j=0;j<50;j++)
{
m[i][j]=0;
}
}
i=0;
j=0;
m[0][0]=a;
m[1][0]=b;
m[2][0]=c;
while((m[0][i]<=soglia)&&(m[1][i]<=soglia)&&(m[2][i]<soglia)&&(ucp<dim))
{
if ((m[0][i]==0)&&(m[1][i]==0)&&(m[2][i]==0)) break;
s[0][0]=m[0][i];
s[1][0]=m[1][i];
s[2][0]=m[0][i]*m[1][i]-m[2][i];
s[0][1]=m[1][i];
s[1][1]=m[2][i];
s[2][1]=m[1][i]*m[2][i]-m[0][i];
s[0][2]=m[2][i];
s[1][2]=m[0][i];
s[2][2]=m[2][i]*m[0][i]-m[1][i];
for(j=0;j<3;j++) //calcolo le prime terne trasformate e le ordino
{
for(l=1;l<3;l++)
{
p=l;
while((p>0)&&(s[p][j]<s[p-1][j]))
{
dep=s[p][j];
s[p][j]=s[p-1][j];
s[p-1][j]=dep;
p--;
}
}
}
//printf("\n");
//for(k=0;k<3;k++)
//{
// printf("\n");
// for(t=0;t<3;t++)
// {
// printf("\t \t \t %d", s[k][t]);
// }
//}
//printf("\n");
for(j=0;j<3;j++) //seleziono una colonna di s (cioè una terna) E QUI SUCCEDE IL CASINO
{
if((s[0][j]<=0)||(s[1][j]<=0)||(s[2][j]<=0)) {
q=1;
//printf("\n nella terna c'è uno 0");
//printf("\n %d", j);
}
else q=0;
if(q==0) {
//printf("\n PROPRIO LUI! CCEZIONALE!");
if((s[0][j]>soglia)||(s[1][j]>soglia)||(s[2][j]>soglia)) r=3;
else {
for(l=0;l<=ucp;l++) //devo confrontarla con tutte le terne già memorizzate nelle colonne di m
{
r=0;
for(k=0;k<3;k++) //scorro contemporaneamente le righe di s e m (fissata via via la colonna)
{
if (s[k][j]==m[k][l]) r=r+1;
}
if(r==3) break;
}
}
//printf("\t \t \t %d", r);
if (r!=3) { // aggiungo
//printf("\n");
ucp=ucp+1;
for(q=0;q<3;q++)
{
m[q][ucp]=s[q][j];
}
for(w=0;w<3;w++) //stampo di nuovo m (cosa che vorrei evitare)
{
//printf("\n");
for(t=0;t<dim;t++)
{
//printf("\t %d", m[w][t]); // perchè se NON faccio stampare non si vede nulla???
}
}
}
}
q=0;
}
i=i+1;
}
//printf("\n \n il puntatore è a %d", i);
printf("\n"); // stampo le terne nell'ordine in cui le ho trovate
i=0;
while(m[0][i]!=0)
{
printf("\n");
for(j=0;j<3;j++)
{
printf("\t %d", m[j][i]);
}
i=i+1;
}
l=1; // ordino rispetto al primo numero
while(m[0][l]!=0)
{
p=l;
while((p>0)&&(m[0][p]<m[0][p-1]))
{
for(q=0;q<3;q++)
{
dep=m[q][p];
m[q][p]=m[q][p-1];
m[q][p-1]=dep;
}
p=p-1;
}
l=l+1;
}
l=1; // ordino rispetto al secondo numero
while(m[1][l]!=0)
{
p=l;
while((p>0)&&(m[1][p]<m[1][p-1])&&(m[0][p]<=m[0][p-1]))
{
for(q=0;q<3;q++)
{
dep=m[q][p];
m[q][p]=m[q][p-1];
m[q][p-1]=dep;
}
p=p-1;
}
l=l+1;
}
l=1; // ordino rispetto al terzo numero
while(m[2][l]!=0)
{
p=l;
while((p>0)&&(m[2][p]<m[2][p-1])&&(m[1][p]<=m[1][p-1])&&(m[0][p]<=m[0][p-1]))
{
for(q=0;q<3;q++)
{
dep=m[q][p];
m[q][p]=m[q][p-1];
m[q][p-1]=dep;
}
p=p-1;
}
l=l+1;
}
printf("\n"); // stampo le terne ordinate
i=0;
while(m[0][i]!=0)
{
printf("\n");
for(j=0;j<3;j++)
{
printf("\t %d", m[j][i]);
}
i=i+1;
}
return(0);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgppbnQgbWFpbigpCnsKIGludCBtWzNdWzUwXSwgc1szXVszXSwgYT0yLCBiPTIsIGM9MjMsIGk9MCwgaj0wLCBsPTAsIHE9MCwgdWNwPTAsIGRlcD0wLCBwPTAsIGs9MCwgcj0wLCB0PTAsIHc9MCwgc29nbGlhPTEwMCwgZGltPTMwOwogZm9yKGk9MDtpPDM7aSsrKSAvL3JpZW1waW8gZGkgemVyaSBsYSBtYXRyaWNlIG0gCiB7CiAgZm9yKGo9MDtqPDUwO2orKykKICB7CiAgIG1baV1bal09MDsKICB9CiB9CiBpPTA7CiBqPTA7CiBtWzBdWzBdPWE7IAogbVsxXVswXT1iOwogbVsyXVswXT1jOwogd2hpbGUoKG1bMF1baV08PXNvZ2xpYSkmJihtWzFdW2ldPD1zb2dsaWEpJiYobVsyXVtpXTxzb2dsaWEpJiYodWNwPGRpbSkpCiB7CiAgaWYgKChtWzBdW2ldPT0wKSYmKG1bMV1baV09PTApJiYobVsyXVtpXT09MCkpIGJyZWFrOwogIHNbMF1bMF09bVswXVtpXTsKICBzWzFdWzBdPW1bMV1baV07CiAgc1syXVswXT1tWzBdW2ldKm1bMV1baV0tbVsyXVtpXTsKICBzWzBdWzFdPW1bMV1baV07CiAgc1sxXVsxXT1tWzJdW2ldOwogIHNbMl1bMV09bVsxXVtpXSptWzJdW2ldLW1bMF1baV07CiAgc1swXVsyXT1tWzJdW2ldOwogIHNbMV1bMl09bVswXVtpXTsKICBzWzJdWzJdPW1bMl1baV0qbVswXVtpXS1tWzFdW2ldOwogIGZvcihqPTA7ajwzO2orKykgLy9jYWxjb2xvIGxlIHByaW1lIHRlcm5lIHRyYXNmb3JtYXRlIGUgbGUgb3JkaW5vCiAgewogICBmb3IobD0xO2w8MztsKyspCiAgIHsKICAgIHA9bDsKICAgIHdoaWxlKChwPjApJiYoc1twXVtqXTxzW3AtMV1bal0pKQogICAgewogICAgIGRlcD1zW3BdW2pdOwogICAgIHNbcF1bal09c1twLTFdW2pdOwogICAgIHNbcC0xXVtqXT1kZXA7CiAgICAgcC0tOwogICAgfQogICB9CiAgfQogIC8vcHJpbnRmKCJcbiIpOwogIC8vZm9yKGs9MDtrPDM7aysrKSAKICAvL3sKICAvLyBwcmludGYoIlxuIik7CiAgLy8gZm9yKHQ9MDt0PDM7dCsrKQogIC8vIHsKICAvLyAgcHJpbnRmKCJcdCBcdCBcdCAlZCIsIHNba11bdF0pOwogIC8vIH0KICAvL30KICAvL3ByaW50ZigiXG4iKTsKICBmb3Ioaj0wO2o8MztqKyspICAvL3NlbGV6aW9ubyB1bmEgY29sb25uYSBkaSBzIChjaW/DqCB1bmEgdGVybmEpIEUgUVVJIFNVQ0NFREUgSUwgQ0FTSU5PCiAgewogICBpZigoc1swXVtqXTw9MCl8fChzWzFdW2pdPD0wKXx8KHNbMl1bal08PTApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxPTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ByaW50ZigiXG4gbmVsbGEgdGVybmEgYyfDqCB1bm8gMCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wcmludGYoIlxuICVkIiwgaik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgZWxzZSBxPTA7CiAgIGlmKHE9PTApICB7CiAgICAgICAgICAgICAgICAgICAvL3ByaW50ZigiXG4gUFJPUFJJTyBMVUkhIENDRVpJT05BTEUhIik7CiAgICAgICAgICAgICAgICAgICBpZigoc1swXVtqXT5zb2dsaWEpfHwoc1sxXVtqXT5zb2dsaWEpfHwoc1syXVtqXT5zb2dsaWEpKSByPTM7CiAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsPTA7bDw9dWNwO2wrKykgLy9kZXZvIGNvbmZyb250YXJsYSBjb24gdHV0dGUgbGUgdGVybmUgZ2nDoCBtZW1vcml6emF0ZSBuZWxsZSBjb2xvbm5lIGRpIG0KICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICByPTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGs9MDtrPDM7aysrKSAvL3Njb3JybyBjb250ZW1wb3JhbmVhbWVudGUgbGUgcmlnaGUgZGkgcyBlIG0gKGZpc3NhdGEgdmlhIHZpYSBsYSBjb2xvbm5hKQogICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNba11bal09PW1ba11bbF0pIHI9cisxOyAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocj09MykgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJpbnRmKCJcdCBcdCBcdCAlZCIsIHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIhPTMpIHsgLy8gYWdnaXVuZ28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wcmludGYoIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVjcD11Y3ArMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHE9MDtxPDM7cSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtW3FdW3VjcF09c1txXVtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Iodz0wO3c8Mzt3KyspIC8vc3RhbXBvIGRpIG51b3ZvIG0gKGNvc2EgY2hlIHZvcnJlaSBldml0YXJlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ByaW50ZigiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcih0PTA7dDxkaW07dCsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJpbnRmKCJcdCAlZCIsIG1bd11bdF0pOyAvLyBwZXJjaMOoIHNlIE5PTiBmYWNjaW8gc3RhbXBhcmUgbm9uIHNpIHZlZGUgbnVsbGE/Pz8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAoKIAogICAgICAgICAgICB9CiAgIHE9MDsKICB9ICAgIAogIGk9aSsxOwogfQogLy9wcmludGYoIlxuIFxuIGlsIHB1bnRhdG9yZSDDqCBhICVkIiwgaSk7CgogcHJpbnRmKCJcbiIpOyAgLy8gc3RhbXBvIGxlIHRlcm5lIG5lbGwnb3JkaW5lIGluIGN1aSBsZSBobyB0cm92YXRlCiBpPTA7CiB3aGlsZShtWzBdW2ldIT0wKQogewogIHByaW50ZigiXG4iKTsKICBmb3Ioaj0wO2o8MztqKyspCiAgewogICBwcmludGYoIlx0ICVkIiwgbVtqXVtpXSk7CiAgfQogIGk9aSsxOwogfSAKCgogbD0xOyAgICAgICAgICAgICAgIC8vIG9yZGlubyByaXNwZXR0byBhbCBwcmltbyBudW1lcm8KIHdoaWxlKG1bMF1bbF0hPTApICAKIHsKICBwPWw7CiAgd2hpbGUoKHA+MCkmJihtWzBdW3BdPG1bMF1bcC0xXSkpCiAgewogICBmb3IocT0wO3E8MztxKyspCiAgIHsKICAgIGRlcD1tW3FdW3BdOwogICAgbVtxXVtwXT1tW3FdW3AtMV07CiAgICBtW3FdW3AtMV09ZGVwOwogICB9IAogICBwPXAtMTsKICB9CiAgbD1sKzE7CiB9CgoKIGw9MTsgICAgICAgICAgICAgIC8vIG9yZGlubyByaXNwZXR0byBhbCBzZWNvbmRvIG51bWVybwogd2hpbGUobVsxXVtsXSE9MCkKIHsKICBwPWw7CiAgd2hpbGUoKHA+MCkmJihtWzFdW3BdPG1bMV1bcC0xXSkmJihtWzBdW3BdPD1tWzBdW3AtMV0pKQogIHsKICAgZm9yKHE9MDtxPDM7cSsrKQogICB7CiAgICBkZXA9bVtxXVtwXTsKICAgIG1bcV1bcF09bVtxXVtwLTFdOwogICAgbVtxXVtwLTFdPWRlcDsKICAgfSAKICAgcD1wLTE7CiAgfQogIGw9bCsxOwogfQoKCiBsPTE7ICAgICAgICAgICAgIC8vIG9yZGlubyByaXNwZXR0byBhbCB0ZXJ6byBudW1lcm8KIHdoaWxlKG1bMl1bbF0hPTApCiB7CiAgcD1sOwogIHdoaWxlKChwPjApJiYobVsyXVtwXTxtWzJdW3AtMV0pJiYobVsxXVtwXTw9bVsxXVtwLTFdKSYmKG1bMF1bcF08PW1bMF1bcC0xXSkpCiAgewogICBmb3IocT0wO3E8MztxKyspCiAgIHsKICAgIGRlcD1tW3FdW3BdOwogICAgbVtxXVtwXT1tW3FdW3AtMV07CiAgICBtW3FdW3AtMV09ZGVwOwogICB9IAogICBwPXAtMTsKICB9CiAgbD1sKzE7CiB9CgoKIHByaW50ZigiXG4iKTsgIC8vIHN0YW1wbyBsZSB0ZXJuZSBvcmRpbmF0ZQogaT0wOwogd2hpbGUobVswXVtpXSE9MCkKIHsKICBwcmludGYoIlxuIik7CiAgZm9yKGo9MDtqPDM7aisrKQogIHsKICAgcHJpbnRmKCJcdCAlZCIsIG1bal1baV0pOwogIH0KICBpPWkrMTsKIH0gCiByZXR1cm4oMCk7Cn0=