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

poruka: 7.283
|
čitano: 1.509.945
|
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
royalhero kaže...

Vidiš G4L, ti bi radio asambly, a nisi znao matrice, je li ti sada jasno zašto smo te odgovarali od asambly-a?

{#}

 

Da jasno mi je.

Buzzzzzzzzzzzzzzzzzzzzzzzzzz
Poruka je uređivana zadnji put ned 1.4.2012 18:54 (Games 4 life).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Games 4 life kaže...
captain_soap_McTawish kaže...

Nisam bas shvatio sto pitas no. No ono i<RED je uvjet i petlja se izvrsava dok je i<RED. Mi imamo dva reda pa je RED=2, dok je posljednji clan polja 1. Krecemo sa i=0, pristupamo prvome clanu, onda se i poveca na 1 i pristupamo drugom clanu. I na kraju se i poveca na 2 i petlja se prekine jer vise nije zadovoljen uvjet i<2.

Aha, znaci u ovom slucaju u petlji for uvjetni nastavak treba biti false ???

Petlja se vrti dok je uvjet true , kad je false prestaje ,a kolege su ti rekli da se kreće od nule kad se pristupa vrijednosti(adresi) u prvom polju i prvom stupcu .Vanjska petlja se vrti onoliko koliko ima redova , a za svaki vanjski pomak unutrašnja se izvrti cijela zbog svog uvjeta i kad završi unutrašnja može krenuti ponovo vanjska .Znači iz ovoga što pitaš moraš naučiti unarne operatore , petlje i to kako se koja vrti ako imaš jednu vanjsku i recimo tri unutrašnje itd .Ne bi bilo loše i pokazivače ,znači malo o tome što je heap a što stack ,kad ti to postane jasno onda možeš manipulirati sa petljama kako hočeš.Ako svaladaš takve stvari u C++-u tad možeš i na assembly ..... :)

 

 

Private
Poruka je uređivana zadnji put ned 1.4.2012 18:59 (Private).
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Jel zna netko kako se u C++ koristi funkcija erfc? 

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

Jel zna netko kako se u C++ koristi funkcija erfc? 

Evo ovdje ti sve lijepo piše ,ako nije jasno ti pitaj opet . 

Private
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ne radi mi ovo.. Napišem sljedeći program u C++ ali mi ne radi:

 

#include<iostream>

#include<cmath>

 

using namespace std;

 

double smallx, largex, value;

double erf(double x);

double erfc(double x);

 

int main (void){ 

smallx = 0.1;

largex = 10.0;

 

value = erfc(largex);     /* value = 2.088488e-45 */

cout << value <<endl;

system("PAUSE");

}

 

 

Jel može pomoć :S

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

Petlja se vrti dok je uvjet true , kad je false prestaje ,a kolege su ti rekli da se kreće od nule kad se pristupa vrijednosti(adresi) u prvom polju i prvom stupcu .Vanjska petlja se vrti onoliko koliko ima redova , a za svaki vanjski pomak unutrašnja se izvrti cijela zbog svog uvjeta i kad završi unutrašnja može krenuti ponovo vanjska .Znači iz ovoga što pitaš moraš naučiti unarne operatore , petlje i to kako se koja vrti ako imaš jednu vanjsku i recimo tri unutrašnje itd .Ne bi bilo loše i pokazivače ,znači malo o tome što je heap a što stack ,kad ti to postane jasno onda možeš manipulirati sa petljama kako hočeš.Ako svaladaš takve stvari u C++-u tad možeš i na assembly ..... :)

 

 

Znam petlje, samo što sam zaboravio da uvjetni nastavak mora biti false, a ne true...

Još ću to sve izvježbati...

Buzzzzzzzzzzzzzzzzzzzzzzzzzz
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ne radi mi ovo.. Napišem sljedeći program u C++ ali mi ne radi:

 

 

#include<iostream>

#include<cmath>

 

using namespace std;

 

double largex, value;

double erf(double x);

double erfc(double x);

 

int main (void){ 

 

 

smallx = 0.1;

largex = 10.0;

 

value = erfc(largex);     /* value = 2.088488e-45 */

cout << value <<endl;

system("PAUSE");

}

 

 

 

Jel može pomoć :S

 
0 0 hvala 0
14 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Legolas kaže...

