Ma to je za laičku upotrebu, da si imam organizirano. A šta je s onim dijagramima tijeka?
Programiranje u C++-u - pitanja i odgovori
- poruka: 7.284
- |
- čitano: 1.970.173
- |
- moderatori:
XXX-Man
- +/- sve poruke
- ravni prikaz
- starije poruke gore
To je sasvim druga priča vezana za snimanje rada poslovnog procesa i trebala bi biti napravljena od strane poslovnog analitičara te priložena kao dio specifikacije zahtjeva pred programere i db admine.
Pozdrav,
zanima me dali se ikako može napraviti int funkcija koja će imati nedefinirani broj parametara koji će se množiti međusobno?
Npr.:
int funkcija(p1, p2, p3, p4)
{
return (p1 * p2 * p3 * p4);
}
Samo što neće biti definirat broj parametara, znači može biti 5 komada ili 10 ili 100. Također da ima nekakav način da se isti unesu putem cin-a ili sscanfa. Hvala :)
Pozdrav,
zanima me dali se ikako može napraviti int funkcija koja će imati nedefinirani broj parametara koji će se množiti međusobno?
Npr.:
int funkcija(p1, p2, p3, p4)
{
return (p1 * p2 * p3 * p4);
}
Samo što neće biti definirat broj parametara, znači može biti 5 komada ili 10 ili 100. Također da ima nekakav način da se isti unesu putem cin-a ili sscanfa. Hvala :)
Upotrebom C++11 standarda može se riješiti ovako:
#include <iostream>
using namespace std;
template<class Argument1, class Argument2>
typename common_type<Argument1, Argument2>::type Mnozi(Argument1 a, Argument2 b) {
return a * b;
}
template<class Argument1, class Argument2, class... OstaliArgumenti>
typename common_type<Argument1, Argument2, OstaliArgumenti...>::type Mnozi(Argument1 a, Argument2 b, OstaliArgumenti... ostali) {
return a * Mnozi(b, ostali...);
}
int main(){
cout << Mnozi(2.5, 3) << endl; // 7.5
cout << Mnozi(2.5, 3, 2) << endl; // 15
cout << Mnozi(2.5, 3, 2, 5) << end; // 75
return 0;
}
U C++14 standardu to može ići i ovako:
#include <iostream>
using namespace std;
template<class Argument1, class Argument2>
auto Mnozi(Argument1 a, Argument2 b) ->decltype(a * b) {
return a * b;
}
template<class Argument1, class Argument2, class... OstaliArgumenti>
auto Mnozi(Argument1 a, Argument2 b, OstaliArgumenti... ostali) -> decltype(a * Mnozi(b, ostali...)) {
return a * Mnozi(b, ostali...); // rekurzivno instanciranje funkcije s n-1 argumenata
}
int main(){
cout << Mnozi(2.5, 3) << endl; // 7.5
cout << Mnozi(2.5, 3, 2) << endl; // 15
cout << Mnozi(2.5, 3, 2, 5) << endl; // 75
return 0;
}
U pravilu, kod funkcija s neograničenim brojem argumenata dolazi do rekurzivnog instanciranja predloška s neograničenim brojem argumenata (drugi predložak) sve dok se poziv ne svede na najosnovniji slučaj (slučaj kada funkcija ima samo dva parametra tj. minimalan broj podataka koji se mogu pomnožiti). Tada se instancira prvi predložak koji onda prekida rekurzivno instanciranje.
Način preko varargs nije prikladan za C++ jer nije type-safe i ne bi ga trebalo koristiti.
Pozdrav,
zanima me dali se ikako može napraviti int funkcija koja će imati nedefinirani broj parametara koji će se množiti međusobno?
Npr.:
int funkcija(p1, p2, p3, p4)
{
return (p1 * p2 * p3 * p4);
}
Samo što neće biti definirat broj parametara, znači može biti 5 komada ili 10 ili 100. Također da ima nekakav način da se isti unesu putem cin-a ili sscanfa. Hvala :)
Moze, potrazi vararg ili elipse (eng. ellipsis). S tim da to bas nije previse dobra praksa.
http://www.learncpp.com/cpp-tutorial/714-ellipsis-and-why-to-avoid-them/
Pogledaj "initializer_list", mozda bi ti to bilo bolje. Samo pazi, to je samo C++11.
Samo što neće biti definirat broj parametara, znači može biti 5 komada ili 10 ili 100. Također da ima nekakav način da se isti unesu putem cin-a ili sscanfa. Hvala :)
Ako kaniš unositi podatke preko tipkovnice onda je krajnje nepotrebno predavati te podatke kao zasebne argumente funkciji, već ih se sve može odjednom predati kao polje ili vektor nad kojim se onda računa što već treba:
#include <iostream>
#include <vector>
using namespace std;
double Mnozi(vector<double> v) {
if (!v.size())
return 0;
double pom = v[0];
for (int i = 1; i < v.size(); i++)
pom *= v[i];
return pom;
}
int main(){
vector<double> v;
double pom;
for (int i = 0; i < 3; i++) {
cin >> pom;
v.push_back(pom);
}
cout << Mnozi(v) << endl;
return 0;
}
Tracer ti je dobro odgovorio, jer u biti postavio si krivo pitanje pretpostavljam, jer ti zelis izmnoziti nespecificirani broj elementa a za to se koriste containeri ( ako zelis nauciti malo library prouci si std accumulate i kako bi napravio mnozenje sa time jer je default operacije plus)
No samo razonode radi moze se napraviti funkcija koja radi za vise argumentata...
http://coliru.stacked-crooked.com/a/1027e076b167eb23
Ovo nije jednostavno za razumijeti, tako da nemoj da te uhvati panika ako nista ne razumijes, C++ je lagano koristiti i bez da znas templates pisati sam... :)
Takav primjer sam gore već stavio 
Heheh, hvala vam ljudi.
Jel tko od Vas bio u srednjoj(2. razred) na natjecanju iz programiranja(školsko, županijsko, držano, više?...)?
Takav primjer sam gore već stavio 
jos da ja citam vise od zadnjeg posta :)
@ Dex.pwn - Ne, ali zasto pitas? Ako ti trebaju zadatci i rjesenja nije tesko ih naci...
Ma ne bi varao :P Pitam da čujem dojmove, kako je bilo.. Šta će uopće dobije ako se završi recimo u top tri na županijskom ili državnom?
Što dobiješ?

