3.6.2010, 16:15 | #1 |
Član
Član od: 14.4.2006.
Poruke: 103
Zahvalnice: 1
Zahvaljeno 8 puta na 8 poruka
|
c++ zadatak
Radi se o problemu mreznog transporta, tj imam n cvorova, svaki cvor ima svoj "neki" broj, tj ponudu NECEGA ako je broj pozitivan, i potraznju NECEGA ako je broj negativan. Postoje grane izmedju cvorova (broj tih grana je izmedju n-1 i n*(n-1)/2) i putem tih grana mogu se transportovati te jedinice NECEGA. Svaka grana ima svoju cenu transporta po jedinici robe, i zadaci mreznog protoka se baziraju na problemu pronalazenja minimalne cene koju je potrebno platiti da bi svi cvorovi imali svoju potraznju tj ponudu 0. Tj iz svih cvorova koji imaju ponudu +3, da te tri jedinice odu u one cvorove gde je minus, i da se tako kompenzuju na nulu.
Imam zadatak da ucitam iz txt fajla neke brojeve. Input bi dakle bio ovako nesto: " 1,2; 1 2,4; 2 4.1; 3 1,4; 2 1 -2 -4 5 " Cvorovi su oznaceni brojevima, pretpostavimo npr da ih ima 4. Ono sto karakterise grane, su pocetni cvor, krajnji cvor i cena transporta tom granom. Ovde gore su 1,2 pocetna i krajnja tacka grane jedan itd....... 1 2 3 2 su cene transporta tim granama.... dole 1 -2 -4 5 su ponude i potraznje ta 4 cvora... e sad, moj zadatak je da ovo gore bude ukucano u txt fajlu, a da c++ ucita te brojeve u promenljive. Inace, te promenljive ce biti prosledjene listi, jer su mi za zadatak potrebne 2 liste... prva lista je lista cvorova, koja ce imati jedan "sadrzaj"=ponudu i pokazivac a druga lista je lista grana, koja ce imati 3 "sadrzaja", pocetnu tacku, krajnju tacku i cenu. Ako postoji mogucnost da se ti brojevi direktno ucitaju u liste bilo bi super, ali ja nisam nesto vican programiranju, pa sam dosao do zakljucka da je lakse prvo staviti u promenljive, a zatim vrednost tih promenljivih redom smestiti u liste, pa sa njima dalje raditi sta vec treba. Ima li neko ideju kako to uraditi? Ocajni student. |
3.6.2010, 16:54 | #2 |
Član
Član od: 16.4.2010.
Lokacija: Pančevo
Poruke: 462
Zahvalnice: 41
Zahvaljeno 68 puta na 63 poruka
|
Re: c++ zadatak
Nisam baš siguran, ali ovo mi liči na enumeraciju kolekcija iz generičke klase Enumerable, ili pak možda grešim.
|
3.6.2010, 17:09 | #3 |
Član
Član od: 14.4.2006.
Poruke: 103
Zahvalnice: 1
Zahvaljeno 8 puta na 8 poruka
|
Re: c++ zadatak
|
3.6.2010, 18:18 | #4 |
Član
Član od: 16.4.2010.
Lokacija: Pančevo
Poruke: 462
Zahvalnice: 41
Zahvaljeno 68 puta na 63 poruka
|
Re: c++ zadatak
Malo je kompleksno, moras prvo da naucis kako se prave i koriste generičke klase i metode. Sa njima možeš da praviš čvorove kao što si zamislio.
evo ti linkovi http://www.codeproject.com/KB/mcpp/cppcligenerics.aspx i http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx za početak. |
3.6.2010, 18:58 | #5 |
Starosedelac
Član od: 27.12.2005.
Lokacija: Pančevo
Poruke: 1.303
Zahvalnice: 63
Zahvaljeno 438 puta na 328 poruka
|
Re: c++ zadatak
Znači ako sam dobro razumeo, tvoj problem je samo učitavanje podataka iz fajla a ne i rešavanje problema mrežnog transporta? Rešavanje problema mrežnog transporta znaš da uradiš?
E to je već malo opširna tema. Parsiranje, tako se zove ono što tebi treba, je cela nauka. Elem: 1) Ako imaš slobodu u izboru formata fajla, onda možeš da koristiš neku gotovu biblioteku/klasu koja će da ti podatke upisuje/čita iz fajla u, recimo, nakom XML obliku. U tom slučaju potraži na internetu takvu klasu/biblioteku. Nemam ništa konkretno da ti predložim. Da koristiš Javu, Properties ili Preferencies klase bi ti odlično poslužile. 2) Ako ti je format fajla unapred zadat, onda moraš da pišeš svoj parser. Kod komplikovanih formata fajlova, obično se koriste alati za izradu leksera i parsera. Za C\C++ obično se koriste Lex + Bison. Problem je što te alate moraš da znaš da koristiš i izrada ovoga što tebi treba bi poprilično potrajala. S obzirom da je format tvog fajla poprilično jednostavan, najbolji izbor je da praviš svoj ad-hoc parser. Evo kako ćeš: a) Utvrdi koje karaktere iz fajla treba da ignorišeš (space, newline). b) Utvrdi koji karakteri ti predstavljaju delimetre, odnosno karaktere koji ti razgraničavaju tzv. tokene. U tvom primeru gore karakteri ',' ';' i newline bi ti predstavljali delimetre. c) Utvrdi šta su ti tokeni, odnosno delovi podataka iz fajla koji nose neku informaciju i koje treba učitati. Kod tebe su to celi brojevi, sa ili bez znaka. Znači, recimo, '-12', '3', '55' su tebi tokeni. d) Definisaćeš stanja svog parsera. Stanje možeš da predstaviš po želji a obično je jedna int promenljiva sasvim dovoljna, kojoj ćeš da dodeljuješ vrednosti, recimo 0 do (broj_stanja - 1). U svakom stanju parser se drugačije ponaša kada učita karaktere iz fajla. Tok parsiranja za format koji si gore naveo ti sada ide ovako: a) Parser staviš u početno stanje (0). Čitaš karakter po karakter i smeštaš u string. Kada naletiš na delimeter (,), prestaješ sa čitanjem, vrednost u stringu (token) konvertuješ u int (atoi(), stoi()), staviš u promenljivu, parser staviš u stanje 1. b) Sada ponovo radiš isto ali učitavaš do ';' delimetra i vrednost smeštaš u novu promenljivu. Parser stavljaš u stanje 2. c) U sledećem koraku ponovo radiš isto ali čitaš do newline-a, ignorišući space ispred, i vrednost stavljaš u novu promenljivu. U ovom trenutku si cela jedna linija fajla je parsirana. Tri promenljive koje su učitane sada smeštaš u listu ili kakvu god strukturu podataka koristiš za svoje potrebe. Parser stavljaš u stanje 0 i ideš sve iz početka sa novom linijom. Kao što vidiš, stanje parsera ti određuje koji delimeter ti određuje kada je kraj učitavanja, određuje ti promenljivu u koju treba smestiti učitanu vrednost i određuje ti dokle se stiglo sa učitavanjem jedne linije. Kad dođeš do prazne linije, one što ti razdvaja potraživanja, parser stavljaš u neko novo stanje (3?) i zatim na sličan način učitavaš i sledeće vrednosti. Jedno posebno stanje parsera možeš da koristiš kao stanje greške (recimo -1). To će ti služiti u slučaju kada se karakteri koji su učitani ne slažu sa onim što se očekuje. Recimo neka od gornjih linija bi mogla da glasi " 2,3.4; bla " što je neregularno i što bi parser morao nekako da prevaziđe ako želiš da nastavi rad. Veoma komplikovana tema i ne očekujem da razumeš ovo što sam poprilično šturo opisao. Jednostavno nema lakog načina. |
3.6.2010, 19:30 | #6 |
Član
Član od: 14.4.2006.
Poruke: 103
Zahvalnice: 1
Zahvaljeno 8 puta na 8 poruka
|
Re: c++ zadatak
Za pocetak treba samo da ucitam te podatke iz fajla i odgovarajuce podatke smestim u odgovarajuce liste. Ne treba da resavam ceo problem mreznog transporta.
Sto se tice liste, imam vec napravljenu gotovu jednospregnutu listu koja izgleda ovako: Kod:
#ifndef LIST_DEF #define LIST_DEF #include <stdlib.h> #include <iostream> using namespace std; template <class T> class List{ private: struct listEl{ T content;//sadrzaj T content2; struct listEl *next;//pokazivac na sledeci elemenat }; listEl *head;//prvi element liste(glava liste) listEl *tail;//nije lose za imati, moze povecati upotrebljivost strukture int noEl; public: List(){ head=tail=NULL; noEl=0; } List(const List<T> &);//konstruktor kopije List<T>& operator=(const List<T>&);//prekloplen operator = virtual ~List(); int size() const {return noEl;}//broj elemenata u liste bool empty() const {return head==NULL?1:0;} bool add(int, const T&); bool remove(int);//brisanje elementa iz liste bool read(int, T&)const; //ocitani element se smesti u T - funkcija vraca uspelo-neuspelo void clear(); }; template <class T> ostream& operator<<(ostream & out, const List<T> &l){ out<<endl; out<<"--------"<<endl; for(int i=1;i<=l.size();i++){ if(i!=1) out<<", "; T res; l.read(i,res); out<<res; } out<<endl<<"--------"<<endl; return out; } template <class T> List<T>::List(const List<T> &l){ head=NULL;tail=NULL; noEl=0; for(int i=1;i<=l.noEl;i++){ T res; if(l.read(i,res)) add(i,res); } } template <class T> List<T>& List<T>::operator=(const List<T> &l){ if(this!=&l){ clear(); head=NULL;tail=NULL; noEl=0; for(int i=1;i<=l.noEl;i++){ T res; if(l.read(i,res)) add(i,res); } } return *this; } template <class T> List<T>::~List(){ while(!empty()){ remove(1); } } template <class T> bool List<T>::add(int n, const T& newContent){ bool isempty=empty(); if(n<1 || (!isempty && n>noEl+1)) return false; else{ listEl *newEl=new listEl; if(newEl==NULL) return false; else{ newEl->content=newContent; if(n==1){ newEl->next=head; head=newEl; }else if(n==noEl+1){ //novi ide na kraj liste newEl->next=NULL; tail->next=newEl; }else{ listEl *temp=head; for(int i=2;i<n;i++) temp=temp->next; newEl->next=temp->next; temp->next=newEl; } noEl++; if(newEl->next==NULL) //znaci da je novi element zakacen na kraj liste tail=newEl; return true; } } } template <class T> bool List<T>::remove(int n){ if(empty() || n<1 || n>noEl) return false; else{ if(n==1){ listEl *temp=head; head=head->next; delete temp; noEl--; }else{ listEl *temp=head; for(int i=2;i<n;i++) temp=temp->next; listEl *del=temp->next; temp->next=del->next; if(tail==del) //znaci brise se poslednji tail=temp; //setovati tail na trenutni pretposlednji element delete del; noEl--; } return true; } } template <class T> bool List<T>::read(int n,T& retVal)const{ if(empty() || n<1 || n>noEl) return false; else{ if(n==1) retVal=head->content; else if(n==noEl) retVal=tail->content; else{ listEl *temp=head; for(int i=1;i<n;i++) temp=temp->next; retVal=temp->content; } return true; } } template <class T> void List<T>::clear(){ while(!empty()){ remove(1); } } #endif Kod:
#include <iostream> #include <fstream> #include <string> #include "list.hpp" using namespace std; int main () { int n,i=0; cout<<"Unesite broj cvorova:"<<endl; cin>>n; int a[n*(n-1)/2],b[n*(n-1)/2],c[n*(n-1)/2]; //nizovi za smestanje pocetnih i krajnjih cvorova grana i cene grana int d[n]; //niz ponuda i potraznji (maksimalno moze biti koliko i cvorova) int m=0; List<int> cvorovi; List<double> grane; char chars; //promenljiva chars koja sluzi za jedenje znakova izmedju brojeva ifstream inFile; char inputFilename[] = "input.txt"; inFile.open(inputFilename, ios::in); if (!inFile) { cerr << "Nije moguce otvoriti fajl" << inputFilename << endl; exit(1); } while (inFile>>a[i] >> chars >> b[i] >> chars >> c[i]) { cout<<a[i]<<b[i]<<c[i]<<endl; i++; } for (i=0; i<5; i++) { cout<<a[i]<<", "<<b[i]<<", "<<c[i]<<endl; cout<<"======================================="<<endl; } inFile.close(); cvorovi.add(1,4); cvorovi.add(2,3); cout<<cvorovi<<endl; } Ali sad imam problem sa ucitavanjem dela txt fajla koji je posle novog reda. Ne znam kako sad to da ucitam u niz d[m] npr. Ovo za cvorove i grane na kraju sam samo probavao da li radi lista. Da li mislite da se ovo moze ovako odraditi? I kako ucitati ostatak? Napominjem da imam samo ovaj jedan zadatak, tj samo sada radim ovo sa fajlovima, i format u txt fajlu je uvek ovakav. |
3.6.2010, 22:16 | #7 |
Član
Član od: 14.4.2006.
Poruke: 103
Zahvalnice: 1
Zahvaljeno 8 puta na 8 poruka
|
Re: c++ zadatak
Za drugara koji mi je objasnio alforitam, moze ovako?
Kod:
do { switch(p) { case 0: getline(inFile,pomocna,';'); a[i]=integer(pomocna); i++; p=1; break; case 1: getline(inFile,pomocna,','); b[j]=integer(pomocna); j++; p=2; break; case 2: getline(inFile,pomocna,'\n'); c[k]=integer(pomocna); k++; if (inFile.peek()=='\n') { p=3; } else { p=0; } break; case 3: while (!EOF) { getline(inFile,pomocna,'\n'); d[m]=integer(pomocna); m++; p=3; break; } p=4; break; }} while (p!=4); |
4.6.2010, 0:45 | #8 |
Član
Član od: 14.4.2006.
Poruke: 103
Zahvalnice: 1
Zahvaljeno 8 puta na 8 poruka
|
Re: c++ zadatak
Malo sam popravio ovaj zadnji case 3 ali nece da mi ocita ove cifre sto su posle reda pauze
Ako mozes bvitnik da mi pomognes, ne znam da li je dobar ovaj uslov u case 2: Kod:
if (inFile.peek()=='\n') { p=3; } else { p=0; } ps: ubija me ovo ceo dan, nikako bar da unesem cifre, a liste jos nisam ni krenuo da radim |
4.6.2010, 3:06 | #9 |
Starosedelac
Član od: 27.12.2005.
Lokacija: Pančevo
Poruke: 1.303
Zahvalnice: 63
Zahvaljeno 438 puta na 328 poruka
|
Re: c++ zadatak
To bi u principu trebalo da bude to. Nažalost nemam vremena da detaljno gledam kod i testiram ga a kamoli da debagujem jer i sam radim na dva projekta za faks i u škripcu sam sa vremenom.
Osnove sam ti objasnio, samo nastavi. |
4.6.2010, 10:35 | #10 |
Član
Član od: 14.4.2006.
Poruke: 103
Zahvalnice: 1
Zahvaljeno 8 puta na 8 poruka
|
Re: c++ zadatak
Ok, falio je samo 1 getline u case 2 u uslovu da bih preskocio taj prazan red. Sada radi.
|
4.6.2010, 11:10 | #11 |
Član
Član od: 3.5.2006.
Lokacija: Beograd
Poruke: 101
Zahvalnice: 11
Zahvaljeno 11 puta na 10 poruka
|
Re: c++ zadatak
Lepo je to sto si uneo podatke, ali i dalje ti ostaje osnovni problem da resis: trazenje minimalne cene transporta.
Nisam se previse upustao u problem, ali mi na prvi pogled opasno smrdi da se resava Madjarskom metodom: http://en.wikipedia.org/wiki/Hungarian_algorithm Mada to je prilicno napredna tema. Na kom si faksu? I zaboravi na generike, to se radi samo sa tonom vektora za svaki property po jedan (C nacin) ili jednim vektorom objekata sa property-ima(C++ nacin). |
4.6.2010, 12:14 | #12 |
Član
Član od: 14.4.2006.
Poruke: 103
Zahvalnice: 1
Zahvaljeno 8 puta na 8 poruka
|
Re: c++ zadatak
Na Fakultetu Tehnickin nauka. Nije mi zadatak da resim problem minimalnog transporta, nego da samo napravim "podlogu" za resavanje, tj treba sad ove podatke iz txt fajla koje sam smestio u nizove da prebacim u 2 liste, na taj nacin da se posle sa tim listama moze operisati, da li madjarskim metodom, da li metodom severozapadnog ugla, ili fogelovom, nije ni bitno.
Prva lista je lista cvorova, a svaki cvor je okarakterisan jednim integerom (ponudom ili potrebom). Pored tog sadrzaja element liste sadrzi samo 1 pokazivac na sledeci element i to je to. E sad, problem mi je druga lista, lista grana, jer je svaka grana okarakterisana pocetnim cvorom, krajnjim cvorom i cenom transporta, sto znaci da svaki element liste treba da sadrzi 3 podatka, tj 2 integera i 1 double i naravno pokazivac. Ne znam kako da realizujem drugu listu, a prvu sam realizovao ovako: Kod:
#ifndef LIST_DEF #define LIST_DEF #include <stdlib.h> #include <iostream> using namespace std; template <class T> class List{ private: struct listEl{ T content;//sadrzaj struct listEl *next;//pokazivac na sledeci elemenat }; listEl *head;//prvi element liste(glava liste) listEl *tail;//nije lose za imati, moze povecati upotrebljivost strukture int noEl; public: List(){ head=tail=NULL; noEl=0; } List(const List<T> &);//konstruktor kopije List<T>& operator=(const List<T>&);//prekloplen operator = virtual ~List(); int size() const {return noEl;}//broj elemenata u liste bool empty() const {return head==NULL?1:0;} bool add(int, const T&); bool remove(int);//brisanje elementa iz liste bool read(int, T&)const; //ocitani element se smesti u T - funkcija vraca uspelo-neuspelo void clear(); }; template <class T> ostream& operator<<(ostream & out, const List<T> &l){ out<<endl; out<<"--------"<<endl; for(int i=1;i<=l.size();i++){ if(i!=1) out<<", "; T res; l.read(i,res); out<<res; } out<<endl<<"--------"<<endl; return out; } template <class T> List<T>::List(const List<T> &l){ head=NULL;tail=NULL; noEl=0; for(int i=1;i<=l.noEl;i++){ T res; if(l.read(i,res)) add(i,res); } } template <class T> List<T>& List<T>::operator=(const List<T> &l){ if(this!=&l){ clear(); head=NULL;tail=NULL; noEl=0; for(int i=1;i<=l.noEl;i++){ T res; if(l.read(i,res)) add(i,res); } } return *this; } template <class T> List<T>::~List(){ while(!empty()){ remove(1); } } template <class T> bool List<T>::add(int n, const T& newContent){ bool isempty=empty(); if(n<1 || (!isempty && n>noEl+1)) return false; else{ listEl *newEl=new listEl; if(newEl==NULL) return false; else{ newEl->content=newContent; if(n==1){ newEl->next=head; head=newEl; }else if(n==noEl+1){ //novi ide na kraj liste newEl->next=NULL; tail->next=newEl; }else{ listEl *temp=head; for(int i=2;i<n;i++) temp=temp->next; newEl->next=temp->next; temp->next=newEl; } noEl++; if(newEl->next==NULL) //znaci da je novi element zakacen na kraj liste tail=newEl; return true; } } } template <class T> bool List<T>::remove(int n){ if(empty() || n<1 || n>noEl) return false; else{ if(n==1){ listEl *temp=head; head=head->next; delete temp; noEl--; }else{ listEl *temp=head; for(int i=2;i<n;i++) temp=temp->next; listEl *del=temp->next; temp->next=del->next; if(tail==del) //znaci brise se poslednji tail=temp; //setovati tail na trenutni pretposlednji element delete del; noEl--; } return true; } } template <class T> bool List<T>::read(int n,T& retVal)const{ if(empty() || n<1 || n>noEl) return false; else{ if(n==1) retVal=head->content; else if(n==noEl) retVal=tail->content; else{ listEl *temp=head; for(int i=1;i<n;i++) temp=temp->next; retVal=temp->content; } return true; } } template <class T> void List<T>::clear(){ while(!empty()){ remove(1); } } #endif |
4.6.2010, 16:39 | #13 |
Starosedelac
Član od: 27.12.2005.
Lokacija: Pančevo
Poruke: 1.303
Zahvalnice: 63
Zahvaljeno 438 puta na 328 poruka
|
Re: c++ zadatak
Umesto generičkih tipova (int, double), listi proslediš strukturu ili klasu koja sadrži 2 ili 3 polja, koliko ti već treba, odgovarajućih tipova.
Znači ovako nešto: Kod:
struct grana { int cvor1, cvor2; double cena; }; //posle toga negde u kodu List<grana> grane = new List<grana>(); struct grana grana1 = new struct grana; grana1->cvor1 = 1; grana1->cvor2 = 2; grana1->cena = 3; grane->add(0, grana1); |
5.6.2010, 0:20 | #14 |
Član
Član od: 14.4.2006.
Poruke: 103
Zahvalnice: 1
Zahvaljeno 8 puta na 8 poruka
|
Re: c++ zadatak
Uf sad si me malo zbunio sa ovim imenima
Da li moze kratko objasnjenje sta radi koja linija koda? |
5.6.2010, 2:41 | #15 |
Član
Član od: 14.4.2006.
Poruke: 103
Zahvalnice: 1
Zahvaljeno 8 puta na 8 poruka
|
Re: c++ zadatak
Ok, shvatio sam ovo poslednje, i uspeo sam da ubacim sve podatke u te 2 liste.
Samo jedno pitanje? Moze li ovako: Kod:
List<Grana> grane; Grana grana1; for (i=1; i<=k; i++) { grana1.cvor1=a[i-1]; grana1.cvor2=b[i-1]; grana1.cena=c[i-1]; grane.add(i,grana1); } Zbog cega si kod add funkcije stavio poziciju "0" ako brojanje elemenata liste pocinje od 1, koliko ja znam? Ili gresim? Sad mi je problem ispis liste sa granama, jer za nju ne postoji preklopljen operator<< nego se izgleda mora prolaziti sa iteratorom kroz elemente?? ovako nesto: Kod:
for(i=grane.begin(); i != grane.end(); i++) cout << (*i).x << " "; |
6.6.2010, 21:51 | #16 | ||
Starosedelac
Član od: 27.12.2005.
Lokacija: Pančevo
Poruke: 1.303
Zahvalnice: 63
Zahvaljeno 438 puta na 328 poruka
|
Re: c++ zadatak
Citat:
0 je greška. Pretpostavio sam da se elementi liste indeksiraju od 0 a ne od 1. Citat:
|
||
7.6.2010, 12:15 | #17 |
Član
Član od: 14.4.2006.
Poruke: 103
Zahvalnice: 1
Zahvaljeno 8 puta na 8 poruka
|
Re: c++ zadatak
Pa da, preklopljen je taj operator, ali nece da radi ako se listi prosledi klasa, vec samo int, double itd.
Za ispisivanje liste sa granama sam iskoristio funkciju "read" ali je potrebno vise koda no dobro, nema veze. Evo imam jos samo 1 zadatak... hehe... potrebno je sad da izaberem od svih grana koje sam uneo one grane koje mogu ciniti pokrivajuce stablo. Nije ni vazno sta je pokrivajuce stablo, uglavnom algoritam je ovakav: Krenem od cvora 1, i trazim grane kod kojih je x.cvor1 == 1 ili x.cvor2==1 gde je x objekat klase Grana u koji sam ucitao tekuci element (granu) liste. Prvu granu koja ispunjava uslov treba da ispise, i da uzme njen drugi cvor, tj cvor koji nije 1, neka to bude 3. Sad ponovo krece od trojke, i kao i u prvom slucaju trazi grane kod kojih je x.cvor1==3 || x.cvor2==3 ali ne sme da to bude grana 1;3 ili 3;1 jer bi se vratili ponovo u tacku 1, a to ne sme. I tim algoritmom, treba da prodjem kroz sve grane. Ako se u nekoj tacki dodje do zakljucka da ne postoji x.cvor1=='neki broj' || x.cvor2=='neki broj' onda se ispisuje da nije moguce naci pokrivajuce stablo. Naizgled deluje jednostavno. Ja se ubih smisljajuci petlje za ovo, ali nikako ne uspevam da se iskobeljam. Kao dosta iskusniji, imas li ideju kako bi se ovo resavalo? |
7.6.2010, 14:58 | #18 |
Novi član
Član od: 11.12.2008.
Poruke: 20
Zahvalnice: 17
Zahvaljeno jedanput na jednoj poruci
|
Re: c++ zadatak
Mozes backtrackom, s tim da obelezis cvorove koje si posetio. To ti je najlakse ali verovatno moze optimalnije, rekurentno.
|
7.6.2010, 20:01 | #19 |
Starosedelac
Član od: 27.12.2005.
Lokacija: Pančevo
Poruke: 1.303
Zahvalnice: 63
Zahvaljeno 438 puta na 328 poruka
|
Re: c++ zadatak
|
7.6.2010, 22:37 | #20 |
Član
Član od: 14.4.2006.
Poruke: 103
Zahvalnice: 1
Zahvaljeno 8 puta na 8 poruka
|
Re: c++ zadatak
To mi je jasno. Hteo sam reci, ako ispisem samo:
Kod:
cout<<neka_lista<<endl; Kod:
ime_klase g; neka_lista.read(i+1,g); cout<<g<<endl; Kod:
ime_klase g; neka_lista.read(i+1,g); cout<<g.cvor1<<endl; cout<<g.cvor2<<endl; cout<<g.cena<<endl; |
Bookmarks sajtovi |
Alatke vezane za temu | |
Vrste prikaza | |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Zadatak iz matematike... | Down Force | Brbljaonica | 84 | 29.6.2010 12:39 |
Početni zadatak u VB-u | de facto | Programiranje | 1 | 29.4.2009 18:17 |
Kviz na Pinku - matematički zadatak! | stevan10 | Brbljaonica | 15 | 18.3.2009 13:00 |
Qbasic zadatak | Gradimir | Programiranje | 9 | 14.3.2009 9:03 |
Jedan zadatak u C-u | RuSkO_17 | Programiranje | 18 | 17.11.2008 17:30 |