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

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

^ previse si zbrljao to.
I mozes koristiti bool za provjeru.

Ovo ti je dovoljno za rijesiti zadatak:


int i,j;

bool prost;

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

Pozdrav, trebala bi mi mala pomoć vezana sa sljedeći zadatak. Zadatak glasi ovako: "Napišite program koji traži od korisnika da upiše 5 cijelih brojeva i spremi ih u prvih 5 elemenata cjelobrojnog polja od 7 članova . Nakon toga program poziva funkciju maxmin koja preuzima polje pronađe najveći i najmanji broj u polju i spremi ih u 6. i 7. elemnt u polju. Nakon povratka iz funkcije program treba ispisati sadržaj svih elemenata polja."

 

#include<iostream>
using namespace std;
void maxmin();

int main(){

int a[7];

for(int i=0;i<5;i++){

cin>>a[i];
}

cout<<endl;

void maxmin(int a[]);

for(int i=0;i<7;i++){

cout<<a[i]<<endl;
}

system ("pause");
return 0;
}

void maxmin (int a[]){

int min=0, max=0;


for(int i=0;i<5;i++){

if(min>a[i])
min=a[i];
}

a[6]=min;

for(int i=0;i<5;i++){

if(max<a[i])
max=a[i];
}

a[5]=max;


}

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

polje[6]=polje[0]

for (int i=0;i++;i<7)

{

if (polje[6]<polje[i])

{

polje[6]=polje[i];

}

}

 

Ovako ce ti najvecu vrijednost upise u polje[6], ostalo mozes i sam.

 

LoL acc THCJoshi
Moj PC  
0 0 hvala 0
11 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{

int polje[10];


for(int j=0;j<5;j++){
cin >> polje[j];
}

polje[6] = polje[0]; // Cisto da ima s "cime raditi" ;)
polje[7] = polje[1];

for(int i=0;i<5;i++){
polje[6] = max(polje[i],polje[6]); // Pronalazi najveci
polje[7] = min(polje[i],polje[7]); // Pronalazi najmanji
}

cout << "Najveci: " << polje[6] << endl << "Namanji: " << polje[7];
return 0;
}

You dont make 500 million friends without a few enemies.
Poruka je uređivana zadnji put uto 27.1.2015 23:36 (tLeon).
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Jonja kaže...

 

 Ne moze ni tako. Problem je sto ja moram to preko funkcije rjesit a ne u main-u. Ne razumijem zasto ne radi kad je samo polje vec pokazivac, zar ne bi trebalo automatski promjenit vrijednost samog polja?

 

#include<iostream>
using namespace std;
void maxmin();

int main(){

int a[7];

for(int i=0;i<5;i++){

cin>>a[i];
}

cout<<endl;

void maxmin(int a[]);

for(int i=0;i<7;i++){

cout<<a[i]<<endl;
}

system ("pause");
return 0;
}

void maxmin (int a[]){

a[7]=a[0];

for(int i=0;i<5;i++){

if(a[7]>a[i])
a[7]=a[i];
}

a[6]=a[0];

for(int i=0;i<5;i++){

if(a[6]>a[i])
a[6]=a[i];
}


}

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

#include<iostream>
using namespace std;
void maxmin(int a[]);
int main(){

   int a[7];
   for (int i = 0; i<5; i++){

      cin >> a[i];
   }

   cout << endl;

    maxmin(a);

   for (int i = 0; i<7; i++){

      cout << a[i] << endl;
   }
   system("pause");
   return 0;
}
void maxmin(int* a){

   int min = a[0], max=a[0];

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

      if (min>a[i])
         min = a[i];
   }

   a[6] = min;

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

      if (max<a[i])
         max = a[i];
   }

   a[5] = max;


}

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

 Ne moze ni tako. Problem je sto ja moram to preko funkcije rjesit a ne u main-u. Ne razumijem zasto ne radi kad je samo polje vec pokazivac, zar ne bi trebalo automatski promjenit vrijednost samog polja?

 