Pa gdje ti neradi? Je li pogreska u izvodenju, prevodenju itd.

Ne vidim smisao da opet deklariras funkcije erfc i erf kada su one vec deklarirane u biblioteci u koju si ukljucio, I kad si ih nekog nepoznatog razloga deklarirao, zasto ih onda nisi definirao?

Twitter- @capttawish Linux/GNU live forever.
Poruka je uređivana zadnji put ned 1.4.2012 19:55 (captain_soap_McTawish).
15 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ispred globalnih varijabli ide ::

smallx nije definiran nigdje

 

Btw ne znam čemu globalne varijeble u ovom programu....

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
Poruka je uređivana zadnji put ned 1.4.2012 19:59 (Luuka).
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Luuka kaže...
Btw ne znam čemu globalne varijeble u ovom programu....

Ima tu još grešaka, nema povratne vrijednosti, intendancija...

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

 

#include<iostream>

#include<cmath>

 

using namespace std;

 

double largex, value;

 

int main (void){ 

 

largex = 10.0;

 

value = erfc(largex);    /* value = 2.088488e-45 */

cout << value <<endl;

 

system("PAUSE");

}

 

 

Error:

error C3861: 'erfc': identifier not found

 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...

Ne vidim smisao da opet deklariras funkcije erfc i erf kada su one vec deklarirane u biblioteci u koju si ukljucio

U kojoj to? Ja vidim samo iostream i math.h... :S

My computer once beat me at chess, but we got even after a round of boxing.
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Legolas kaže...

Error:

error C3861: 'erfc': identifier not found

Koliko vidim erfc nije deklarisana. Treba li biti?, mislim da li je to biblioteka cmatha?

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

Error:

error C3861: 'erfc': identifier not found

Pa zar ne vidis da nisi nigdje definirao funkciju erfc?

 

royalhero kaže...

Koliko vidim erfc nije deklarisana. Treba li biti?, mislim da li je to biblioteka cmatha?

Ne, jest deklarirana, ali nije definirana.

Ispricavam se, u prethodnoj verziji je bila deklarirana i nedefinirana, sada vise nije ni deklarirana.

 

I nije dio math.h biblioteke, vidi:

http://www.cplusplus.com/reference/clibrary/cmath/

My computer once beat me at chess, but we got even after a round of boxing.
Poruka je uređivana zadnji put ned 1.4.2012 20:11 (rustweaver).
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Funkcija erfc se još uvijek nije integrirala u sve verzije c/c++ compilera a obično se nalaziu math.h. Stoga, evo cijeli code funkcije;

 

double erfc(double x)
{
    //
    // Computation of the complementary error function erfc(x).
    //
    // The algorithm is based on a Chebyshev fit as denoted in
    // Numerical Recipes 2nd ed. on p. 214 (W.H.Press et al.).
    //
    // The fractional error is always less than 1.2e-7.
    //
    //
    // The parameters of the Chebyshev fit
    //
    const double a1 = -1.26551223, a2 = 1.00002368,
    a3 = 0.37409196, a4 = 0.09678418,
    a5 = -0.18628806, a6 = 0.27886807,
    a7 = -1.13520398, a8 = 1.48851587,
    a9 = -0.82215223, a10 = 0.17087277;
    //
    double v = 1; // The return value
    double z = fabs(x);
    //
    if (z == 0) return v; // erfc(0)=1
    double t = 1/(1+0.5*z);
    v = t*exp((-z*z) +a1+t*(a2+t*(a3+t*(a4+t*(a5+t*(a6+
             t*(a7+t*(a8+t*(a9+t*a10)))))))));
    if (x < 0) v = 2-v;     // erfc(-x)=2-erfc(x)
    return v;
}

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

Sviđa mi se ovo rješenje sa aritmetikom pokazivača, samo u petlji while trebalo bi kao uvjet staviti vrijednost varijable na koju pokazivač pokazuje, a ne adresu na koju pokazuje while(*n), pošto prekidni znak char niza ima dekadsku vrijednost 0.

 

Postoji još način kako zaobići if uvjet u ovom programu koristeći dekadske vrijednosti ascii znakova. Kroz petlju zbrojimo jedinice u nizu, a onda tu vrijednost korigiramo tako da oduzmemo zbroj nula, kao polaznu točku uzmemo duljinu string niza.

 

 

