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

poruka: 7.285
|
čitano: 1.721.948
|
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
rustweaver kaže...

Jesi li siguran da bas zelis na serijski, a ne paralelni (nije da ti sugeriram nesto, samo zelim biti siguran da mislimo na istu stvar)?

Da, u pitanju je fiskalna kasa koja čita samo XML fajlove, priključuje se RS232 kabelom na COM port.

Life is Computers, Tobacos, Women, Trucks, you live better?
15 godina
offline
Programiranje u C++-u - pitanja i odgovori

//U dinamičko polje učitati 10(n) brojeva.U funkciji izračunati i ispisati njihov zbroj.

using namespace std;
int suma (int broj)
{
    int sum=0;
    sum=sum+broj;
    return sum;
}

int main(int argc, char *argv[])
{
  
    int p[10],i;
    for (int i=0;i<10;i++) cin>>p[i];
    cout<<suma(p[i]);
    system("PAUSE");
    return EXIT_SUCCESS;
}

 

probao sam ovako riješit ovaj zadatak... skompajlira ga ali se crasha nakon unosa 10 brojeva... u cem je problem i kako bi vi rijesili taj zadatak

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

//U dinamičko polje učitati 10(n) brojeva.U funkciji izračunati i ispisati njihov zbroj.

using namespace std;
int suma (int broj)
{
    int sum=0;
    sum=sum+broj;
    return sum;
}

int main(int argc, char *argv[])
{
  
    int p[10],i;
    for (int i=0;i<10;i++) cin>>p[i];
    cout<<suma(p[i]);
    system("PAUSE");
    return EXIT_SUCCESS;
}

 

probao sam ovako riješit ovaj zadatak... skompajlira ga ali se crasha nakon unosa 10 brojeva... u cem je problem i kako bi vi rijesili taj zadatak

Kao prvo dva puta si deklarisao i, a drugo pa u for petlju si stavio od 0 do 10.

Life is Computers, Tobacos, Women, Trucks, you live better?
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
nani_cropes kaže...

probao sam ovako riješit ovaj zadatak... skompajlira ga ali se crasha nakon unosa 10 brojeva... u cem je problem i kako bi vi rijesili taj zadatak

Bilo bi čudno da ti se ne crasha. Zašto koristiš isti naziv varijable za dvije različite varijable? Govorim o varijabli i? Gdje si inicijalizirao prvu varijablu  i? Pazi - prvu varijablu koristiš ovjde:

 

 

nani_cropes kaže...

int main(int argc, char *argv[])
{
   
      int p[10],i;
      ...     
      cout<<suma(p[i]);
}

Drugu varijablu i koristiš ovdje:

 

 

nani_cropes kaže...

    for (int i=0;i<10;i++) cin>>p[i];

Nije mi samo jasno zašto te kompajler nije upozorio da si redeklarirao varijablu ili ti izbacio neko drugo slično upozorenje.

 

 

Osim toga, čemu ti služi funkcija suma?

 

nani_cropes kaže...

int suma (int broj)
{
      int sum=0;
      sum=sum+broj;
      return sum;
}

Što funkcija suma vraća? Nuli pribraja broj i vraća taj "broj", koji je jednak broju, zar ne? Znači, ta funkcija ti vraća broj koji ju pošalješ kao argument!

17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...
a drugo pa u for petlju si stavio od 0 do 10.

Što bi to trebalo značiti? U petlji ide od 0 do 9 (jer je uvjet < 10, a ne <= 10), znači tu je sve OK. A to što je ta varijabla  inkrementirana do 10 nema veze, jer to nema nikakve veze s onom varijablom  koja je deklarirana u glavnom bloku funkcije main.

13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
...
Life is Computers, Tobacos, Women, Trucks, you live better?
Poruka je uređivana zadnji put pet 17.5.2024 14:08 (royalhero).
15 godina
offline
Programiranje u C++-u - pitanja i odgovori

ma nekako sam polovio zadatke s poljima i s funkcijama, al ovu kombinaciju ne kuzim... moze mi neko poslozit,rijesit zadatak?

★★★★★☆
Moj PC  
0 0 hvala 0
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori

