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

poruka: 7.285
|
čitano: 1.712.448
|
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
Zoidberg kaže...
Zonitron kaže...

Ja sam ju isto mislio uzeti, ali mi je 300 kn puno tako da ću je uzeti drugi mjesec. Zanima me ako  bi se dalo dosta naučite iz te knjige i jednom kada bi ju naučio ako bi mogao reči da znam programirati u c++ ? Pošto namjeravam druge godine upisati neki računalni fakultet mislim da sada nije prerano početi malo  učiti tako da imam prednost nad drugima

Meh, steta ti bacati lovu na knjigu jer ako si kao ja i 99% ostalih ljudi neces procitati ni 50 stranica prije nego odustanes.

Dakle za pocetak prvo prodi neke osnovne tutoriale, ako ti se bas svidi onda uzmi recimo od bjarnea(kada izade, trenutno izdanje je C++98) The C++ Programming Language 4th edition

...

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

Ima li mozda neki dobar tutorial kako napraviti collision u SFML-u?

Detekcija sudaranja nema veze sa SFML-om, SDL-om, OpenGL-om itd, itd...

To je neovisno o biblioteci koju koristiš i moraš sam implementirati algoritam za to.

 

Kako se detektira sudar? Jednostavno, svakom iteracijom petlje provjeriš objekt nalazi li se tamo gdje ne bi smio biti, ako se nalazi prepraviš mu poziciju (vratiš ga korak unatrag). Ili možeš alternativno kod pritiska tipke provjeriti može li se uopće objekt pomaknuti u tom smjeru (ima li mjesta) te jednostavno ignorirati pritisak na tipku ako se objekt ne može više micati u tom smjeru.

 

Za osnovnu detekciju sudara sa 4 ruba ekrana ne trebaš ništa specijalno. Ali ako imaš nekakav kompliciran objekt (recimo mapu trenutnog nivoa), onda trebaš i nekakvu mapu prostora koja ti govori gdje je zauzeto a gdje nije.

 

Budi kreativan :)

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
Poruka je uređivana zadnji put pon 20.8.2012 13:50 (rustweaver).
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

#include <iostream>

using namespace std;

int main()
{
    HelloWorld(10);
    return 0;
}


void HelloWorld(int i)
{
    for(int j = 0; j < i; j++)
        cout << "Hello world!" << endl;
}

 

 


Napravio sam jedan jednostavan program ali ne razumijem zasto mi se pojavljuju errori.

 

C:\Users\David\Dropbox\C++\Test1891416\main.cpp||In function 'int main()':|
C:\Users\David\Dropbox\C++\Test1891416\main.cpp|7|error: 'HelloWorld' was not declared in this scope|
||=== Build finished: 1 errors, 0 warnings ===|

 

 

EDIT:RIJESENO

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Poruka je uređivana zadnji put čet 23.8.2012 13:26 (FireMan97).
Moj PC  
1 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...
EDIT:RIJESENO

Kada pišeš definicije funkcija iza main-a, moraš napisati prototip funkcije.
Znači iznad main-a dodaš
void HelloWorld(int i);

Ili napišeš cijelu funkciju iznad main-a.

Poruka je uređivana zadnji put čet 23.8.2012 13:37 (royalhero).
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ma da,stavio sam prototip ali mi opet nije bilo jasno zasto to prije nisam trebao :D

 

Hvala.

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

ali mi opet nije bilo jasno zasto to prije nisam trebao

Trebao si trebao. Osim ako ti te funkcije nisu bile iznad maina.

 

Nego, jesi li ti što iskemijao po pitanju detekcije sudara ili si odustao?

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

trebam ispisat sve četveroznamenkaste brojeve čiji je produkt znamenaka dijeljiv sa 5


#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{int t, s, d, j;
for (t=1;t<=9;t++)
for (s=1;s<=9;s++)
for (d=1;d<=9;d++)
for (j=1;j<=9;j++)
if ((t*s*d*j)%5==0)
cout<<" "<<t<<s<<d<<j;
system("PAUSE");
return EXIT_SUCCESS;
}

problem je što ne ispiše sve znamenke?

This is not the droid you're looking for...
Poruka je uređivana zadnji put uto 28.8.2012 15:48 (skandalouz).
 
0 0 hvala 0
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Probaj ovako:

Zavrtiš sve četveroznamenkaste brojeve u tom rasponu, njihov produkt znamenki dobiješ da sa temp % 10 množiš varijablu produkt sa desnom znamekom, a onda temp skratiš za tu desnu znamenku temp /=10  i tako dok ne dođeš do 0.

A onda samo testiraš da li je produkt djeljiv sa 5, a nula produkte odbaciš

 

 

#include<iostream>
using namespace std;