Slavu!

Neposredan upis na FER recimo ako si osvojio prve tri nagrade na državnom natjecanju iz Informatike(katetgorija algoritmi C/C++/Pascal).
Nemoj se dvoumiti, bez obzira na rezultat samo se natječi i vježbaj programiranje.
Samo hrabro!
Ma ne bi varao :P Pitam da čujem dojmove, kako je bilo.. Šta će uopće dobije ako se završi recimo u top tri na županijskom ili državnom?
Nije to nikakvo varanje ako odeš na stranice Infocupa i pogledaš zadatke i rješenja sa prethodnih natjecanja, upravo su zato i stavili zadatke i rješenja sa prethodnih natjecanja da ljudi vježbaju.
https://www.infokup.hr/kategorija/1/Algoritmi
Za pripremiu za natjecanje dobra ti je ova knjiga
https://element.hr/artikli/409/napredno-programiranje-i-algoritmi-u-c-u-i-c-u
Što dobješ?
FESB je ove godine omogućio izravan upis za one koji osvoje prva tri mjesta na državnom ili žiupanijskom natjecanju iz matematike, fizike i informatike (kategorija algoritmi). Dakle, dovoljno ti je treće mjesto na županijskom natjecanju da bi dobio izravan upis na FESB, uz položenu državnu maturu, naravno. Tako je bilo ove godine, hoće li što mijenjati, tko zna.
Hvala ljudi, pitat ću sutra profu kad ćemo se pripremat(pozvao me je al nijen išta rekao kad-šta) 
@ Kako da zanm dal je moja škola(Teh. škola Županja) u tom Infokupu?
1. Omogućiti operacije unosa, izmjene, pregleda i brisanja: studijskih programa, predmeta, nastavnika, studenata, ispita, ocjena, godina studija i akademskih godina.????????
Hvala ljudi, pitat ću sutra profu kad ćemo se pripremat(pozvao me je al nijen išta rekao kad-šta) 
Ne znam u kojoj si županiji, ali ako mene pitaš ovaj uvjet FESB-a za izravan upis i nije teško postići. U županijama obično ima jedna matematička gimnazija (Zagreb ne brojim), a jedino takve škole rade nešto ozbiljnije programiranje. Dakle, na žiupanijskim natjecanjima konkurencija nije brojna ako ćeš ozbiljno raditi sam, uz doibru knjigu iz algoritama (može i ova što sam ti preporučio), uz asistenciju profe i uz rješavanje zadataka sa ovih stranica Infocupa
Hvala ljudi, pitat ću sutra profu kad ćemo se pripremat(pozvao me je al nijen išta rekao kad-šta) 
Ne znam u kojoj si županiji, ali ako mene pitaš ovaj uvjet FESB-a za izravan upis i nije teško postići. U županijama obično ima jedna matematička gimnazija (Zagreb ne brojim), a jedino takve škole rade nešto ozbiljnije programiranje. Dakle, na žiupanijskim natjecanjima konkurencija nije brojna ako ćeš ozbiljno raditi sam, uz doibru knjigu iz algoritama (može i ova što sam ti preporučio), uz asistenciju profe i uz rješavanje zadataka sa ovih stranica Infocupa
Vukovarsko-srijemska županija.
Pogledao sam malo zadatke(za škoslko natjecanje) i mogu reći da so(barem meni) zadaci malo nerazumni. Tipa ovu tablicu ne razumijem(nije zadatak)
Točnije ovaj dio za izvorni kod. Dal mi tamo radimo samo s C++om ili još i u Cu i PASCALu?
C i C++, to vidiš po ekstenziji datoteka .c i .cpp
Ne brini puno za to, vidim da si tehnička škola, imaš puno gapova pošto su ovi zadaci prilagođeni matematičkim gimnazijama koje imaju i po 4 sata programiranja tjedno.
To znači da moraš onu knjigu nabaviti što prije, ili koju ti profa preporući, pitaj ga i za ovu knjigu što sam stavio link, i za druge knjige. Upamti, glavninu gapa moraš dostići sam, učenjem i vježbanjem.
C i C++, to vidiš po ekstenziji datoteka .c i .cpp
Ne brini puno za to, vidim da si tehnička škola, imaš puno gapova pošto su ovi zadaci prilagođeni matematičkim gimnazijama koje imaju i po 4 sata programiranja tjedno.
To znači da moraš onu knjigu nabaviti što prije, ili koju ti profa preporući, pitaj ga i za ovu knjigu što sam stavio link, i za druge knjige. Upamti, glavninu gapa moraš dostići sam, učenjem i vježbanjem.
Krenio sam s zadatkom Joker al me rand funkcija muči. Trebam broj između 1(ne 0) i 45. Dakle, ovo sam napravio(predznanje iz PAWN jezika)
rand(45 - 1) + 1;
Ali taj kod ne šljaka ovdje.
C i C++, to vidiš po ekstenziji datoteka .c i .cpp
Ne brini puno za to, vidim da si tehnička škola, imaš puno gapova pošto su ovi zadaci prilagođeni matematičkim gimnazijama koje imaju i po 4 sata programiranja tjedno.
To znači da moraš onu knjigu nabaviti što prije, ili koju ti profa preporući, pitaj ga i za ovu knjigu što sam stavio link, i za druge knjige. Upamti, glavninu gapa moraš dostići sam, učenjem i vježbanjem.
Krenio sam s zadatkom Joker al me rand funkcija muči. Trebam broj između 1(ne 0) i 45. Dakle, ovo sam napravio(predznanje iz PAWN jezika)
rand(45 - 1) + 1;
Ali taj kod ne šljaka ovdje.
Nauči se snalaziti i koristiti literaturu
C i C++, to vidiš po ekstenziji datoteka .c i .cpp
Ne brini puno za to, vidim da si tehnička škola, imaš puno gapova pošto su ovi zadaci prilagođeni matematičkim gimnazijama koje imaju i po 4 sata programiranja tjedno.
To znači da moraš onu knjigu nabaviti što prije, ili koju ti profa preporući, pitaj ga i za ovu knjigu što sam stavio link, i za druge knjige. Upamti, glavninu gapa moraš dostići sam, učenjem i vježbanjem.
Krenio sam s zadatkom Joker al me rand funkcija muči. Trebam broj između 1(ne 0) i 45. Dakle, ovo sam napravio(predznanje iz PAWN jezika)
rand(45 - 1) + 1;
Ali taj kod ne šljaka ovdje.
Nauči se snalaziti i koristiti literaturu
To sam i pogledao prvo, tako inače i radim(inače u PAWNu nije rand nedo random, tako da bez Googlea ne bi kucao rand nego random). Vidio sam ovo na Youtubeu ali svaki put mi izbaci isti broj
for(int _i = 0; _i < 6; _i++)
{
srand(time(0)); // FIXAO, OVO JE BIO PROBLEM
_broj[_i] = (rand() % 45) + 1;
_joker_broj[_i] = _broj[_i] % 10;
// TEST
cout << "Broj: " << _broj[_i] << " Joker: " << _joker_broj[_i] << endl;
}
izbaci seed iz pelje, kod svake iteracije petlje iniciijaliziraš novi seed
izbaci seed iz pelje, kod svake iteracije petlje iniciijaliziraš novi seed
Jel može još jedno pitanje(ne želim otvoriti rješenja, nije to moj tip). Imam sad brojeve i sad te sve brojeve(6 komada) treba sklopiti u jedan broj. Da koristim funkciju za string kako bi sklopio broj(kao tekst) i da onda putem strval funkcije to pretvorim u broj?
U PAWNu bi to išlo ovako
format(_string, 7 /*ŠEST BROJEVA + JEDAN ZA NULIRANJE STRINGA*/, "%d%d%d%d%d%d", broj1, broj2, broj3, broj4, broj5, broj6);
var = strval(_string);
izbaci seed iz pelje, kod svake iteracije petlje iniciijaliziraš novi seed
Jel može još jedno pitanje(ne želim otvoriti rješenja, nije to moj tip). Imam sad brojeve i sad te sve brojeve(6 komada) treba sklopiti u jedan broj. Da koristim funkciju za string kako bi sklopio broj(kao tekst) i da onda putem strval funkcije to pretvorim u broj?
U PAWNu bi to išlo ovako
format(_string, 7 /*ŠEST BROJEVA + JEDAN ZA NULIRANJE STRINGA*/, "%d%d%d%d%d%d", broj1, broj2, broj3, broj4, broj5, broj6);
var = strval(_string);
int Spoji(int niz)
int broj = niz[0]
For i = 1 To velicinaNiza
broj = broj * 10 + niz[i]
Next i
return broj
End Spoji
Nema ti veze programski jezik sa algoritmima. Ovo je univerzalni programski jezik koji opisuje algoritam stvaranja broja iz niza brojeva, naravno, ako su u niziu znamenke [0, 9], a ako broj nije u tom intervalu, rastavimo ga na znamenke.
Čovjeće kakvi su ovo zadaci... Vidjet ću s profom sutra
Ja nisam bas jer ono znam osnove AI , ali ako je moguce korisi AI a ne UI jer je UI user interface :)
govori engleski da te ceo svet razume :P
Ja nisam bas jer ono znam osnove AI , ali ako je moguce korisi AI a ne UI jer je UI user interface :)
govori engleski da te ceo svet razume :P
Korisnicko sucelje je KS. 
A sad ozbiljno, koga briga za korisnicko sucelje, pravi muskarci ionako koriste samo terminal (sukladno tome, poznat im je samo pojam CLI, iliti command line interface). :P
Inace, skripte s prethodnog linka su dostupne ovdje.
ssssssssss!