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.
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.
//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
//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.
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 i koristiš ovjde:
int main(int argc, char *argv[])
{
int p[10],i;
...
cout<<suma(p[i]);
}
Drugu varijablu i koristiš ovdje:
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?
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!
Š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 i inkrementirana do 10 nema veze, jer to nema nikakve veze s onom varijablom i koja je deklarirana u glavnom bloku funkcije main.
ma nekako sam polovio zadatke s poljima i s funkcijama, al ovu kombinaciju ne kuzim... moze mi neko poslozit,rijesit zadatak?
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;
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
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.
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.
evo ti moje rjesenje pa prouci malo.... drugacije ti nemogu poslat
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;
}
jbga ja nisan pazio da se radi o dinamicki alociranom nizu
@ Floki Ja bih tu još poslao funkciji i duljinu niza pa onda imamo još malo općenitije rješenje.
int suma(int broj[], int velicina_polja)
......@ 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 ;)
@ 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
Eh da, ti sad tu te spike s templateima bacas :D, covjek vjerojatno nikad cuo za to :P...
@ 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>
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.
je, je, svaka čast, egzibicija meštra
kao škarice nekog iz Barce
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).
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.
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.
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
...
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).
Da, bez OOP nema kruha u programiranju. Čak i bilo kakav ozbiljniji PHP ide preko klasa, a kamoli pisanje nekih aplikacija.
...
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...