parafin, ne mora se poceti sa c, mora samo u bosni, sa masincem pa mozda i prije sa abakusom
seha, "dummies" knjige su cesto izuzetno dobre knjige za totalne pocetnike, kao sto sam ja kad se o c++ govori
fala svima
Moderator: Benq
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.creation wrote: ne mora se poceti sa c, mora samo u bosni, sa masincem pa mozda i prije sa abakusom![]()
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?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
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;
}
}
Sta ti to tacno znaci kad kazes da je "hibridni" jezik?ztluhcs wrote: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.creation wrote: ne mora se poceti sa c, mora samo u bosni, sa masincem pa mozda i prije sa abakusom![]()
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
irfan2 wrote:lik, ako hoces na nasem jeziku, neznam za alternative..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: da li, po vama, treba odma pocet sa oop?
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");
}ne znam kako mislis napisati rekurziju bez nekog uslova, a da nije beskonacna..a jos ne koristis nikakve varijable...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.
sta ti tacno nije jasno?....idi liniju po liniju..creation wrote:ima li neko da mi malo pojasni kod ovog programa?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"); }