#include<iostream>
using namespace std;
void maxmin();

int main(){

int a[7];

for(int i=0;i<5;i++){

cin>>a[i];
}

cout<<endl;

void maxmin(int a[]);

for(int i=0;i<7;i++){

cout<<a[i]<<endl;
}

system ("pause");
return 0;
}

void maxmin (int a[]){

a[7]=a[0];

for(int i=0;i<5;i++){

if(a[7]>a[i])
a[7]=a[i];
}

a[6]=a[0];

for(int i=0;i<5;i++){

if(a[6]>a[i])
a[6]=a[i];
}


}

Ok, par stvari:

1. prozracnost - koliko god ti to zvucalo glupo, ali pisati lijep kod je izrazito vazno. Dakle izmedu svakog znaka jednakosti staviti razmak, pa npr. u for petlji staviti razmake, a ne da je sve nabijeno jedno na drugo. Otezava citanje, a tako i debugiranje i pronalazenje problema.

2. indentacija koda - znam da je ovaj Bugov editor zaje*ban i da ti je vjerojatno posemerio uvlacenje koda, ali probaj to naknadno popraviti (za svako uvlacenje lupi cetiri razmaknice, a Shift + Enter za novi red, nikako samo Enter).

3. one lineri - bez obzira sto u C++-u mozes napisati if bez zagrada ako imas samo jednu liniju koda za izvrsiti, izrazito preporucujem i naglasavam da ipak stavis zagrade, opet radi citljivosti, dakle NE:

if(a[6]>a[i]) a[6]=a[i];

ili

if(a[6]>a[i])
     a[6]=a[i];

nego ovako:

if(a[6]>a[i]) {
     a[6]=a[i];
}

Dakle, sa zagradama, lakse je procitati i ugodnije je za oko.

4. podebljao sam ti sve sto ti je krivo i problematicno u kodu:

    1) deklaracija void maxmin(); - ovdje si izostavio najbitniji dio, argumente koje funkcija prima, dakle trebalo bi biti: void maxmin(int a[]);

    2) kad pozivas funkciju ne pozivas ju na ovakav nacin kao sto si ti napravio - void maxmin(int a[]); - vec ju pozivas bez prefiksa void (ili int, ili bilo kojeg drugog), SAMO njezino ime i argumente, a kao argumente predajes SAMO ime varijable ili polja koju joj predajes (dakle isto bez prefiksa int, ili bilo kojeg drugog), znaci ovako: maxmin(a);

    3) imas strasan bug u funkciji maxmin, a to je a[7] = a[0]. Upamti, polja se indeksiraju OD indeksa 0, a ne 1!!! Dakle imas: 1. a[0], 2. a[1], 3. a[2], 4. a[3], 5. a[4], 6. a[5], 7. a[6] i to je ukupno 7 clanova polja, ali zadnji je a[6], a ne a[7]. S ovim a[7] ti pristupas nekoj nepoznatoj memoriji, tj. nekakvom smecu, zato van i dobivas smece. Zanimljivo, u for petlji dobro prebrojavas (od 0 do 4, tj. prvih pet: 0, 1, 2, 3, 4).

    4) ista je stvar i s drugim dijelom funkcije, dakle umjesto a[6] mora biti a[5].

 

Kompletan, ispravljeni kod:

#include<iostream>

using namespace std;

void maxmin(int a[]);

int main(){
    int a[7];

    for(int i = 0; i < 5; i++)
    {
        cin >> a[i];
    }

    cout << endl;

    maxmin(a);

    for(int i = 0; i < 7; i++)
    {
        cout << a[i] << endl;
    }

    return 0;
}

