PDA

Prikaži potpunu verziju : Program za varijacije sa ponavljanjem


Zlatko P.
25.4.2019, 19:03
Može li neko da napiše program za varijacije sa po avljanjem sa kratkim komentarima o elementima programa? Program u c++

GoranSTX
26.4.2019, 12:28
Skoro apsolutno sam siguran da neko može, zašto?

Zlatko P.
26.4.2019, 18:52
Zato što su programi koje sam pronašao na netu uvek sa nekom manom, nedostatkom ili kontekstom koji mi ne ogvorara ili ga ne razumem. Sa objašnjenjem, nadam se, moći ću to da prevaziđem. Ili si postavio filozofsko "zašto", zašto sav ovaj naš trud?!

GoranSTX
27.4.2019, 8:28
Kakvo pitanje takav odgovor...

Zašto ne bi postavio ono što si uradio, a potom tražio pomoć za konkretan problem? Ovako deluje da želiš rešenje "na tacni", a ne želiš da ti neko drugi to odradi, jel' tako? :)

Zlatko P.
27.4.2019, 10:16
Hvala ti što si ipak odgovorio. Liči mi sve ovo na uspešnu saradnju.
Dakle, napisao sam članak "Univerzalni interpretator", možeš ga pročitati na https://pangaric.wordpress.com/author/pangaric/
Radi se o o onoj animaciji u formi gif koja izvodi varijacije sa ponavljanjem unutar definisane matrice.
Do sada sam uradio ovo sa generatorom slučajnih brojeva, a ja želim da su to varijacije sa ponavljanjem. Problem je kako svaku varijaciju kao niz prikazati kao matricu.

Moj kod sa generisanjem 200 slučajnih matrica:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
srand(time(NULL));
rand();

int Matrica[10][10];

for (int k=1;k<200;k++)
{
for(int i=0; i < 10;i++)
{
for(int j=0; j < 10;j++)
{
Matrica [i][j]=rand() * 2 / RAND_MAX;
cout<<Matrica[i][j]<<" ";
}
cout<<endl;
}
system ("CLS");
cout<<endl;
cout<<endl;
}
}

Zlatko P.
27.4.2019, 11:30
Može da se pročita i na Filozofski magazin
https://filozofskim.blogspot.com/2018/12/zlatko-pangaric-univerzalni.html

Luka Filipovic
28.4.2019, 12:27
for (int k=0;k<=1023;k++) {
cout<< (Matrica [0][0] = (k>>8)&1);
cout<< (Matrica [0][1] = (k>>7)&1);
cout<< (Matrica [0][2] = (k>>6)&1);
cout<< '\n';
cout<< (Matrica [1][0] = (k>>5)&1);
cout<< (Matrica [1][1] = (k>>4)&1);
cout<< (Matrica [1][2] = (k>>3)&1);
cout<< '\n';
cout<< (Matrica [2][0] = (k>>2)&1);
cout<< (Matrica [2][1] = (k>>1)&1);
cout<< (Matrica [2][2] = (k>>0)&1);
cout<< '\n';
cout<< '\n';
}
recimo ovako

Zlatko P.
28.4.2019, 15:40
Hvala, Luka. Hvala svima.

Zlatko P.
29.4.2019, 15:13
https://www.youtube.com/watch?v=LqZQ9w04sb0

jedan pokušaj

Zlatko P.
9.5.2019, 12:47
Luka, kad napravim matricu 6x5 ili veću, program izbacuje upozorenje i počinje da "vrti" varijacije sa oba kraja. Dobijam upozorenje: [Warning] right shift count >= width of type. Možeš li rešiti ovaj problem? Želeo bih konačno matricu 10x10, pa da završim sa ovim.

Luka Filipovic
9.5.2019, 19:07
umesto int piši unsigned long int i umesto ovih siftovanja bi mozda bolje bilo da pišeš za svaku celiju:
matrica[i] [j] = (k=k>>1)&1

Zlatko P.
9.5.2019, 21:08
Pokušao sam ali nema poboljšanja. Vidi konkretno. Probao sam i sa matrica[i] [j] = (k=k>>1)&1 u primeru matrice 3x3.


#include<iostream>
#include <cmath>
#include <cstdlib>

