Unresolved external znači da tijela funkcija ne mogu biti pronađena. Ili su u cpp datotekama ili trebaš dodati alegro LIB u taj svoj projekt.
siguran sam da sam dodao allegro, treba dodat alld.lib (to sam dodao) ili nešto drugo?
Unresolved external znači da tijela funkcija ne mogu biti pronađena. Ili su u cpp datotekama ili trebaš dodati alegro LIB u taj svoj projekt.
siguran sam da sam dodao allegro, treba dodat alld.lib (to sam dodao) ili nešto drugo?
http://bhoi.net/Zadaci/BHOI%202012/spirala.pdf
Moze pomoc oko zadatka ovog?
Ne znam kako da upisem ovako matricu i po tome da onda trazi koji je to broj?
Po meni je najbolji način simulirati kretanje kroz matricu. Jednostavno ideš po poljima i upisuješ vrijednost koja dolazi.
simulacija kretanja po matrici je prespora, pa je logicno da trebas naci pravilnost
evo ti ukratko opis moga algoritma (mislim da je slican ko sluzbeno rjesenje cak imamo zajednicko ime varijable level :D )
1° zamisli matricu koja je popunjena spiralno 0, 1, 2 ... n2-1, n2
2° ako nad svakim clanom izvrsis operaciju %k dobiješ istu matricu kao u zadatku
3° pronađi vrijednosti na pola glavne dijagonale te odredi u kojem se kvadratu nalazi traženi član
4° odredi na kojoj stranici kvadrata se nalazi član koji ti treba
5° sad bi trebalo biti lako naći vrijednost člana
6° ispisati vrijednost traženog člana%k
P.S. sve do 5° radis da je matrica popunjena kao u 1°
simulacija kretanja po matrici je prespora, pa je logicno da trebas naci pravilnost
evo ti ukratko opis moga algoritma (mislim da je slican ko sluzbeno rjesenje cak imamo zajednicko ime varijable level :D )
1° zamisli matricu koja je popunjena spiralno 0, 1, 2 ... n2-1, n2
2° ako nad svakim clanom izvrsis operaciju %k dobiješ istu matricu kao u zadatku
3° pronađi vrijednosti na pola glavne dijagonale te odredi u kojem se kvadratu nalazi traženi član
4° odredi na kojoj stranici kvadrata se nalazi član koji ti treba
5° sad bi trebalo biti lako naći vrijednost člana
6° ispisati vrijednost traženog člana%k
P.S. sve do 5° radis da je matrica popunjena kao u 1°
Ja nisam bio uopće dobro pročitao zadatak. Naime traži se član koji se nalazi na određenoj poziciji, a ja sam mislio da treba ispisati cijelu matricu jer sam samo preletio zadatak.
Ja nisam bio uopće dobro pročitao zadatak. Naime traži se član koji se nalazi na određenoj poziciji, a ja sam mislio da treba ispisati cijelu matricu jer sam samo preletio zadatak.
ako se ispisuje cijela matrica onda je najbolje napravit simulaciju, to i nije neki problem(prelako za državno), riješio sam to na 2-3 načina xD
sličan zadatak ovome se javio u nas na županijskom za 8.raz, ali je jedan dio zadatka bio hint
Kolege pozdrav, evo imam jedan upit vezan za C++ pa ako ima tko kome ovo ne predstavlja neki poseban problem bio bih zahvalan ako je voljan riješiti.
Ovo je inače s Pomorskog fakulteta u Splitu, treba mi za rođaka, ja sam ispao iz C++-a totalno.
Kolege pozdrav, evo imam jedan upit vezan za C++ pa ako ima tko kome ovo ne predstavlja neki poseban problem bio bih zahvalan ako je voljan riješiti.
Ovo je inače s Pomorskog fakulteta u Splitu, treba mi za rođaka, ja sam ispao iz C++-a totalno.
Ako možete trebalo bi mi iz A: 4. i 6. zadatak.
Evo 6. iz A..
#include <iostream>
using namespace std;
int main()
{
int n,niz[500],i,br=0;
float as,s=0;
cin>>n;
for (i=1;i<=n;i++)
{
cin>>niz[i];
s+=niz[i];
}
as=s/n;
for (i=1;i<=n;i++)
{
if (niz[i]>3)
{
br++;
}
}
cout<<br<<endl;
cout<<as<<endl;
return 0;
}
Rijesit cu ti 4 A samo nek mi netko kaze sto je to produkt :D
Rijesit cu ti 4 A samo nek mi netko kaze sto je to produkt :D
Umnozak.
#include <iostream>
using namespace std;
int main()
{
int a = 10;
while(a <= 51)
{
a++;
if(!a%2)
{
neznam cega umnozak :D
}
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int a = 10, u=1;
while(a <= 51)
{
if(a%2=1)
{
u = u*a; }
a++;
}
return 0;
}
Jel sad ok?
Je,dobro se komapjla,a skuzio sam di sam se sje*o,povecavao sam varijablu prije provjere, silly me.
I tu di si stavio u = u * a; si mogao u *= a;
Sad je dobro.
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int u = 1;
while(a <= 51)
{
if(a%2)
{
u = u * a;
}
a++;
}
cout << u;
return 0;
}
Inace je bolje za ovakve stvari kad je poznat broj ponavljanja koristiti for petlju.
Možda vježba while petlju pa ju mora koristiti.
Možda vježba while petlju pa ju mora koristiti.
Pa je, u zadatku se iskljucivo trazi while petlja, ali samo usput napominjem.
Sad je dobro.
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int u = 1;
while(a <= 51)
{
if(a%2)
{
u = u * a;
}
a++;
}
cout << u;
return 0;
}
Inace je bolje za ovakve stvari kad je poznat broj ponavljanja koristiti for petlju.
Broj treba biti neparan (!a%2).
To je ne pravilno. piši:
if(a%2==0)
Hajde sada pročitaj ovo, ako je ostatak pri djeljenju a sa 2 jednak 0.
if(!a%2)
Objasni mi ovo, ako je?
To je ne pravilno. piši:
if(a%2==0)
Hajde sada pročitaj ovo, ako je ostatak pri djeljenju a sa 2 jednak 0.
if(!a%2)
Objasni mi ovo, ako je?
Prvo se a negira, tj. sve jedinice u binarnome zapisu varijable a prelaze u nulu, a nule u jedinice. Budući da je parnost broja određena zadnjom znamenkom ovo će neparni broj pretovriti u parni, a parni u neparni. Parni brojevi pri dijeljenju 2 daju ostatak 0, a to je u C/C++ false, dok neparni daju 1, a to je true. I zato moramo negacijom pretvoriti parni u neparni broj, pa će na kraju ako je broj bio paran, rezultat biti true.
Naravno ovo je vrlo nepregledno i daje lošu naviku jer većina drugih jezika odvaja boolean tip od int-a.
Ma to sam karikirao za njega, da mu pokažem da je nepregledno.
Broj treba biti neparan (!a%2).
(a%2)
10 % 2 = 0
11 % 2 = 1
Sto ti tocno nije jasno?
Nemoj mi pisat takve nebuloze kao sto je (!a%2)...
Oprosti,zabunio sam se,nisam razmisljao.
Čemu ovo: cout << u;
Čemu ovo: cout << u;
Pa da ispiše umnožak/produkt.
Čemu ovo: cout << u;
Pa da ispiše umnožak/produkt.
Aha, hvala. Ja sam ostao na razini gdje se ispisuje s printf f-jom.
To je funkcija za ispis i dio je stdio modula, koji je standardan za C, ako ti smeta, prepiši u printf.
Prvo se a negira, tj. sve jedinice u binarnome zapisu varijable a prelaze u nulu, a nule u jedinice.
Zeznuo si se '!' je logički NOT, u rangu sa ostalim logičkim operatorima: '&&' logički AND, i '||' logički OR. Ti operatori ne mijenjaju bitove u varijabli.
'~' je bitovni NOT i on radi ovo što si ti napisao.
'&' bitovni AND
'|' bitovni OR
'^' bitovni XOR
'>>' right shift
'<<' left shift
http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Logical_operators
Zeznuo si se '!' je logički NOT, u rangu sa ostalim logičkim operatorima: '&&' logički AND, i '||' logički OR. Ti operatori ne mijenjaju bitove u varijabli.
'~' je bitovni NOT i on radi ovo što si ti napisao.
'&' bitovni AND
'|' bitovni OR
'^' bitovni XOR
'>>' right shift
'<<' left shift
http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Logical_operators
Tako je, jos ja gledam i znam da nije to to, ali nisam skuzil, malo mi je vec mozak izgorio od SQL-a.
!a ce uglavnom od recimo 00000001 napraviti 00000000 i to bude uvijek nula, a (0 % 2) uvijek daje 0 i zapravo onaj if se nece niti izvrsiti nikad. Drugim rijecima (!a % 2) pada u vodu.
Broj treba biti neparan (!a%2).
Pa (a%2) i testira neparan broj. Ovo što si ti napravio je zapravo testiranje parnog broja (iako si to nepravilno napravio jer bi trebalo ići (!(a%2)) zbog redoslijeda kojim se operatori izvršavaju).
http://bhoi.net/Zadaci/BHOI%202012/spirala.pdf
Moze pomoc oko zadatka ovog?
Ne znam kako da upisem ovako matricu i po tome da onda trazi koji je to broj?
Evo ti ideja za algoritam.Pošto udovoljava ograničenje resursa brzine samo do određene dimenzije NxN , nije 100% upotrebljiv.Ako te
dopadne onih 40% testnih primjera N<= 1000 ovo radi ali iznad kojeg N ne zadovoljava nisam ispitao tako da uzmi ovaj primjer samo kao ideju.
Vidio sam letimično po prijašnjim postovima prijedloge za brži izračun pa uklopi to u cjelinu.
Primjer na online compileru http://ideone.com/NCMsp
#include <iostream>
using namespace std;
int main()
{
int row_col_size , K_size , result_row , result_column;
cout<< "Upisi broj redaka i stupaca N? : ";
cin>> row_col_size;
cout<< endl << "Upisi velicinu matrice koja se vrti K(1 - 1000)?: ";
cin>> K_size;
cout<< endl << "Upisi broj trazenog retka i?";
cin>> result_row;
cout<< endl << "Upisi broj trazenog stupca j?";
cin>> result_column;
int array_size = row_col_size* row_col_size;
int ROW_MAX = row_col_size;
int COL_MAX = row_col_size;
int ROW_MIN = 0;
int COL_MIN = 0;
int row = 0;
int column = 0;
int K = 0;
int** data;
data = new int*[row_col_size];
for(int i=0 ; i < row_col_size; ++i)
{
data[i] = new int[row_col_size];
}
bool isArrayFinished = false;
while(!isArrayFinished )
{
static int counter = 0;
if(row == ROW_MIN && column < COL_MAX)
{
data[row][column] = K;
column++;
K++;
}
else
if(column == COL_MAX && row < ROW_MAX-1)
{
row++;
data[row][column-1] = K;
K++;
}
else
if(row == ROW_MAX-1 && column > COL_MIN+1)
{
column--;
data[row][column-1] = K;
K++;
}
else
if(column == COL_MIN+1 && row > ROW_MIN+1)
{
data[row-1][column-1] = K;
row--;
K++;
}
else
{
ROW_MAX--;
COL_MAX--;
ROW_MIN++;
COL_MIN++;
counter--;
}
counter++;
if(counter == array_size)
isArrayFinished = true;
if(K == K_size)
K = 0;
}
//otkomentiraj ako ne zelis ispis /*
cout<< endl;
for(int i=0 ; i < row_col_size; i++)
{
for(int j=0 ; j < row_col_size; j++)
{
cout<< " " << data[i][j];
}
cout<< endl;
}
// */
cout<< endl << "Trazeni broj : " << data[result_row-1][result_column-1];
for(int i=0 ; i < row_col_size; ++i)
{
delete []data[i];
}
delete []data;
return 0;
}
http://bhoi.net/Zadaci/BHOI%202012/spirala.pdf
Moze pomoc oko zadatka ovog?
Ne znam kako da upisem ovako matricu i po tome da onda trazi koji je to broj?
Pao mi na pamet jedan način. Super fast je jer skroz krati put.
Evo 2 linka na online compiler :
1. time 1.45 sec http://ideone.com/WarFb
2. time 0.01 sec http://ideone.com/cmuHz
Dubina rekurzije mi ne dopušta pokuse s N većim od cca 8300 na ideone.com.
/* SNAKE
MATRIX 03.07.2012
ova verzija ne skladisti podatke
u matricu vec samo daje trazeni
rezultat cini me se da je i do
par sto puta brzi algoritam kod
manjih N a kasnije se vjerovatno brzina
izvodjenja povecava exp. */
#include <iostream>
#include <cstdlib>
using namespace std;
class Point {
public:
Point(int x , int y , int deepGlobal);
~Point() {}
int X() {return m_x;}
int Y() {return m_y;}
int deep() {return m_deep;}
int L() {return m_layer;}
private:
int m_x;
int m_y;
int m_deep;
int m_layer;
};
Point::Point(int x , int y, int deepGlobal)
: m_x(x) , m_y(y) {
int x2 = abs(m_x - deepGlobal);
int y2 = abs(m_y - deepGlobal);
m_deep = ( abs(x2-m_x) > abs(y2-m_y) ) ? abs(x2-m_x) : abs(y2-m_y);
m_layer = (deepGlobal - m_deep) / 2;
}
// 4 stranice kvadrata matrice
int getAllNums(Point p , int deepGlobal)
{
static int counter = deepGlobal;
if(counter == p.deep())
return 0;
counter-=2;
return 4 * deepGlobal + getAllNums(p , deepGlobal-2);
}
int getRest(int x , int y , int deep)
{
int result;
if(x==0 && y<=deep)
result = y;
else
if(y==deep && x<=deep)
result = deep + x;
else
if(x==deep && y<=deep)
result = 2*deep + (deep-y);
else
result = 3*deep + (deep-x);
return result;
}
int main()
{
int N,K,row,col;
cout<< "Upisi broj redaka i stupaca N? : ";
cin>> N;
cout<< endl << "Upisi velicinu matrice koja se vrti K(1 - 1000)?: ";
cin>> K;
cout<< endl << "Upisi broj trazenog retka i?";
cin>> row;
cout<< endl << "Upisi broj trazenog stupca j?";
cin>> col;
int deepGlobal = N -1;
Point P(row-1,col-1,deepGlobal);
int final_1 = getAllNums(P,deepGlobal) + getRest(P.X()-P.L() , P.Y()-P.L() , P.deep());
int snake_size = N*N;
int final_2 = final_1%K;
cout<< endl << "Trazeni broj : " << final_2 ;
return 0;
}
Primjer dinamicki alociranog jednodimenzionalnog polja i dodjela vrijednosti polju pomocu for petlje
#include <iostream>
using namespace std;
int main() {
int *y = new int[5];
for (int i = 0; i < 4; i++) {
*y = (i + 1);
cout << *y << endl;
}
return 0;
}
E sad naprimjer evo dinamicki alociranog visedimenzionalnog polja:
#include <iostream>
using namespace std;
int main() {
int (*x)[5] = new int[3][5];
return 0;
}
Kako sad spremiti neku vrijednost u dinamicki alocirano visedimenzionalno polje?