#include<iostream>
#include<string>
using namespace std;

int main ()

{
    string niz = "1011010101";
    int suma = 0;
    for(int i=0; i<niz.length(); i++)
    {
       suma += niz[i] - 48;
    }
    suma = suma - (niz.length() - suma);
    cout<< suma << endl;
    return 0;

 
}

 

 

 

Zašto ovdje ide suma+= niz[i] - 48??

Jel mi može to netko malo pojasniti

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

Sviđa mi se ovo rješenje sa aritmetikom pokazivača, samo u petlji while trebalo bi kao uvjet staviti vrijednost varijable na koju pokazivač pokazuje, a ne adresu na koju pokazuje while(*n), pošto prekidni znak char niza ima dekadsku vrijednost 0.

 

Postoji još način kako zaobići if uvjet u ovom programu koristeći dekadske vrijednosti ascii znakova. Kroz petlju zbrojimo jedinice u nizu, a onda tu vrijednost korigiramo tako da oduzmemo zbroj nula, kao polaznu točku uzmemo duljinu string niza.

 

 

#include<iostream>
#include<string>
using namespace std;

int main ()

{
    string niz = "1011010101";
    int suma = 0;
    for(int i=0; i<niz.length(); i++)
    {
       suma += niz[i] - 48;
    }
    suma = suma - (niz.length() - suma);
    cout<< suma << endl;
    return 0;

 
}

 

 

 

Zašto ovdje ide suma+= niz[i] - 48??

Jel mi može to netko malo pojasniti

U ascii kodu za broj 2 ti je 50 i sad kad oduzmeš 50-48 = 2 a tolika ti je suma i to je to .Sve gledaj kroz prizmu ascii koda . Zato je tamo taj 48 da bi dobio pravu vrijednost .Znači da bi dobio brojčanu vrijednost moraš znakovni brojčani ekvivalent prevesti u ascii kod i od njega oduzeti 48 ,a 48 je brojčani ekvivalent za znak broja 0 .

 

Private
Poruka je uređivana zadnji put ned 1.4.2012 23:30 (Private).
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pozdrav ljudi! Evo imam jedno pitanje. Zanima me kako ukloniti neki red i stupac 2D niza.

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

Pozdrav ljudi! Evo imam jedno pitanje. Zanima me kako ukloniti neki red i stupac 2D niza.

U pravilu je rijec o obicnom kopiranju elemenata, koji dolaze nakon elementa koji brises, jedno mjesto unaprijed (i eventualnom oslobadanju memorije ako koristis dinamicki alocirano polje). Jel' znas uklanjati elemente iz jednodimenzionalnog niza? Princip ti je isti, samo sto sada radis u jednoj dimenziji vise.

 

Problem je sto je, kod staticki alociranih polja, "brisanje" redova i stupaca gotovo beznacajno buduci da im se ne mjenja stvarna velicina, nego se ostali elementi pomicu samo za jednu poziciju nize. Cime program nakon npr. uklanjanja jednog reda nikako ne moze znati da polje sada ima jedan red manje, te da ne treba vise ispisivati cetiri, nego samo tri reda.

 

Evo ti programcic koji ce ti to malo slikovitije prikazati:

 

#include <stdlib.h>
#include <stdio.h>

void ispisi(int niz[][4])
{
    int x, y;
   
    for (y=0; y<4; y++)
    {
        for (x=0; x<4; x++)
            printf("%d ", niz[y][x]);
       
        printf("\n");
    }
}

int main()
{
    int niz1[4][4]={{1, 2, 3, 4},
                    {1, 2, 3, 4},
                    {1, 2, 3, 4},
                    {1, 2, 3, 4}};
   
    int niz2[4][4]={{1, 1, 1, 1},
                    {2, 2, 2, 2},
                    {3, 3, 3, 3},
                    {4, 4, 4, 4}};
   
    int x, y, brisati;
                  
    printf("Niz1 prije brisanja:\n");
    ispisi(niz1);
   
    //ukloni drugi stupac
    brisati=1;
    for (y=0; y<4; y++)
        for (x=brisati; x<3; x++)
            niz1[y][x]=niz1[y][x+1];
   
    printf("\nNiz1 nakon brisanja:\n");
    ispisi(niz1);
   
    printf("\nNiz2 prije brisanja:\n");
    ispisi(niz2);
   
    //ukloni treci redak
    brisati=2;
    for (y=brisati; y<3; y++)
        for (x=0; x<4; x++)
            niz2[y][x]=niz2[y+1][x];
   
    printf("\nNiz2 nakon brisanja:\n");
    ispisi(niz2);
   
    system("pause");
    return 0;
}

