broj != 0
Programiranje u C++-u - pitanja i odgovori
- poruka: 7.284
- |
- čitano: 1.968.185
- |
- moderatori:
XXX-Man
- +/- sve poruke
- ravni prikaz
- starije poruke gore
broj != 0
uoči da ti ne treba taj break u petlji, prije ili kasnije lupiš nulu, ona ne povećava sumu, dakle samo smanjiš brojač pozitivnih za jedan, a onda prosjek staviš na početku 0, kojeg računasš jedino ako je brojac - 1 veći od 0, da bi izbjegao dijeljenje s nulom, u tvom slučaju ako udariš samo 0, program se ruši.
krenuo sam s tim jer je sample koji proucavam s naparavljen s tim. boljeg razloga od toga nema (osim mozda da neznam ni za koji drugi).
Jednostavno napravi obicnu konzolnu aplikaciju, ne znam kako to ide tocno u NetBeansu, ali negdje ima sigurno za odabrati "Console application" ili nesto slicno. Qt aplikacije su aplikacije s grafickim korisnickim suceljem, a to ti je ipak malo overkill ovako na pocetku.
krenuo sam s tim jer je sample koji proucavam s naparavljen s tim. boljeg razloga od toga nema (osim mozda da neznam ni za koji drugi).
Jednostavno napravi obicnu konzolnu aplikaciju, ne znam kako to ide tocno u NetBeansu, ali negdje ima sigurno za odabrati "Console application" ili nesto slicno. Qt aplikacije su aplikacije s grafickim korisnickim suceljem, a to ti je ipak malo overkill ovako na pocetku.
Stvar je tome da imam neke osnove u c++ i programiranju opcenito (kao sto sam vec napisal radim sa PHP-om aktivno) i konkretno me zanima izrada qt aplikacije, al nisam bas na 'ti' sa kompajliranjem.
Moje konkretno pitanje je kako kompajlirati qt program? Tj u cemu grijesim? (link na prvi post)
Konzolne programe mogu bez problema kompajlirat.
Stvar je tome da imam neke osnove u c++ i programiranju opcenito (kao sto sam vec napisal radim sa PHP-om aktivno) i konkretno me zanima izrada qt aplikacije, al nisam bas na 'ti' sa kompajliranjem.
Moje konkretno pitanje je kako kompajlirati qt program? Tj u cemu grijesim? (link na prvi post)
Konzolne programe mogu bez problema kompajlirat.
Aha. Onda ti ne mogu puno pomoci s obzirom da ne znam bas raditi s NetBeansom. Kad su u pitanju Qt aplikacije (a i ako nisu), ja koristim odlican Qt Creator IDE. Bez obzira sto mu ime to ne sugerira, ima podrsku i za JavaScript i nesto malo za Python iako za Python koristim odlican PyCharm.
Ovdje mozes skinuti cijeli paket (Qt biblioteke + Qt Creator). Mislim da su u paketu jos i Qt Designer (dizajn GUI-ja u GUI-ju lol), Qt Assistant (alat za prezentiranje online dokumentacije) i Qt Linguist (pisanje prijevoda za Qt aplikacije).
Kad skines i instaliras, sve se automatski namjesti i ne bi trebalo biti nikakvih problema kod kompajliranja brojnih primjera.
Imam pitanje, radi li ode iko u pgAdminu postgresql ?
Nemogu postaviti localhost na pc svom ne znam zašto, a moram napraviti hitno database jedan za faks :(
Bilokakve upute bi bile much appriciated. Kad se idem connectat na kreirani local host server ne uspijem pa nemogu dodat new database i unijet u nju podatke, pa radit sql upite..
edit: Postam sad sliku greške.. sec samo
Probaj modificirati pg_hba.conf file ovako (na dnu se nalazi taj odlomak):
local all postgres trust
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 md5
#host replication postgres ::1/128 md5
Ovako to izgleda na Linuxu, ali nešto mi je ostalo u sjećanju da je na Windozama još nešto potrebno. Meni je ovo pomoglo, a mislim da se radilo o sličnom ako ne i o istom problemu.
Ovo inače nema veze sa pgAdminom koji je ustvari frontend za rad sa Postgresom.
#include<iostream>
using namespace std;
int main() {
int*brojevi=
(int*)malloc(sizeof(int));
cin>>brojevi[0];
float prosjek=brojevi[0];
int duzina=1;
while (prosjek<47){
duzina++;
int*tmp=(int*)malloc(duzina*sizeof(int));
memcpy(brojevi,tmp,duzina*sizeof(int));
brojevi=tmp;
cin>>brojevi[duzina-1];
prosjek=prosjek+brojevi[duzina-1];
prosjek=prosjek/duzina;
}
for(int i=0;i<duzina;i++)
{
cout<<brojevi[i]<<"";
}
return 0;
}
MOzeli mi itko objasniti sta radi ovaj zadatak?
#include<iostream>
using namespace std;
int main() {
int*brojevi=
(int*)malloc(sizeof(int));
cin>>brojevi[0];
float prosjek=brojevi[0];
int duzina=1;
while (prosjek<47){
duzina++;
int*tmp=(int*)malloc(duzina*sizeof(int));
memcpy(brojevi,tmp,duzina*sizeof(int));
brojevi=tmp;
cin>>brojevi[duzina-1];
prosjek=prosjek+brojevi[duzina-1];
prosjek=prosjek/duzina;
}
for(int i=0;i<duzina;i++)
{
cout<<brojevi[i]<<"";
}
return 0;
}
MOzeli mi itko objasniti sta radi ovaj zadatak?
Ne radi ništa, u memorijski blok brojevi kopiraš memorijski blok temp koji nije inicijaliziran, da bi u liniji ispod pokazivač brojevi usmjerio na memorijski blok temp. U konačnici, dobiješ niz brojevi koji ispisuje garbage sve dok prosjek prethodnih prosjeka i tekućeg broja ne premaši 47, i na zadnjem mjestu niza brojevi dobiješ broj čiji prosjek sa prethodnim prosjekom prelazi 47.
Što god tražio, niz brojeva čiji prosjek prelazi 47 ili niz kod kojeg tekući broj sa prethodnim prosjekom prelazi 47, ovo je pogrešno.
Može mala pomoc... nezz raditi u vise headera... nezz sto mi javlja u ovom kodu gresku kad koristim string u klasi evo jedan simple kod!
javlja kao 'string does not name type !
_____
main:
#include <string>
#include "Stroj.h"
using namespace::std;
int main(){
return 0;
}
______
Pa i u headeru "stroj.h" moraš dodati header "string". Ne razmišljaš, odakle će drugdje "stroj.h" dobiti definiciju string klase? Prije nego dodaš string header, identifikator "string" je nepoznat...
Prije uporabe nekog identifikatora on mora biti definiran (doslovno prije, može i jednu liniju iznad, samo da je "prije"). Prema tome ako koristiš neke dijelove standardne biblioteke, moraš u svaku source datoteku (nije bitno je li source ili header datoteka) koja koristi taj identifikator uključiti traženi header koji ga definira... osim ako već nisi u tu source datoteku dodao neki header koji u sebi dodaje taj header (npr. kada u "stroj.h" dodaš header "string", tada u "stroj.cpp" ne moraš dodati header "string" jer si već u toj datoteci dodao header "stroj.h" koji uključuje "string").
Ma skuzio sam to cim sam napisao .... thx
Može još jedna mal pomoc... nezz sto mi javlja grsku nakon izvršavanja programa
#include <iostream>
#include <string>
using namespace::std;
class Stroj{
protected:
string Naziv;
int BrojEl;
int BrojFunk;
string* Funkcije;
public:
Stroj(string Naziv, int BrojEl, int BrojFunk, string* Funk);
~Stroj();
};
Stroj::Stroj(string Naziv, int BrojEl, int BrojFunk, string* Funk)
: Naziv(Naziv), BrojEl(BrojEl), BrojFunk(BrojFunk), Funkcije(Funk){
Funkcije = new string[BrojFunk];
for (int i = 0; i < BrojFunk; ++i){
*(Funkcije + i) = *(Funk + i);
}
}
Stroj::~Stroj(){
cout << "Stroj " << Naziv << " izlazi iz uporabe! " << endl;
delete[] Funkcije;
}
class ElektricniStroj : public Stroj{
private:
int Snaga;
public:
ElektricniStroj(string Naziv, int BrojEl, int BrojFunk, string* Funk, int Snaga);
~ElektricniStroj();
};
ElektricniStroj::ElektricniStroj(string Naziv, int BrojEl, int BrojFunk, string* Funk, int Snaga)
: Stroj(Naziv, BrojEl, BrojFunk, Funk), Snaga(Snaga){
}
ElektricniStroj::~ElektricniStroj(){
cout << "El. Stroj " << Naziv << " izlazi iz uporabe! " << endl;
delete[] Funkcije;
}
int main(){
string fun[] = {"popravlja", "brise", "vozi", "kvari"};
ElektricniStroj A("A", 3, 4, fun, 5);
char z;
cin >> z;
}
Koliko mi se čini - dva puta dealociraš "Funkcije". To bi trebalo dealocirati samo u klasi Stroj a ne i u klasi ElektricniStroj.
Koliko mi se čini - dva puta dealociraš "Funkcije". To bi trebalo dealocirati samo u klasi Stroj a ne i u klasi ElektricniStroj.
E da to sam primjetio, znači ne treba mi destruktor izvedene klase uopšte???
Koliko mi se čini - dva puta dealociraš "Funkcije". To bi trebalo dealocirati samo u klasi Stroj a ne i u klasi ElektricniStroj.
E da to sam primjetio, znači ne treba mi destruktor izvedene klase uopšte???
Ili pak treba ali ovaj put bez dealociranja??
Ne znam da li ti treba ili ne pošto ne vidim tekst zadatka. Uostalom, sam zaključi.
Ne znam da li ti treba ili ne pošto ne vidim tekst zadatka. Uostalom, sam zaključi.
Pa mislim za svaku klasu bi trebao destruktor pa tako i za nasljeđenu?? samo ne da kao i ja da 2 puta dealociram!
Pa znaš valjda čemu destruktori služe? U njih strpaš neki kod koji će se izvršavati svaki puta kada objekt biva uništen. Sada ti procjeni treba li ti neki specijalni destruktor (trebaš li osloboditi neku memoriju, ili nešto drugo obaviti pri uništavanju objekta).
Kompajler će ti u svakom slučaju načiniti defaultni destruktor ako ti ne definiraš vlastiti (isto vrijedi i za konstruktore).
Imam pitanje, kako u C++ Builderu napraviti petlju kroz određene kontrole (TEdit) na formi (znaci recimo od Edit1 do Edit 10 u petlji i svima izbrisati text)?
Sredio sam, umjesto Control treba koristiti Component (evo i kod ako nekome zatreba):
for (int i = 0; i < ComponentCount; i++) {
TComponent * component = Components[i];
TEdit * edit = dynamic_cast<TEdit*>(component);
if(edit) edit->Clear();
}
Pa znaš valjda čemu destruktori služe? U njih strpaš neki kod koji će se izvršavati svaki puta kada objekt biva uništen. Sada ti procjeni treba li ti neki specijalni destruktor (trebaš li osloboditi neku memoriju, ili nešto drugo obaviti pri uništavanju objekta).
Kompajler će ti u svakom slučaju načiniti defaultni destruktor ako ti ne definiraš vlastiti (isto vrijedi i za konstruktore).
Ma jasno mi je u biti ovo je neki zadatak od profesora, i ne treba mi specialno destruktor eto samo da vidi kad se objekt nasljeđene klase unistio ... ;)
TPanel * panel = new TPanel(FlowPanel1->Handle);
panel->AlignWithMargins = true;
panel->Align = alLeft;
panel->Caption = "Panel";
FlowPanel1->InsertControl(panel);
Znači, koliko sam ja shvatio, dinamički alociram (kreiram) komponentu panel i stavim joj svojstva ta koja sam stavio,
e sad, pošto se radi o dinamičkoj alokaciji (operator new), zanima me da li negdje trebam staviti panel->Free() ili delete Panel da bi oslobodio memoriju ili?
edit: radi se o C++ Builderu
Najbolje da taj pointer deklariraš u samoj klasi forme (TForm1 ili kako već se zove) u .h datoteci. I onda u eventu OnDestroy (Forma) napraviš delete panel.
S druge strane, ukoliko ti taj panel treba tek privremeno onda možeš koristiti pametne pokazivače za automatsku dealokaciju.
#include <memory>
std::unique_ptr<TPanel> panel(new TPanel(FlowPanel1->Handle));
a ako ti iz ovoga treba raw pokazivač onda ga dohvatiš s panel.get().
Sve jasno! :) Hvala.
Traceru, pitanje, da li znaš možda neki (po mogucnosti free) FBX importer koji radi sa Borlandovim compilerom?
Sve koje sam isprobao ne rade sa tim compilerom nažalost.
FBX? Autodesk?
Da, ma probao sam sa Autodesk FBX SDK ali kaze da ne radi sa borlandovim compilerom (u Visual Studio radi).
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.
Link od FBX SDK? http://www.autodesk.com/products/fbx/overview
u C++ Builderu sam includao sve sta treba i stavio include i lib direktorije u postavke da u njima trazi, ali svejedno baci gresku da borland compiler nije podrzan.
Libovi VS-a i C++ Buildera nisu međusobno kompatibilni jer nisu istih formata (COFF i OMF).