Libovi VS-a i C++ Buildera nisu međusobno kompatibilni jer nisu istih formata (COFF i OMF).
Programiranje u C++-u - pitanja i odgovori
- poruka: 7.285
- |
- čitano: 1.703.104
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Daj da vidim link. Inače, potraži za Delphi jer C++ Builder interno može compilirati i Delphi kod.
A što se općenito tiče importiranja 3D objekata to se može napraviti kroz FireMonkey 3D aplikaciju.
Budem proučio to, ma radim si preglednik 3D modela da nešto novo naučim (nesto slicno kao u UDK Content Browser) ali i sa 3D preview opcijom.
Onda svakako FireMonkey. Još pogotovo ako koristiš C++ Builder XE6 jer onda ćeš tu 3D aplikaciju direktno moći compilirati i za iOS, Android i Mac.
Da, ali ja vec imam VCL aplikaciju, da li je moguce sad nekako koristiti FireMonkey unutar standardne VCL aplikacije?
Ne. VCL je isključivo za Windows.
Eh ... -.-
e ljudi vidim da ima i ova tema,pa reko da pitam vec nesto ,idem u srednju elektrotehnicku i znam ponesto u C-u ,i sad kuci radim malo,iz dosade,pa radim neki program koji ce racunati starost osobe ,i imam jedan problemcic ,kako bi mogao vise(12) if petlji napisati krace ,s tim da svaka mora biti razlicita ,razlicit uslov ,mislio sam u for ,ali nije to to :) mislim da ce neko imati pravi odgovor hvala unaprijed
e ljudi vidim da ima i ova tema,pa reko da pitam vec nesto ,idem u srednju elektrotehnicku i znam ponesto u C-u ,i sad kuci radim malo,iz dosade,pa radim neki program koji ce racunati starost osobe ,i imam jedan problemcic ,kako bi mogao vise(12) if petlji napisati krace ,s tim da svaka mora biti razlicita ,razlicit uslov ,mislio sam u for ,ali nije to to :) mislim da ce neko imati pravi odgovor hvala unaprijed
Reci za što ti konkrentno treba 12 if grananja, pa će ti onda netko možda moći predložiti nešto kraće.
Možeš koristiti switch(int) - ali switch ti samo kao argument prima cijelobrojnu varijablu
e ljudi vidim da ima i ova tema,pa reko da pitam vec nesto ,idem u srednju elektrotehnicku i znam ponesto u C-u ,i sad kuci radim malo,iz dosade,pa radim neki program koji ce racunati starost osobe ,i imam jedan problemcic ,kako bi mogao vise(12) if petlji napisati krace ,s tim da svaka mora biti razlicita ,razlicit uslov ,mislio sam u for ,ali nije to to :) mislim da ce neko imati pravi odgovor hvala unaprijed
Možeš reći "if blok" ili nešto drugo, nikako petlja. No terminologiju na stranu, ako uspoređuješ jednu varijablu sa skupinom raznih cjelobrojnih vrijednosti, onda umjesto hrpe if blokova možeš iskoristiti switch.
Recimo:
int n = 5;
if (n == 0)
/* učini nešto */
if (n == 1)
/* učini nešto */
if (n == 3)
/* učini nešto */
...
itd
možeš zamijeniti sa:
int n = 5;
switch (n)
{
case 0:
/* učini nešto */
break;
case 1:
/* učini nešto */
break;
case 3:
/* učini nešto */
break;
}
Pri switch-case konstruktu kompajler će stvoriti jump tabelu, što može biti znatno brže kod testiranja ogromnog broja vrijednosti, a iako je u ovom primjeru switch blok dulji, elegantniji je kada imaš veći broj takvih usporedbi i lakše je upiknuti nove po potrebi.
Nikad nisam pisao program koji je imao toliko usporedbi s if naredbom. O čemu god da je riječ sigurno može biti jednostavnije napisano.
ma radim ovaj program da ako neko unese da je rodjen u januaru 1990 ,da mu izracuna koliko godin i mjeseci ima tacno,pa radi elegancije hocu da uradim if petlju da ako neko unese da je rodjen u martu 1995 ,da mart pretvorim u brojcanu vrijednost ,kako bi mogao da racunam,i rustweaver mi je odgovorio tačno,ima nesto slicnu u paskalu ,case petlja/blok se zove,a sto se tice terminologije nisam iz hrvatske ,i nas uce petlja ,sta cu :) hvala vam puno na pomoci
ma radim ovaj program da ako neko unese da je rodjen u januaru 1990 ,da mu izracuna koliko godin i mjeseci ima tacno,pa radi elegancije hocu da uradim if petlju da ako neko unese da je rodjen u martu 1995 ,da mart pretvorim u brojcanu vrijednost ,kako bi mogao da racunam,i rustweaver mi je odgovorio tačno,ima nesto slicnu u paskalu ,case petlja/blok se zove,a sto se tice terminologije nisam iz hrvatske ,i nas uce petlja ,sta cu :) hvala vam puno na pomoci
Drugim riječima umjesto 12 if "petlji" tebi ne treba niti jedna jer umjesto "mart" možeš tražiti da se unese broj mjesec.
a sto se tice terminologije nisam iz hrvatske ,i nas uce petlja ,sta cu :) hvala vam puno na pomoci
Nema to veze sa Hrvatskom.
pa dobro ,nas uce tako ,sta ja tu mogu :)
pa dobro ,nas uce tako ,sta ja tu mogu :)
Pa možeš to naučiti. Bar to nije problem.
naravno da mogu ,čovjek uči dok je živ
Možeš i ovak riješit problem.
int getMonthNum(char *month)
{
static char months[][10] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
for (int i = 0; i < 12; i++)
{
if (!strcmp(month, months[i]))
{
return i + 1;
}
}
return 0;
}
ljudi, rješavam neke zadatke iz HONI-ja i htio bih pokrenuti program sa test podacima koje skinem sa stranice. profesor mi je pokazivao kako da to napravim preko cmd-a al sam zaboravio postupak . ako mi neko može reći kako da napravim to bio bi mu jako zahvalan.
ljudi, rješavam neke zadatke iz HONI-ja i htio bih pokrenuti program sa test podacima koje skinem sa stranice. profesor mi je pokazivao kako da to napravim preko cmd-a al sam zaboravio postupak . ako mi neko može reći kako da napravim to bio bi mu jako zahvalan.
Ajmo polako. Što točno podrazumijevaš pod "pokrenem"?
Trebaš li možda kompajlirati program koristeći konzolu? Ako da, koji je kompajler u pitanju (MinGW, odnosno GCC?).
Ili trebaš samo pokrenuti izvršnu datoteku već kompajliranog programa sa određenim argumentima? Ako da, onda ti se to svodi na:
imeprograma.exe argument1 argument2 argument3
ekstenziju izvršnih datoteka (exe, com, i bat) možeš i izostaviti (s time da moraš imati na umu da postoji određen redoslijed kojim se traži prva izvršna datoteka nekog imena, da se ne iznenadiš ako npr imaš nekiprogram.exe i nekiprogram.bat u istom folderu). Pa onda to izgleda ovako:
imeprograma argument1 argument2 argument3
S time da argumenata možeš imati koliko želiš (odnosno koliko stane), i da način na koji program razdvaja argumente ovisi od programa do programa (uglavnom se koristi '-', nekad prije je i '/' bio popularan). Ali to ti ništa ne znači ako tvoj program nije napisan tako da koristi te znakove za razdvajanje argumenata.
Druge komande koje bi te mogle interesirati su:
cd imefoldera
Za ulazak u neki podfolder. Možeš koristiti i apsolutnu putanju tipa c:\nekifolder\nekipodfolder\nekipodpodfolder za instant prebacivanje u neki "udaljeni" folder bez potrebe da ideš tamo "korak po korak".
cd..Za izlazak iz foldera (ista stvar kao kada u exploreru stisneš "up").
dirZa izlistanje sadržaja trenutnog foldera, možeš kombinirati sa raznim switchevima (npr. /p za pauziranje ispisa na svakoj stranici, ili *.ekstenzija za izlistanje samo datoteka sa nekom ekstenzijom)
Ono što ja sebi obavezno postavim na svakoj instalaciji windowsa (svi windowsi još od win95 to podržavaju, samo se postupak razlikuje), je otvaranje konzole u nekom folderu kroz desni klik menij u exploreru. Pretpostavljam da koristiš sedmicu pa evo.
samo hoću testirati program sa testnim podacima koje skinem, bez obzira na koji način. meni je profesor pokazao da skinute tetstne podatke stavim u mapu c:\eval\test , a svoj kompajlirani program u mapu c:\eval . nakon što to napravim, pokrenem cmd i preko njega pokrenem taj svoj program koji će vuče ulazne podatke i pokazuje mi moj rezultat i rezultat koji bi trebao biti. Uglavnom, ako postoji bilo koji drugi (jednostavniji) način za testiranje programa samo reci.
Po ovome što si mi opisao (i ako kompletna putanja nije hardkodirana u program), onda taj .exe možeš smjestiti u bilo koji folder, a testne podatke u \eval podfolder. Znaš valjda kako koristiti relativne putanje u C++-u?
Iako ne vidim ovdje značaj ručnog pokretanja iz konzole. Zar ti IDE ne pauzira output programa u konzoli? Zašto baš moraš ručno?
samo hoću testirati program sa testnim podacima koje skinem, bez obzira na koji način. meni je profesor pokazao da skinute tetstne podatke stavim u mapu c:\eval\test , a svoj kompajlirani program u mapu c:\eval . nakon što to napravim, pokrenem cmd i preko njega pokrenem taj svoj program koji će vuče ulazne podatke i pokazuje mi moj rezultat i rezultat koji bi trebao biti. Uglavnom, ako postoji bilo koji drugi (jednostavniji) način za testiranje programa samo reci.
Stavi exe u isti folder kao i testni podatak.
Otvori cmd i pomocu cd udji u direktorij gdje se nalazi exe.
Upisi
imePrograma < ulaz1.txt
npr.
gledatelj < gledatelj.dummy.in.2
Ako hoces da izlaz ide u file, upisi:
gledatelj < gledatelj.dummy.in.2 > izlaz2.txt
Po ovome što si mi opisao (i ako kompletna putanja nije hardkodirana u program), onda taj .exe možeš smjestiti u bilo koji folder, a testne podatke u \eval podfolder. Znaš valjda kako koristiti relativne putanje u C++-u?
Iako ne vidim ovdje značaj ručnog pokretanja iz konzole. Zar ti IDE ne pauzira output programa u konzoli? Zašto baš moraš ručno?
Lakse je rucno pokretati kad na ulazu imas file od 1-2MB.
A lol. Pa vi o redirekciji standardnog ulaza pričate. Ja mislio da mora prosljeđivati ime datoteke preko argumenta ili nešto tako...
snašao sam se. hvala na pomoći :)
Pozdrav,
Imam zadatak u kojem nemogu skontati neke skracenice i sta one rade...e sada moze li mi netko objasniti cemu sluze i sto toco koji dio zadatka radi... te npr. za sto sluzi pom, zam...
/* 6.rujna 2012. zadatak 1.
Napravi program koji unos cijele brojeve sve dok se neki broj ne unese uzastopno
tri puta, a zatim ispisuje koliko je uneseno brojeva manjih, a koliko vecih od
zadnjeg unesenog broja.
*/
#include <iostream>
using namespace std;
int main(){
int broj[200], b=0,n=1,k=0, niz[2], pom[200], mb=0, vb=0;
cout << "Unesi brojeve: " << endl;
do{
cin >> broj[b];
if(broj[b]!=niz[0])
{
niz[0]=broj[b];
n=1;
pom[k]=broj[b];
k++;
}
else
{
n++;
}
b++;
}while(n<3);
for(int i=0; i<k-1; i++)
{
for(int j=i+1; j<k; j++)
{
if(pom[i]>pom[j])
{
int zam=pom[i];
pom[i]=pom[j];
pom[j]=zam;
}
}
}
int zadnji=niz[0];
for(int i=0; i<k; i++)
{
if(zadnji<pom[i])
{
vb++;
}
else
{
mb++;
}
}
cout << endl;
cout << "Uneseno je " << mb << " brojeva manjih i " << vb << " brojeva vecih od " << zadnji << endl;
// kraj
cout << endl;
system("PAUSE");
return 0;
}
Hvala na svim odgovorima
Netko :D?
Par osnovnih pitanja :)
1. Zašto se ovdje koristi void?
/* program unosi 10 cijelih brojeva, odredjuje minimum i
maksimum i zapisuje ih ispisuje na ekran */
#include <stdio.h>
// prototip funkcije
void minmax(int niz[10]);
2. Ovaj dio sa računanjem mi nije jasan. Npr (4.5 - 4) > od čega?
/* program unosi 10 realnih brojeva i ispisuje onaj
broj sa najmanjim decimalnim dijelom */
min_dd = broj[0];
for(i = 0; i < 10; i++)
if(fabs(min_dd - int(min_dd)) > fabs(broj[i] - int(broj[i])))
min_dd = broj[i];
3. Ovaj dio kad je kontola 0 i kad je 1 ? Vise teoretski objasnit ako nije problem.
/* program unosi brojeve dok se neki broj ne unese drugi put
i zatim ispisuje koliko je brojeva uneseno */
int broj[100], i = -1, j, kontrola;
do
{
i++;
scanf("%d", &broj[i]);
kontrola = 0;
for(j = 0; j < i; j++)
if(broj[i] == broj[j])
kontrola = 1;
}
while(kontrola == 0);
4. Ukratko o brojačima. Zasto je prvi = 0?
/* program unosi 10 cijelih brojeva i ispisuje onaj
broj koji se najvise puta ponavlja */
int broj[10], najcesci, i, j, brojac1 = 0, brojac2;
// unos podataka
printf("Unesi 10 cijelih brojeva:\n");
for(i = 0; i < 10; i++)
scanf("%d", &broj[i]);
// pronalazenje najcesceg broja
for(i = 0; i < 10; i++)
{
brojac2 = 0;
for(j = 0; j < 10; j++)
if(broj[i] == broj[j])
brojac2++;
if(brojac2 > brojac1)
{
brojac1 = brojac2;
najcesci = broj[i];
}
}
// ispis rezultata
printf("Najcesci broj je %d sa %d ponavljanja.\n", najcesci, brojac1);
To bi bilo to :) Unaprijed hvala.
Imam zadatak u kojem nemogu skontati neke skracenice i sta one rade
To se događa kada užicaš rješenje, realno, lakše ti je napisati cijelu stvar nanovo nego ići raspetljavati nečiji cirkus...
Par osnovnih pitanja :)
1. Zašto se ovdje koristi void?
/* program unosi 10 cijelih brojeva, odredjuje minimum i
maksimum i zapisuje ih ispisuje na ekran */
#include <stdio.h>
// prototip funkcije
void minmax(int niz[10]);
Jer funkcija minmax() nema povratnu vrijednost. Da ima povratnu vrijednost (npr da računa sumu i vraća sumu) onda bi bilo npr. int minmax()
2. Ovaj dio sa računanjem mi nije jasan. Npr (4.5 - 4) > od čega?
/* program unosi 10 realnih brojeva i ispisuje onaj
broj sa najmanjim decimalnim dijelom */
min_dd = broj[0];
for(i = 0; i < 10; i++)
if(fabs(min_dd - int(min_dd)) > fabs(broj[i] - int(broj[i])))
min_dd = broj[i];
fabs() vraća apsolutnu vrijednost, fabs(1) daje 1, fabs (-1) daje 1.
ako imaš npr 2 broja, 1.55 i 11.4 onda za prvi broj ide
fabs(1.55 - 1 (ova jedinica je zbog int() dakle napravio si cast u integer i izgubio si decimalnu komponentu)) > fabs(1.55 - 1)
i imaš rezultat 0.55 > 0.55
a u drugom prolazu imaš 0.55 > 0.4 te onda 11.4 pohranjuješ u min_dd kao novi broj sa najmanjim decimalnim dijelom
3. Ovaj dio kad je kontola 0 i kad je 1 ? Vise teoretski objasnit ako nije problem.
/* program unosi brojeve dok se neki broj ne unese drugi put
i zatim ispisuje koliko je brojeva uneseno */
int broj[100], i = -1, j, kontrola;
do
{
i++;
scanf("%d", &broj[i]);
kontrola = 0;
for(j = 0; j < i; j++)
if(broj[i] == broj[j])
kontrola = 1;
}
while(kontrola == 0);
dakle svaki put kada uneseš broj u niz pregledaš cijeli niz da vidiš ako taj broj već postoji u nizu, te ako postoji postaviš varijablu kontrola na jedan tako da while petlja prestane sa radom.
varijabla kontrola ti služi da izađeš iz while petlje. Ovdje ti recimo break nebi napravio što želiš jer bi izašao samo iz for petlje tako da se koristi kontrolna varijabla.
4. Ukratko o brojačima. Zasto je prvi = 0?
/* program unosi 10 cijelih brojeva i ispisuje onaj
broj koji se najvise puta ponavlja */
int broj[10], najcesci, i, j, brojac1 = 0, brojac2;
// unos podataka
printf("Unesi 10 cijelih brojeva:\n");
for(i = 0; i < 10; i++)
scanf("%d", &broj[i]);
// pronalazenje najcesceg broja
for(i = 0; i < 10; i++)
{
brojac2 = 0;
for(j = 0; j < 10; j++)
if(broj[i] == broj[j])
brojac2++;
if(brojac2 > brojac1)
{
brojac1 = brojac2;
najcesci = broj[i];
}
}
// ispis rezultata
printf("Najcesci broj je %d sa %d ponavljanja.\n", najcesci, brojac1);
To bi bilo to :) Unaprijed hvala.
Brojače inicijaliziraš na nulu da bi bio siguran u vrijednost s kojom krećeš. I brojac2 je inicijaliziran na nulu u for petlji prije svakog novog prebrojavanja.
I onda ide, brojac1 je nula, onda se broji koliko puta se prvi član niza ponavlja (inkrementirajuci brojac2 od nule), ako je to veće od trenutne vrijednosti brojaca1 (koji je nula na prvom prolazu) onda se u brojac1 posprema broj ponavljanja a u najcesci broj koji se ponavlja
*edit: i ono što rust kaže :P