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

poruka: 7.285
|
čitano: 1.721.753
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main ()
{
string a, b;
int duzina;
getline(cin, a);
duzina=a.length();
b="";
for(int i=duzina-1;i>=0;i--)
b=b+a[i];
if (a==b)
cout<<"Unesena rijec je palindrom"<<endl;
else
cout<<"Unesena rijec nije palindrom"<<endl;
system("Pause");
return 0;
}

 

Zasto kad unesem palindrom sa razmakom ga ne prepozna a kad taj isti unesem bez razmaka onda ga prepozna i ispise kako treba?

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Intelovac123 kaže...

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main ()
{
string a, b;
int duzina;
getline(cin, a);
duzina=a.length();
b="";  //  <--- zar ne bi ovdje trebao biti razmak? -  b=" ";   ili:   b=' '; 
for(int i=duzina-1;i>=0;i--)
b=b+a[i];
if (a==b)
cout<<"Unesena rijec je palindrom"<<endl;
else
cout<<"Unesena rijec nije palindrom"<<endl;
system("Pause");
return 0;
}

 

Zasto kad unesem palindrom sa razmakom ga ne prepozna a kad taj isti unesem bez razmaka onda ga prepozna i ispise kako treba?

vidi komentar u kodu

 

EDIT: pa meni radi i kako si ti ostavio - probaj upisati "asdf fdsa"

~21 god, ETFOS, Slavonac, linux and open source fan, net addict, želim znati više, interesi: web dev, svemir, glazba...
Poruka je uređivana zadnji put ned 13.5.2012 21:27 (kakapo).
17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

#include <algorithm>

#include <string>

#include <iostream>

using namespace std;

int main()

{

  string a;

  getline(cin,a);

  string rev=a;

  reverse(rev.begin(),rev.end());

  if ( a == rev)

     cout << "palindrom";

  else

     cout << "nije palindrom";

 

 

}

Poruka je uređivana zadnji put ned 13.5.2012 22:20 (Zoidberg).
 
1 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Eh, ovako, zanima me bi li mi netko mogao napisati ukratko odgovore na ova pitanja ili dati link na kojem mogu sam procitati:

1. Objasni dohvacanje clanova pomocu naziva objekta!

2. Objasni dohvacanje clanova objekta pomocu reference!

3. Objasni dohvacanje clanova objekta pomocu pokazivaca!

4. Objasni dohvacanje funkcijskih clanova pomocu naziva objekta ili reference!

5. Objasni dohvacanje funkcijskih clanova pomocu pokazivaca

6. Objasni pojam umetnuti funkcijski clan!

 

Hvala puno!

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Kucao sam neki program i evo izdvajam dio coda o cemu se radi...

 

pitanje je sljedece kako mogu iz "baza_korsnika.txt" procitati sve a ne samo do prvog /n  .. Kod upisa mi je potrebno /n  zbog preglednosti ...

 

 case 1 :

  f = fopen("baza_korisnika.txt","a+");

  printf("Unesite ime: ");

  scanf("%s",&korisnik1);

  fprintf(f,"# %s ",korisnik1);

  printf("Unesite sifru: ");

  scanf("%s",&sifra1);

  fprintf(f,"%s \n",sifra1);

  printf("Kreiram korisnika ");

  for (int n=0; n<6; n++)

  {

   printf (".");

   wait (0.5);

  }

  printf("\nKorisnik kreiran !!!  \n \n");

  break;

 

case 2 :

  char buf[10000];

  f = fopen("baza_korisnika.txt","r");

  fgets(buf,sizeof(buf),f);

  fclose(f);

  printf("%s\n",buf);

   break;

 

 

Jos jedno pitanje :

 

Kako uopste radi ova funkcija 

 

void wait ( int seconds )

{

  clock_t endwait;

  endwait = clock () + seconds * CLOCKS_PER_SEC ;

  while (clock() < endwait) {}

Prva druga peta ;) ;)
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
aneLL kaže...
case 2 :

  char buf[10000];

  f = fopen("baza_korisnika.txt","r");

  fgets(buf,sizeof(buf),f);

  fclose(f);

  printf("%s\n",buf);

   break;

 