int main()
{
    for(int broj=1000; broj<9999; broj++)
    {
       int produkt = 1;
       int temp = broj;
       while(temp>0)
       {
          produkt *= temp%10;
          temp /= 10;
       }
       if(produkt != 0 && produkt %5 == 0)
          cout<< broj << " ";
    }

    return 0;
}

 
0 0 hvala 1
16 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Mala napomena: ne treba množiti znamenke jer produkt znamenaka će biti djeljiv s 5 samo ako je jedna od tih znamenki 5 (ili 0, naravno), pa ti je zadatak naći sve četveroznamenkaste brojeve koji sadrže znamenke 5 ili 0.

 
1 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
new kaže...

Mala napomena: ne treba množiti znamenke jer produkt znamenaka će biti djeljiv s 5 samo ako je jedna od tih znamenki 5 (ili 0, naravno), pa ti je zadatak naći sve četveroznamenkaste brojeve koji sadrže znamenke 5 ili 0.

Dobro matematičko opažanje, ali mu je onda zadatak naći sve brojeve koji imaju bar jednu peticu, a nijednu 0 jer mu traže produkt djeljiv sa 5, a ne broj djeljiv sa 5.

E sad, treba složiti teorem u praksu, pa napisati to, nijedna 0, bar jedna petica.

Poruka je uređivana zadnji put uto 28.8.2012 17:32 (Floki).
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
skandalouz kaže...

trebam ispisat sve četveroznamenkaste brojeve čiji je produkt znamenaka dijeljiv sa 5


#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{int t, s, d, j;
for (t=1;t<=9;t++)
for (s=1;s<=9;s++)
for (d=1;d<=9;d++)
for (j=1;j<=9;j++)
if ((t*s*d*j)%5==0)
cout<<" "<<t<<s<<d<<j;
system("PAUSE");
return EXIT_SUCCESS;
}

problem je što ne ispiše sve znamenke?

Kao prvo ako trazis pomoc na forumu onda nije u redu da ne objasnis u cemu je problem. "problem je sto ne ispise sve znamenke?"  mi govorni apslutno nista.  Dakle tvoj program koliko vidim ispravno radi:   #include <cstdlib> #include <iostream>   using namespace std;   int main(int argc, char *argv[]) {int t, s, d, j, cnt=0; for (t=1;t<=9;t++) for (s=1;s<=9;s++) for (d=1;d<=9;d++) for (j=1;j<=9;j++) if ((t*s*d*j)%5==0) cout<<++cnt << " "<<t<<s<<d<<j <<endl; } ispisuje ravno 2465 brojeva, sto je koliko je i ocekivano: 4*8*8*8+6*64+4*8+1

 

edit za formatiranje zahvali bug forumu kojem ne radi c/p kako treba

Poruka je uređivana zadnji put uto 28.8.2012 23:31 (Zoidberg).
17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ja sam objasnio gdje je problem, i da ne ispiše sve znamenke u mom programu. E sad što ti nisi skužio do tebe je.

 

Tvoj program koji si napiso neradi, neznam jel do mene ali on ispiše brojeve od 2000+. Prvi broj u nizu mora bit 1115.

U mojem programu sam primjetio da radi kad  nema <<endl; na kraju cout<<" "<<t<<s<<d<<j; , ovdje sam code napiso bez <<endl; i očito je kod tebe zbog toga radio, neznam kake veze to ima ali eto.

This is not the droid you're looking for...
 
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
skandalouz kaže...

Ja sam objasnio gdje je problem, i da ne ispiše sve znamenke u mom programu. E sad što ti nisi skužio do tebe je.

 

Tvoj program koji si napiso neradi, neznam jel do mene ali on ispiše brojeve od 2000+. Prvi broj u nizu mora bit 1115.

U mojem programu sam primjetio da radi kad  nema <<endl; na kraju cout<<" "<<t<<s<<d<<j; , ovdje sam code napiso bez <<endl; i očito je kod tebe zbog toga radio, neznam kake veze to ima ali eto.

Ima veze sto ti konzola ima ogranicen history.

Vidis da si odma napisao to odgovorio bih ti puno lakse i brze. Ovako si bio nekulturan jos kad sam ti probao objasniti neke stvari pa mozes zaboraviti da cu ikad vise trositi vrijeme da ti odgovaram.

Poruka je uređivana zadnji put sri 29.8.2012 1:16 (Zoidberg).
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Ma svejedno gdje je napravio grešku u kodu, taj pristup broj petlji = broj znamenaka je pogrešan, zato ga ja nisam ni komentirao.

Ovdje treba primjeniti koncept izlučivanja znamenaka, izlučujemo najdesniju znamenku operatorom %10, a onda je eliminiramo cjelobrojnim djeljenjem sa 10, broj /= 10, i tako do 0.

