I ja sam početnik i treba mi pomoć...

Kurt2

Ističe se
Poruka
2.410
U icq može da se zapamti istorija, tj. sav čet između dva korisnika. To sam ja uradio, pa sam sve zapamtio kao jedan txt fajl. Ono što mi se nije sviđalo u tom fajlu je što pre svake poruke piše kome je poslata i u koliko sati, kog dana, itd.. pa je čitanje svakog trećeg reda jako zamorno...
Napisao sam program u c++ koji pre svake poruke briše ta dva reda, tj. svaki treći ubacuje u drugi fajl. Problem je u tome što u source fajlu imam latinična slova, pa se ona ne vide kako treba u destination fajlu. Kako da se rešim ovog problema?
 
E da ti kazem ja kako:

Public Sub NemaPojma_EyeAbove()
If program.Neradi Then
Razlog.Text="Jer si ga biso u vrljavom C++ koji ima mnogo *suvisnih znakova*"
Else(a u prvom slucaju)
Resenje.Text="Uzmes Visual Basic ,napises ceo program jovo-nanovo,Odes kod vracare i bacis prokletstvo na Borland,zatim ces shvatiti da nece da radi kako treba ni u Visual Basic,onda prokunes Mikrosoft i tako u krug....."
 
Neznam kod tvog programa i kako on funkcionise, pa ti tacno nemogu reci, ali potrebno je da stavis zamjene, kada program naidje na nas karakter, on u tvom slucaju ispisuje neki drugi ? E znaci preko zamjene stavi kada on naidje na taj karakter da ga zamjeni odgovarajucim, recimo
if(char c == 'š')
c = char(231);
 
Jesi li napravio program ?
Evo ja sam ti nesto napravio, ali posto neznam kako tacno izgleda dijalog, prema tvojim rijecima svaki trci red je koristan i njega si htjeo da izdvojis, pa sam i ja napravio program koji izdvaja svaki treci red.
Evo ti zip tog programa, u njemu i imas dva txt fajla koji ce ti demonstrirati kako program radi.
Evo ti upustvo:
U fajl "ad.txt" stavi izvorni text, i ako vec nepostoji prazan fajl "ad1.txt" kreiraj jedan i stavi u isti folder sa exeom i "ad.txt" fajl, gdje ce ti ad1.txt biti destinacioni fajl.
Pozdrav !

http://d.turboupload.com/d/61084/Text.zip.html
 
E, nije trebalo, ali stvarno! Ja programče pravim čisto zabave radi, daleko od toga da mi stvarno nešto treba! Poenta je više u tome da sam rešavam probleme, nego da imam korisni program! Ali hvala u svakom slučaju! Sad, ne znam da li si namerno tako namestio, ali ovde kod mene odradi samo 4-5 reda! Tj. toliko ima u ad1 fajlu!. Naših slova nema, ali dobro, pošto si mi rekao kako se problem rešava mogao bih to i sam da uradim. Nego...
Razmišljam se je tako šta da radim u životu do oktobra, i setim se da pravim drugi, malo ozbiljniji program. I setim se da će mi u njemu trebati random funkcija. Ja znam da random sigurno postoji u nekom obliku u samom c-u, ali meni merak da je sam napravim. Naravno znam da bi profesionalni programer, ako mu nešto fali u c-u, skoknuo na internet i našao šta mu već treba, ali meni merak! Malo sam porazmislio, i shvatio da ceo problem ima mnogo više veze sa poznavanjem matematike nego samog programiranja. Ja za sada "znam" matematiku I (sa faks-a), ali pretpostavljam da mi to nije dovoljno. Koliko sam ja u pravu sa svojim pretpostavkama i jel se radi o (ne)znanju matematike ili c-a?
 
Posto je to neki bezze program, nisam stavljao konverziju nasih slova, jer sam ga odradio na brzinu, a text je ogranicen na 1000 karaktera, cisto sto je test, a moze se on povecati na mnogo vise.
A sto se tice znanja, polako samo uci, radi, vidim imas volje i to je dobro, ja recimo nisam neki zaljubljenik matematike, tj. poznavaoc.
A sto se tice random sistema,necu ti reci posto hoces sam da pokusas da uradis ako dodjes do nekog svog sistema daj kod da vidim sta si uradio, ako naravno nije problem, a ako ti nemognes da rijesis, javi se pa da ti pomognem.
 
Ali, pazi: ja, na primer, da sam se nameračio pre godinu dana da sam napišem kod za izručanavanje funkcije sinusa, ma koliko da se mučim ne bih mogao jer tada nisam imao pojma o aproksimaciji funkcije, Tejlorovom polinomu itd. Sada bih samo otvorio knjigu, našao razvoj, ili ga sam izveo i rešio problem. Isto tako i za random: možda ja nešto treba da znam o čemu još uvek nemam pojma, pa da bezuspešno mozgam do sutra! Zato te pitam: ima li za mene smisla mozgati :-) ?
 
Pa random sistem bi trebao izvesti pomocu vremena, ili ako koristis recimo openGL, gdje se kod konstantno vrti, mozes napraviti random sistem tako da ti se svaki put mjenja neka varijabla, recimo imas
int broj[5] = {2,3,5,23,4};
int i = 0;
i sada kod se neprestalno vrti, i kako se on vrti deklarises:
i++;
if(i > 4)
i = 0;
I ti kada izvrsis neku akciju da ti izabere u tom trenutku:
broj;

