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

poruka: 7.285
|
čitano: 1.712.405
|
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

aj ih posalji na pm

od jednostavnih do srednje kompliciranih

 

15 godina
online
Programiranje u C++-u - pitanja i odgovori

Sve varijable koje se definiraju u globalnom podrucju imaju pretpostavljenu vrijednost 0. Vrijedi li to po standardu za polja?

 

Vrlo cesto vidim(i koristim) sljedecu sintaksu kada se pri inicijalizaciji definira vrijednost svakog clana automatskog polja:

int nekopolje[123456]={0}Je li ovo odredeno standardom tj. smijem li ovo koristiti ako zelim biti siguran da ce se kod pravilno kompajlati u vecini kompajlera (primarno zadnjih nekoliko verzija g++-a)?

"Let us work without theorizing... 'tis the only way to make life endurable." - Voltaire
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...

Sve varijable koje se definiraju u globalnom podrucju imaju pretpostavljenu vrijednost 0. Vrijedi li to po standardu za polja?

10 If an object that has automatic storage duration is not initialized explicitly, its value is indeterminate. If an object that has static storage duration is not initialized explicitly, then:

  • if it has pointer type, it is initialized to a null pointer;
  • if it has arithmetic type, it is initialized to (positive or unsigned) zero;
  • if it is an aggregate, every member is initialized (recursively) according to these rules;
  • if it is a union, the first named member is initialized (recursively) according to these rules.

 

Standard draft: n1124: §6.7.8

 

captain_soap_McTawish kaže...
Vrlo cesto vidim(i koristim) sljedecu sintaksu kada se pri inicijalizaciji definira vrijednost svakog clana automatskog polja:

int nekopolje[123456]={0}Je li ovo odredeno standardom tj. smijem li ovo koristiti ako zelim biti siguran da ce se kod pravilno kompajlati u vecini kompajlera (primarno zadnjih nekoliko verzija g++-a)?

21 If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate, or fewer characters in a string literal used to initialize an array of known size than there are elements in the array, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration.

 

Standard draft: n1124: §6.7.8

 

To je iz jednog od nacrta datumski bliskih službenom C99 standardu, pa je mnogo toga važeće iako ne treba sve informacije uzeti zdravo za gotovo budući da je to ipak jedna od verzija radnog nacrta za buduću specifikaciju. A kako se C++ nadovezuje na C, jako puno toga iz ovog dokumenta vrijedi i za C++.

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

Meni u MS Visual C++ 2010 Express ovo uvijek šljaka, nisam se zamarao teorijom, jednom negdje pročitao da je u ovim slučajevima suvišno pisati

int polje[12345] = {0};


#include<iostream>
using namespace std;


int polje[12345];

int main()
{
   cout<< polje[12344] << endl;
}

Poruka je uređivana zadnji put sri 1.8.2012 21:27 (Floki).
 
3 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...

jednom negdje pročitao da je u ovim slučajevima suvišno pisati

int polje[12345] = {0};


#include<iostream>
using namespace std;


int polje[12345];

int main()
{
   cout<< polje[12344] << endl;
}

Pa evo, to baš ovdje gore piše ^^

 

Globalne varijable imaju static storage duration, prema tome članovi ovog tvog polja se rekurzivno inicijaliziraju po pravilu za aritmetičke tipove podataka.

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

Doduše, nikad nije nekonzistentnst dobra, ali što se može, drugi pišu pravila.

 

 

 

#include<iostream>
using namespace std;


int polje[12345];

