C++ ?

Hardware, software, mobiteli, programiranje, internet...

Moderator: Benq

creation
Posts: 14
Joined: 14/01/2005 14:25

#26

Post 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
ztluhcs
Posts: 3356
Joined: 28/04/2006 09:17
Location: Life isn't fair. It's just fairer than death, that's all.
Contact:

#27

Post 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
ulicar
Posts: 443
Joined: 27/02/2004 00:00

#28

Post 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?
creation
Posts: 14
Joined: 14/01/2005 14:25

#29

Post 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;
}
}
mahalas505
Posts: 2783
Joined: 08/10/2005 09:13

#30

Post by mahalas505 »

:-)
rashid
Posts: 932
Joined: 02/12/2005 01:21
Location: Sarajevo-Anarhija

#31

Post 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.
rashid
Posts: 932
Joined: 02/12/2005 01:21
Location: Sarajevo-Anarhija

#32

Post 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?
neko iz mase
Posts: 2018
Joined: 29/12/2004 21:18

#33

Post by neko iz mase »

nastao na kukuruznom polju
ndzlatar
Posts: 82
Joined: 09/11/2004 14:16

#34

Post 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?
creation
Posts: 14
Joined: 14/01/2005 14:25

#35

Post 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.
creation
Posts: 14
Joined: 14/01/2005 14:25

#36

Post 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.
creation
Posts: 14
Joined: 14/01/2005 14:25

#37

Post 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?
Reek
Posts: 63
Joined: 26/11/2006 13:06

#38

Post 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"... :)
Reek
Posts: 63
Joined: 26/11/2006 13:06

#39

Post 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..
The_Fluid
Posts: 5591
Joined: 02/08/2002 00:00
Location: Earth

#40

Post 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
Post Reply