Dakle, uvijek imamo samo dvije petlje, bez obzira koliko broj koji ispitujemo ima znamenaka. Jednu for petlju koja određuje interval brojeva koje ispitujemo i jednu while petlju u kojoj vršimo izlučivanje i operacije sa znamenkama.

Poruka je uređivana zadnji put sri 29.8.2012 12:35 (Floki).
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

zar 0 nije djeljiva sa svim brojevima pa tako i s 5?

17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
srky.du kaže...

zar 0 nije djeljiva sa svim brojevima pa tako i s 5?

Pitaš se zašto sam izbacio nul produkte.

Iz jednostavnog razloga što mi nula kao djeljenik ne ispunjava uvjet da umnožak između vrijednosti razlomka i vrijednosti inverzne vrijednosti razlomka bude 1.

 

25/4 = 6.25

4/25 = 0.16

6.25 X 0,16 = 1

 

 

0/4 = 0

4/0 = undefined

 

Dakle, dokaz da nemam razloga četvorici ljudi dijeliti karte za ulaz na utakmicu, kad ih nemam uopće, jer je logika ista da oni nemaju  smisla dolaziti da bi karte dobili

kad ih ja uopće nemam.

Poruka je uređivana zadnji put pet 31.8.2012 15:56 (Floki).
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...
...

 

0/4 = 0

4/0 = infinity

...

NaN

If you ever write code that is so complex that needs a comment to explain *what* a statement is doing, you probably need to rewrite your code, not comment it.
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
Floki kaže...
...

 

0/4 = 0

4/0 = infinity

...

NaN

Ti si stavio informatički pojam NaN, a ja sam govorio o matematičkom teoremu

Vidim da infinity ne prolazi logičku provjeru u drugim teoremima, pa ću staviti nedefinirao

 

(1+infinity) - infinity =  infinity - infinity = 0

1+(infinity-infinity) =  1+0 = 1

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

Ti si stavio informatički pojam NaN, a ja sam govorio o matematičkom teoremu

Vidim da infinity ne prolazi logičku provjeru u drugim teoremima, pa ću staviti nedefinirao

 

(1+infinity) - infinity =  infinity - infinity = 0

1+(infinity-infinity) =  1+0 = 1

Da, ipak je ovo tema o programiranju :D

 

Ali ipak, niti 4/0 = inf nije tocno. Tocno je to da je taj izraz nedefiniran.

Ako bi pak upotrijebili limese, tada bi mogli napisati da je inf.

If you ever write code that is so complex that needs a comment to explain *what* a statement is doing, you probably need to rewrite your code, not comment it.
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
zasto uopce djelite s 0?
po zadatku se djeli s 5 ako sam dobro skonto
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
srky.du kaže...
zasto uopce djelite s 0?
po zadatku se djeli s 5 ako sam dobro skonto

Pa napiši onda zadatk kako misliš da treba i kraj priče

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...
srky.du kaže...
zasto uopce djelite s 0?
po zadatku se djeli s 5 ako sam dobro skonto

Pa napiši onda zadatk kako misliš da treba i kraj priče

#include <iostream>
#include <stdio.h>
using namespace std;

int main()
{
int i,j,k,l;
int brojac=0;

    for(i=1; i<=9; i++)
        for(j=0; j<=9; j++)
            for(k=0; k<=9; k++)
                for(l=0; l<=9; l++)
                    if((i*j*k*l) % 5 == 0)
                    {
                        printf("%d%d%d%d ",i,j,k,l);
                        brojac++;
                    }
    printf("\nIspisano: %d brojeva\n", brojac);
    return 0;
}

ja samo govorim da brojevi smiju imat nule u sebi jer
1230 -> 1*2*3*0 = 0

a 0 mod 5 = 0

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

Zašto jednostavno ne početi od 1115 i dodavati po 10 sve do 9996? Tak se dobiju svi brojevi čiji je produkt djeljiv s 5, zar ne?

 

Povoljni CD-keyevi: http://www.cjs-cdkeys.com/affiliate/idevaffiliate.php?id=250
Poruka je uređivana zadnji put pet 31.8.2012 18:19 (191x7).
Moj PC  
0 0 hvala 0
15 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
Sekin2705 kaže...

#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;

bool Provjera(int& bod1, int& bod2)
{
    int razlika = bod1 - bod2;
    if(bod1 >= 4 || bod2 >=4)
    {
        if(abs(razlika)>= 2)
        {
            return true; // kad se ostvari minimum 4 boda i dva razlike
        }
    }
    return false;
}

bool setBodovi(int& igrac1, int &igrac2)
{
    if((igrac1 >= 6 && igrac1 - igrac2 >=2) || (igrac2 >= 6 && igrac2 - igrac1 >=2))
    {
        return true;
    }
    return false;
}