Kod dinamicki alociranih polja imas pogodnost sto za izbrisane elemente mozes koristiti NULL cime mozes odrediti barem jednu dimenziju niza.

 

I znam da sam obrnuo redoslijed x i y, te da u oznacavanju koordinata x ide prvi, ali to ima veze s nacinom na koji si ja vizualiziram 2D polje u glavi, pa stoga elementima pristupam "obratno". :P

My computer once beat me at chess, but we got even after a round of boxing.
15 godina
offline
Programiranje u C++-u - pitanja i odgovori

Pozdrav ljudi da li netko zna rijesiti ovaj zadatak: Npravite program koji ce sa tipkovnice unositi troznamenkasti broj. Ako broj nije troznamenkast zavrsiti izvođenje programa.Napraviti program koji ipisuje sve prirodne brojeve koji su manji od unešenog broja. Ispis brojeva neka bude jedan ispod drugoga....

 

prvi dio ide ovako i to znam da je dobro.... ali dalje ovaj drugi dio ne znam

 

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
cout << "Unesi troznamenkasti broj :"<< endl;
int broj;
cin >> broj;

if(broj < 100 ||broj > 999)
{
cout<<" Broj nije troznamenkast !!!" << endl;
}

Poruka je uređivana zadnji put pon 2.4.2012 15:02 (Frenkyca).
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

for(int i=1; i<=broj; i++)
{
   cout<<i<<endl;
}

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

Imam nekakav string niz koji unosim sa tipkovnice.. Želim da taj niz bude binarni i kada se unese broj različit od 1 ili 0 da javi grešku..

Uradio sam na sljedeći način ali baš ne radi

 

string niz;

int i;

cout<<"Unesi binarni niz "<<endl;

cin>>niz;

for(i=0; i<niz.length(); i++){

if(niz[i]!=0 || niz[i]!=1){

cout<<"Niz nije binaran!"<<endl;

break;

}

}

 

 
0 0 hvala 0
16 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
Legolas kaže...

Imam nekakav string niz koji unosim sa tipkovnice.. Želim da taj niz bude binarni i kada se unese broj različit od 1 ili 0 da javi grešku..

Uradio sam na sljedeći način ali baš ne radi

...

Ne bi li za znakove kada ih treba prepoznavati trebao stavljati 0 i 1 pod navodnike jer sam znak i njegova ASCII vrijednost nisu isto?

 

Isprobaj ovako:

 

string niz;

int i;

cout<<"Unesi binarni niz "<<endl;

cin>>niz;

for(i=0; i<niz.length(); i++){

if(niz[i]!='0' || niz[i]!='1'){

cout<<"Niz nije binaran!"<<endl;

break;

}

}

 

Prodajem RAGE za PS3: http://www.bug.hr/forum/topic/igre-accounti-igrama/prodaja-igra-rage-playstation-3/129629.aspx?page=0&amp;amp;jumpto=2529211&amp;amp;sort=asc&amp;amp;view=flat
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
191x7 kaže...
Legolas kaže...

Imam nekakav string niz koji unosim sa tipkovnice.. Želim da taj niz bude binarni i kada se unese broj različit od 1 ili 0 da javi grešku..

Uradio sam na sljedeći način ali baš ne radi

...

Ne bi li za znakove kada ih treba prepoznavati trebao stavljati 0 i 1 pod navodnike jer sam znak i njegova ASCII vrijednost nisu isto?

 

Isprobaj ovako:

 

string niz;

int i;

cout<<"Unesi binarni niz "<<endl;

cin>>niz;

for(i=0; i<niz.length(); i++){

if(niz[i]!='0' || niz[i]!='1'){

cout<<"Niz nije binaran!"<<endl;

break;

}

}

 

