unknown.518mjova,
-> #515, janko> Pa imaš sors standardnih biblioteka. Pogledaj kako je
> realizovan rad sa "b" i "t" datotekama. Konkretno, iako
> nisam video kod, (a znaš zašto :) siguran sam da onog
trenutno mi v3.0 nije tu, a i da jeste, na to đubre neću ni da
pomislim. definitivno sam razočaran u tu verziju.
inače, što se tiče pitanja bufferisanog r/w, problem je rešen, ali sam
ipak promenio koncepciju. mislio sam (a i sasvim je logično) da čita
iz bafera dok ne promenim neki od parametra ili pročitam ceo. za mene
su ti baferi skroz transparentni i kao programera ne treba da me
zanima način na koji se datoteka učitava...
zar nije logičnije da se prevođenje cr/lf u lf obavlja pri čitanju iz
bafera? ono kako je sad je skroz glupavo. ok, možda ima neke
prednosti, ali trenutno ih ne vidim ;)
posle promene treba bafer isprazniti ili ga ukinuti. ono prvo nije mi
poznato, a ovo drugo se radi sa setbuf() (ne provereno, ali radi ;).
SY
unknown.519mjova,
-> #516, todorp> Kako iz turbo C-a da startujem neki program u dos-u pa da
> program u C-u nastavi sa izvrsavanjem.Znam za system() is
> stdlib.h ali da li moze nekako drugacije?
pogledaj: spawn*() set funkcija.
SY
unknown.520ppekovic,
-> #516, todorp>> Kako iz turbo C-a da startujem neki program u dos-u pa da program u C-u
>> nastavi sa izvrsavanjem.Znam za system() is stdlib.h ali da li moze nekako
>> drugacije?
Na MSC-u, a čini mi se da je isto ili slično na TC-u, imaš čitavu
gomilu exec* i spawn* funkcija. Uostalom, pogledaj u helpu system()
funkciju pa pogledaj "see also".
Paya
unknown.521todorp,
-> #519, mjovaHi!
Hvala tebi i ppekovicu.Resio sam problem sa spawnl().
Pozdrav od Todora.
unknown.522djelovic,
-> #517, radunovic> Moze li mi neko preporuciti neku biblioteku funkcija za rad sa bazama
> podataka u High C-u.
Pošto High C i Watcom C oba prave prave programe u 386 režimu,
onda si ograničen na biblioteke za koje imaš source za MSC sa koji su
oba ova kompajlera kompatibilna (Watcom sigurno, za High mislim da
jeste). Ukoliko si spreman da daš neku paru reci, pa ću ti par adresa u
Americi na koje da se javiš. Ukoliko ti treba sirotinjska verzija, imaš
ovde na Sezamu biblioteku po imenu CBASE koja nit' je previše laka, nit'
je previše brza. Izmađu nje i Clippera pre bi izabrao Clipper!
No, ne znam zašto sebe ograničavaš na 386 kompajlere? U radu sa
bazama podataka brzina procesora i veličina radne memorije nisu previše
bitni, pre je važan dobar keš i brz disk, na operacije sa diskom ionako
otpada većina vremena. Zato ti preporučujem da isprobaš MSC ili BC sa
nekim DB menadžerom, recimo BTREAVE-om. Najefikasnije rešenje.
P.S. Povodom neke diskusije pre jedno mesec dana ovde: Nejbrže baze
podataka na mreži ne pravi ni Clipper, ni BTREAVE ni bilo šta od vama
poznatih alatki. Najbrža je jedna implementacija Kobola, zaboravio sam
ime, ali ako nekoga zanima iščačkaću. Boj ne bije jezik, već boj bije
onaj ko pravi kompajler.
unknown.523radunovic,
-> #522, djelovicPitanje sam postavio na molbu jednog druga koji bi baze koristiou okviru
autocad-a pa je samim tim ogranicen na 386 kompajlere.
unknown.524djelovic,
-> #469, nkbog> > Pazi: Klasa A nasleduje klasu D pa prema tome *nema ni govor
> > instancu kase D mozes da pretvoris u A.
>
> Mogu preko pointera ili reference.
Q. What potential problems can arise from typecasting a base
class pointer into a derived class pointer so that the derived
class's member functions can be called?
A. Syntactically this is allowable. There is always a possibility of
a base pointer actually pointing to a base class. If this is
typecast to a derived type, the method being called may not exist
in the base class. Therefore, you would be grabbing the address of
a function that does not exist.
unknown.525bojt,
-> #522, djelovic>> Pošto High C i Watcom C oba prave prave programe u 386 režimu...
Jesi li imao prilike da vidiš NDP C 386 ?
unknown.526kuzma,
HELP!
Jednom kolegi su potrebna znacenja sledecih prekidaca kod Microsoft-
ovog C-a:
/AL /Od /c
Pa ako je neko raspolozen nek napise
unknown.527bojt,
-> #526, kuzma>> Jednom kolegi su potrebna znacenja sledecih prekidaca kod
>> Microsoft- ovog C-a: /AL /Od /c
/AL - Large memory model
/Od - disable optimization
/c - compiling without linking
unknown.528kuzma,
-> #527, bojt Hvala!
unknown.529dnikolic,
Imam jedan problem sa CBASE-om. Program ( koji pisem ) kreira i otvori tri
baze. Sve operacije sa podacima i samim bazam idu OK do izlaska iz programa.
Ponovnim startovanjem programa, sve funkcije i operacije rade OK izuzev jedne
u kojoj se vrsi tabelaran prikaz podataka, i u kojoj su otvorene sve tri baze.
Program otvori prve dve, a za trecu prijavi gresku. Ovo se desava stalno, bez
obzira kojim redosledom otvaram baze - treca se ne moze otvoriti. Po izlasku iz
ove funkcije, ostatak programa radi kao i pre - odlicno. Ne znam da li je ovo
vezano sa CBASE ili za nesto drugo. U CONFIGu je FILES=80.
dn
unknown.530ppekovic,
Potrebno mi je da računar generiše slučajne brojeve izmedju 0 i 9,999,999.
Funkcija rand() iz MSC-a generiše slučjne brojeve izmedju 0 i 7fff. Jel ima
neko ideju, ili neku funkciju koja generiše long slučajne brojeve?
Paya
unknown.532dejanr,
-> #530, ppekovicAko "pristaješ" na funkciju koja radi sa racionalnim brojevima, imam ja
veliki izbor. Ako mora celobrojna, nemam.
unknown.534ppekovic,
-> #532, dejanr>> Ako "pristaješ" na funkciju koja radi sa racionalnim brojevima,
>> imam ja veliki izbor. Ako mora celobrojna, nemam.
Pa ako generiše dovoljno veliki broj raličitih racionalnih brojeva (>
9,999,999) onda naravno da može. Da bi se od toga napravilo ono što meni treba
je potrebno najobičnije linearno preslikavanje. Dakle, šalji!
Paya
unknown.535janko,
-> #530, ppekovic> Funkcija rand() iz MSC-a generiše slučjne brojeve izmedju
> 0 i 7fff. Jel ima neko ideju, ili neku funkciju koja
> generiše long slučajne brojeve?
Baci pogled kod Knuta. Nema potrebe da radiš sa realnim, što ti
predlaže Dejan, sve se lepo može uraditi sa intidžerima. U ovom
slučaju, sa long-om. Realizacija prizvoljnih RND generatora se
na ETF-u, otsek RT uči još na trećoj godini. ;)
unknown.536ppekovic,
-> #535, janko>> Realizacija prizvoljnih RND generatora se
>> na ETF-u, otsek RT uči još na trećoj godini. ;)
Da, učio sam to u III godini ali matematičke gimnazije, ali, pošto
generator slučajnih brojeva spada u tzv. "ne izmišljaj toplu vodu" algoritme,
pitao sam jel ima neko gotov algoritam, a ja sam se u medjuvremenu bacio na
druge "ne izmišljam toplu vodu" stvari.
Paya
unknown.537mjova,
-> #529, dnikolic> ove funkcije, ostatak programa radi kao i pre - odlicno.
> Ne znam da li je ovo vezano sa CBASE ili za nesto drugo. U
> CONFIGu je FILES=80.
mislim da ima problema oko većeg broja otvorenih fajlova od 20.
računaj da je 5 osnovnih pa ti ostaje samo 15. e, sad ako se baza
sastoji od više fajlova (indexi, podaci itd) možda pri otvaranju
poslednje baze imaš previše otvorenih fajlova.
dakle, ono files u config.sys-u ne rešava problem.
SY
unknown.538mjova,
kako mogu da dobijem ispravnu adresu člana nekog objekta?
konkretno, ako je neki član objekta definisan kao interrupt handler,
kako mogu da uradim setvect(), a da mi kompajler ne javlja grešku u
stilu: 'Use :: to take the address of a member function'. kako glasi
red u kome se dodoeljuje nova adresa nekom interaptu, ali tako da je
data fn član neke klase.
SY
unknown.539djelovic,
-> #530, ppekovic> Potrebno mi je da racunar generise slucajne brojeve izmedju 0
> Funkcija rand() iz MSC-a generise slucjne brojeve izmedju 0 i
> neko ideju, ili neku funkciju koja generise long slucajne broj
Kod mjove su mi Dr. Dobbs-ovi, neka ti u jednom od njih potra`i algoritam
pod imenom r250. Te{ko da }e{ na}i bolji, makar i kod Knuta.
unknown.540djelovic,
-> #538, mjova> kako mogu da dobijem ispravnu adresu clana nekog objekta?
Pogledaj za to {to te zanima u BCHELP datoteci koju ima{ u /IBMPC/INFO.
Ukratko, koristi se sintaksa klasa::*funkcija za pointer na f-ju. No, kako tebi
treba kori{e}enje interapta, to je druga pri~a. Interapt ne mo`e da pokazuje na
~lana klase zbog skrivenog parametra this. Umesto toga mo`e{ interapt da
usmeri{ na stati~ki ~lan klase, a on mo`e da poziva neku drugu funkciju preko
za to odre|enih pravila. Ako treba jo{, vikaj.
unknown.541obren,
-> #538, mjova> konkretno, ako je neki član objekta definisan kao interrupt handler,
> kako mogu da uradim setvect(), a da mi kompajler ne javlja grešku u
> stilu: 'Use :: to take the address of a member function'.
Isti problem je i mene mučio pre mesečak dana dok ne nađoh uzrok:
"Member function pointers are not true pointer types, and do not refer to
any particular instance of a class."
Posle sam se oprostio od interapt handlera u okviru klase, mada ko zna,
možda je ipak moguće?
unknown.542cacxa,
...
char zn;
if(*bafer==0)
{
cin.get(zn);
*bafer++ = zn;
char* p = bafer;
*p++ = zn;
while (cin.get(zn) && zn!='\n') *p++ = zn;
cin.putback(zn);
*p=0;
cout << bafer;
}
...
Zašto ovo ne radi? (npr za ulaz "aaaaaaaaaa\n" izlaz je "aaa┌$9aaa")
unknown.543ljubao,
Imam problema sa TURBO C++ 1.0. Elem, deo koda je radio OK, sve
dok nisam sa malloc odvojio još 4 KB memorije.
Tačnije, sada neće nikako da učita neke podatke iz datoteke (ne
učitava se u pomenuti deo memorije). Probao sam sa fread i read, memoriju
gde se učitavaju podaci sam odvajao i sa malloc i farmalloc, i neće da
radi.
Inače, sve je to u LARGE modelu, pa sumnjam na petljanje sa far
i običnim pointerima (čemu nisam vičan jer sam ranije imao normalan kom-
pjuter sa linearnom memorijom, a do sada mi je bio dovoljan i small
model).
Ako neko nešto zna, neka kaže i spasi me nepotrebnog noćenja i
nerviranja.
Ljuba
unknown.544ppekovic,
-> #539, djelovic>> Kod mjove su mi Dr. Dobbs-ovi, neka ti u jednom od njih
>> potra`i algoritam pod imenom r250. Te{ko da }e{ na}i bolji,
>> makar i kod Knuta.
Već sam se snašao ali hvala u svakom slučaju. Pomogao mi je robert koji me
je uputio na zbirku C programčića koja postoji ovde na sezamu (ne sećam se kako
se zvaše).
Paya
unknown.545ppekovic,
-> #544, ppekovicPronašao sam dosta zanimljivih random generatora ali ipak i dalje ostaje
problem šta uzeti za početnu vrednost a da se zadovolji uslov prenosivosti
programa, dakle da ostanem u okviru ANSI C-a. Dakle, mogao bi da očitam vreme
ili nešto slično, ali bi želeo da isti program radi i na xenix-u i na dos-u i
na os/2-u.
Paya
unknown.546zormi,
-> #530, ppekovic* Potrebno mi je da računar generiše slučajne brojeve izmedju 0 i
* 9,999,999. Funkcija rand() iz MSC-a generiše slučjne brojeve
* izmedju 0 i 7fff. Jel ima neko ideju, ili neku funkciju koja
* generiše long slučajne brojeve?
Ako nije za neke "naučne" primene: pozovi funkciju dvaput pa sastavi
normalizovane cifre ;)
unknown.547djelovic,
-> #545, ppekovic> problem šta uzeti za početnu vrednost a da se zadovolji uslov
> programa, dakle da ostanem u okviru ANSI C-a. Dakle, mogao bi
> ili nešto slično, ali bi želeo da isti program radi i na xenix
> na os/2-u.
Joj. To je problem koji još niko nije uspeo da reši. Jedino da koristiš
#ifdef direktive, svaki kompajler definiše svoje ime, a pretpostavljam da
postoji i neka definisana reč ako je ANSI kompajler. Za C++ se recimo koristi
reč __cplusplus.
unknown.548ndragan,
-> #530, ppekovic/ Funkcija rand() iz MSC-a generiše slučjne brojeve izmedju 0 i 7fff.
Pade mi na um najprostija stvar: da napraviš
rnd=rand()*8000+rand()
U stvari ne znam kako se piše shl(rand(),15) na Ceu, ali ovo bi moglo
da radi poso.
Bue_ Ndragan
unknown.549mjova,
-> #539, djelovic> Kod mjove su mi Dr. Dobbs-ovi, neka ti u jednom od njih
> potra`i algoritam pod imenom r250. Te{ko da }e{ na}i
> bolji, makar i kod Knuta.
nađoh, ali pajo, ako me ne pohvališ drž' se dobro ;)
──────────────────────────────────────────────────────────────────────────────
//=====================================================
// written by: W. L. Maier (a mjova nije bio lenj :)
//=====================================================
#include <stdlib.h>
static unsigned int r250_buffer[250];
static int r250_index;
void r250_init(int seed);
unsigned int r250();
double dr250();
//----------------------------------
// initializes r250 random number generator
void r250_init(int seed) {
int j,
k;
unsigned int mask;
unsigned int msb;
srand(seed);
r250_index= 0;
for(j= 0; j<250; j++) // fill the r250 buffer with 15-bit values
r250_buffer[j]= rand();
for(j= 0; j<250; j++) // set some of the MS bits to 1
if(rand() > 16384)
r250_buffer[j] |= 0x8000;
msb= 0x8000; // to turn on the diagonal bit
mask= 0xffff; // to turn off the leftmost bits
for(j= 0; j<16; j++) {
k= 11 *j +3; // select a word to operate on
r250_buffer[k] &= mask; // turn off bits left of the diagonal
r250_buffer[k] |= msb; // turn on the diagonal bit
mask >>= 1;
msb >>= 1;
}
}
//----------------------------------
// returns random unsigned integer
unsigned int r250() {
register int j;
register unsigned int new_rand;
if(r250_index >= 147)
j= r250_index -147; // wrap pointer around
else
j= r250_index +103;
new_rand= r250_buffer[r250_index] ^ r250_buffer[j];
r250_buffer[r250_index]= new_rand;
if(r250_index >= 249) // increment pointer for next time
r250_index= 0;
else
r250_index++;
return(new_rand);
}
//----------------------------------
// returns random double in range 0..1
double dr250() {
register int j;
register unsigned int new_rand;
if(r250_index >= 147)
j= r250_index -147; // wrap pointer around
else
j= r250_index +103;
new_rand= r250_buffer[r250_index] ^ r250_buffer[j];
r250_buffer[r250_index]= new_rand;
if(r250_index >= 249) // increment pointer for next time
r250_index= 0;
else
r250_index++;
return(new_rand/(double)0xffff); // return a number in 0.0 to 1.1
}
//=====================================================================
#include <stdio.h>
#include <stdlib.h>
#define NMR_RAND 5000
#define MAX_BINS 500
//----------------------------------
void main(int argc, char *argv[]) {
int j,
k,
nmr_bins,
seed,
bins[MAX_BINS];
double randm,
bin_limit[MAX_BINS],
bin_inc;
if(argc != 3) {
printf("Usage -- rtest [nmr_bins] [seed]\n");
exit(1);
}
nmr_bins= atoi(argv[2]);
r250_init(seed);
bin_inc= 1.0/nmr_bins;
for(j=0; j<nmr_bins; j++) {
bins[j]= 0; // initalize bins to zero
bin_limit[j]= (j +1) *bin_inc;
}
bin_limit[nmr_bins-1]= 1.0e7; // make sure all others are in last bin
for(j= 0; j<nmr_bins; j++) {
randm= r250()/(double)0xffff;
for(k= 0; k<nmr_bins; k++)
if(randm < bin_limit[k]) {
(bins[k])++;
break;
}
}
for(j= 0; j<nmr_bins; j++)
printf("%d\n", bins[j]);
}
──────────────────────────────────────────────────────────────────────────────
mj
unknown.550ppekovic,
-> #549, mjova>> nađoh, ali pajo, ako me ne pohvališ drž' se dobro ;)
Pohvaljujem te mjovo! ;) Hvala i svima ostalima!
Paya
unknown.551robert,
-> #543, ljubao<:> Inače, sve je to u LARGE modelu, pa sumnjam na petljanje sa far
<:> i običnim pointerima (čemu nisam vičan jer sam ranije imao
<:> normalan kom-
čao mi je što ne mogu baš konkretno da ti pomognem (mjovo!?) ali evo
da pokušam...
I ja sam imao slične probleme... (u pitanju je TC++ 2.0) upotrebljavao
sam farmalloc u LARGE modelu i kad sam sa coreleft() ispitao raspolo-
živu memoriju dobio sam svega 2-3 kb. Kad sam upotrebio malloc i preveo
u SMALL modelu coreleft mi je vraćao lepo 64 kb slobodno. E sad, ja
ne umem da kažem zašto je to tako ali bi trebalo pročitati malo pažlji-
vije neku literaturu u vezi tog alociranja memorije.
Farmalloc rezerviše memoriju u far-heap- u pa možda tu smetaju rezidentni
drajveri ili programi tako da se ne može rezervisati više, stvarno ne
znam za sigurno ali moglo bi da se isproba.
E sad, ako neko zna bolje objašnjenje, nek pomogne čoveku...
Pozdrav ... Robert.
unknown.552janko,
-> #547, djelovic># ifdef direktive, svaki kompajler definiše svoje ime, a
> pretpostavljam da postoji i neka definisana reč ako je
> ANSI kompajler. Za C++ se recimo koristi reč __cplusplus.
__STDC__ je predefinisana reč koja označava da se prevodi ANSI
C-om, i, za razliku od C++ definisane reči __cplusplus koja,
nažalost, NIJE stvarno standardna, ova jeste, i označava
standardni ANSI C. Zanimljivo je da po difoltu Borlandovi
kompajleri ne javljaju da su standardni ANSI, dok im se ne
uključi poseban svič. To objašnjavaju time što njihov C
prepoznaje, bez tog aktiviranog sviča, i ključne reči tipa FAR
i šta-ti-ja-znam koje su specijalitet MS-DOS-a. Kada se
aktivira svič za prevođenje po ANSI standardu, onda se takve
reči ne prepoznaju na MS-DOS način.
unknown.553janko,
-> #545, ppekovic> Pronašao sam dosta zanimljivih random generatora ali ipak
> i dalje ostaje problem šta uzeti za početnu vrednost a da
> se zadovolji uslov prenosivosti programa, dakle da ostanem
> u okviru ANSI C-a. Dakle, mogao bi da očitam vreme ili
> nešto slično, ali bi želeo da isti program radi i na
> xenix-u i na dos-u i na os/2-u.
Zavisi od upotrebe programa. Za neke primene (monte-karlo
simulacije, jer u njima je samo veličnia perioda generatora
bitna) je bilo koja KONSTANTA sasvim OK. Ako ti trebaju razičite
početne vrednosti, ANSI C ti omogućava da uzmeš sistemske minute
i sekunde, ali te to oganičava na 3600 mogućih početaka. Ako ti
je taj broj dovoljan, i naravno, ne inicijalizuješ generator
previše često, rešio si problem: Minute i sekunde iskoristiš za
rendom generator (OBAVEZNO različit od onog koga ćeš posle
koristiti!) koji će ti dati SEED onog sledećeg. Ako ti 3600
'početaka' nije dosta, moraš da 'vadiš' sistemsko vreme u
milisekundama ili još sitnije, što nije po ANSI-ju, ali se može
naći na svakoj mašini.
unknown.554janko,
-> #546, zormi> Ako nije za neke "naučne" primene: pozovi funkciju dvaput
> pa sastavi normalizovane cifre ;)
To može samo ako će jako malo puta u programu pozvati funkciju.
Inače, neće da valja, jer će perioda biti nedopustivo mala.
unknown.555janko,
-> #551, robert> I ja sam imao slične probleme... (u pitanju je TC++ 2.0)
> upotrebljavao sam farmalloc u LARGE modelu i kad sam sa
> coreleft() ispitao raspolo- živu memoriju dobio sam svega
> 2-3 kb. Kad sam upotrebio malloc i preveo u SMALL modelu
> coreleft mi je vraćao lepo 64 kb slobodno. E sad, ja
U LARGE modelu može da se koristi malloc, koji će, naravno,
alocirati memoriju na far hipu, jer drugi i ne postoji.
Tako bi trebalo da radi i sa napr. COMPACT modelom, ali ne
radi. U Borland C++ 2.0 kompajleru, u L. modelu bez problema
alocira kako treba, i koristi svu raspoloživu memoriju (meni
kada alociram 1K blokove, daje 490 takvih blokova pre nego što
mi vrati NULL. Ali, zbog očiglednog baga u stand. biblioteci
(ako ima neko sors, koji se dobija uz profešnal verziju, mogli
bismo, verovatno, to da ispravimo) u COMPACT modelu 1K blokove
uspe da alocira šezdesetak puta pa SRUŠI ceo sistem.
unknown.557djelovic,
-> #548, ndragan> Pade mi na um najprostija stvar: da napraviš
> rnd=rand()*8000+rand()
Da, ali na taj način dobija slučajne vrednosti istog, ili upola
manjeg od onog koji već ima (u MSC slučaju, upola manji). Tako, iako
povećava opseg za dobijene slučajne vrednosti, ne dobija sve (ne dobija
čak ni dobar deo, naprotiv!) vrednosti iz tog opsega.
unknown.558sasa,
Interesuju me neke stvari oko CODE BASE biblioteke za Dbase/Clipper pa ako neko
ima nesto slicno bio bih veoma zahvalan!
Unapred hvala,
Sasa@nsd
unknown.559zormi,
-> #554, janko* > Ako nije za neke "naučne" primene: pozovi funkciju dvaput
* > pa sastavi normalizovane cifre ;)
*
* To može samo ako će jako malo puta u programu pozvati funkciju.
* Inače, neće da valja, jer će perioda biti nedopustivo mala.
Zato sam i rekao "ako nije za naučne primene". Ima tu još formalnih
nedostataka, ne samo zbog periode, ali ne bi da počinjem još jedan
krug rasprava o verovatnoći.
Ako mu treba za video-igru, ništa ne smeta ;).
unknown.560mjova,
-> #543, ljubao> podaci sam odvajao i sa malloc i farmalloc, i neće da
malloc i farmalloc daju različite rezultate samo za small i medium
mem modele. u ostalim modelima nema razlike jer nemaju FAR HEAP (nije
odvojen od near heap-a).
međutim, lepo je koristiti farmalloc() ako treba neke izvorne kodove
prevoditi (npr za lib) u raznim modelima, a zahtevaju uptrebu FAR
HEAP-a.
drugo, pri alociranju mememorije postoje određeni bug-ovi u .lib za c
i h model, toplo preporučujem definitivno izbegavanje ;).
mj
unknown.561robert,
Trebao bi mi opis *.DBF datoteka tj. format ispisa DBASE-a u *.DBF
datoteke. Nisam siguran ali mi se čini da je to već neko pitao u
temi baze podataka ili sl. pa ako je bio odgovor na to bitanje bilo
bi mnooogo lepo da mi kažete gde.
Ovo pitam ovde jer treba da pišem kod u C-u koji kao izlaz, između
ostalog, generiše i *.DBF datoteke tako da se kasnije mogu koristiti
iz DBASE paketa.
Još nešto, da li je neko već radio sa DFLAT bibliotekom u C-u za rad
sa prozorima (koji liče na WINDOWS ali su u ASCII modu) i kakva su
iskustva sa tim.
Pozdrav ... Robert.
unknown.562mjova,
-> #561, robert> Ovo pitam ovde jer treba da pišem kod u C-u koji kao
> izlaz, između ostalog, generiše i *.DBF datoteke tako da
> se kasnije mogu koristiti iz DBASE paketa.
pitao sam jednom ovde i neko je bio dovoljno ljubazan da mi pošalje
kod koji se bavi .dbf datotekama. ako te zanima mogu da ti pošaljem.
moram samo da pogledam da li je pd.
SY
unknown.563pjankovic,
-> #558, sasa> Interesuju me neke stvari oko CODE BASE biblioteke za
> Dbase/Clipper pa ako neko ima nesto slicno bio bih veoma
> zahvalan!
Posjedujem CODE BASE 4.2. Reci sta te interesuje pa da pokusam
da ti odgovorim.
unknown.564ivantod,
-> #561, robertv{Što se tiče strukture dBase fajla, ovo su podaci koji se nalaze
u "dBase III+ priručniku" koji je izdala Mikro knjiga. Zaglavlje
fajla sastavljeno je od sledećih delova:
- prvih 32 bajta rasporedjenih ovako:
0 83h ako je uz bazu uključen fajl tipa DBT, 03h ako nije
1-3 datum poslednje izmene u formatu ggmmdd
4-7 ukupan broj slogova u bazi
8-9 ukupan broj bajtova zaglavlja
10-11 broj bajtova po slogu
12-14 rezervisano
15-27 rezervisano za višekorisnički rad
28-31 rezervisano
- posle ovoga dolazi po 33 bajta za opis svakog polja u slogu
posebno i to ovako:
0-10 ime polja
11 tip polja (N, C, L, D, ili M)
12-15 adresa u memoriji podataka iz polja
16 širina polja
17 broj decimalnih mesta
18-19 rezervisano za višekorisnički rad
20 oznaka radnog prostora
21-22 rezervisano za višekorisnički rad
23 pokazatelj stanja odredjenog naredbom SET FIELDS
24-31 rezervisano
32 oznaka kraja podataka o polju
- iza ovoga se upisuju slogovi. Svaki slog počinje bajtom u koji
je upisana zvezdica (*) ako je označen za brisanje, ili razmak
ako nije. Jedina važna napomena je da se datumsko polje upisuje
u formatu ggggmmdd.
unknown.568robert,
-> #565, jtitov<:> Auuu, nije nego! Kada si ti uzimao kod onda nema veze; kada treba
<:> drugom da
Ma sve je u redu, ljudi, dobio sam ono što sam tražio i hvala mjovi
za to. On se to samo šalio... ;)
Pozdrav ... Robert.
unknown.569robert,
-> #564, ivantod<:> v{Što se tiče strukture dBase fajla, ovo su podaci koji se nalaze
Puno hvala na ovim informacijama i uz mjovinu pomoć, verujem da sada imam
sve što mi treba. Ako bude problema, naravno, pitaću opet... ;)
Pozdrav ... Robert.
unknown.570dnikolic,
-> #558, sasa>> Interesuju me neke stvari oko CODE BASE biblioteke za
>> Dbase/Clipper pa ako neko ima nesto slicno bio bih veoma zahvalan!
I mene ovo VEOMA zanima!
dn
unknown.571tesloni,
Ajde maheri ...
Ima li ko TopSpeed C++ ....
... Ú-> Tesloni <-Ú
unknown.572rogi,
Stize Micro Emacs za Windowse sa kompletnim sourceom u c
Rogi
mewin10.zipunknown.573rogi,
-> #572, rogiA evo i uputstva za Micro Emacs u Windows "WRI"
formatu.
Rogi
mewri.arjunknown.574rogi,
Postoje li na SEZAMU grupe sa temom Borland C++, C++ i
programiranje pod Windowsima ? Ako postoje molim Vas da
me uclanite ili obavestite o uclanjenju.
Rogi
unknown.575janko,
Natrčao sam na bag u BC++ 2.0.
Kada definišete klasu koja sadrži niz ne-elementarnog tipa,
već od objekata neke druge klase, BC++ 2.0 će se ponašati kao
da joj je tzv. kopi konstruktor prazan (iako bi, po difoltu,
trebalo da podrazumeva kopiranje). Napr. ako je fja članica
definisana kao
X X::vrati()
onda u njoj
return x;
ne vraća objekat tipa X, već samo radi return, a ono što tako
pokupite, je, naravno, đubre. Proveravao sam asm. kod.
Jednostavno i tamo kaže return, umesto da prekopira bilo šta.
Na sreću (jedina nesreća je što sam izgubio vreme na jurenju
baga), ovo se može 'izvaditi' eksplicitnim definisanjem kopi
konstruktora, koji kopira u *this.
---
Kad smo već kod C++-a: ima li neko detaljnije podatke (sa
programskim primerima) o razlikama 1.x 2.0 i 3.0 cfront
(odnosno C++) 'standarda?'
unknown.576rogi,
Novosti o Borlandovim kompajlerima.
Rogi
5new.rlsunknown.577rogi,
-> #576, rogiNovosti o beta kompajleru za WINDOWS NT od Borlanda.
Rogi
win32.arjunknown.578rogi,
-> #577, rogiIzvinjavam se nije ZIP nego ARJ.
Rogi
unknown.580jtitov,
-> #578, rogi> Izvinjavam se nije ZIP nego ARJ.
Uopste se ne izvinjavaj. Samo salji. Snacicemo se.
unknown.581rogi,
Evo i GNU-CHESS v3.21 for WINDOWS
Rogi
chess321.arjunknown.582rogi,
-> #581, rogi Prilikom prenosa arhive je doslo do prekida linije,
pa je arhiva prenesena iz dva transfera. Nadam se da
je Zmodem ispravno nastavio slanje fajla, a ako nije
javite pa cu opet prebaciti.
Inace sam zaboravio da napisem da je u arhivi komple-
tan source u c + exe + dokumentacija + help.
Imam primera za tehnike programiranja pod Windows-ima
ali niko ne odgovori na moje ranije postavljeno pitanje
o grupama na SEZAM-u koje se bave BC++, C++ i programi-
ranjem pod WINDOWS-ima.
Rogi
unknown.583ppekovic,
-> #582, rogi>> Imam primera za tehnike programiranja pod Windows-ima
>> ali niko ne odgovori na moje ranije postavljeno pitanje
>> o grupama na SEZAM-u koje se bave BC++, C++ i programi-
>> ranjem pod WINDOWS-ima.
Obrati se bulaji, mislim da je on osnovao jednu takvu grupu. Ujedno, hvala
na GNU Chess-u.
Paya
unknown.584dnikolic,
Moze li se u TC ( ili uopste ) napisati program koji bi recimo ispisao neko ime
na ekran, a koji bi posle kompajliranja imao duzinu oko max 50 bajtova tj. kao
odgovarajuci u masincu? U pitanju je opklada.
dn
unknown.585dnikolic,
Ko ime CODE BASE 4.xx?
dn
unknown.586janko,
Ima li neko iskustva, informacije ili sorsove o korišćenju
setjmp i longjmp instrukcija za realizaciju korutina?
Napisao sam dva programa, istim metodama, i jedan ruši sistem,
a jedan 'odradi.'
Izgleda da je problem u tome da prevodilac, čak i kada se
unutar rutine ne koriste lokalne promenljive, nekad koristi
stek tako da ošteti informacije drugih korutina. (Filozofski,
ne bi morao tako da radi, BP i SP bi trebalo da se nezavisno
pomeraju?) Svaka korutina je, u mojoj realizaciji, funkcija
članica klase koja određuje korutinu, iz koje se izašlo
sa longjmp.
unknown.587zzivotic,
-> #584, dnikolic
> Moze li se u TC ( ili uopste ) napisati program koji bi recimo
> ispisao neko ime na ekran, a koji bi posle kompajliranja imao
> duzinu oko max 50 bajtova tj. kao odgovarajuci u masincu? U
> pitanju je opklada.
Koristeći potpuno *standardne* tehnike prevođenja - nije moguće. Problem je u
modulu iz biblioteke koji se obično zove crt0 u kome je inicijalizacija, koji
je retko manji od 2-3K i koji se uvek linkuje u program.
Ako napraviš svoj crt0.asm i izbegavaš funkcije iz C biblioteke (ne baš sve,
ali one za ispis tipa puts, ili printf) onda bi bilo sasvim moguće - pitanje je
samo koliko je to onda C ;)
Pozdrav, zz
unknown.588rogi,
-> #586, janko Poslao si premalo informacija da bi se moglo shvatiti sta se desava
sa setjmp/longjmp. Opisi detaljnije sta se tacno dogadja sa programom
i posalji kod ili algoritamski opisan metod. Sto se tice prevodioca
kompajliraj kod da generise ASM listing i onda ces videti sta tacno
prevodioc uradi.
Rogi.
unknown.589janko,
-> #588, rogi
Hvala na trudu, Obren mi je poslao e-poštom baš ono što mi je
trebalo.
Konkretno, dva su razloga mogućeg pada, i meni je padao zbog ovog
drugog:
- rutina je radila sa registrima koji nisu sačuvani sa setjmp
(to mi je poslao Obren).
- jedna korutina je drugoj uništila njen deo steka (to sam sam
isčačkao).
Sve sam rešio. Obrenu se i ovde zahvaljujem.
unknown.590mdimitrijevic,
Hi!
Ima li neko source za Turbo C v2.0 za grafiku, scroll, prokaz slike ili
slicno. Prilicno je vazno.
unknown.591dnikolic,
Kako je najbolje prebaciti radne fajlove na diskete? Moze li se koristiti DOS
naredba COPY preko SPAWNxx funkcija? Postoji li neki drugi, bolji, nacin?
dn
unknown.592ppekovic,
-> #591, dnikolic>> Kako je najbolje prebaciti radne fajlove na diskete? Moze
>> li se koristiti DOS naredba COPY preko SPAWNxx funkcija?
>> Postoji li neki drugi, bolji, nacin?
system("arj a -vva a:arhiva *.*"); :))))
Paya
unknown.593vitez.koja,
-> #592, ppekovic-> system("arj a -vva a:arhiva *.*"); :))))
system("arj a -va -jt1 -r -we:\ -i1 a:arhiva *.*");
^^^
ram disk... ;)
unknown.594mdimitrijevic,
Imam problema sa prikazivanjem slika na VGA karti iz Turbo C-a 2.0, molio
bih ako neko ima neki source ili zna kako da prikazem neku sliku u 320x200x256
da mi napise. Kad skinem rezidentnim programom deo memorije od A000-AFFF
dobijem sliku ali bez boja kakve bi trebalo. Zato ako bi neko mogao da mi
pomogne bio bih mu vrlo zahvalan.
Pozdrav,
Marjan Dimitrijevic
unknown.595mornar,
-> #594, mdimitrijevic Evo ti program koji ce ti prikazati sliku u 320x200x256 skinutu kao
dump sa ekrana.
Prilozen je i source u C-u (TC/BC) i .EXE verzija.
Mozda naidjes na neki bag jer sam program napisao na brzinu,ali kolko
sam ga testirao - radi.Ako program modifikujes, kompajliraj ga iskljucivo u
HUGE modelu (inace ce da prijavi nedostatak memorije).
Ako ima nekih nejasnoca i pitanja slobodno pitaj ovde ili salji mail.
[mornar]
pic.arjunknown.596pjankovic,
-> #590, mdimitrijevic> Ima li neko source za Turbo C v2.0 za grafiku, scroll,
> prokaz slike ili slicno. Prilicno je vazno.
Uz taj kompajler se dobija BGIDEMO.C koji je najbolji primjer kako
se radi sa grafikom. Ako ga nemas reci da ti posaljem.
unknown.597mdimitrijevic,
-> #595, mornar Hvala pogledacu pa cu se javiti.
mdimitrijevic
unknown.598mdimitrijevic,
-> #596, pjankovic
Znam za BGIDEMO ali nisam mislio na crtanje i C-a vec na prikazivanje neke
slike na primer GIF,BMP,PCX i slicno ili dump ekrana ali za VGA
mdimitrijevic
unknown.599ndragan,
-> #564, ivantodJes' da je prošlo dve nedelje, al' danas sam morao da se patim sa nekom
ogavnom bazom od pet mega sa nekog zjeban*g diska, pa sam pisao jednu
malu nisku (*) proceduru za rekonstrukciju onog što se iščupati dade. Imam
ispravku na ovo:
/ - posle ovoga dolazi po 33 bajta za opis svakog polja u slogu
/ 0-10 ime polja
/ 32 oznaka kraja podataka o polju
Ide u stvari po 32 bajta; vo treba shvatiti kao 0-9 za ime polja (ili
1-10, ako ćemo da krenemo od 1); posle niza tih podataka dolazi jedan
bajt u kojem piše 0D, i onda slog za slogom.
Ostalo je tačno. žini mi se da bi bilo lepše da je prilikom
projektovanja .DBF fajla ubačeno nešto tipa CHR(15) ili tako nešto za
vodeći bajt (onaj što postaje '*' kad se slog obriše), baš zato da se
olakša život nama jadnicima koji ovakve programčiće za rekonstrukciju
piskaramo od slučaja do slučaja.
(*) Mislim na low level čitanje .DBF fajla kao niza bajtova.
unknown.600bearboy,
-> #593, vitez.koja˙¨:> -> system("arj a -vva a:arhiva *.*"); :))))
˙¨:>
˙¨:> system("arj a -va -jt1 -r -we:\ -i1 a:arhiva *.*");
˙¨:> ^^^
˙¨:> ram disk... ;)
system("arj a -va -jt1 -r -we:\ -1 a:arhiva");
je saasvim dovoljno, posto ARJ podrazumeva *.* Ipak moze krace :)
unknown.601bojanp,
Za sve one koji koriste Borland C++ 3.0 jedno pitanje. Da li vam
radi utility WinSight?
Pozdrav, Bojan
unknown.602mornar,
-> #601, bojanp Radi! ,ali Windowsi moraju da 'trce' u enhanced modu! Inace efekti nisu bog
zna kako vidljivi, cak se nista i ne desava.
unknown.603tesloni,
Sorry narode ... Interesuje me koji C kompajler ima ugrađenu
podršku dinamičkom linkingu ( podataka i procedura ), ili bar
da li postoje dodaci za neki od poznatih koji to omogučavaju ?
P.S. Ako neko ima nešto od navedenog neka mi se javi na mail ...
... Ú-> Tesloni <-Ú
unknown.604mornar,
-> #603, tesloni Dynamic linking je ugradjen u BC++ 3.0 !
unknown.605tesloni,
-> #604, mornar Ú-> : Dynamic linking je ugradjen u BC++ 3.0 !
TNX...
... Ú-> Tesloni <-Ú
unknown.606paris,
Preklinjem za pomoc, naime imam knjigu C++ (Bjarne STROUSTRUP) i neku ─od
verzija TC-a. Vec kod prvog prţbiŢ╔mera sam stao jer nemam bibliotekau
li to znaci da za C++ moram da nabavim poseban kompailer Ú, a ako da gde to
mogu da nadjem, zaista je hitno.
╝Ż paris
unknown.607robert,
-> #606, paris<:> li to znaci da za C++ moram da nabavim poseban kompailer Ú, a ako
<:> da gde to mogu da nadjem, zaista je hitno.
Za C++ ti treba (ako koristiš Borlandove kompajlere) TC++ 1.0 i veće
ili BC++ 2.0 ili 3.0 (to je i poslednja verzija Borland C++).
Ja, konkretno, koristim TC++ 1.0 ali imam i BC++ 2.0 ali mi to još
nije potrebno jer se ne bavim pisanjem aplikacija za Windows. Mislim
da je TC++ 1.0 prava stvar jer je prilično kompaktan (ne zauzima mnogo
prostora na disku) a može da se radi svašta sa njim. Ima samo dve knjige
(TC++ Users guide i Programmers guide) tako da ni tu nema prevelikih
troškova kopiranja (naravno ako nisi kupio paket od Borlanda). TC++ 1.01
bi trebalo da ima svako ko se bavi programiranjem u C-u tako da samo
treba da poznaješ nekog takvog i da ga lepo zamoliš da ti da da iskopiraš
diskete ;).
TC++ 1.0 ide na 8 disketa od 360k samo da znaš.
Pozdrav... Robert.
P.S. Mail me ako imaš još pitanja.
unknown.608mjova,
-> #606, paris> verzija TC-a. Vec kod prvog prţbiŢ╔mera sam stao jer nemam
> bibliotekau li to znaci da za C++ moram da nabavim poseban
> kompailer Ú, a ako da gde to
naravno da su ti potrebne biblioteke, ono bar za početak (dok sam ne
napišeš ;). biblioteke idu uz prevodioc, i ako imaš neki TC, verovatno
da si uzeo sa diska (samo exe), ili nisi (pri instalaciji) pravilino
podesio putanje, itd
pretpostavljam da ti verovatno nedostaje još dosta toga, nađi
kompletan prevodioc.
SY
unknown.609pstojanovic,
Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim,
problem je u tome sto se pointer uvek postavi na tekuci data segment.
U turbo paskalu sa tim nisam imao problema, jednostavno sam zadavao
var p:pointer;
begin
...
p:=ptr(segvar,ofsvar);
...
end.
Da li postoji odgovor za C, ili se ipak mora pisati dodatna
asemblerska rutina ?
unknown.610ppekovic,
-> #609, pstojanovic>> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim,
>> problem je u tome sto se pointer uvek postavi na tekuci data segment.
Postoji nekoliko načina za to, evo ti dva najjednostavnija:
<type> far *<far_pointer_name>=<32_bit_adress>;
primer:
int far *pocetak=0xB8000000;
ako te mrzi da pišeš 32 bitne adrese tj. više voliš segmente i
offset-e, onda uradi sledeće:
#define MK_FP(seg,ofs) ((void far*) (((long) (seg)<<16) | (ofs)))
int far *pocetak;
pocetak=MK_FP(0xB800,0);
...
Paya
unknown.611ppekovic,
-> #606, paris>> Preklinjem za pomoc, naime imam knjigu C++ (Bjarne STROUSTRUP) i neku ─od
>> verzija TC-a. Vec kod prvog prţbiŢ╔mera sam stao jer nemam bibliotekau
>> li to znaci da za C++ moram da nabavim poseban kompailer Ú, a ako da gde to
>> mogu da nadjem, zaista je hitno.
Potreban ti je neki od C++ compiler-a. Za MSDOS imaš gomilu
Borlandovih C++ compiler-a kao i Microsft C 7.0. Za UNIX/XENIX
imaš GNU C++. Ako ti ovaj potonji treba javi kad dolaziš do
fakulteta i spremi 5 1.44 disketa.
Paya
unknown.612djelovic,
-> #609, pstojanovic> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim,
> problem je u tome sto se pointer uvek postavi na tekuci data segment.
Ako si u Small ili nekom drugom "near" memorijskom modelu
pointer deklariši kao "far" ili pređi u large model. Prvo se radi tako
što umesto, recimo, void *p napišeš void far *p, a drugo možeš u
integrisanoj okolini da središ u Options/Compile meniju, ili svičem -ml
u komandnoj liniji.
Za dodelu pointera mislim da ti je najlakše da koristiš makro
MK_FP, recimo
void *p = MK_FP (segment, offset);
Das ist alles.
unknown.613obren,
-> #609, pstojanovic> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim,
> problem je u tome sto se pointer uvek postavi na tekuci data
> segment.
To se lako reši jednim cast-om, mada je lepše koristiti makro MK_FP:
Primer:
void far *ptr=MK_FP(0xA000, 0x0000);
unknown.614robert,
-> #610, ppekovic<:># define MK_FP(seg,ofs) ((void far*) (((long) (seg)<<16) | (ofs)))
Kod Borlanda je ovaj makro već definisan...
Robert
unknown.615janko,
-> #609, pstojanovic> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u.
> Medjutim, problem je u tome sto se pointer uvek postavi na
> tekuci data segment.
Najlakše je da pređeš na LARGE model. Ne boj se, nije strašno,
niti previše sporo. Odaću ti tajnu: Turbo Paskal NA SVE STRANE
radi sa FAR pointerima, inače ne bi mu ista rutina mogla da
radi i sa promenljivom koja je alocirana na Hipu.
> Da li postoji odgovor za C, ili se ipak mora
> pisati dodatna asemblerska rutina ?
Ne mora, ali, Small, Medium modelu puno BIBLIOTEžKIH rutina
ti neće raditi sa far pointerima! Postoji farmalloc, ali ne i
rutine kojima je PRAMETAR far pointer -- moraš sam da ih pišeš.
Lakše preći na LARGE.
A, ako, ipak, nećeš, čarobne reči su MK_FP, FP_SEG i FP_OFS:
>
> ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ■ Get a far address offset (FP_OFF)
> ŢFP_OFF, FP_SEG, and MK_FP macrosŮ ■ Get a far address segment (FP_SEG
> ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ■ Make a far pointer (MK_FP)
> Syntax:
> unsigned FP_OFF(void far *p);
> unsigned FP_SEG(void far *p);
> void far *MK_FP(unsigned seg, unsigned ofs);
>
> Defined in dos.h
>
> See Also:
> movedata segread
>
> /* FP_OFF */
>
> #include <dos.h>
> #include <stdio.h>
>
> int main(void)
> š
> char *str = "fpoff.c";
>
> printf("The offset of this file in memoryĐ
> is: %FpĐn", FP_OFF(str));
>
> return 0;
> ć
>
>
> /* FP_SEG */
>
> #include <dos.h>
> #include <stdio.h>
>
> int main(void)
> š
> char *filename = "fpseg.c";
>
> printf("The offset of this file in memoryĐ
> is: %FpĐn", FP_SEG(filename));
>
> return(0);
> ć
>
>
> /* MK_FP */
>
> #include <dos.h>
> #include <graphics.h>
>
> int main(void)
> š
> int gd, gm, i;
> unsigned int far *screen;
>
> detectgraph(&gd, &gm);
> if (gd == HERCMONO)
> screen = MK_FP(0xB000, 0);
> else
> screen = MK_FP(0xB800, 0);
> for (i=0; i<26; i++)
> screenŠiĆ = 0x0700 + ('a' + i);
> return 0;
> ć
>
>
unknown.616ppekovic,
-> #614, robert>> <:># define MK_FP(seg,ofs) ((void far*) (((long) (seg)<<16) | (ofs)))
>>
>> Kod Borlanda je ovaj makro već definisan...
Kad smo već krenuli sa ovom temom da dodam da je moguć i
sledeći način za "igranje" sa segment-ima i offset-ima.
_segment seg=0xb800;
int _based(seg) *pocetak=0;
Dakle, pointer pocetak je 16 bitni offset na segmentu seg.
Paya
unknown.617dnikolic,
-> #603, tesloni>> podrsku dinamickom linkingu ( podataka i procedura ), ili bar
Sta je to?
dn
unknown.618dnikolic,
-> #607, robert>> ili BC++ 2.0 ili 3.0 (to je i poslednja verzija Borland C++).
Poslednja je valjda, 3.1?
dn
unknown.619ppekovic,
-> #617, dnikolic>> >> podrsku dinamickom linkingu ( podataka i procedura ),
>> ili bar
>>
>> Sta je to?
Ukratko to ti je kada jedan deo programa odvojiš u poseban fajl pa ga po
potrebi učitavaš za vreme izvršavanja programa. To su ti oni fajlovi sa
ekstenzijom OVL, ili kod OS/2 DLL, ...
Paya
unknown.620robert,
-> #618, dnikolic<:> Poslednja je valjda, 3.1?
OK, može biti... Izvinjavam se ako sam pogrešio.
unknown.621jtitov,
-> #618, dnikolic> Poslednja je valjda, 3.1?
Tacno, a da li je neko ima?
unknown.622pstojanovic,
Hvala svima za opsirne savete.
unknown.623todorp,
Hi
Zanima me kako u turbo C-u broj npr. 1234567 napiše kao 1,234,567.Ja sam
napravio rutinu (ono sa deljenjem bez ostatka,oduzimanje itd) ali me
zanima da li to može nekako jednostavnije.
Pozdrav od Todora.
unknown.624djelovic,
-> #623, todorp> Zanima me kako u turbo C-u broj npr. 1234567 napiše kao 1,234,567?
Ne postoji bibliotečka rutina koja bi to radila. No, pošto se ovakvi
brojevi sa zarezima uglavnom koriste sa novac, pa se završavaju sa dve cifre
iza decimalnog mesta (.00), onda možeš da jednostavno ispišeš broj bez zareza u
string, sa strlen izračunar njegovu dužinu, i onda kreneš pa ubacuješ zareze na
odgovarajuđa mesta (do_kraja%3 == 0).