void maxmin (int a[]){
    a[6] = a[0];

    for(int i = 0; i < 5; i++)
    {
        if(a[6] > a[i])
        {
            a[6] = a[i];
        }
    }

    a[5] = a[0];

    for(int i = 0; i < 5; i++)
    {
        if(a[5] < a[i])
        {
            a[5] = a[i];
        }
    }
}

 

Eto, to bi bilo to. Ako jos sto nije jasno, pitaj.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Moze pomoc oko sortiranja stringova?

Imam datoteku iz koje trebam ispisati listu imena(tipa string) sortiranu po abecedi. 

Nalazio sam neke primjere na netu za sortiranje, ali se u tim primjerima koriste varijable tipa char i kad taj kod primijenim u svom programu ispise gresku da se string ne moze konvertovati u char(evo jedan od primjera primjer ) , ima i funkcija sort samo sto ona radi samo u slucaju kad sva imena pocinju ili sa velikim ili sa malim slovom u suprotnom ne radi, pa eto bilo bi super ako imate neki prijedlog

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

Moze pomoc oko sortiranja stringova?

Imam datoteku iz koje trebam ispisati listu imena(tipa string) sortiranu po abecedi. 

Nalazio sam neke primjere na netu za sortiranje, ali se u tim primjerima koriste varijable tipa char i kad taj kod primijenim u svom programu ispise gresku da se string ne moze konvertovati u char(evo jedan od primjera primjer ) , ima i funkcija sort samo sto ona radi samo u slucaju kad sva imena pocinju ili sa velikim ili sa malim slovom u suprotnom ne radi, pa eto bilo bi super ako imate neki prijedlog

U kakvoj datoteci imas listu imena, pokazi kod sto si dosad rijesio i gdje si zapeo.

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

moze pomoc oko jednog zadatka sa funkcijama u kombinaciji sa nizovima

 

Definirajte funkciju plus2 koja parne brojeve uvećava za 2, a neparne ostavlja kakvi jesu.

U glavnom dijelu programa unesite 5 cjelobrojnih elemenata niza. Zatim generirajte novi niz tako da na svaki element primijenite funkciju plus2, te ga ispišite.

 

ovaj dio u glavnom dijelu znam napisat ali ovaj drugi nikako 

 

pls help ako neko moze napisati bio bi mu jako zahvalan 

 

 

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

U kakvoj datoteci imas listu imena, pokazi kod sto si dosad rijesio i gdje si zapeo.

 imena i ostali podaci se cuvaju u tekstualnoj datoteci, citav kod da stavljam je previse jer ima oko 500 linija, pa cu staviti ovaj dio u kojem se treba izvrsiti sortiranje

klasa Racunari

class Racunari
{
public:
int idBroj;
string naziv;
float cijena;
string proizvodjac;
int trenutnoNaStanju;
string tip;

void ListaRacunara();
void UnosNovihRacunara();
void brisanjeRacunara();
};

 

funkcija za ispis racunara

void Racunari::ListaRacunara()
{
fstream f;
string s;
int br=0;
float vrijednost=0;

f.open("racunari.txt", ios_base::in);
f.seekg(0, ios_base::beg);
while(f.eof()!=true)
{
getline(f, s);
br++;
}
f.close();
br=(br-1)/6;

if(br>0)
{

Racunari* r=new Racunari[br];

f.open("racunari.txt", ios_base::in);
for(int i=0; i<br; i++)
{
f>>r[i].idBroj;
f>>r[i].naziv;
f>>r[i].cijena;
f>>r[i].proizvodjac;
f>>r[i].trenutnoNaStanju;
f>>r[i].tip;
}

cout<<"Lista svih racunara: "<<endl;
for(int i=0; i<br; i++)
{
cout<<r[i].idBroj<<"; ";
cout<<r[i].naziv<<"; ";
cout<<r[i].cijena<<" KM; ";
cout<<r[i].proizvodjac<<"; ";
cout<<r[i].trenutnoNaStanju<<"; ";
cout<<r[i].tip<<"; "<<endl;

vrijednost += r[i].cijena*r[i].trenutnoNaStanju;
}
f.close();

cout<<"Ukupna vrijednost racunara na stanju je: "<<vrijednost<<endl;
}
else
{
cout<<"Datoteka je prazna."<<endl;
}
}

 