int main()
{
    int polje1[12345];
    cout<< polje[12344] << endl;
    cout<< polje1[12344] << endl;

 

Ovo se neće kompajlirati, a a ono gore hoće.

Zato vjerojatno vidiš vrlo često iinicijalizaciju globalnog polja na 0, ljudi ne vole nekonzistentnost.

Poruka je uređivana zadnji put sri 1.8.2012 21:54 (Floki).
 
2 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Trebalo bi općenito izbjegavati tolika statička polja na stacku.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Moj PC  
3 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...

Trebalo bi općenito izbjegavati tolika statička polja na stacku.

Good point, samo sam uzeo primjer da je krajnji član polja pri ispisu 0, inače ne koristim to, osim ako stane u zadatak po veličini koju su propisali, ovo je 0.047 MB inače.

Poruka je uređivana zadnji put sri 1.8.2012 22:12 (Floki).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...
TracerCPP kaže...

Trebalo bi općenito izbjegavati tolika statička polja na stacku.

Good point, samo sam uzeo primjer da je krajnji član polja pri ispisu 0, inače ne koristim to, osim ako stane u zadatak po veličini koju su propisali, ovo je 0.047 MB inače.

Pri ispisu može biti 0 no i ne mora biti. Kako je riječ o nedefiniranoj vrijednosti na toj memorijskoj lokaciji (na njoj je najčešće neko smeće) rezultat konverzije tog "smeća" je najčešće 0 no stvarna vrijednost je formalno nepoznata (nedefinirana).

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
12 godina
offline
Programiranje u C++-u - pitanja i odgovori

Pozdrav,

imam pitanje u vezi ovog programčića.

#include <iostream>
#include <iomanip>
using namespace std;
int main () {

    for (int redak = 1; redak <= 10; ++redak) {
       for (int stupac = 1; stupac <=10; ++stupac)
       cout <<setw(5)<< redak * stupac;
       cout <<endl;
       cout<<endl;
      
    }
    return 0;
}
taj program ispisuje tablicu množenja do 100. Ako samo promjenimo ovaj kod:

 

for (int stupac = 1; stupac <=redak; ++stupac)

 

ispisuje se samo donji lijevi trokut tablice (donje trokutasta matrica). I sad slijedi zadatak: kod modificirajte tako da se ispišu samo članovi u gornjem desnom trokutu. Uputa: unutar vanjske petlje smjestite dvije petlje po stupcima, s time da prva treba ispisivati odgovarajući broj praznina, a druga tražene brojeve.

 

Znam da bi trebalo bit jednostavno ali fakat ne mogu doći do riješenja. Pa ako može pomoć....

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

Ja uopce ne kuzim to sa tom matricom.

 

#include <iostream>
#include <iomanip>
using namespace std;
int main () {

    for(int i = 1; i <= 10; ++i) {
        for (int j = 1; j <= i; ++j)
            cout << setw(5)<< i*j;
            cout << endl;
            cout << endl;
    }
    return 1;
}

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

 

Tablica množenja je jako trivijalna stvar.
#include <iostream>
#include <cstdlib>
using namespace std;
int main ()
{
    for(int i = 1; i <= 10; i++)
    {
       for(int j = 1; j <=10; j++)
       {
          cout<<i*j<<"\t";
       }
       cout<<endl;
    }

    system("PAUSE");
    return 0;
}

Poruka je uređivana zadnji put čet 2.8.2012 14:02 (royalhero).
 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
To nije tablica mnozenja,pogledaj 2. petlju.
HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
neznam123456 kaže...
Znam da bi trebalo bit jednostavno ali fakat ne mogu doći do riješenja. Pa ako može pomoć....

    for (int redak=1; redak<=10; ++redak)
    {
        for (int stupac=1; stupac<=10-redak; ++stupac)
            cout << "     ";

        for (int stupac=11-redak; stupac<=10; ++stupac)
            cout <<setw(5)<< redak *stupac;

        cout<<endl;
        cout<<endl;
    }

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...
To nije tablica mnozenja,pogledaj 2. petlju.

Nisam čitao zadatak, ja sam mislio da mu tablica množenja treba. Ispričavam se.

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

Možemo i inicijalizirati redak i stupac van petlji, druga unutarnja petlja samo nastavi sa brojačem stupac gdje prva stane.

 

 

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

int main () {
    int stupac=0, redak=0;

    for (redak=1; redak <= 10; ++redak) {
       for (stupac=1; stupac <redak; ++stupac)
         cout<< setw(5) << "";
       for(; stupac<=10; stupac++)
         cout<< setw(5) << redak * stupac;
       cout <<endl;
       cout<<endl;
     
    }
    return 0;
}

Poruka je uređivana zadnji put čet 2.8.2012 14:26 (Floki).
 
1 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...

Nisam čitao zadatak, ja sam mislio da mu tablica množenja treba. Ispričavam se.

Pa nisi puno ni pogriješio, treba mu tablica množenja ispisana na određen način tj samo određeni brojevi :D

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

Možemo i inicijalizirati redak i stupac van petlji, druga unurarnja petlja samo nastavi sa brojačem stupac gdje prva stane.

Ovo je puno pametnija ideja :D

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

Rustweaver, ti si napisao kod gdje se ispisuju članovi u donjem desnom kutu, a meni treba u gornjem desnom kutu :) 

Floki, fala :)

Poruka je uređivana zadnji put čet 2.8.2012 14:17 (neznam123456).
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
neznam123456 kaže...

a meni treba u gornjem desnom kutu :) 

Vidi stvarno, nisam ni skužio... :D

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

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

FORZA INTER!!!
 
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
napoleon12356 kaže...

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

Mislim da tu funkciju moraš sam napisati. 

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

Imaš li ti ideju na koji način to učiniti?

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

Preko funkcije strstr() pronalaziš string u stringu.

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

Hvala,tako nešto sam tražio. :)

FORZA INTER!!!
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
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;
}

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

nedefinirano je jel se preklapajuci substingovi racunaju

npr string aba  u ababa. 1x ili 2x?

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

Pozdrav

 

Trebao bi malu pomoc oko ovog zadatka.Naime u ovom zadatku potrebno je ubaciti jos jedan dio koda koji ce raditi provjeru rezultata u setovima.Sve je objasnjeno u slici dole.Ako neko moze uraditi bio bih zahvalan.

 

#include<iostream>
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;
}

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
       }
    }
}
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);
    cout<<"REZULTAT U GEMOVIMA IZNOSI: "<<igrac1 << " : " << igrac2 << endl;
    cout<<"REZULTAT U SETOVIMA IZNOSI: "<<"  :  "<<endl;
    system ("pause");
    return 0;
}

 

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

Pozdrav,

 

potreban mi je prozor koji sadrzi jedno polje za unos. Trenutno me ne zanima objasnjenje, nego samo kod za kopirati. Radim u Visual C++.

 

Hvala unaprijed!

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

Pozdrav,

 

potreban mi je prozor koji sadrzi jedno polje za unos. Trenutno me ne zanima objasnjenje, nego samo kod za kopirati. Radim u Visual C++.

 

Hvala unaprijed!

U samom C++-u to neće ići. Ako radiš Visual C++ onda možeš koristiti MFC. Jednostavnije bi bilo kroz, recimo, WinApi. Ako ćeš kroz Windows Forms, onda otvori Visual C++ Windows Forms projekt. Na formu dovuci textbox i to je to. Samo ne znam koja ti je korist od toga.

E-mail:
Lozinka:
 
vrh stranice