Očito nisi ništa polovio.  {#}

 

Što fali ovome?

 

int suma = 0, p[10];

for (int i=0; i<10; i++) { 
  cin>>p[i];
  suma += p[i];
}

cout<<suma;

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

ništa ne fali ali zašto bi bilo jednostavno kad može komplicirano :D

 

u zadatku se traži da se preko funkcije izračuna i ispiše suma tih brojeva.. to mene muči {#}

★★★★★☆
Moj PC  
0 0 hvala 0
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
nani_cropes kaže...

u zadatku se traži da se preko funkcije izračuna i ispiše suma tih brojeva.. to mene muči  {#}

OK, a što si ti napravio u svom kodu? Ti si funkciji suma poslao jedan nepoznati broj (u biti, nisi ni poslao, s obzirom da ti se program ruši). Dakle, deklaracija funkcije bi trebala izgledati nešto poput

 

int suma(int broj[10])

 

 

Ne znam je li to točno - ne da mi se sad pokretati kompajler, a "nisam na ti" sa slanjem polja kao argumenata. Znači, ti funkciji moraš proslijediti cijelo polje i onda funkcija mora u petlji zbrojiti vrijednosti svih članova polja.

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

int suma(int broj[], int velicina_polja)

...

Moze i preko pointera:

void foo(int *p);

int broj[10];

foo(broj);

 

Moze preko referenci:

void foo(int (&p)[10]);

int broj[10];

foo(broj);

 

Bitno je da zna koliko je veliko polje.

 

EDIT: Ovo je opcenito napisano, ne konkretno za ovo.

UNIX is very simple, it just needs a genius to understand its simplicity.
Poruka je uređivana zadnji put sri 26.10.2011 20:13 (1domagoj1).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

evo ti moje rjesenje pa prouci malo.... drugacije ti nemogu poslat 

 

lol
 
0 0 hvala 0
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Traži se dinamička alokacija niza u zadatku, a zadatak funkcije je izračun i ispis sume elemenata niza, niz predajemo funkciji preko pokazivača, pošto operator new koji služi za dinamičku alokaciju niza vraća pokazivač na alocirani niz, na kraju se oslobodi memorija operatorom delete [], cilj zadatka je očito razumjevanje dinamičke alokacije niza

 

#include<iostream>
using namespace std;


void SumaPolja(int *polje)
{
    int suma = 0;
    for(int i=0; i<10; i++)
    {
       suma += polje[i];
    }
    cout<< "Suma polja: " << suma << endl;
}
int main()
{
    int *polje = new int[10];
    for(int i=0; i<10;    i++)
    {
       cout<< "Unesi " << i+1 << ". clan polja: ";
       cin>> polje[i];
    }
    SumaPolja(polje);
    delete[] polje;
    return 0;
}

Poruka je uređivana zadnji put čet 27.10.2011 12:22 (Floki).
 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

jbga ja nisan pazio da se radi o dinamicki alociranom nizu

lol
 
0 0 hvala 0
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

@ Floki Ja bih tu još poslao funkciji i duljinu niza pa onda imamo još malo općenitije rješenje.

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
mbaksa kaže...
...

int suma(int broj[], int velicina_polja)

......
Luuka kaže...

@ Floki Ja bih tu još poslao funkciji i duljinu niza pa onda imamo još malo općenitije rješenje.

Vidi ga, kak sam gore mbaksi to ispravil, bas je lijepo ;)

The Unix philosophy basically involves giving you just enough rope to hang yourself. And then a couple of feet more, just to be sure.
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Luuka kaže...

@ Floki Ja bih tu još poslao funkciji i duljinu niza pa onda imamo još malo općenitije rješenje.

 

#include <iostream>
using namespace std;

template<class T>class Polje {
public:
    T* polje;
    int BrojElemenata;

    Polje(int n){
       BrojElemenata = n;
       polje = new T[n];
    }
    ~Polje() {
       delete[]polje;
    }
    T& operator[](int indeks) {
       return polje[indeks];
    }
};
int suma(Polje<int> p){
    int s = 0;
    for(int i = 0; i < p.BrojElemenata; s+=p[i++]);
    return s;
}
int main(){
    Polje<int> p(10);

    for(int i = 0; i < 10; cin >> p[i], i++);
    cout << "Suma niza: " << suma(p);
}

Ma tko kaže da funkciji treba predati duljinu niza {#}

Poruka je uređivana zadnji put čet 27.10.2011 20:35 (TracerCPP).
17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Eh da, ti sad tu te spike s templateima bacas :D, covjek vjerojatno nikad cuo za to :P...

The Unix philosophy basically involves giving you just enough rope to hang yourself. And then a couple of feet more, just to be sure.
 
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Luuka kaže...

@ Floki Ja bih tu još poslao funkciji i duljinu niza pa onda imamo još malo općenitije rješenje.

hmm, ukoliko alociramo dinamički niz, i trebamo, možemo preko konzole proizvoljno unositi duliinu niza, dinamički alocirati memoriju, a funkciji predati pokaživač na niz i duljinu niza.

u pravu si.

 

ovo što je tracer napravio je klasa

a može onda i list<int>

Poruka je uređivana zadnji put čet 27.10.2011 21:05 (Floki).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ma to je samo egzibicija.. tu i tamo da istegnem prste {#}. Ova gore klasa zapravo predstavlja objekt koji ima polje u sebi, dok lista bi bila niz povezanih objekata koji pokazuju jedan na drugoga (a gore je riječ samo o jednom objektu).

 

No naravno, ako govorimo o (brojevnim) poljima onda svakako uz početak polja treba predati i njegovu veličinu.

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

je, je, svaka čast, egzibicija meštra

kao škarice nekog iz Barce{#}

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

je, je, svaka čast, egzibicija meštra

kao škarice nekog iz Barce{#}

{#} Offtopic: maloprije izgubih važnu partiju šaha i morao se ispuhati. A kud ćeš bolje od programiranja (misli odlutaju).

Poruka je uređivana zadnji put čet 27.10.2011 21:14 (TracerCPP).
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ako ćemo s templateima, onda se može napravit i bez duljine niza. Znam da ima neka fora s tim, samo sam davno to koristio. Tracer ti ćeš vjerojatno znat o čem pričam :D

Ugl, koristio sam to kad se radila neka template klasa koja je u sebi imala polje , a postojao je konstruktor koji prima drugo polje proizvoljne duljine. Neka lijepa fora je s tim bila, moro bi pogledat kod, trenutno sam na poslu pa ne mogu do toga.

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Luuka kaže...

Ako ćemo s templateima, onda se može napravit i bez duljine niza. Znam da ima neka fora s tim, samo sam davno to koristio. Tracer ti ćeš vjerojatno znat o čem pričam :D

Ugl, koristio sam to kad se radila neka template klasa koja je u sebi imala polje , a postojao je konstruktor koji prima drugo polje proizvoljne duljine. Neka lijepa fora je s tim bila, moro bi pogledat kod, trenutno sam na poslu pa ne mogu do toga.

Na tu sličnu shemu radi ova gore klasa :) Sadrži polje nekog tipa a preko konstruktora prima njegovu duljinu. Zato nije potrebno funkciji predavati duljinu niza jer se ona nalazi u članskoj varijabli klase.

Poruka je uređivana zadnji put pet 28.10.2011 9:23 (TracerCPP).
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Evo našo sam taj kod :D

 

template<int N>
Veliki(int (&p)[N])
{
    duljina=N;
    predznak=1;
    for (int i=0;i<N;++i)
      if (p[i]<0 || p[i]>9) { cout<<"Greska, negativni ili viseznamenkasti brojevi u polju"; exit(1); }

    znamenke=new int[N];
    for (int i=0;i<N;++i)
      znamenke[i]=abs(p[N-i-1]); //broj je spremljen od jedinica na dalje, pa polje ubacujemo unatrag
}

Ovo čudo konstruira instancu klase Veliki (veliki broj, jel), koji je reprezentiran poljem sa znamenkama, duljinom i predznakom. A ono što je tu važno je da ovaj konstrukotor prima polje proizvoljne duljine, a tu duljinu ne navodimo explicitno kao argument funkcije. Na to sam ciljao :D

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

...

Life is Computers, Tobacos, Women, Trucks, you live better?
Poruka je uređivana zadnji put pet 17.5.2024 14:02 (royalhero).
 
0 0 hvala 1
17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ako mislis programirati, OOP je must know. Moras znati. Danas se bez OO-a prakticki nista ne programira (osim nekih stvari, ponajvise vezanih uz operacijske sustave i tako to).

The Unix philosophy basically involves giving you just enough rope to hang yourself. And then a couple of feet more, just to be sure.
 
1 0 hvala 1
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Da, bez OOP nema kruha u programiranju. Čak i bilo kakav ozbiljniji PHP ide preko klasa, a kamoli pisanje nekih aplikacija.

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

...

Life is Computers, Tobacos, Women, Trucks, you live better?
Poruka je uređivana zadnji put pet 17.5.2024 14:07 (royalhero).
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...

Ali nekontam zašto bih učio OOP, imate li neke razloge?
Teoretski znam problem podjeli na više manjih i onda se riješava jedan po jedan, ali šta je to ustvari.

Zato da se ufuraš u taj način razmišljanja koji je jako bitan ako ikad misliš radit nešto ozbiljnije. Objektno programiranje je budućnost bilo kakvog programiranja, u bilo kojem programskom jeziku, što god da radio. Tako pisane kodove lakše je mijenjat, lakše je održavat, lakše je upgradeat, lakše je nekom drugom nastavit tvoj posao, lakše je tebi nastavit tuđi posao... milijun je prednosti...

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
E-mail:
Lozinka:
 
vrh stranice