Page 2 of 2

#26

Posted: 27/10/2006 23:30
by creation
irfane, fala puno, to mi treba, vremena imam
parafin, ne mora se poceti sa c, mora samo u bosni, sa masincem pa mozda i prije sa abakusom :D
seha, "dummies" knjige su cesto izuzetno dobre knjige za totalne pocetnike, kao sto sam ja kad se o c++ govori

fala svima

#27

Posted: 28/10/2006 14:07
by ztluhcs
creation wrote: ne mora se poceti sa c, mora samo u bosni, sa masincem pa mozda i prije sa abakusom :D
Ne mora se ni¹ta... Do tebe je da li æe¹ se ti zabetonirati u proceduralno razmi¹ljanje i imati probleme kad se prebaci¹ u objektno orijentisano razmi¹ljanje o problemu, ili æe¹ lako prihvatiti novu paradigmu. To su dva totalno razlièita koncepta rje¹avanja problema.

Problem koji mo¾e¹ imati na kraju je da ima¹ repove C koda rasute svuda po C++ kodu a to nije naèin na koji se radi sa C++ (barem po rijeèima njegovog autora).

Ako veze nema¹ o programiranju moj ti je savjet da proèita¹ poglavlja o OOP i proceduralnom programiranju prije nego napi¹e¹ prvu liniju koda. Tako æe¹ barem imati pojma kako i kojim principom poku¹ava¹ rije¹iti problem prvo na papiru...

P.S. C++ ti je hibridni jezik

#28

Posted: 29/10/2006 23:54
by ulicar
parafin wrote:i za c i za c++ imas masu stvari na internetu. na nasem ne znam ali probaj na engleskom (nece da ti skodi :). probaj na guglu ukucat "c tutorial" imam ja nekih knjiga u pdf-u pa reci ako treba saljem ti na mail. eto :-)
Hej, jel' imas mozda neke knjige koje se bave sa C++ standard library, ne ove najjednostavnije std::abs i slicne gluposti, vec ono malo naprednije?

#29

Posted: 09/11/2006 21:14
by creation
Pitanje:

Zasto je u donjem primjeru rjesenje abc?

#include <iostream>
using namespace std;
int main ()
{
int u=1;
char e[ ] ="yxbca";
while (u != 3)
{
switch (u)
{
case 0: u=3; break;
case 1: u=1;
case 3: u=4; break;
case 4: u=2; break;
default: u=3;
}
cout << e;
}
}

#30

Posted: 10/11/2006 09:27
by mahalas505
:-)

#31

Posted: 10/11/2006 09:40
by rashid
creation wrote:Pitanje:

Zasto je u donjem primjeru rjesenje abc?

#include <iostream>
using namespace std;
int main ()
{
int u=1;
char e[ ] ="yxbca";
while (u != 3)
{
switch (u)
{
case 0: u=3; break;
case 1: u=1;
case 3: u=4; break;
case 4: u=2; break;
default: u=3;
}
cout << e;
}
}


Simple ...

1. Korak

#include <iostream>
using namespace std;
int main ()
{
int u=1;
char e[ ] ="yxbca";
while (u != 3)
{
switch (u)
{
case 0: u=3; break;
case 1: u=1;
case 3: u=4; break; <- u se ovdje setuje na 4 jer gore nemas break;
case 4: u=2; break;
default: u=3;
}
cout << e; <- i izpise se 4 znak
}
}

2. Korak

#include <iostream>
using namespace std;
int main ()
{
int u=1;
char e[ ] ="yxbca";
while (u != 3) <- u je sad 4 znaci jos radimo
{
switch (u)
{
case 0: u=3; break;
case 1: u=1;
case 3: u=4; break;
case 4: u=2; break; <- ovdje se setuje na 2
default: u=3;
}
cout << e; <- i izpise 2 znak iz array-a
}
}

3. Korak

#include <iostream>
using namespace std;
int main ()
{
int u=1;
char e[ ] ="yxbca";
while (u != 3) <- u je sad 2 znaci jos radimo
{
switch (u)
{
case 0: u=3; break;
case 1: u=1;
case 3: u=4; break;
case 4: u=2; break;
default: u=3; <- pade ovdje u default i setuje u na 3
}
cout << e; <- izpise 3 znak :) a i posto jeste sad u 3 gore while se zakljuci
}
}

i na kraju dobijes abc.

#32