using namespace std;
int main(){

unsigned long int Matrica [6][6];

for (int k=0;k<1010041824;k++)
{
cout<<"Varijacije sa ponavljanjem = "<<k;
cout<<endl;
cout<<endl;
cout<< (Matrica [0][0] = (k>>35)&1);
cout<< (Matrica [0][1] = (k>>34)&1);
cout<< (Matrica [0][2] = (k>>33)&1);
cout<< (Matrica [0][3] = (k>>32)&1);
cout<< (Matrica [0][4] = (k>>31)&1);
cout<< (Matrica [0][5] = (k>>30)&1);

cout<< '\n';
cout<< (Matrica [1][0] = (k>>29)&1);
cout<< (Matrica [1][1] = (k>>28)&1);
cout<< (Matrica [1][2] = (k>>27)&1);
cout<< (Matrica [1][3] = (k>>26)&1);
cout<< (Matrica [1][4] = (k>>25)&1);
cout<< (Matrica [1][5] = (k>>24)&1);

cout<< '\n';
cout<< (Matrica [2][0] = (k>>23)&1);
cout<< (Matrica [2][1] = (k>>22)&1);
cout<< (Matrica [2][2] = (k>>21)&1);
cout<< (Matrica [2][3] = (k>>20)&1);
cout<< (Matrica [2][4] = (k>>19)&1);
cout<< (Matrica [2][5] = (k>>18)&1);

cout<< '\n';
cout<< (Matrica [3][0] = (k>>17)&1);
cout<< (Matrica [3][1] = (k>>16)&1);
cout<< (Matrica [3][2] = (k>>15)&1);
cout<< (Matrica [3][3] = (k>>14)&1);
cout<< (Matrica [3][4] = (k>>13)&1);
cout<< (Matrica [3][5] = (k>>12)&1);

cout<< '\n';
cout<< (Matrica [4][0] = (k>>11)&1);
cout<< (Matrica [4][1] = (k>>10)&1);
cout<< (Matrica [4][2] = (k>>9)&1);
cout<< (Matrica [4][3] = (k>>8)&1);
cout<< (Matrica [4][4] = (k>>7)&1);
cout<< (Matrica [4][5] = (k>>6)&1);

cout<< '\n';
cout<< (Matrica [5][0] = (k>>5)&1);
cout<< (Matrica [5][1] = (k>>4)&1);
cout<< (Matrica [5][2] = (k>>3)&1);
cout<< (Matrica [5][3] = (k>>2)&1);
cout<< (Matrica [5][4] = (k>>1)&1);
cout<< (Matrica [5][5] = (k>>0)&1);

cout<< '\n';
cout<< '\n';
system ("CLS");
cout<<endl;
cout<<endl;

}
}

Luka Filipovic
9.5.2019, 22:01
Pokušao sam ali nema poboljšanja. Vidi konkretno. Probao sam i sa matrica[i] [j] = (k=k>>1)&1 u primeru matrice 3x3.


#include<iostream>
#include <cmath>
#include <cstdlib>

using namespace std;
int main(){

int Matrica [6][6];

for (unsigned long int k=0;k<1010041824;k++)
{
cout<<"Varijacije sa ponavljanjem = "<<k;
cout<<endl;
cout<<endl;
cout<< (Matrica [0][0] = (k>>35)&1);
cout<< (Matrica [0][1] = (k>>34)&1);
cout<< (Matrica [0][2] = (k>>33)&1);
cout<< (Matrica [0][3] = (k>>32)&1);
cout<< (Matrica [0][4] = (k>>31)&1);
cout<< (Matrica [0][5] = (k>>30)&1);

cout<< '\n';
cout<< (Matrica [1][0] = (k>>29)&1);
cout<< (Matrica [1][1] = (k>>28)&1);
cout<< (Matrica [1][2] = (k>>27)&1);
cout<< (Matrica [1][3] = (k>>26)&1);
cout<< (Matrica [1][4] = (k>>25)&1);
cout<< (Matrica [1][5] = (k>>24)&1);

cout<< '\n';
cout<< (Matrica [2][0] = (k>>23)&1);
cout<< (Matrica [2][1] = (k>>22)&1);
cout<< (Matrica [2][2] = (k>>21)&1);
cout<< (Matrica [2][3] = (k>>20)&1);
cout<< (Matrica [2][4] = (k>>19)&1);
cout<< (Matrica [2][5] = (k>>18)&1);

cout<< '\n';
cout<< (Matrica [3][0] = (k>>17)&1);
cout<< (Matrica [3][1] = (k>>16)&1);
cout<< (Matrica [3][2] = (k>>15)&1);
cout<< (Matrica [3][3] = (k>>14)&1);
cout<< (Matrica [3][4] = (k>>13)&1);
cout<< (Matrica [3][5] = (k>>12)&1);

cout<< '\n';
cout<< (Matrica [4][0] = (k>>11)&1);
cout<< (Matrica [4][1] = (k>>10)&1);
cout<< (Matrica [4][2] = (k>>9)&1);
cout<< (Matrica [4][3] = (k>>8)&1);
cout<< (Matrica [4][4] = (k>>7)&1);
cout<< (Matrica [4][5] = (k>>6)&1);

cout<< '\n';
cout<< (Matrica [5][0] = (k>>5)&1);
cout<< (Matrica [5][1] = (k>>4)&1);
cout<< (Matrica [5][2] = (k>>3)&1);
cout<< (Matrica [5][3] = (k>>2)&1);
cout<< (Matrica [5][4] = (k>>1)&1);
cout<< (Matrica [5][5] = (k>>0)&1);

cout<< '\n';
cout<< '\n';
system ("CLS");
cout<<endl;
cout<<endl;

}
}
probaj sad

Zlatko P.
9.5.2019, 22:32
jesam, pisao sam i to u jednoj od varijanti, ali dobijam isto upozorenje

Luka Filipovic
9.5.2019, 23:05
onda probaj unsigned long long

Zlatko P.
10.5.2019, 10:56
Izgleda da je 5x5 maksimum. Hvala