|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
2.6.2013, 9:59 | #221 |
Član
Član od: 18.4.2012.
Poruke: 46
Zahvalnice: 13
Zahvaljeno 4 puta na 4 poruka
|
Re: How to... C++
//Napisati funkciju koja kao parametre ima dva niza znakova i kopira prvi u drugi
Kod:
#include <string.h> #include <iostream> #include "stdafx.h" #define MAX 50 void kopiranje (char prvi[], char drugi[]) { int i=0; while(prvi[i]) { drugi[i]=prvi[i]; i++; } drugi[i]='\0'; } void main() { int i=0, c; char prvi[MAX], drugi [MAX]; printf("Unesite niz karaktera:"); c=getchar(); while(c!=EOF && i<MAX){ prvi[i]=c; i++; c=getchar(); } prvi[i]='\0'; kopiranje(prvi,drugi); printf("\nprvi: %s\n\ndrugi: %s", prvi, drugi); system("pause"); } Kada pokrenem program, unesem niz karaktera ali mi ne kopira jedan u drugi, vec mi prikaze isto ono sto sam i uneo. Gde je greska? |
2.6.2013, 11:27 | #222 | |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: How to... C++
Citat:
Najsigurnije ti je da uradis unos sa fgets funkcijom: Kod:
fgets(prvi, MAX, stdin); |
|
2.6.2013, 12:03 | #223 |
Član
Član od: 18.4.2012.
Poruke: 46
Zahvalnice: 13
Zahvaljeno 4 puta na 4 poruka
|
Re: How to... C++
A to ubacujem gde tacno?
Poslednja ispravka: Andross (2.6.2013 u 12:23) Razlog: cemu citat ako direkt odgovaras |
2.6.2013, 12:23 | #224 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: How to... C++
U serious?
Koji deo koda ti je relevantan za unos u prvi niz? |
2.6.2013, 12:46 | #225 |
Član
Član od: 18.4.2012.
Poruke: 46
Zahvalnice: 13
Zahvaljeno 4 puta na 4 poruka
|
Re: How to... C++
|
2.6.2013, 13:12 | #226 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: How to... C++
Moras ovo resiti sam. Idi liniju po liniju kroz kod i zapitaj se za svaku pojedinacno zasto ti treba.
|
2.6.2013, 14:50 | #227 | |
Starosedelac
|
Re: How to... C++
Citat:
|
|
24.6.2013, 11:51 | #228 |
Član
Član od: 6.2.2012.
Poruke: 151
Zahvalnice: 87
Zahvaljeno 60 puta na 40 poruka
|
Re: How to... C++
jel moze neko da mi pokaze kako ovaj deo koda:
Kod:
posl = (!prvi ? prvi : posl->sled) = novi; mislim da je ovako, ali nisam siguran: Kod:
if(!prvi) posl=prvi=novi; else posl=posl->sled=novi; |
24.6.2013, 12:10 | #229 |
V.I.P. Programiranje
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
|
Re: How to... C++
da, pravilno si napisao.
bitno je i da shvatis sta tu pise. kod prvo proverava da li postoji prvi element liste. (prvi je pokazivac ka elementu liste) ako ne postoji ni jedan element, znaci da je lista prazna i da je taj objekat koji upravo dodajes u stvari prvi objekat. u tom slucaju prvi = novi, jer smo dodali prvi a ako nije prvi, nego vec imamo neki koji je u listi, onda na taj koji je DO SADA bio poslednji, dodamo da je ovaj koji ubacujemo sledeci. dakle, ako imamo vec poslednji (nije prazna lista) onda radimo poslednji->sled = novi. i na kraju, bez obzira da li si novi element dodao u praznu listu ili u listu koja vec ima clanove, svakako ce taj novi biti i poslednji, jer je poslednji ubacen. mozda ti je jasnije ako se napise ovako: Kod:
if (!prvi) { prvi = novi; } else { poslednji->sled = novi; } //ovo je izbaceno napolje jer se svakako izvrsava: poslednji = novi; P.S. pozdravi mi lasla |
Sledeći korisnik se zahvaljuje korisniku irreal na korisnoj poruci: | ||
Twisterzemun (24.6.2013) |
24.6.2013, 12:38 | #230 |
Član
Član od: 6.2.2012.
Poruke: 151
Zahvalnice: 87
Zahvaljeno 60 puta na 40 poruka
|
Re: How to... C++
|
24.6.2013, 15:14 | #231 |
V.I.P. Programiranje
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
|
Re: How to... C++
samo bi klaslo rado spakovao 8 linija u jednu sa ternary if operatorom na kolokvijumima i domacim zadacima studentima koji tek uce c++
|
Sledeći korisnik se zahvaljuje korisniku irreal na korisnoj poruci: | ||
Geomaster (24.6.2013) |
24.6.2013, 15:33 | #232 |
V.I.P. Programiranje
|
Re: How to... C++
Klaslo? Haha, priceless.
Inače, zašto Kod:
posl = (!prvi ? prvi : posl->sled) = novi; Kod:
posl = (prvi ? posl->sled : prvi) = novi; |
24.6.2013, 15:40 | #233 |
V.I.P. Programiranje
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
|
Re: How to... C++
Uradio sam dosta kolokvijuma i domacih zadataka, (i ako licno nikada u zivotu nisam bio student kod klasla, ali dosta drugara jeste) i jos uvek ne mogu da se odlucim da li pokusava odmah da nauci studente efikasno i kvalitetno ili pokusava da im zagorca zivot.
tanka je linija tu, a on balansira po njoj npr, u ovom slucaju, zamka je u tome sto je "prvi" naravno pointer ka clanu liste i postoji van konteksta ove funkcije (koja inace dodaje novi element u listu). Pocetnik u programiranju moze da procita Kod:
if (prvi) { } za pocetnike definitivno mala zamka kad se cita ako se ne razmisli dobro. mislim da je obrnuo upravo da bi prvi deo if bloka bio slucaj kada jeste prvi a drugi kada nije. Opet, ne znam kolko ce studenata razumeti zasto je to tako, a kolko cujem asistenti na predavanjima nisu od velike pomoci niti velikog razumevanja. Greota... Inace, kako drugacije, Laslo Kraus - Klaslo |
24.6.2013, 16:17 | #234 |
Član
Član od: 6.2.2012.
Poruke: 151
Zahvalnice: 87
Zahvaljeno 60 puta na 40 poruka
|
Re: How to... C++
Пројектовати и реализовати на језику c++ следеће класе:
Генерички низ може да садржи задат број података неког типа. Може да се дохвати капацитет низа, број попуњених места и податак задатог редног броја, да се ставља податак на прво слободно место, да се капацитет низа повећа за задат број места и да се низ упише у излазни ток. Ову класу треба користити за ускладиштавање скупова података у каснијим класама и доноси 10 бонус поена преко номиналних 100. Предмет има једнословну ознаку врсте предмета. Може да се одреди запремина и тежина предмета, да се направи полиморфна копија предмета, да се испита да ли су два предмета једнака и да се предмет упише у излазни ток. Пише се ознака врсте предмета. Тело је хомоген предмет одређене специфичне тежине. У излазни ток се пишу ознака врсте предмета и специфична тежина тела. Сфера, ваљак и купа су тела. У излазни ток се пишу ознака врсте, специфична тежина и димензије. Склоп је предмет састављен од произвољног броја предмета произвољне врсте. Ствара се празан, после чега предмети се додају појединачно. У излазни ток се пишу подаци о садржаним предметима. Складиште може да садржи задат број предмета до задате укупне запремине и тежине. Предмети се стављају појединачно на прво слободно место. Може да се извади први предмет који је једнак задатом предмету као узорку. Списак садржаних предмета може да се упише у излазни ток. Радник има име. Сви радници морају да имају различита имена. Не сме да се прави копија радника. Радник може да производи предмет копирањем задатог предмета и да га одмах стави у задато складиште (предмет и складиште се не задају у моменту производње). Предмет чија копија се прави и складиште у које се копија ставља може да се промени. У радионици може бити запошљен задат број радника, садржи једно складиште и низ предмета који се користе као оригинали за производњу. Број радних места, величина складишта и низ предмета за производњу задају се приликом стварања радионице. Може да се запосли радник на прво слободно радно место, да се радник са задатим именом отпушта, да му се придружи предмет чије копије треба да производи и складиште у које треба да ставља своје производе. Може да се продаје предмет из складишта који је једнак задатом узорку. Сви подаци о радионици (списак запослених раднинка, списак предмета које производи и садржај складишта) могу да се упишу у излазни ток. ------------------------------------------------------------- Ovo je domaci zadatak kod Klasla iz Objektnog Programiranja 1. Ja sam dosao do skladista, i imam problem sa dodavanjem, oduzimanjem i ispisivanjem skladista, izbacuje mi gresku: i ceo dan pokusavam da sredim ovo i ne ide, zato molim za pomoc. Poslednja ispravka: Twisterzemun (24.6.2013 u 16:28) |
24.6.2013, 16:18 | #235 |
Član
Član od: 6.2.2012.
Poruke: 151
Zahvalnice: 87
Zahvaljeno 60 puta na 40 poruka
|
Re: How to... C++
skladiste.h
Kod:
#ifndef _SKLADISTE_H_ #define _SKLADISTE_H_ #include <iostream> #include "predmet.h" #include "tela.h" #include "greske.h" using namespace std; class skladiste { predmet** niz; int kap; double V; double Q; double currV; double currQ; public: skladiste(double V,double Q,int k); skladiste(skladiste& s) { kap=s.kap; V=s.V; Q=s.Q; for(int i=0;i<s.kap;i++) { niz[i]=s.niz[i]; } } ~skladiste(); skladiste& operator+=(predmet& p); predmet* uzmi(predmet& pp); skladiste& operator-=(predmet& p); friend ostream& operator<<(ostream& o, skladiste& s); }; #endif Kod:
#include <iostream> #include "skladiste.h" #include "predmet.h" #include "tela.h" using namespace std; skladiste::skladiste(double V,double Q, int k) { niz=new predmet*[kap=k]; for(int i=0;i<kap;i++) niz[i]=0; this->V=V; this->Q=Q; currV=0; } skladiste::~skladiste() { for(int i=0;i<kap;i++) delete niz[i]; } skladiste& skladiste::operator+=(predmet& p) { if((currV + p.V())>V) throw("\n***Prekoracenje Zapremine!!!***"); if((currQ + p.Q())>Q) throw("\n***Prekoracenje Tezine!!!***"); int i = 0; while (i<kap && niz[i]) i++; if(i==kap) throw("\n***Prekoracenje kapaciteta!!!***"); niz[i]=&p; currV+=p.V(); currQ+=p.Q(); return *this; } predmet* skladiste::uzmi(predmet& pp) { int i=0; while (i<kap && (!niz[i] || !niz[i]->isti(pp))) i++; if(i==kap) throw("\n***Nema tog predmeta u skladistu!!!***"); predmet* p=niz[i]; niz[i]=0; currV-=p->V(); currQ-=p->Q(); return p; } skladiste& skladiste::operator-=(predmet& p) { skladiste::uzmi(p); return *this; } ostream& operator<<(ostream& o, skladiste& s) { for(int i=0;i<s.kap;i++) o<<*s.niz[i]<<endl; return o; } |
24.6.2013, 17:28 | #236 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
Re: How to... C++
Mrzi me da detaljisem pa cu u kratkim crtama reci ono sto vidim da ne valja
1. Pogresno alociras niz. 'si siguran da ti ne treba 1d niz? How do I declare a 2d... 2. Ne valja ti kopi konstruktor, treba prvo da alociras prostor pre nego kopiras u niz. 3. Dodaj proveru da ne kopiras isti objekat (self assignment). 4. Koliko vidim nijedna metoda nije const-correct. 5. Koristi debugger, assert funkciju, postavi koji breakpoint... |
Sledeći korisnik se zahvaljuje korisniku Belphegor na korisnoj poruci: | ||
Twisterzemun (24.6.2013) |
24.6.2013, 17:49 | #237 | ||
Član
Član od: 6.2.2012.
Poruke: 151
Zahvalnice: 87
Zahvaljeno 60 puta na 40 poruka
|
Re: How to... C++
Citat:
Citat:
|
||
24.6.2013, 18:32 | #238 |
V.I.P. Programiranje
|
Re: How to... C++
Može jako često da se desi da slučajno radi kako treba, ali to nikako nije dobar znak. Ako ti program bez ikakvih promena prvo ne radi pa radi, to je znak da postoji problem.
|
24.6.2013, 19:15 | #239 |
Član
Član od: 6.2.2012.
Poruke: 151
Zahvalnice: 87
Zahvaljeno 60 puta na 40 poruka
|
Re: How to... C++
Problem je jos bio u klasi za greske, kada npr prekoracim zapreminu ili tezinu skladista nece da mi izbaci poruku koju sam napisao da izbaci nego samo izbaci abort() i to je to, u tome je isto bio problem.
|
7.7.2013, 16:30 | #240 |
Novi član
Član od: 6.7.2013.
Poruke: 1
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
|
Re: How to... C++
Ukoliko zelis nauciti C/C++ mozes pogledati i ovaj uvod>
www.scribd.com/duskoKoscica Kompletno besplatno. |
Bookmarks sajtovi |
Tagovi |
c++, how to, pomoc, programiranje |
|
|