Da, ovo sa podnavodnicima je u redu i trebaju biti oni.. Ali sam sada skužio da nije dobro postavljeno nešto drugo.. ako unesem niz 1010 javljat će opet grešku jer prvi string nije 0, a drugi nije 1, itd..

Ovako radi:

 

string niz;

int i;

cout<<"Unesi binarni niz "<<endl;

cin>>niz;

for(i=0; i<niz.length(); i++){

if(niz[i]=='0'||niz[i]=='1'){

cout<<"U redu!"<<endl;

}

else

cout<<"Greška!"<<endl;

}

 

Poruka je uređivana zadnji put pon 2.4.2012 23:39 (Legolas).
16 godina
online
Programiranje u C++-u - pitanja i odgovori

Jesi sigurno dobro definirao string kao niz od charova?

Prodajem RAGE za PS3: http://www.bug.hr/forum/topic/igre-accounti-igrama/prodaja-igra-rage-playstation-3/129629.aspx?page=0&amp;amp;jumpto=2529211&amp;amp;sort=asc&amp;amp;view=flat
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Legolas kaže...
if(niz[i]!=0 || niz[i]!=1){

if(niz[i]!='0' && niz[i]!='1'){

 

Radi se o pogresno postavljenom uvjetu. Tvoja verzija kaze: "Ako niz[i] nije 0 ili ako niz[i] nije 1", znaci ili - ili. Ako je jedan od uvjeta istinit izvrsi if blok (a jedan od uvjeta ce uvijek biti istinit jer niz[i] ne moze imati istovremeno dvije vrijednosti i 0 i 1)

 

Moja verzija kaze: "Ako niz[i] nije 0 i ako niz[i] nije 1". Tj oba uvjeta moraju biti zadovoljena, ako niz[i] nije niti 0 niti 1 izvrsit ce se if blok.

 

Tablica istinitosti OR
1 0 1 0
1 1 0 0
-------
1 1 1 0


Tablica istinitosti AND
1 0 1 0
1 1 0 0
-------
1 0 0 0

My computer once beat me at chess, but we got even after a round of boxing.
Poruka je uređivana zadnji put uto 3.4.2012 0:10 (rustweaver).
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pronašao sam na netu sljedeću lower incomplete gamma funkciju(koja dobro radi):

double incgamma (double x, double a){
double sum=0;
double term=1.0/a;
int n=1;
while (term != 0){
sum = sum + term;
term = term*(x/(a+n));
n++;
}
return pow(x,a)*exp(-1*x)*sum;
}

Meni bi sada trebala upper incomplete gamma funkcija, a glavna razlika između ove dvije funkcije je samo u određenom integralu koji kod lower funkcije ide od nule do x, a kod upper funkcije od x do beskonačnosti, a vidi se na formuli na sljedećoj stranici. Kako bih mogao izmjeniti ovu funkciju ili ako netko zna gdje bih na netu mogao pronaći ovu gotovu funkciju..pretražio sam pola neta ali nisam uspio pronaći :P

Poruka je uređivana zadnji put sri 4.4.2012 17:40 (Legolas).
 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Vidio sam na youtube -u dosta komentara da je C# bolji od C++ -a sto se tice

izrade igre. Je li to točno ?

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

Igru ne možeš napisati niti u jednom niti u drugom bez frameworka, ma kakva su to pitanja, ti ideš predaleko i prebrzo!

C# i XNA su odlična kombinacija, to je to što ti ja mogu reći. Ovjde nemaš puno game devova, ja znam jedino woodgamesfx, radio je C# i XNA.

BTW, dobar ti je izvor...

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

Igru ne možeš napisati niti u jednom niti u drugom bez frameworka, ma kakva su to pitanja, ti ideš predaleko i prebrzo!

C# i XNA su odlična kombinacija, to je to što ti ja mogu reći. Ovjde nemaš puno game devova, ja znam jedino woodgamesfx, radio je C# i XNA.

BTW, dobar ti je izvor...

Ne idem predaleko, ne planiram raditi igru (nemam dovoljno znanja za to) sve dok ne naucim ono sto trebam (a sada su to osnove) :)

 

BTW Hvala na korisnim informacijama.

Buzzzzzzzzzzzzzzzzzzzzzzzzzz
E-mail:
Lozinka:
 
vrh stranice