int pom = 0;
while(f!=NULL) {
    fgets(buf+pom, sizeof(buf), f);
    pom += strlen(buf);
}

 

Ako neće raditi, probaj "NULL" zamijeniti s "EOF".

Poruka je uređivana zadnji put pon 14.5.2012 14:17 (i_rambo_plache).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
aneLL kaže...

pitanje je sljedece kako mogu iz "baza_korsnika.txt" procitati sve a ne samo do prvog /n  .. Kod upisa mi je potrebno /n  zbog preglednosti ...


case 2 :

  char buf[10000];

  f = fopen("baza_korisnika.txt","r");

  fgets(buf,sizeof(buf),f);

  fclose(f);

  printf("%s\n",buf);

   break;

U petlji pozivas fgets dok ne naletis na EOF. fgets ti cita najvise jednu liniju, ti vjerojatno imas vise linija pa ti jedan poziv na fgets nece biti dovoljan. Vrijeme je da razmislis o tome i kako ces u memoriju spremati sve te linije koje ce ti fgets vratiti. Ja to volim staviti u polje stringova tako da mogu pojedinim linijama pristupati jednostavno preko indeksa, veoma jednostavno i adekvatno za jednostavnije probleme.

 

aneLL kaže...
Kako uopste radi ova funkcija 

 

void wait ( int seconds )