Sad treba napraviti da se prilikom odabira opcije za ispis liste racunara, ispise sortirana lista po proizvodjacima

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

moze pomoc oko jednog zadatka sa funkcijama u kombinaciji sa nizovima

 

Definirajte funkciju plus2 koja parne brojeve uvećava za 2, a neparne ostavlja kakvi jesu.

U glavnom dijelu programa unesite 5 cjelobrojnih elemenata niza. Zatim generirajte novi niz tako da na svaki element primijenite funkciju plus2, te ga ispišite.

 

ovaj dio u glavnom dijelu znam napisat ali ovaj drugi nikako 

 

pls help ako neko moze napisati bio bi mu jako zahvalan 

 

 

 

#include <iostream>

using namespace std;

int niz[10];

void plus2 ()
{
for(int i=0;i<5;i++){
if(niz[i]%2==0)niz[i]+=2;
}

for(int i=0;i<5;i++){
cout << niz[i] << endl;
}

}
int main()
{
for(int i=0;i<5;i++){
cin >> niz[i];
}

plus2(); // Zove funkciju
return 0;
}

You dont make 500 million friends without a few enemies.
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ne kuzim cemu TD-ovi, ali ok. Ako mislite da mi je to neke zadaca pa zelim da mi ju netko ovako rijesi, nije. 
Treba mi za ispit...

 

xFire: rebelsy | steam: rebelsycro | origin: rebelszuka
Poruka je uređivana zadnji put čet 29.1.2015 11:24 (rebelsy).
 
0 3 hvala 0
11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rebelsy kaže...

Ne kuzim cemu TD-ovi, ali ok. Ako mislite da mi je to neke zadaca pa zelim da mi ju netko ovako rijesi, nije. 
Treba mi za ispit...

 

Zato jer ne dojdes ovdje sa 3 zadatka i kazes nek mi netko rjesi, vec probas sam i ako nejde stavis kod koji si napiso pa ce ti netko pomoci...

You dont make 500 million friends without a few enemies.
Poruka je uređivana zadnji put čet 29.1.2015 14:04 (tLeon).
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
eagle05 kaže...

Moze pomoc oko sortiranja stringova?

Imam datoteku iz koje trebam ispisati listu imena(tipa string) sortiranu po abecedi. 

Nalazio sam neke primjere na netu za sortiranje, ali se u tim primjerima koriste varijable tipa char i kad taj kod primijenim u svom programu ispise gresku da se string ne moze konvertovati u char(evo jedan od primjera primjer ) , ima i funkcija sort samo sto ona radi samo u slucaju kad sva imena pocinju ili sa velikim ili sa malim slovom u suprotnom ne radi, pa eto bilo bi super ako imate neki prijedlog

 

Ovo je strahota , editor (opcija: format : kod) nikada nije bio gori.

Ne znam kako radi na ostalim browserima ali na Chrome-u je promašaj

samo takav.

Toliko je to loše da neću više niti riječi o tome (bar u ovom postu ).

 

 

 

eagle05 , molim te vidi niži kod pa reci ako ti smjernica nije dovoljna kao bi ti se pomoglo dalje.

 

#include <iostream>
#include <iostream>
#include <algorithm>
#include <cctype>

 

int main()
{
   std::string names[5] {
       "IBM" ,
       "toshiba" ,
       "ASUS" ,
       "dell" ,
       "Logitech"
   };  
  
  
   /***
    * pretvori sva početna slova u komparaciji sort-a u mala
    * ili velika , svejedno -> bitno da na početku imaš istu
    * razinu -> A!=a ali tolower(A)==a
    ***/
   std::sort(names,names+5, [](std::string s0 , std::string s1)
   {
       return (tolower(s0[0]) < tolower(s1[0]));
   });
  
  
  
   for(auto x : names)
   std::cout<< x << "\n";
  
   
   std::cout << "\n\nexiting...\n";
   return 0;
}

