^ previse si zbrljao to.
I mozes koristiti bool za provjeru.
Ovo ti je dovoljno za rijesiti zadatak:
int i,j;
bool prost;
^ previse si zbrljao to.
I mozes koristiti bool za provjeru.
Ovo ti je dovoljno za rijesiti zadatak:
int i,j;
bool prost;
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;
}
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.
#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;
}
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];
}
}
#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;
}
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.
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
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.
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
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
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;
}
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...
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...
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;
}
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;
}
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...
Auto* a = new Auto();
Zašto pointer? Onda ti nedostaje i dealokacija...
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.
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
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.
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?
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;
}
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;
});
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
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));
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;
}
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
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?
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..