Dok ovaj problem kod console, rjesavas funkcijama
srand(time(NULL));
rand() % 'neki broj'
 
Ali nije to onda prava random funkcija, jer zavisi od korisnika! Tj. od izvršene akcije! Ovo mora da bude totalno nezavisno. Na primer... ma sigurno znaš na šta mislim, ali ipak da navedem primer: u actio script-u (jezik koji se koristi za kontrolu akcija u Macromedia Flash MX-u) napišeš random(5) i on ti da neki broj od 0 do 4. To ja hoću da napravim!
 
Kurt2:
Ali nije to onda prava random funkcija, jer zavisi od korisnika! Tj. od izvršene akcije! Ovo mora da bude totalno nezavisno. Na primer... ma sigurno znaš na šta mislim, ali ipak da navedem primer: u actio script-u (jezik koji se koristi za kontrolu akcija u Macromedia Flash MX-u) napišeš random(5) i on ti da neki broj od 0 do 4. To ja hoću da napravim!

To ti je isti fazon kao sto sam ti rekao za openGL, tako da i ono je ispravna random funkcija i nezavisi od korisnika na nacin na koji si pretpostavio.
On non stop vrti kod, bez i jednog problema vrti 60 slicica u sekundi, sto znaci da u jednoj sekundi svaki broj od 0-10 recimo je aktivan 6 puta, sto je i vise nego dovoljno.
E sada, sta podrazumjeva akcija ?
Znaci kod se vrti u pozadini i ti da bi iskoristio jedan od tih brojeva, potrebno je da ga pozoves negdje, e to je ta akcija. Isto radis i u consoli, MFC, API-ju itd, ti da bi izvukao neki random broj potrebno je da ga pozoves, tj. izvrsis neku akciju, to moze biti pritiskom na dugme ili jednostavno preko cout << broj.
Nadam se da ti je sada mnogo jasnioje i da obadva random sistema ispravna i prava, samo sto je onaj iz openGL-a potpuno jasan, dok u ostalim slucajevima, koristis funkciju, koja je relativno isti fazon u posadini.
 
Nije mi jasno, na žalost. Ali to je zato što ne znam dovoljno C. O OpenGL-u da ne pričam. Ja sam trenutno po znanju na nivou osnovnih konzolnih aplikacija (zato i najviše radim u Borland Pascalu u Dos-u - šta će mi vizuelno okruženje kad ne znam da ga koristim...) Ništa, pokušaću, pomučiću se malo, pa šta bude. Sada po pitanju random ne pišem kod jer nemam šta da pišem, samo razmišljam da li bih nekako mogao da iskoristim neku od funkcija (tipa sinus, kosinu, logaritam) da dobijem slučajan broj... I razmišljam... I razmišljam... I za sada ništa... Hvala u svakom slučaju... ;-)
 
Nema druge nego da razvijes random preko vremena, jer na tome ti se bazira i svaki unaprijed definisana random funkcija, kao sto je srand(time(NULL); i rand() % broj.
A gore navedeno je tacno da ce ti svaki broj biti isti, al' samo pod uslovom da su u pitanju sekunde, ti naravno mozes da te sekunde razbijes na mnogo manje dijelove, i jos stavis uzimanje tih random brojeva u neku petlju sa ostalim sadrzajem, cisto da dobijes na vremenu.
 
ja sam koristio ponekad misa za generisanje random brojeva, ali je prilicno ogranicavajuca tehnika. zgodna je kad ti treba true-random broj koji korisits za kriptografiju. inace se standardna random funkcija (tj rand() u c-u, valjda) sasvim dovoljna. radnom brojevi se generisu tako sto postoji promenljiva RandSeed (u delphi-ju, ali je slicno svuda) i onda se svaki sledeci broj pravi od prethodnog i smesta se u randSeed, tako da u principu ne zavisi od vremena. ako hoces da zavisi od vremena u delphi-ju stavi Randomize, a u c++
long t;
time(&t);
srand(t);
svodi se na isto, trenutno vreme se smesta u RandSeed.
samo nemoj vise puta uzastopno da stavljas to jer ces dobiti iste random brojeve
npr, for i:=1 to 10 do begin randomize; writeln(random(100)); end; ce da ispise iste brojeve. na pocetku stavis randomize i miran si :)
bas se raspisah
 
I problematika se nastavlja...
Profesor mi reče da iz C-a mogu da iščitam trenutno vreme sa preciznošću reda veličine milisekunde, što bi mi bilo dovoljno za moj random. Tražih u helpu (Borland C++ u dosu) i nisam našao kako.
Nastavio sam da pišem svoj program sa standardnom funkcijom random (znači, iz biblioteke), ali ona radi jako loše! Za random(6) mi po 3-4 četiri puta uzastopno vrati 3, pa onda po nekoliko puta 2, itd... Šta ja tu radim pogrešno? Ako može, navedite i neki primer, pošto bi mi on, kao početniku, najviše značio!
 

Back
Top