Posted: 10/11/2006 09:42
by rashid
ztluhcs wrote:
creation wrote: ne mora se poceti sa c, mora samo u bosni, sa masincem pa mozda i prije sa abakusom :D
Ne mora se ništa... Do tebe je da li ćeš se ti zabetonirati u proceduralno razmišljanje i imati probleme kad se prebaciš u objektno orijentisano razmišljanje o problemu, ili ćeš lako prihvatiti novu paradigmu. To su dva totalno različita koncepta rješavanja problema.

Problem koji možeš imati na kraju je da imaš repove C koda rasute svuda po C++ kodu a to nije način na koji se radi sa C++ (barem po riječima njegovog autora).

Ako veze nemaš o programiranju moj ti je savjet da pročitaš poglavlja o OOP i proceduralnom programiranju prije nego napišeš prvu liniju koda. Tako ćeš barem imati pojma kako i kojim principom pokušavaš riješiti problem prvo na papiru...

P.S. C++ ti je hibridni jezik
Sta ti to tacno znaci kad kazes da je "hibridni" jezik?

#33

Posted: 10/11/2006 15:37
by neko iz mase
nastao na kukuruznom polju

#34

Posted: 10/11/2006 15:54
by ndzlatar
Nisam stigo pregledati ovo, al sam vidio da je piso Zeljko Juric jedan od rijetki odlicnih predavaca na ETF - u.
irfan2 wrote:lik, ako hoces na nasem jeziku, neznam za alternative :D ..al su predavanja na courses.etf.ba ...ono, dosta ok ..

al racunaj da najmanje pola godine ti treba ...
http://courses.etf.unsa.ba/course/view.php?id=21
idi po redu ...


pitanje za advanced users :D : da li, po vama, treba odma pocet sa oop?

#35

Posted: 12/11/2006 22:58
by creation
Nakon sto sam uspio rijesiti permutaciju jednog broja od tri cifre, evo koda, nadam se da je ok:


#include <stdio.h>

void print(const int *v, const int size)
{
if (v != 0)
{
for (int i = 0; i < size; i++)
{
printf("%4d", v );
}
printf("\n");
}
} // print


void permute(int *v, const int start, const int n)
{
if (start == n-1)
{
print(v, n);
}
else {
for (int i = start; i < n; i++)
{
int tmp = v;

v = v[start];
v[start] = tmp;
permute(v, start+1, n);
v[start] = v;
v = tmp;
}
}
}


main()
{
int v[] = {1, 2, 3, 4};
permute(v, 0, sizeof(v)/sizeof(int));
}







Imam drugi zadatak/problem koji ne znam da rijesim. Ako ne zna da mi pomogne, bio bi mu veoma zahvalan, evo teksta:

Napisati rekurzivnu funkciju (u c++), bez koristenja petlji (znaci bez do, for i while petlji), bez if i bez switch i takodjer bez ! : varijabli, ali da se ipak terminira. Hvala svima koji su mi do sada pomogli.

#36

Posted: 20/11/2006 10:20
by creation
da li je iko vec rjesavao tzv magicni kvadrat? gdje je zbir brojeva jednak po dijagonali, horizontali i vertikali, npr:

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

potrebno je napisati kod u c++ koji ce za maksimalno 6 brojeva po jednom od tri parametra rjesavati ovaj problem? ako neko zna neka postavi kod ili barem objasnjenje kako da se to uradi.

#37

Posted: 20/11/2006 11:33
by creation

Code: Select all

#include "stdafx.h"
#include <vector>

using namespace std;

void OddMagicSquare(vector<vector<int> > &matrix, int n);
void DoublyEvenMagicSquare(vector<vector<int> > &matrix, int n);
void SinglyEvenMagicSquare(vector<vector<int> > &matrix, int n);
void MagicSquare(vector<vector<int> > &matrix, int n);
void PrintMagicSquare(vector<vector<int> > &matrix, int n);

int main(int argc, char* argv[])
{
int n;
printf("Enter order of square: ");
scanf("%d", &n);

vector<vector<int> > matrix(n, vector<int> (n, 0));

if (n<3)
{
printf("\nError: n must be greater than 2\n\n");
return -1;
}

MagicSquare(matrix, n);

//Print results
PrintMagicSquare(matrix, n);

return 0;
}

