aj ih posalji na pm
od jednostavnih do srednje kompliciranih
aj ih posalji na pm
od jednostavnih do srednje kompliciranih
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)?
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:
Standard draft: n1124: §6.7.8
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++.
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;
}
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.
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.
Trebalo bi općenito izbjegavati tolika statička polja na stacku.
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.
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).
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ć....
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;
}
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;
}
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;
}
Nisam čitao zadatak, ja sam mislio da mu tablica množenja treba. Ispričavam se.
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;
}
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
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
Rustweaver, ti si napisao kod gdje se ispisuju članovi u donjem desnom kutu, a meni treba u gornjem desnom kutu :)
Floki, fala :)
a meni treba u gornjem desnom kutu :)
Vidi stvarno, nisam ni skužio... :D
Zna li netko, pomoću koje funkcije pronaći koliko puta se jedan string nalazi u drugom?
Zna li netko, pomoću koje funkcije pronaći koliko puta se jedan string nalazi u drugom?
Mislim da tu funkciju moraš sam napisati.
Imaš li ti ideju na koji način to učiniti?
Preko funkcije strstr() pronalaziš string u stringu.
Hvala,tako nešto sam tražio. :)
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;
}
nedefinirano je jel se preklapajuci substingovi racunaju
npr string aba u ababa. 1x ili 2x?
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;
}
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!
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.