void Bodovi(int bod1, int bod2, int& igrac1, int& igrac2, int& servis)
{
    if((servis == 1 && bod1>bod2) || (servis == -1 && bod1<bod2))
    {
       igrac1++; // ako je na servisu upisujemo bod ako je S veći
    }             // ili ako nije na servisu ako je P veći
    else
    {
       igrac2++;
    }
}

void Gem(string niz, int& igrac1, int& igrac2)
{
    int bod1=0, bod2=0;
    int servis = 1;
    for(int i = 0; i < niz.length(); i++)
    {
        if(niz[i] == 'S')
        {
            bod1++;
        }
        else if(niz[i] == 'P')
        {
            bod2++;
        }
        if (Provjera(bod1, bod2))
        {
            Bodovi(bod1, bod2, igrac1, igrac2, servis);
            bod1 = 0; // resetiramo bodove nakon upisa gema
            bod2 = 0;
            servis *= -1; // promjena servisa
            if(setBodovi(igrac1,igrac2))
            {
                cout<<igrac1<<":"<<igrac2<<endl;
                igrac1 = 0;
                igrac2 = 0;
            }
        }
    }
}
int main()
{
    string niz;
    int igrac1 = 0, igrac2 = 0;
    cout<<"UNESITE BODOVE (UNESITE S AKO JE IGRAC KOJI JE SERVIRAO OSVOJIO BOD ILI P AKO JE PROTIVNIK IGRACA KOJI SERVIRA OSVOJIO BOD: "<<endl;
    getline(cin, niz);
    Gem(niz, igrac1, igrac2);
    if(igrac1 != 0 && igrac2 != 0){
       cout<<igrac1<<":"<<igrac2<<endl;
    }
    system ("pause");
    return 0;
}

Dodao sam funkciju setBodovi, i morao sam napraviti male izmjene u tvome kodu da bi sve radilo kao u zadatku.

I would love to change the world, but they won't give me the source code
Poruka je uređivana zadnji put ned 2.9.2012 15:56 (captain_soap_McTawish).
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Odlicno radim.Zahvaljujem mnogo

17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...
Sekin2705 kaže...


Dodao sam funkciju setBodovi, i morao sam napraviti male izmjene u tvome kodu da bi sve radilo kao u zadatku.

Ne kužim gdje su u logici programa napravljene izmjene, osim u funkciji Gem dodata provjera za set uz reset igrača nakon dobijenog seta.

Poruka je uređivana zadnji put pon 3.9.2012 12:28 (Floki).
15 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...

Ne kužim gdje su u logici programa napravljene izmjene, osim u funkciji Gem dodata provjera za set uz reset igrača nakon dobijenog seta.

Zato sam i napomenuo male izmjene.

I would love to change the world, but they won't give me the source code
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...
Floki kaže...

Ne kužim gdje su u logici programa napravljene izmjene, osim u funkciji Gem dodata provjera za set uz reset igrača nakon dobijenog seta.

Zato sam i napomenuo male izmjene.

Aha, ma nisam pitao da te davim, nego mi je bilo čudno gdje sam pogriješio u logici programa, to je bilo davno, više se ne sjećam dobro, čini mi se da sam mu ostavio da napiše provjeru za set, pa sam se zaptao gdje sam pogriješio.{#}

 

 

 

btw. Kad je jedan autor naglašavao važnost komentara u kodu, mislio je baš na ovo kad je naznačio da se to radi radi lakšeg razumjevanja  i tuđeg koda i "including past you". Da nije bilo komentara meni bi za analizu trebalo baš koliko i da je to netko drugi napisao.

Poruka je uređivana zadnji put pon 3.9.2012 14:10 (Floki).
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
nik_02 kaže...
napoleon12356 kaže...

Zna li netko, pomoću koje funkcije pronaći koliko puta se jedan string nalazi u drugom?

 

Ako ti je još aktualno

 

#include <iostream>
#include <string>

using namespace std;

// FUNKCIJA**********************
void repetition(string someString ,
                              string toFind ,
                              size_t pos)
{
      static int counter;
      size_t next = someString.find(toFind,pos);

      if(next == string::npos)
      {
              cout<< "Number of apperances : " << counter;
              return;
      }

      next++;
      counter++;

      repetition(someString ,
                            toFind ,
                            next);
}
// END***************************

int main()
{
      string someString;
      cout<< "Upisi recenicu u kojoj ce se traziti drugi string : "
              << endl;
      getline(cin , someString);

      string toFind;
      cout<< "Upisi string za pronaci : "
              << endl;
      cin>> toFind;

      repetition(someString , toFind , 0);
      return 0;
}

 

nbsp;

17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

covjek je pitao koja fja, ne da mu je napises...

fja se zove strstr u Cu.

i string::find u C++u.

naravno obje vracaju vrijednost za prvi nadeni...

treba while ili loop petlja za ukupan broj.

To moze probati napisati sam, ako zapne pomoci cemo mu.

 

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