void MagicSquare(vector<vector<int> > &matrix,int n)
{
if (n%2==1) //n is Odd
OddMagicSquare(matrix, n);
else //n is even
if (n%4==0) //doubly even order
DoublyEvenMagicSquare(matrix, n);
else //singly even order
SinglyEvenMagicSquare(matrix, n);
}

void OddMagicSquare(vector<vector<int> > &matrix, int n)
{
int nsqr = n * n;
int i=0, j=n/2; // start position

for (int k=1; k<=nsqr; ++k)
{
matrix[i][j] = k;

i--;
j++;

if (k%n == 0)
{
i += 2;
--j;
}
else
{
if (j==n)
j -= n;
else if (i<0)
i += n;
}
}
}

void DoublyEvenMagicSquare(vector<vector<int> > &matrix, int n)
{
vector<vector<int> > I(n, vector<int> (n, 0));
vector<vector<int> > J(n, vector<int> (n, 0));

int i, j;

//prepare I, J
int index=1;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
I[i][j]=((i+1)%4)/2;
J[j][i]=((i+1)%4)/2;
matrix[i][j]=index;
index++;
}

for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
if (I[i][j]==J[i][j])
matrix[i][j]=n*n+1-matrix[i][j];
}
}

void SinglyEvenMagicSquare(vector<vector<int> > &matrix, int n)
{
int p=n/2;

vector<vector<int> > M(p, vector<int> (p, 0));
MagicSquare(M, p);

int i, j, k;

for (i=0; i<p; i++)
for (j=0; j<p; j++)
{
matrix[i][j]=M[i][j];
matrix[i+p][j]=M[i][j]+3*p*p;
matrix[i][j+p]=M[i][j]+2*p*p;
matrix[i+p][j+p]=M[i][j]+p*p;
}

if (n==2)
return;

vector<int> I(p, 0);
vector<int> J;

for (i=0; i<p; i++)
I[i]=i+1;

k=(n-2)/4;

for (i=1; i<=k; i++)
J.push_back(i);

for (i=n-k+2; i<=n; i++)
J.push_back(i);

int temp;
for (i=1; i<=p; i++)
for (j=1; j<=J.size(); j++)
{
temp=matrix[i-1][J[j-1]-1];
matrix[i-1][J[j-1]-1]=matrix[i+p-1][J[j-1]-1];
matrix[i+p-1][J[j-1]-1]=temp;
}

//j=1, i
//i=k+1, k+1+p
i=k;
j=0;
temp=matrix[i][j]; matrix[i][j]=matrix[i+p][j]; matrix[i+p][j]=temp;

j=i;
temp=matrix[i+p][j]; matrix[i+p][j]=matrix[i][j]; matrix[i][j]=temp;
}


void PrintMagicSquare(vector<vector<int> > &matrix, int n)
{
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
printf(" %3d", matrix[i][j]);

printf("\n");
}

printf("\n\n");
}
ima li neko da mi malo pojasni kod ovog programa?

#38

Posted: 27/11/2006 01:43
by Reek
creation wrote: Imam drugi zadatak/problem koji ne znam da rijesim. Ako ne zna da mi pomogne, bio bi mu veoma zahvalan, evo teksta:

Napisati rekurzivnu funkciju (u c++), bez koristenja petlji (znaci bez do, for i while petlji), bez if i bez switch i takodjer bez ! : varijabli, ali da se ipak terminira. Hvala svima koji su mi do sada pomogli.
ne znam kako mislis napisati rekurziju bez nekog uslova, a da nije beskonacna..a jos ne koristis nikakve varijable... :-? , i jos bi se trebala "terminirati"... :)

#39

Posted: 27/11/2006 01:44
by Reek
creation wrote:

Code: Select all

#include "stdafx.h"
#include <vector>

using namespace std;

void OddMagicSquare(vector<vector<int> > &matrix, int n);
void DoublyEvenMagicSquare(vector<vector<int> > &matrix, int n);
void SinglyEvenMagicSquare(vector<vector<int> > &matrix, int n);
void MagicSquare(vector<vector<int> > &matrix, int n);
void PrintMagicSquare(vector<vector<int> > &matrix, int n);

int main(int argc, char* argv[])
{
int n;
printf("Enter order of square: ");
scanf("%d", &n);

vector<vector<int> > matrix(n, vector<int> (n, 0));

if (n<3)
{
printf("\nError: n must be greater than 2\n\n");
return -1;
}

MagicSquare(matrix, n);

//Print results
PrintMagicSquare(matrix, n);

return 0;
}