moje aplikacije na play-u : https://play.google.com/store/search?q=nik02droid
Poruka je uređivana zadnji put čet 29.1.2015 15:21 (nik_02).
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Kad radi sa klasama, bolje da koristi vector nego niz.

Može i sa sort metodom i statičkom funkcijom koju napiše u klasi.

Na ovaj način kriterij za sortiranje su sve pozicije niza.

 

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

class Auto
{
public:
   string marka;
   int godinaProizvodnje;
   static bool abeceda(const Auto& a, const Auto& b)
   {
      string d, e;
      for (auto k : a.marka) d += tolower(k);
      for (auto l : b.marka) e += tolower(l);
      return d < e;
   }
};

int main()
{   
   vector<Auto> auti;
   Auto* a = NULL;
   for (int i = 0; i < 5; i++)
   {
      Auto* a = new Auto();
      cin >> a->marka;
      cin >> a->godinaProizvodnje;
      auti.push_back(*a);
   }
   cout << endl;
   sort(auti.begin(), auti.end(), a->abeceda);
   for (auto a : auti)
   {
      cout << a.marka << " " << a.godinaProizvodnje << endl;
   }
   return 0;
}

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

Zato jer ne dojdes ovdje sa 3 zadatka i kazes nek mi netko rjesi, vec probas sam i ako nejde stavis kod koji si napiso pa ce ti netko pomoci...

 Da znam kako treba, ne bih tu ni pitao (a i opcenito mi ne ide programiranje tj. nemam dovoljno znanja). Probavao sam nesto, ali ne mogu nikako dokuciti kako to sve skombinirati da mi izbacuje to sto trebam.

A vama koji znate je realno to nekih 5 min posla (ako i toliko) da mi objasnite. Samo eto, nismo svi isti...

Dosta dugo sam tu i uvijek sam pomogao svakome, naravno, ako sam znao i mogao, a da ne pricam o svemu ostalome i dodjem tu s namjerom da ce mi netko pokazati bar 1 zadatak kako se rijesava da probam onda sam skuziti na koju foru to ide...

xFire: rebelsy | steam: rebelsycro | origin: rebelszuka
Poruka je uređivana zadnji put čet 29.1.2015 16:33 (rebelsy).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...

      Auto* a = new Auto();    

 Zašto pointer? Onda ti nedostaje i dealokacija...

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

Zato jer ne dojdes ovdje sa 3 zadatka i kazes nek mi netko rjesi, vec probas sam i ako nejde stavis kod koji si napiso pa ce ti netko pomoci...

 Da znam kako treba, ne bih tu ni pitao. Probavao sam nesto, ali ne mogu nikako dokuciti kako to sve skombinirati da mi izbacuje to sto trebam.

A vama koji znate programirati je realno to nekih 5 min posla (ako i toliko) da mi objasnite. Samo eto, nismo svi isti...

 Daj onaj prvi, jedan po jedan, ja ću ti ga objasniti.

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

      Auto* a = new Auto();    

 Zašto pointer? Onda ti nedostaje i dealokacija...

 Ostavio sam mu da ga dealocira, nije kompletan kod, napisao sam samo da mu objasnim preopterećenje sort metoda bool funkcijom. ali moja greška, nisam naznačio da treba dealokacija

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

      Auto* a = new Auto();    

 Zašto pointer? Onda ti nedostaje i dealokacija...

 Ostavio sam mu da ga dealocira, nije kompletan kod, napisao sam samo da mu objasnim preopterećenje sort metoda bool funkcijom. ali moja greška, nisam naznačio da treba dealokacija

 Inače, ja bih to ovako napravio:

 

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