{

  clock_t endwait;

  endwait = clock () + seconds * CLOCKS_PER_SEC ;

  while (clock() < endwait) {}

Prvo vidi sto radi funkcija clock. Dakle ona vraca broj tickova (otkucaja) koji su protekli od pokretanja programa. Konstanta CLOCKS_PER_SEC ti govori koliko tih otkucaja ima u jednoj sekundi.

 

E sada da se vratimo na ovu tvoju wait funkciju. Funkcija radi tako sto kao argument prima vrijeme u sekundama za koje ce program biti pauziran. Prvo se izracuna vrijednost endwait varijable koja predstavlja vrijeme u otkucajima do kojeg ce se ponavljati doljnja petlja. To se racuna tako da se uzme trenutan broj otkucaja koji je protekao i doda mu se broj sekundi pretvorenih u otkucaje (seconds * CLOCKS_PER_SEC). Nakon toga se petlja ponavlja dok je broj otkucaja koje clock vraca manji od izracunatih otkucaja koji sadrzi varijabla endwait.

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

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main ()
{
string a, b;
int duzina;
getline(cin, a);
duzina=a.length();
b="";
for(int i=duzina-1;i>=0;i--)
b=b+a[i];
if (a==b)
cout<<"Unesena rijec je palindrom"<<endl;
else
cout<<"Unesena rijec nije palindrom"<<endl;
system("Pause");
return 0;
}

 

Zasto kad unesem palindrom sa razmakom ga ne prepozna a kad taj isti unesem bez razmaka onda ga prepozna i ispise kako treba?

Zato što radiš ovo:

1. ana - ana

2. ana voli milovana - anavolim ilov ana

 

U drugom slučaju jest palindrom, ali ti ne dobijaš iste nizove pošto na istim pozicijama nisu isti znakovi.

Da bi kod rado ispravno, potrebno je stvoriti novi niz iz originalnog tako da se eliminiraju razmaci, interpunkcija i svede na mala slova, a zatim taj novi niz usporediti, može i sam sa sobom u petlji.

Novi niz možeš usporediti sam sa sobom u jednoj petlji, tako da provjeravaš suprotne pozicije sa početka i kraja niza koje moraju biti iste.

 

 

for(int i =0; i<niz.length(); i++)
  {
     if(isalpha(niz[i]))
     {
        noviNiz += tolower(niz[i]);
     }
  }
  for(int i=0; i<noviNiz.length()/2; i++)
  {
     if(noviNiz[i] != noviNiz[noviNiz.length()-1-i])
     {
        isPalindrom = false;
     }
  }

 

 

 

 

Poruka je uređivana zadnji put pon 14.5.2012 22:47 (Floki).
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

 

 

.

 

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
Poruka je uređivana zadnji put uto 15.5.2012 14:54 (Intelovac123).
 
0 0 hvala 0
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Ne kuzim koja je svrha stavljanja zadataka tu da ti ih riješimo?!
AC Milan - IL CLUB PIU' TITOLATO AL MONDO
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Možete li pomoći oko ispravljanja pogreške u kodu:

 

#include <iostream>

#include <process.h>

#include <cmath>

 

using namespace std;

 

void prostbr(long double);    // Protutip funkcije...

int cr = 0; //brojac

 

int main()

{

long double x=0, y=0, z=0;

 

cout<<"\n Ovaj program ispisat ce sve proste brojeve do"

   <<"\n unesenih brojeva...\n";

cout<<"\n Unesite brojeve: ";

cin>> x, y, z;

 

 

cout<<"\n Evo svih prostih brojeva do "<<x<<".\n";

 

_beginthread(prostbr, 0, &x);       //poziv funkcije u niti...

 

cout<<endl<<"\nPostoji "<<cr

   <<" prostih brojeva manjih ili jednakih "<<x<<".\n\n";

 

 

cout<<"\n Evo svih prostih brojeva do "<<y<<".\n";

 

_beginthread(prostbr, 0, &y);       //poziv funkcije u niti...

 

cout<<endl<<"\nPostoji "<<cr

   <<" prostih brojeva manjih ili jednakih "<<y<<".\n\n";

 

 

cout<<"\n Evo svih prostih brojeva do "<<z<<".\n";

 

_beginthread(prostbr, 0, &z);       //poziv funkcije u niti...

 

cout<<endl<<"\nPostoji "<<cr

   <<" prostih brojeva manjih ili jednakih "<<z<<".\n\n";

 

return 0;

}

 

 

// Funkcija za prepoznavanje prostih...

void prostbr(long double x)

{

   bool prost = true;          

   int broj2;

   broj2 =(int) floor (sqrt (x));

 

   for (int i = 1; i <= x; i++){     

     for ( int j = 2; j <= broj2; j++){

       if ( i!=j && i % j == 0 ){    

         prost = false;

         break;

       }

     }

     if (prost){

       cout <<"  "<<i<<" ";

       cr += 1;

     }

     prost = true;

   }

}

 

 

Program bi mi trebao omogućiti da unesem 3 broja te za svaki uneseni broj u vlastitoj niti ispisati proste brojeve i prebrojati ih te na kraju ispisati koliko ih ima (prostih do svakog unesenog broja).

Ne ide mi baš višenitno programiranje, pokušavam ga naučiti, pa ako netko zna/hoće i ima vremena molio bih da pomogne. Hvala unaprijed.

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
15 godina
offline
Programiranje u C++-u - pitanja i odgovori

Pozz!

Trebam pomoc oko zadatka.

 

Upisi 10 znakova i ispisi dali je upisano vise slova ili drugih znakova.

 

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>
main()
{
FILE *fp;
char a[10];
int i,n=0;
fp=fopen("slova.txt","w");
if(fp==NULL){
printf("\n Greçka pri otvaranju datoteke!");
exit(1);}
for(i=0;i<10;i++){
printf("\n Upisi znak:");
scanf(" %c",a[i]);
if(a[i]>='A' && a[i]<='z'){
n=n+1;}
fprintf(fp," %c \n",a[i]);}
fclose(fp);
if(n==5){
printf("\n Upisan je jednak broj znakova i slova.");}
if(n<5){
printf("\n Upisano je vise znakova.");}
if(n>5){
printf("\n Upisano je vise slova.");}
getch();
}

Ispisuje mi stalno da je upisano vise znakova.

Autoclimb kills more people than AIDS
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pozz ljudi

Mozete li mi dati neki link od neke dobre knjige ili neceg slicnog sto ce mi pomoci da malo shvatim C++ programiranje i ako moze da bude na hrvatskom jeziku? 

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

Pozz ljudi

Mozete li mi dati neki link od neke dobre knjige ili neceg slicnog sto ce mi pomoci da malo shvatim C++ programiranje i ako moze da bude na hrvatskom jeziku? 

O blagi boze...

Ova tema je puna takvih pitanja, da ne govorim koliko ima tema sa takvim pitanjima.

Ako hoces knjigu, kupi Demistificirani C++ ili C++ Analiza i Primjena, ako neces knjigu, Google is your friend.
Nakon malo Googlanja:
http://www.computer-books.us/cpp.php

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

Pozz ljudi

Mozete li mi dati neki link od neke dobre knjige ili neceg slicnog sto ce mi pomoci da malo shvatim C++ programiranje i ako moze da bude na hrvatskom jeziku? 

Ne bi covjek ni rekel nikaj da nema ove sticky teme...

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
191x7 kaže...
Ne ide mi baš višenitno programiranje, pokušavam ga naučiti, pa ako netko zna/hoće i ima vremena molio bih da pomogne. Hvala unaprijed.

Vidi se, program si postavio kao da ce se izvrsavati serijski a ne paralelno. Nije ti bas jasan koncept istovremenog izvrsavanja niti zar ne? Isto tako, koristis jednu varijablu (takozvani brojac) kojoj sve tri niti pristupaju -> losa ideja. Razmisli malo, sve se niti izvode istovremeno i istovremeno svaka mijenja taj isti brojac, sto ces na kraju dobiti? :D

 

Evo nesto sam nabacao, tracer ce se krizati lijevom rukom kada vidi neka moja "rjesenja" (posebno ono pauziranje glavne petlje putem Sleepa) i neke castove koje se moglo izbjeci, ali sta ja tu mogu, ne da mi se sada traziti pravilan nacin za to. Budem to radio kada *meni* bude trebalo :D

 

#include <iostream>
#include <vector>
#include <process.h>
#include <cmath>
#include <windows.h>

using namespace std;

void prostbr(void*);
int racunanje_u_tjeku=3;

typedef struct
{
    int interval;
    int prosti;
    vector<int> prosti_brojevi;
} THREAD_DATA, *PTHREAD_DATA;

int main()
{
    long double x=0, y=0, z=0;

    THREAD_DATA t1={0, 0},
                t2={0, 0},
                t3={0, 0};

    cout<<"\n Ovaj program ispisat ce sve proste brojeve do"
        <<"\n unesenih brojeva...\n";

    cout<<"\n Unesite brojeve: ";
    cin>> t1.interval;
    cin>> t2.interval;
    cin>> t3.interval;

    _beginthread(prostbr, 0, (void*)&t1);
    _beginthread(prostbr, 0, (void*)&t2);
    _beginthread(prostbr, 0, (void*)&t3);

    while (racunanje_u_tjeku)
        Sleep(50);

    /////////////////////////
    cout<<"\n Evo svih prostih brojeva do "<<t1.interval<<".\n";

    for (int n=0; n<t1.prosti_brojevi.size(); n++)
        cout<<t1.prosti_brojevi[n] << " ";

    cout<<endl<<"\nPostoji "<<t1.prosti
        <<" prostih brojeva manjih ili jednakih "<<t1.interval<<".\n\n";

    /////////////////////////
    cout<<"\n Evo svih prostih brojeva do "<<t2.interval<<".\n";

    for (int n=0; n<t2.prosti_brojevi.size(); n++)
        cout<<t2.prosti_brojevi[n] << " ";

    cout<<endl<<"\nPostoji "<<t2.prosti
        <<" prostih brojeva manjih ili jednakih "<<t2.interval<<".\n\n";

    /////////////////////////
    cout<<"\n Evo svih prostih brojeva do "<<t3.interval<<".\n";

    for (int n=0; n<t3.prosti_brojevi.size(); n++)
        cout<<t3.prosti_brojevi[n] << " ";

    cout<<endl<<"\nPostoji "<<t3.prosti
        <<" prostih brojeva manjih ili jednakih "<<t3.interval<<".\n\n";

    return 0;
}

// Funkcija za prepoznavanje prostih...
void prostbr(void *arg)
{
    long double x=((PTHREAD_DATA)arg)->interval;
    bool prost=true;
    int broj2;
    broj2 =(int) floor (sqrt (x));

    for (int i=2; i<=x; i++)
    {
        for (int j=2; j<=broj2; j++)
        {
            if (i!=j && i%j==0)
            {
                prost=false;
                break;
            }
        }
        if (prost)
        {
            ((PTHREAD_DATA)arg)->prosti_brojevi.push_back(i);
            ((PTHREAD_DATA)arg)->prosti+=1;
        }
        prost=true;
    }

    racunanje_u_tjeku-=1;
}

 

I sredio sam ti algoritam za proste brojeve. Naime, broj jedan nije prost broj.

 

Evo u cemu grijesis. Stvoris jednu nit pa ispisujes njen output, pa drugu nit pa output... Nisu ti to klasicni pozivi funkcija, gdje se izvrsavanje main funkcije zaustavi dok neka funkcija unutar maina ne obavi svoj posao. Kada stvoris nit, zamisli to kao dodatni program koji se pokrenuo u pozadini, i sad tvoj glavni program koji je stvorio nit jednostavno nastavlja dalje, ne ceka nikoga osim ako ga ne napravis tako da ceka (kuzis, nit se izvrsava paralelno s tvojim programom).

 

Dakle stvori sve niti, cekaj da dovrse svoj posao (ili u meduvremenu radi nesto drugo, ako imas sta), a onda ispisi rezultate...

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
Poruka je uređivana zadnji put sri 16.5.2012 19:29 (rustweaver).
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Problemi...

- Ne snalazim se s pokazivačima (nikako ih ne mogu ukapirati, ni u Pascalu nisam u srednjoj ukapirao kao ni u C/C++ na faksu). Grozan problem za programiranje, svugdje se koristi na milijun načina a ja jednostavno ne mogu ukapirati (valjda nisam još pronašao nekoga tko to zna dobro razumljivo objasniti). {#} Pokušao sam s raznom literaturom, dođe mi ko da je ukleto...

- Kod _beginthread(), što su argumenti u zagradi? Prvo kužim da je funkcija/procedura koju pozivamo; no što su točno drugo (vidim svugdje 0) i treće? Mislio sam da je treći argument varijabla/vrijednost koju predjemo funkciji, no sad kužim da očito to nije to.

- Može li se kako navedeni program riješiti bez uporabe struktura, mislim čisto sa emalo skrati ili nešto?

- Kužim što je "while (racunanje_u_tijeku) sleep(50)", no možete li mi objasniti koju onda nit to uspava ili djeluje na glavni program?

- Kako prilagoditi kod da mi zauzima 100% procesora? Ovaj mi kad postavim 6-7 znamenkaste brojeve uposli sve tri jezgre no samo na 50-60%.

U biti trebao bih višenitno zauzeće više jezgri, mislio sam da bi potraga za prostim brojevima to dobro mogla odraditi...

 

Edit: Kužim ja višenitnost, razumijem to (teoriju). Problem mi predstavlja primjena u praksi, samo programiranje toga.

Moj onaj kod mi je djelovao previše strukturno i mislio sam da je do toga problem. No nisam to znao ispraviti, zbog toga sam i potražio pomoć.

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
Poruka je uređivana zadnji put sri 16.5.2012 19:34 (191x7).
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
191x7 kaže...

Problemi...

- Ne snalazim se s pokazivačima (nikako ih ne mogu ukapirati, ni u Pascalu nisam u srednjoj ukapirao kao ni u C/C++ na faksu). Grozan problem za programiranje, svugdje se koristi na milijun načina a ja jednostavno ne mogu ukapirati (valjda nisam još pronašao nekoga tko to zna dobro razumljivo objasniti). {#} Pokušao sam s raznom literaturom, dođe mi ko da je ukleto...

Kako?, pa oni su samo varijable koje sadrže kao vrijednost memorijske lokacije(adrese) varijable na koju pokazuju.
float pi=3.14;float* pok;pok=&pi;     //vrjednost varijable pok je adresa(memorijska lokacija) varijable pi
Evo jedna na brzinu sklepana slika, koja pokazuje šta smo sa ovim kodom gore uradili:

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

Problemi...

- Ne snalazim se s pokazivačima (nikako ih ne mogu ukapirati, ni u Pascalu nisam u srednjoj ukapirao kao ni u C/C++ na faksu). Grozan problem za programiranje, svugdje se koristi na milijun načina a ja jednostavno ne mogu ukapirati

To jest gadan problem kada koristis C i C++ kojima su pokazivaci nesto sto se koristi na svakom koraku. Mene je kod pokazivaca izvuklo to sto mi koncept memorijskih adresa vec otprije nije bio stran (ali ja sam samouk i nisam bas isao redom kojim se inace uci programiranje, zato imam i neke rupe u znanju recimo).

 

191x7 kaže...
- Kod _beginthread(), što su argumenti u zagradi? Prvo kužim da je funkcija/procedura koju pozivamo; no što su točno drugo (vidim svugdje 0) i treće? Mislio sam da je treći argument varijabla/vrijednost koju predjemo funkciji, no sad kužim da očito to nije to.

Barem je lagano u google ukucati _beginthread i dobiti ovo:

http://msdn.microsoft.com/en-us/library/kdzttdcb%28v=vs.80%29.aspx

 

prvi argument je pocetna adresa odakle ce se nit poceti izvrsavati (dakle funkcija u ovom slucaju)

 

drugi argument je velicina stacka (stoga) koji ce se dodjeliti toj niti, ako se ne varam koristenjem nule za taj argument znaci da ce se koristiti defaultna vrijednost

 

treci argument jest argument koji ce se proslijediti funkciji, to si dobro skuzio, ali u obliku void pokazivaca. Zato sam ja to recimo sve spakovao u jednu strukturu i onda jednostavno proslijedio pokazivac na strukturu kao argument.

 

191x7 kaže...
- Može li se kako navedeni program riješiti bez uporabe struktura, mislim čisto sa emalo skrati ili nešto?

Zasto bi to htio? Vjerojatno se moze, ali ovo mi se ucinilo elegantno. Strukture ti i sluze za strukturiranje podataka, da ti nije sve porazbacano i kaoticno. Ako ti strukture predstavljaju problem onda te ceka jos puno ucenja.

 

191x7 kaže...
- Kužim što je "while (racunanje_u_tijeku) sleep(50)", no možete li mi objasniti koju onda nit to uspava ili djeluje na glavni program?

Glavnu nit u kojoj se u ovom slucaju izvodi main funkcija. Svaki program mora imati barem jednu nit (u kojoj se on sâm izvodi, ne?), a eventualno moze stvarati i druge niti.

 

Dakle main se pauzira dok ostale niti ne obave svoj posao, jer bi inace samo nastavio sa izvrsavanjem.

 

191x7 kaže...
- Kako prilagoditi kod da mi zauzima 100% procesora? Ovaj mi kad postavim 6-7 znamenkaste brojeve uposli sve tri jezgre no samo na 50-60%.

Povecati mu prioritet mozda? Mozda izvodenjem nekakve mrtve petlje? Mozda udvostruciti broj niti, tako da svaka jezgra dobije dvije niti? Nemam pojma, nisam nikada imao zelju za necim takvim.

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
Poruka je uređivana zadnji put sri 16.5.2012 19:59 (rustweaver).
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...
191x7 kaže...

Problemi...

- Ne snalazim se s pokazivačima ....

Kako?, pa oni su samo varijable koje sadrže kao vrijednost memorijske lokacije(adrese) varijable na koju pokazuju.
float pi=3.14;float* pok;pok=&pi;     //vrjednost varijable pok je adresa(memorijska lokacija) varijable pi
Evo jedna na brzinu sklepana slika, koja pokazuje šta smo sa ovim kodom gore uradili:

Pa to znam, takvu teoriju znam. Kužim što je pokazivač (sprema memorijsku lokaciju gdje su podatci pohranjeni), ono što ne kužim je primjena. Konkretnije gdje sve idu * i & i zašto. Negdje piše pokazivac* varijabla negdje pokazivac *varijabla negdje sam znak * npr cesto u zagradama itd. U tome se gubim.

 

 

@Rustweaver:

Ma ne predstavljaju mi strukture, klase i objekti problem, to sam na faksu dost dobro kužio (objektno orjentirano programiranje), malo sam zahrđao jer nisam to koristio dobre 4 godine, ne predstavlja mi ni najmanji problem. 

 

Kod ovoga while(racunanje_u_tijeku) ne bi li onda trebao u zagradi neki uvijet tipa while(racunanje_u_tijeku!=0) a ne bez uvijeta? :zbunj:

 

Dakle kada hoću proslijediti vrijednost funkciji koja se vrti u novoj niti ne mogu proslijediti varijablu već moram pokazivač na varijablu? Zašto onda void, zar ne bi logično bilo da mora biti tip varijable (a ne bez tipa)?

 

Zauzeće procesora mi je bitno jer u biti trebam program koji bi zauzeo jezgre, recimo jedna nit koja se izvršava da koristi jezgru, da se ne umiješa nešto treće.

Kada bih ostvario zauzeće da su jezgre 100% onda bih prilagođavao program da se može određivati redoslijed niti po jezgrama (koja gdje i kada)...

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
Poruka je uređivana zadnji put sri 16.5.2012 20:11 (191x7).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
191x7 kaže...

Pa to znam, takvu teoriju znam. Kužim što je pokazivač (sprema memorijsku lokaciju gdje su podatci pohranjeni), ono što ne kužim je primjena. Konkretnije gdje sve idu * i & i zašto. Negdje piše pokazivac* varijabla negdje pokazivac *varijabla negdje sam znak * npr cesto u zagradama itd. U tome se gubim.

int* i;
int * i;
int *i;

Sve je ista stvar, prestavlja deklariranje pokazivaca na integer. Zvijezdica se treba nalaziti izmedu imena tipa varijable i imena varijable, gdje ces ju tocno staviti je stvar ukusa i tvog vlastitog stila.

 

int a=20;
i=&a;

Sada se gornjem pokazivacu dodjeljuje adresa varijable "a". Znak '&' ispred imena varijable znaci da trazis memorijsku adresu te varijable, a ne njenu vrijednost (memorijska adresa u ovom slucaju se jos naziva i referenca).

 

//ispisujemo vrijednost varijable 'i', ta vrijednost je u biti adresa varijable 'a'
printf("%d\n", i);

//ispisujemo sadrzaj memorije na koji pokazuje sadrzaj varijable 'i'
printf("%d\n", *i);

//kako je i varijabla 'i' samo varijabla i ona ima svoju adresu u memoriji
printf("%d\n", &i);

//ispisujemo adresu varijable 'a'
printf("%d\n", &a);

//ispisujemo vrijednost varijable 'a'
printf("%d\n", a);

I na kraju malo ispisa da vidis razlike izmedu "i", "*i", "&i"

 

http://www.ontko.com/pub/rayo/cs35/pointers.html

http://www.cprogramming.com/tutorial/c/lesson6.html

 

Citaj citaj i citaj, dok ne shvatis. Eksperimentiraj, pisi programcice u kojima se igras sa referencama i pokazivacima dok ti te stvari ne postanu prirodne.

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
191x7 kaže...
Kod ovoga while(racunanje_u_tijeku) ne bi li onda trebao u zagradi neki uvijet tipa while(racunanje_u_tijeku!=0) a ne bez uvijeta? :zbunj:

 

Tu sam ja iskoristio jednu precicu koju cesto koristim, vjerojatno nisam trebao jer sam te zbunio. Naime u C-u je nula false a svaki broj veci lili manji od nule true. Uvjeti funkcioniraju tako da se vrijednost izraza unutar zagrada evaluira na true ili false. Ako se uvjet evaluirao na true onda ce biti zadovoljen, ako se evaluirao na false onda nece biti zadovoljen.

 

Dakle racunanje_u_tijeku==1 ce se evaluirati na true samo ako varijabla racunanje_u_tijeku doista ima vrijednost 1.

 

Ali sto se dogada ako ne evaluiras izraz nego neki broj ili varijablu? Tada ce se vrijednost broja ili varijable unutar zagrada koristi kao true/false (znaci nula false, a svaki broj veci od nule true)

 

Ovo sto si ti napisao je takoder ispravno i vjerojatno razumljivije.

 

191x7 kaže...
Dakle kada hoću proslijediti vrijednost funkciji koja se vrti u novoj niti ne mogu proslijediti varijablu već moram pokazivač na varijablu? Zašto onda void, zar ne bi logično bilo da mora biti tip varijable (a ne bez tipa)?

void pointer je ajmo reci univerzalni pointer, znaci moze biti bilo sto i on sam po sebi nije nista odredeno. Radi se casting u void zato sto je funkcija _beginthread deklarirana tako da treci argument bude void pointer.

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

Hvala još jednom. Budem se onda poigrao s nekim jednostavnijim programčićem s pokazivačima i _beginthread(funkcija, 0, void*) da to pokušam baš samostalno ukapirati.

 

Primjetio sam da onaj program što koristi 3 niti za ispisivanje znakova a, b i c (od prije nekoliko stranica) više opterećuje procesor nego potraga za prostim brojevima do nekih brojeva.

Zanimljivo. Ništa, odjutra opet radit i pokušat novog znanja u glavu usadit. xD

 

PS: Moram smislit i neku procesorski zahtjevnu radnju i ponoviti ctime kako bih mogao tajmirati kolik oda se vremenski izvršava (poradi lakšeg kontroliranja procesorskog vremena).

 

Ty.

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
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
191x7 kaže...
...

 

PS: Moram smislit i neku procesorski zahtjevnu radnju i ponoviti ctime kako bih mogao tajmirati kolik oda se vremenski izvršava (poradi lakšeg kontroliranja procesorskog vremena).

 

Ty.

Ackermannova funkcija je ok. Samo nemoj joj dati preveliki input ako hoces da zavrsi za vrijeme tvoj zivotnog vijeka ;)

 

EDIT: Ili racunanje inverza velikih matrica, i to je ok.

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 sri 16.5.2012 21:21 (1domagoj1).
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Planiram sad poceti uciti baze podataka uz C++ pa da  vas pitam da li je bolji Access ili SQL i koju bi knjigu preporucili za SQL?

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
 
0 0 hvala 0
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Radje uči C# i baze podataka.Za početak ti je bolji Access dok ne skužiš osnove.
AC Milan - IL CLUB PIU' TITOLATO AL MONDO
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Intelovac123 kaže...

Planiram sad poceti uciti baze podataka uz C++ pa da  vas pitam da li je bolji Access ili SQL i koju bi knjigu preporucili za SQL?

mislim da je manjeviše svejedno, glavne razlike bi se mogle svesti na način kako se izrađuju baze i tablice, forme itd (grafički ili komandnolinijski) - i druga stvar je za što ćeš ih upotrebljavati - ako će biti deskop aplikacija Access, a ako server - SQL. 

 

Najbitnije je da ti shvatiš teretski sve o bazama  -  i one nazive - relacije, entitet, atributi, ključevi, veze između tablica, normalne forme itd., kasnije je jezik/tehnologija nebitna 

 

Na koncu nauči oboje - zašto ne?

~21 god, ETFOS, Slavonac, linux and open source fan, net addict, želim znati više, interesi: web dev, svemir, glazba...
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Intelovac123 kaže...

Planiram sad poceti uciti baze podataka uz C++ pa da  vas pitam da li je bolji Access ili SQL i koju bi knjigu preporucili za SQL?

Odvoji programski jezik i baze podataka!, istina da se C# lakše kači na baze, ali ni C++ nije ništa lošiji.
Za početak, radi Access, da shvatiš relacioni model, primarne i spojne ključeve... Onda kreni na MSSQL ili MySQL; Tracer radi C++ sa VLC frameworkom i MSSQL serverom, koliko znam zadovoljan je. Da bi se vezao iz C++ na server moraš koristiti neki framework, moraš i kod C#-a, ali kod njega nije moguće odvojiti ga od .NET-a. Istina je da je Microsoft u zadnje vrjeme zapustio C++, ali najavljene su značajne promjene za C++.NET u .NET-u 5. Za sada ti je, možda, bolje raditi VLC, no tvoj izbor, ja pomalo radim sa Visual C++-om i nisam ni razočaran ni nešto pretežito zadovoljan, ali C# je tu. No idemo u krajnost.

1. Access
2. MSSQL ili MySQL, pogledaj i SQL Lite, ne treba ti server, samo incloudeaš .dll.

Ni Accessu ne treba server niti instaliran Office na računar sa aplikacijom koja ima .mdb(Accessova baza). Zahvaljujući JET-u, ali to za sada ti nije toliko bitno uči baze, pa tek onda vezanje.

13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Kako koristiti funkciju remove i sta trebam includeat?
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...
Kako koristiti funkciju remove i sta trebam includeat?

http://www.cplusplus.com/reference/clibrary/cstdio/remove/

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
E-mail:
Lozinka:
 
vrh stranice