void MagicSquare(vector<vector<int> > &matrix,int n)
{
if (n%2==1) //n is Odd
OddMagicSquare(matrix, n);
else //n is even
if (n%4==0) //doubly even order
DoublyEvenMagicSquare(matrix, n);
else //singly even order
SinglyEvenMagicSquare(matrix, n);
}

void OddMagicSquare(vector<vector<int> > &matrix, int n)
{
int nsqr = n * n;
int i=0, j=n/2; // start position

for (int k=1; k<=nsqr; ++k)
{
matrix[i][j] = k;

i--;
j++;

if (k%n == 0)
{
i += 2;
--j;
}
else
{
if (j==n)
j -= n;
else if (i<0)
i += n;
}
}
}

void DoublyEvenMagicSquare(vector<vector<int> > &matrix, int n)
{
vector<vector<int> > I(n, vector<int> (n, 0));
vector<vector<int> > J(n, vector<int> (n, 0));

int i, j;

//prepare I, J
int index=1;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
I[i][j]=((i+1)%4)/2;
J[j][i]=((i+1)%4)/2;
matrix[i][j]=index;
index++;
}

for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
if (I[i][j]==J[i][j])
matrix[i][j]=n*n+1-matrix[i][j];
}
}

void SinglyEvenMagicSquare(vector<vector<int> > &matrix, int n)
{
int p=n/2;

vector<vector<int> > M(p, vector<int> (p, 0));
MagicSquare(M, p);

int i, j, k;

for (i=0; i<p; i++)
for (j=0; j<p; j++)
{
matrix[i][j]=M[i][j];
matrix[i+p][j]=M[i][j]+3*p*p;
matrix[i][j+p]=M[i][j]+2*p*p;
matrix[i+p][j+p]=M[i][j]+p*p;
}

if (n==2)
return;

vector<int> I(p, 0);
vector<int> J;

for (i=0; i<p; i++)
I[i]=i+1;

k=(n-2)/4;

for (i=1; i<=k; i++)
J.push_back(i);

for (i=n-k+2; i<=n; i++)
J.push_back(i);

int temp;
for (i=1; i<=p; i++)
for (j=1; j<=J.size(); j++)
{
temp=matrix[i-1][J[j-1]-1];
matrix[i-1][J[j-1]-1]=matrix[i+p-1][J[j-1]-1];
matrix[i+p-1][J[j-1]-1]=temp;
}

//j=1, i
//i=k+1, k+1+p
i=k;
j=0;
temp=matrix[i][j]; matrix[i][j]=matrix[i+p][j]; matrix[i+p][j]=temp;

j=i;
temp=matrix[i+p][j]; matrix[i+p][j]=matrix[i][j]; matrix[i][j]=temp;
}


void PrintMagicSquare(vector<vector<int> > &matrix, int n)
{
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
printf(" %3d", matrix[i][j]);

printf("\n");
}

printf("\n\n");
}
ima li neko da mi malo pojasni kod ovog programa?
sta ti tacno nije jasno?....idi liniju po liniju..

#40

Posted: 18/12/2006 18:04
by The_Fluid
za ucenje c++ odlicno:

FREE DOWNLOAD
http://anatolix.naumen.ru/Books/cplusplus


Jeff Alger
C++ for Real programmers

Allen I. Holub
Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming

Stanley Lippman, Josee Lajoie
C++ Primer

Scott Meyers
Effective STL

Scott Meyers
Effective C++, 2nd Edition: 50 Specific Ways to Improve Your Programs and Designs

Scott Meyers
More Effective C++: 35 More Ways to Improve Your Programs and Designs

Dov Bulka, David Mayhew
Efficient C++ Performance Programming Techniques

Herb Sutter
Exceptional C++, More Exceptional C++

Andrei Alexandrescu
Modern C++ Design (Sovremennoe proektirovanie na C++)

Nicolai M. Josuttis
C++ Standard Library, The: A Tutorial and Reference

David Vandevoorde, Nicolai M. Josuttis
C++ Templates: The Complete Guide

Herb Sutter, Andrei Alexandrescu
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices

Bjarne Stroustrup
The C++ Programming Language, Third Edition. Special Edition

INTERNATIONAL STANDARD
Programming languages – C++ ISO/ANSI/EIC