class Auto
{
public:
   string marka;
   int godinaProizvodnje;
   Auto(string m, int g) : marka(m), godinaProizvodnje(g){}
};
bool abeceda(const Auto& a, const Auto& b){
   string d, e;
   for (auto k : a.marka) d += tolower(k);
   for (auto l : b.marka) e += tolower(l);
   return d < e;
}

int main(){
   vector<Auto> auti;
   string marka;
   int godinaProizvodnje;

   for (int i = 0; i < 5; i++)   {
      cin >> marka;
      cin >> godinaProizvodnje;
      auti.emplace_back(marka, godinaProizvodnje);
   }
   cout << endl;
   sort(auti.begin(), auti.end(), abeceda);
   for (auto a : auti)   {
      cout << a.marka << " " << a.godinaProizvodnje << endl;
   }
   return 0;
}

 

Metoda emplace_back daje puuno bolje performanse nego push_back, a i metoda za usporedbu (abeceda) ne mora biti statička niti unutar klase. Moglo bi se čak lambda funkcijom riješiti ali malo je nepregledno za ovaj slučaj.

 

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

 Daj onaj prvi, jedan po jedan, ja ću ti ga objasniti.

 Hvala ti puno!


Ovo je prvi zadatak:
Napisati cjelobrojnu C funkciju Produktmn koja kako parametre ima dva cijela broja m i n. Ako je parametar n veći od m funkcija treba vratiti produkt svih brojeva iz intervala [m, n]. Ako je parametar m veći od n funkcija treba vratiti produkt svih parnih brojeva iz intervala [n, m]. Ako su parametri m i n jednaki, funkcija treba vratiti vrijednost -1. U main() dijelu pokazati primjenu funkcije.

 

Meni nije jasno uopce kako bih napravio da funkcija vraca produkt svih brojeva iz intervala tj. da vraca produkt svih parnih brojeva iz intervala. Znam da treba ici if,else petlja (valjda?).

i kako uopce napraviti ovaj treci korak da vraca vrijednost -1?

xFire: rebelsy | steam: rebelsycro | origin: rebelszuka
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Prouci objasnjenja, druge bi vec mogao samostalno. Ovdje je a kao kod tebe m, a b kao kod tebe n.

Ako zelis parne, broj % 2 == 0 , dakle djeljivi sa dva su parni, a ako zelis neparne broj % 2 != 0, neparni su oni koji nisu djeljivi sa dva. Pogledaj malo modulo operator.

 

#include<iostream>
using namespace std;

int funkcija(int a, int b) // funkcija vraca int
{
   int produkt = 1;  //  varijabla koju vracamo kad zavrsimo posao, inicijaliziramo je na 1 jer racunamo produkt u petljama
   if (a < b)   // ako je a < b idemo u ovaj if blok
   {
      for (int i = a; i <= b; i++)  // petlja ide od a do b jer je a manji i mnozimo sve brojeve u intervalu, posto su uglate zagrade intervala a i b su u intervalu
         produkt *= i;
      return produkt;   // funkcija vraca produkt iz prethodne petlje i ovdje se funkkcija prekida
   }
   else if (a > b) // ako nam prvi uvjet nije bio istinit blok od prethodnog if uvjeta se preskace i ako je ovaj uvjet istinit ulazimo u ovaj blok
   {
      for (int i = b; i <= a; i++)  // sad petlja ide od b do a jer je b , manji od a
      if (i % 2 == 0) produkt *= i;   // ako je broj djeljiv sa dva, onda je paran, zato u if uvjetu modulo sa dva, ako je nula, broj je paran i ulazi u produkt, neparni ne ulaze
      return produkt;  // funkcija vraca produkt iz prethodne petlje i funkcija se ovdje prekida
   }
   return -1;   // ako nije istinit ni if ni else if uvjet, evo nas ovdje, funkcija se porekida i vraca -1
}

