Programiranje u C++-u - pitanja i odgovori izdvojena tema

poruka: 7.285
|
čitano: 1.713.302
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...

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?

Poruka je uređivana zadnji put pet 29.6.2012 15:16 (pall44).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...
Intelovac123 kaže...

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°

 

Poruka je uređivana zadnji put pet 29.6.2012 21:23 (srky.du).
15 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
srky.du kaže...

 

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.

Twitter- @capttawish Linux/GNU live forever.
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...

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

13 godina
offline
Programiranje u C++-u - pitanja i odgovori

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.

 

 

 

 

Zadaci Zadaci
Poruka je uređivana zadnji put ned 1.7.2012 19:59 (assassin.st).
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
assassin.st kaže...

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;
}

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Rijesit cu ti 4 A samo nek mi netko kaze sto je to produkt :D

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

Rijesit cu ti 4 A samo nek mi netko kaze sto je to produkt :D

Umnozak.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

#include <iostream>

using namespace std;

int main()
{
    int a = 10;
    while(a <= 51)
    {
        a++;
        if(!a%2)
        {
            neznam cega umnozak :D
        }
    }

    return 0;

}

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 1
13 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

#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?

Poruka je uređivana zadnji put ned 1.7.2012 20:45 (assassin.st).
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

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;

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

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.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
Poruka je uređivana zadnji put ned 1.7.2012 20:50 (1domagoj1).
 
1 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
Inace je bolje za ovakve stvari kad je poznat broj ponavljanja koristiti for petlju.

Možda vježba while petlju pa ju mora koristiti.

Senaid
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...

Možda vježba while petlju pa ju mora koristiti.

Pa je, u zadatku se iskljucivo trazi while petlja, ali samo usput napominjem.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...

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).

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

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?

Senaid
15 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...

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.

Twitter- @capttawish Linux/GNU live forever.
Poruka je uređivana zadnji put ned 1.7.2012 21:20 (captain_soap_McTawish).
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ma to sam karikirao za njega, da mu pokažem da je nepregledno.

Senaid
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

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)...

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Oprosti,zabunio sam se,nisam razmisljao.

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
13 godina
offline
Programiranje u C++-u - pitanja i odgovori

Čemu ovo: cout << u;

Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
assassin.st kaže...

Čemu ovo: cout << u;

Pa da ispiše umnožak/produkt.

Senaid
13 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...
assassin.st kaže...

Č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.

13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

To je funkcija za ispis i dio je stdio modula, koji je standardan za C, ako ti smeta, prepiši u printf.

Senaid
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...

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

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...

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.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

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://www.swansontec.com/sopc.html

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Intelovac123 kaže...

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;
  }

Poruka je uređivana zadnji put pon 2.7.2012 19:12 (nik_02).
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
nik_02 kaže...
Intelovac123 kaže...

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;
 
}

Poruka je uređivana zadnji put uto 3.7.2012 13:25 (nik_02).
16 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

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?

 
0 0 hvala 0
E-mail:
Lozinka:
 
vrh stranice