int main()
{   
   int a=3, b=6;
   cout << funkcija(a, b); // zovemo funkciju, a kad ona vrati vrijednost ispisemo je
   return 0;
}

Poruka je uređivana zadnji put čet 29.1.2015 19:10 (Floki).
 
2 0 hvala 1
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...
Floki kaže...
TracerCPP kaže...
Floki kaže...

      Auto* a = new Auto();    

 Zašto pointer? Onda ti nedostaje i dealokacija...

 Ostavio sam mu da ga dealocira, nije kompletan kod, napisao sam samo da mu objasnim preopterećenje sort metoda bool funkcijom. ali moja greška, nisam naznačio da treba dealokacija

 Inače, ja bih to ovako napravio:

 

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

class Auto
{
public:
   string marka;
   int godinaProizvodnje;
   Auto(string m, int g) : marka(m), godinaProizvodnje(g){}
};
bool abeceda(const Auto& a, const Auto& b){
   string d, e;
   for (auto k : a.marka) d += tolower(k);
   for (auto l : b.marka) e += tolower(l);
   return d < e;
}

int main(){
   vector<Auto> auti;
   string marka;
   int godinaProizvodnje;

   for (int i = 0; i < 5; i++)   {
      cin >> marka;
      cin >> godinaProizvodnje;
      auti.emplace_back(marka, godinaProizvodnje);
   }
   cout << endl;
   sort(auti.begin(), auti.end(), abeceda);
   for (auto a : auti)   {
      cout << a.marka << " " << a.godinaProizvodnje << endl;
   }
   return 0;
}

 

Metoda emplace_back daje puuno bolje performanse nego push_back, a i metoda za usporedbu (abeceda) ne mora biti statička niti unutar klase. Moglo bi se čak lambda funkcijom riješiti ali malo je nepregledno za ovaj slučaj.

 

 Nik je rijesio sa lambdom. Samo umjesto string parametara ubaciti objekte klase. Ne znam, mozda nije puno i ubaciti pretvorbu stringova u mala slova, nije puno za preglednost.

 

 

sort(auti.begin(), auti.end(), [](Auto& a, Auto& b)
   {
      string d, e;
      for (auto k : a.marka) d += tolower(k);
      for (auto l : b.marka) e += tolower(l);
      return d < e;
   });

 

Poruka je uređivana zadnji put čet 29.1.2015 22:19 (Floki).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

I sama pretvorba u mala slova može preko funkcije transform koja radi na sličan način kao sort.

 

string tekst ="NESTOVELIKO";
transform(tekst.begin(), tekst.end(), tekst.begin(), tolower);

cout << tekst; // nestoveliko

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

Trebala bi mi pomoć oko dva zadatka.

 

1)Napišite program koji traži od korisnika da upiše jedan cijeli broj n , a onda izačuna koristeći rekurzivnu funkciju sumu za prvih n clanova u nizu:

1/2 + 3/4 + 5/6 + 7/8+...

 

2)Napišite program koji traži od korisnika da upiše jedan cijeli broj n , a onda izačuna koristeći rekurzivnu funkciju sumu za prvih n clanova u nizu u kojem svaki pojedini član možemo izačunati koristeći slijedeću formulu: ((n+1)/(n*2) .

 

Problem je što baš ne shvaćam kako bi formula unutar funkcije trebala izgledat pa mi ne uspijeva nikako. Kod prvog zadatka mi program crash-a a kod drugog mi vraca jedan šta god da upišem. Hvala unaprijed.

 

1)

#include<iostream>
using namespace std;

float suma(float n);

int main(){
   float n;

   cin>>n;

  cout<<suma(n);

system ("pause");
return 0;
}
float suma (float n){
  if (n == 0)
  return 0;

  if (n == 1)
  return 1;

  return suma(n-2)/suma(n-2);
}

 

2)

Jedina je razlika u formuli.

 

return suma((n+1)/(n*2));

 

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

Trebala bi mi pomoć oko dva zadatka.

 

1)Napišite program koji traži od korisnika da upiše jedan cijeli broj n , a onda izačuna koristeći rekurzivnu funkciju sumu za prvih n clanova u nizu:

1/2 + 3/4 + 5/6 + 7/8+...

 

2)(n-1)/(n*2)

 prvi bi po mome nekako isao ovako

#include <iostream>
using namespace std;
float suma=0, x;
float numberFunction(float i, float n) {
x=(n)/(n+1);
suma += x;
cout << x << endl;
n=n+2;
if(n<=i) {
numberFunction(i, n);
}
}

int main() {
float n=1;
float i;
cin >> i;
numberFunction(i, n);
cout << "Suma je: " << suma;
system("pause");
return 0;
}

 

drugi bi ovako(stavio sam ispisivanje da vidis sto kako radii u jednom i u drugom)

#include <iostream>
using namespace std;
float suma=0, x;
float numberFunction(float i, float n) {
x=(n+1)/(n*2);
suma += x;
cout << x << endl;
n++;
if(n<=i) {
numberFunction(i, n);
}
}

int main() {
float n=1;
float i;
cin >> i;
numberFunction(i, n);
cout << "Suma je: " << suma;
system("pause");
return 0;
}

Umro je Einstein, umro je Newton, ni ja se ne osjećam baš najbolje.. :(
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Možeš i ovako, zamisli n = 3

 

 

(n*2-1) / (n*2) + suma(n-1)

 

 

Dakle, na stog stavljaš 5/6 i pozivaš n=2

Zatim na stog stavljaš 3/4 i pozivš n=1

Zatim na stog stavljaš 1/2 i pozivaš n=0

Prekidaš kad je n = 0 i vraćaš 0

Vrtiš stog natrag

 

0 + 1/2

1/2 + 3/4

1/2 + 3/4 + 5/6

 

Poruka je uređivana zadnji put ned 1.2.2015 23:03 (Floki).
 
0 0 hvala 0
13 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
LUNAT1C kaže...
Stinsfire kaže...

Trebala bi mi pomoć oko dva zadatka.

 

1)Napišite program koji traži od korisnika da upiše jedan cijeli broj n , a onda izačuna koristeći rekurzivnu funkciju sumu za prvih n clanova u nizu:

1/2 + 3/4 + 5/6 + 7/8+...

 

2)(n-1)/(n*2)

 prvi bi po mome nekako isao ovako

#include <iostream>
using namespace std;
float suma=0, x;
float numberFunction(float i, float n) {
x=(n)/(n+1);
suma += x;
cout << x << endl;
n=n+2;
if(n<=i) {
numberFunction(i, n);
}
}

int main() {
float n=1;
float i;
cin >> i;
numberFunction(i, n);
cout << "Suma je: " << suma;
system("pause");
return 0;
}

 

drugi bi ovako(stavio sam ispisivanje da vidis sto kako radii u jednom i u drugom)

#include <iostream>
using namespace std;
float suma=0, x;
float numberFunction(float i, float n) {
x=(n+1)/(n*2);
suma += x;
cout << x << endl;
n++;
if(n<=i) {
numberFunction(i, n);
}
}

int main() {
float n=1;
float i;
cin >> i;
numberFunction(i, n);
cout << "Suma je: " << suma;
system("pause");
return 0;
}

 
Nisi napravio rekurziju u nijednoj funkciji?

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

Kako nisam, dodatne sam variable stavio samo da vidi sto tocno treba napravit jel vidis da ne razumije koju formulu koristit i kako, ja sam unutar svake funkcije pozvao tu funkciju (rekurz) da ide u novi korak..

Umro je Einstein, umro je Newton, ni ja se ne osjećam baš najbolje.. :(
E-mail:
Lozinka:
 
vrh stranice