Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

kompajliranje i linkanje
WWW:
Idite na 1, 2  Sljedeće
Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
Cobs
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15)
Postovi: (206)16
Spol: muško
Sarma = la pohva - posuda
26 = 40 - 14
Lokacija: Geto

PostPostano: 16:23 pon, 9. 3. 2009    Naslov: kompajliranje i linkanje Citirajte i odgovorite

imam nekakvih problema s ovim... prakticki sam sve ucinio kao sto pise u slide - ovima sa vjezbe...ali mi javlja greske?
imam prvi dio programa( sucelje ): ( tocka.h )
[code:1]typedef struct{

double x;
double y;

}tocka;


double udaljenost( tocka a, tocka b );
tocka cent_simetricna( tocka a );[/code:1]
i njega ne kompajliram kao sto pise na slide - ovima,
zatim imam implementaciju ( implementacija.cpp ):
[code:1]#include<iostream>
#include "tocka.h"

using namespace std;


double udaljenost( tocka a, tocka b ){

double duzina;
double p1 = b.x - a.x;
double p2 = b.y - a.y;

duzina = sqrt( p1*p1 + p2*p2 );

return duzina;

}

tocka cent_simetrija( tocka a ){

tocka b;

b.x = -a.x;
b.y = -a.y;

return b;

}[/code:1]
i kada to probam iskompajlirat u terminalu javlja mi gresku:
[code:1] g++ implementacija.cpp -c
implementacija.cpp: In function ‘double udaljenost(tocka, tocka)’:
implementacija.cpp:13: error: ‘sqrt’ was not declared in this scope

[/code:1]
, a kada pokusam iskompajlirati klijentski dio ( main.cpp ):
[code:1]#include<iostream>
#include "tocka.h"

using namespace std;

int main(){

tocka p;
tocka q;
tocka z;
tocka w;

cout << " Upisite koordinate prve tocke: \n x = ";
cin >> p.x;
cout << " y = ";
cin >> p.y;
cout << " Upisite koordinate druge tocke: \n x = ";
cin >> q.x;
cout << " y = ";
cin >> q.y;

z = cent_simetrija( p );
w = cent_simetrija( q );

cout << " Udaljenost izmedu te dvije tocke je " << udaljenost( tocka p, tocka q ) << endl;
cout << " Koordinate centralno simetricne tocke prvoj tocci su: \n x = " << z.x << "\n y = " << z.y << endl;
cout << " Koordinate centralno simetricne tocke drugoj tocci su: \n x = " << w.x << "\n y = " << w.y << endl;

return 0;

}[/code:1]
javlja mi gresku: [code:1]g++ main.cpp -c
main.cpp: In function ‘int main()’:
main.cpp:22: error: ‘cent_simetrija’ was not declared in this scope
main.cpp:25: error: expected primary-expression before ‘p’
main.cpp:25: error: expected primary-expression before ‘q’
[/code:1]
pa bi me zanimalo gdje sam pogrjesio i opcenito kako se to radi, te ako bi netko jos mogao objasniti kako to realizirati u devcpp -u
imam nekakvih problema s ovim... prakticki sam sve ucinio kao sto pise u slide - ovima sa vjezbe...ali mi javlja greske?
imam prvi dio programa( sucelje ): ( tocka.h )
Kod:
typedef struct{

 double x;
 double y;

 }tocka;


 double udaljenost( tocka a, tocka b );
 tocka cent_simetricna( tocka a );

i njega ne kompajliram kao sto pise na slide - ovima,
zatim imam implementaciju ( implementacija.cpp ):
Kod:
#include<iostream>
#include "tocka.h"

 using namespace std;


 double udaljenost( tocka a, tocka b ){
 
        double duzina;
        double p1 = b.x - a.x;
        double p2 = b.y - a.y;

        duzina = sqrt( p1*p1 + p2*p2 );
       
        return duzina;

 }

 tocka cent_simetrija( tocka a ){
       
      tocka b;
     
      b.x = -a.x;   
      b.y = -a.y;
     
      return b;

 }

i kada to probam iskompajlirat u terminalu javlja mi gresku:
Kod:
  g++ implementacija.cpp -c
implementacija.cpp: In function ‘double udaljenost(tocka, tocka)’:
implementacija.cpp:13: error: ‘sqrt’ was not declared in this scope


, a kada pokusam iskompajlirati klijentski dio ( main.cpp ):
Kod:
#include<iostream>
#include "tocka.h"

 using namespace std;
 
 int main(){
 
 tocka p;
 tocka q;
 tocka z;
 tocka w;
 
 cout << " Upisite koordinate prve tocke: \n x = ";
 cin >> p.x;
 cout << " y = ";
 cin >> p.y;
 cout << " Upisite koordinate druge tocke: \n x = ";
 cin >> q.x;
 cout << " y = ";
 cin >> q.y;

 z = cent_simetrija( p );
 w = cent_simetrija( q );

 cout << " Udaljenost izmedu te dvije tocke je " << udaljenost( tocka p, tocka q ) << endl;
 cout << " Koordinate centralno simetricne tocke prvoj tocci su: \n x = " << z.x << "\n y = " << z.y << endl;
 cout << " Koordinate centralno simetricne tocke drugoj tocci su: \n x = " << w.x << "\n y = " << w.y << endl;
 
 return 0;

 }

javlja mi gresku:
Kod:
g++ main.cpp -c
main.cpp: In function ‘int main()’:
main.cpp:22: error: ‘cent_simetrija’ was not declared in this scope
main.cpp:25: error: expected primary-expression before ‘p’
main.cpp:25: error: expected primary-expression before ‘q’

pa bi me zanimalo gdje sam pogrjesio i opcenito kako se to radi, te ako bi netko jos mogao objasniti kako to realizirati u devcpp -u


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
m00nblade
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 10. 2005. (13:26:10)
Postovi: (54)16
Spol: muško
Sarma = la pohva - posuda
20 = 20 - 0

PostPostano: 16:42 pon, 9. 3. 2009    Naslov: Citirajte i odgovorite

1. u tocka.h ti je naveden prototip funkcije cent_simetricna, a u implementacija.cpp ti se funkcija zove cent_simetrija

2. u implementaciji ti treba biti
[code:1]#include <cmath>[/code:1]
da se moze koristiti funkcija sqrt

3. u C++ strukture deklariraj s:
[code:1]struct tocka {
double x;
double y;
};
[/code:1]
dakle, nemoj koristiti typedef kao u c-u. Ne javlja ti na tome gresku, ali se to u C++u uglavnom ne radi tako, bar koliko ja znam :)

da bi ovaj cijeli program mogao raditi u dev-cpp trebas napraviti novi projekt i onda u njega dodati sve .h i .cpp datoteke tog programa. U ovom slucaju bi to bile tocka.h, implementacija.cpp i main.cpp

Također, mali savjet ti je da sucelje i implementaciju nazoves isto, naravno s razlicitom ekstenzijom. Za ovo tvoje bi to bile tocka.h i tocka.cpp
1. u tocka.h ti je naveden prototip funkcije cent_simetricna, a u implementacija.cpp ti se funkcija zove cent_simetrija

2. u implementaciji ti treba biti
Kod:
#include <cmath>

da se moze koristiti funkcija sqrt

3. u C++ strukture deklariraj s:
Kod:
struct tocka {
    double x;
    double y;
};

dakle, nemoj koristiti typedef kao u c-u. Ne javlja ti na tome gresku, ali se to u C++u uglavnom ne radi tako, bar koliko ja znam Smile

da bi ovaj cijeli program mogao raditi u dev-cpp trebas napraviti novi projekt i onda u njega dodati sve .h i .cpp datoteke tog programa. U ovom slucaju bi to bile tocka.h, implementacija.cpp i main.cpp

Također, mali savjet ti je da sucelje i implementaciju nazoves isto, naravno s razlicitom ekstenzijom. Za ovo tvoje bi to bile tocka.h i tocka.cpp



_________________
Real programmers don't comment their code. If it was hard to write, it should be hard to read.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 16:42 pon, 9. 3. 2009    Naslov: Citirajte i odgovorite

Što se tiče prve greške, do nje je došlo jer nemaš
[code:1]#include<math.h>[/code:1]
ili
[code:1]#include<cmath>[/code:1], unutra je fja sqrt :)

Nadlje, u c++-u su strukture malo drugačije, naime nema typedef... trebalo bi ovako:

[code:1]struct tocka{

double x;
double y;

};
[/code:1]

ovo ostalo ne kužim zašto javlja... probaj u tocka.h dodat iostream i using namespace, to kad se ne stavi zna javjat gluposti...

btw zašto ne radiš odjednom linkanje i kompajliranje nego odvojeno?

a u devcpp-u trebaš napravit project pa sve skupa kompajlirat... dakle, ideš na new project, empty project, unutra staviš sve kaj ti treba i onda compile...
Što se tiče prve greške, do nje je došlo jer nemaš
Kod:
#include<math.h>

ili
Kod:
#include<cmath>
, unutra je fja sqrt Smile

Nadlje, u c++-u su strukture malo drugačije, naime nema typedef... trebalo bi ovako:

Kod:
struct tocka{

 double x;
 double y;

 };


ovo ostalo ne kužim zašto javlja... probaj u tocka.h dodat iostream i using namespace, to kad se ne stavi zna javjat gluposti...

btw zašto ne radiš odjednom linkanje i kompajliranje nego odvojeno?

a u devcpp-u trebaš napravit project pa sve skupa kompajlirat... dakle, ideš na new project, empty project, unutra staviš sve kaj ti treba i onda compile...



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Cobs
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15)
Postovi: (206)16
Spol: muško
Sarma = la pohva - posuda
26 = 40 - 14
Lokacija: Geto

PostPostano: 17:09 pon, 9. 3. 2009    Naslov: Citirajte i odgovorite

ok ovo sam sve rijesio... ali mi u main funkciji jos uvijek javlja:
[code:1]
main.cpp:25: error: expected primary-expression before ‘p’
main.cpp:25: error: expected primary-expression before ‘q’
[/code:1]
e kad bi mi to radilo...
znaci u devcpp -u u biti sve zajedno iskompajliram, pa tu onda bas i nema te neke podjele barem ne " fizičke " kad sve u biti radim kao jedan program, ja sam mislio da bi se to moglo nekak isto tak povezat, da u biti sam iskompajliram main, a da ovaj zove ili " ukljuci " one dijelove programa koji mu trebaju... hvala
Naravno, ak neko zna zasto mi javlja tu gresku nek se javi
ok ovo sam sve rijesio... ali mi u main funkciji jos uvijek javlja:
Kod:

main.cpp:25: error: expected primary-expression before ‘p’
main.cpp:25: error: expected primary-expression before ‘q’

e kad bi mi to radilo...
znaci u devcpp -u u biti sve zajedno iskompajliram, pa tu onda bas i nema te neke podjele barem ne " fizičke " kad sve u biti radim kao jedan program, ja sam mislio da bi se to moglo nekak isto tak povezat, da u biti sam iskompajliram main, a da ovaj zove ili " ukljuci " one dijelove programa koji mu trebaju... hvala
Naravno, ak neko zna zasto mi javlja tu gresku nek se javi


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 17:28 pon, 9. 3. 2009    Naslov: Citirajte i odgovorite

Trebaš pozvati udaljenost (p,q), bez ovog točka... zna fja koja joj varijabla dolazi ;)

A i u devcppu ustvari radi ko i u terminalu, samo devcpp radi linkanje i komapjliranje skupa, a ti to fizički možeš odijelit u terminalu, makar ja to nikad nisam radio... zašto pisat 3 linije kad možeš jednu 8)
Trebaš pozvati udaljenost (p,q), bez ovog točka... zna fja koja joj varijabla dolazi Wink

A i u devcppu ustvari radi ko i u terminalu, samo devcpp radi linkanje i komapjliranje skupa, a ti to fizički možeš odijelit u terminalu, makar ja to nikad nisam radio... zašto pisat 3 linije kad možeš jednu Cool



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Cobs
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15)
Postovi: (206)16
Spol: muško
Sarma = la pohva - posuda
26 = 40 - 14
Lokacija: Geto

PostPostano: 15:00 uto, 10. 3. 2009    Naslov: Citirajte i odgovorite

imam novu greskicu kod jednog drugog programa
[code:1]Segmentation fault (core dumped) [/code:1]
sto bi to znacilo?( program mi se normalno iskompajlira ( i linka ))




nasao sam gresku...
imam novu greskicu kod jednog drugog programa
Kod:
Segmentation fault (core dumped)

sto bi to znacilo?( program mi se normalno iskompajlira ( i linka ))




nasao sam gresku...


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 16:19 uto, 10. 3. 2009    Naslov: Citirajte i odgovorite

Najgora greška koja se može desit jer nema opisa greške... obično neki index izleti iz nekog uvjeta, djeljenje s nulom, i slične stvari... te greške će proć kompajliranje i linkanje, ali program neće radit (na windowsima možda i hoće)... dobro da si našao grešku, jer to zna potrajat satima... i na takve greške nećeš odg nać na forumu osim ako eventualno ne zalijepiš i kod... :D
Najgora greška koja se može desit jer nema opisa greške... obično neki index izleti iz nekog uvjeta, djeljenje s nulom, i slične stvari... te greške će proć kompajliranje i linkanje, ali program neće radit (na windowsima možda i hoće)... dobro da si našao grešku, jer to zna potrajat satima... i na takve greške nećeš odg nać na forumu osim ako eventualno ne zalijepiš i kod... Very Happy



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
finalni
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 04. 08. 2007. (11:48:53)
Postovi: (10D)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
27 = 45 - 18
Lokacija: Bloodbuzz Zagreb

PostPostano: 20:44 uto, 10. 3. 2009    Naslov: Citirajte i odgovorite

[quote="Cobs"]imam novu greskicu kod jednog drugog programa
[code:1]Segmentation fault (core dumped) [/code:1]
sto bi to znacilo?( program mi se normalno iskompajlira ( i linka ))
[/quote]

mislim da to znači da kopaš po memoriji koju nisi alocirao (tj. po kojoj ne smiješ kopati)..
Cobs (napisa):
imam novu greskicu kod jednog drugog programa
Kod:
Segmentation fault (core dumped)

sto bi to znacilo?( program mi se normalno iskompajlira ( i linka ))


mislim da to znači da kopaš po memoriji koju nisi alocirao (tj. po kojoj ne smiješ kopati)..



_________________
Nikola Adžaga
Građevinski fakultet, Sveučilište u Zagrebu
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Mad Wilson
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 05. 2006. (22:51:14)
Postovi: (121)16
Sarma = la pohva - posuda
23 = 34 - 11

PostPostano: 21:06 uto, 10. 3. 2009    Naslov: Citirajte i odgovorite

[quote="finalni"]mislim da to znači da kopaš po memoriji koju nisi alocirao (tj. po kojoj ne smiješ kopati)..[/quote]

Upravo tako, konkretno po krivom segmentu. [url]http://en.wikipedia.org/wiki/Memory_segmentation[/url]
finalni (napisa):
mislim da to znači da kopaš po memoriji koju nisi alocirao (tj. po kojoj ne smiješ kopati)..


Upravo tako, konkretno po krivom segmentu. http://en.wikipedia.org/wiki/Memory_segmentation



_________________
1 2 3 4
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Cobs
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15)
Postovi: (206)16
Spol: muško
Sarma = la pohva - posuda
26 = 40 - 14
Lokacija: Geto

PostPostano: 11:14 sri, 11. 3. 2009    Naslov: Citirajte i odgovorite

ma da, naso sam na netu to za 2 min. i vidio da sam stavil na jednom mjestu
polje[ - 1 ], pa sam odmah ispravio, kao sto i pise u postu...
ma da, naso sam na netu to za 2 min. i vidio da sam stavil na jednom mjestu
polje[ - 1 ], pa sam odmah ispravio, kao sto i pise u postu...


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
Gost






PostPostano: 19:20 pet, 13. 3. 2009    Naslov: Citirajte i odgovorite

Može li netko pomoći oko 3. zadatka s 2. vježbi?
"Nadopunite implementaciju strukture tocka sa
konstruktorom koji prima početne koordinate
točke kao parametre.
Dodajte i destruktor koji ispisuje na ekran
koordinate točke prije njezinog "uništenja" ."
Napravio sam implementaciju strukture tocka i uredno radi, sve ok. Ali imam problema sa tim konstruktorima/destruktorima. Kada ih dodam u implementaciju kompajler javlja greške tipa "no matching function to call...". Jel može netko objasniti kako to treba napraviti i reći nešto malo više općenito o konstruktorima/destruktorima...?
Može li netko pomoći oko 3. zadatka s 2. vježbi?
"Nadopunite implementaciju strukture tocka sa
konstruktorom koji prima početne koordinate
točke kao parametre.
Dodajte i destruktor koji ispisuje na ekran
koordinate točke prije njezinog "uništenja" ."
Napravio sam implementaciju strukture tocka i uredno radi, sve ok. Ali imam problema sa tim konstruktorima/destruktorima. Kada ih dodam u implementaciju kompajler javlja greške tipa "no matching function to call...". Jel može netko objasniti kako to treba napraviti i reći nešto malo više općenito o konstruktorima/destruktorima...?


[Vrh]
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 22:05 pet, 13. 3. 2009    Naslov: Citirajte i odgovorite

[quote="Anonymous"]Napravio sam implementaciju strukture tocka i uredno radi, sve ok. Ali imam problema sa tim konstruktorima/destruktorima. Kada ih dodam u implementaciju kompajler javlja greške tipa "no matching function to call...". Jel može netko objasniti kako to treba napraviti i reći nešto malo više općenito o konstruktorima/destruktorima...?[/quote]

[code:1]
struct tocka
{
int x,y;

tocka(int a, int b) //konstruktor
{
x=a;
y=b;
}

~tocka() //destruktor
{
cout << "Unistila se: "<<"("<<x<<", "<<y<<")"<<endl;
}
};
[/code:1]

Evo koda za strukturu tocka sa konstruktorom i destruktorom...

glavne stvari oko konstruktora:
1. pozivaju se kod deklariranja varijable, recimo kod:
[tt]tocka A(2,4);[/tt]
2. mogu, ali i ne moraju imati parametre (u gornjem slučaju paramtri su 2 i 4).
3. Može postojati više konstruktora za istu strukturu, pogledaj recimo string... možeš ga pozvati sa:
[tt]string s="ANSCF"[/tt] što je isto kao s("ANSCF")
[tt]string s=('A',5)[/tt] - to će dat "AAAAA"
i sl.
(napomena: kad postoji više konstruktora koji su "slični" može doći do tog da se compiler buni... al zasad nema takvih primjera pa bolje da ne kompliciram)
4. konstruktor nema povratni tip (tj ne piše se).

destruktori su uglavnom ne baš previše korisne stvari, osim kad ima nešto dinamički alocirano... onda je korisno u destruktor staviti neki free.. ima slična svojstva kao konstruktor.

Nadam se da pomaže :D
Anonymous (napisa):
Napravio sam implementaciju strukture tocka i uredno radi, sve ok. Ali imam problema sa tim konstruktorima/destruktorima. Kada ih dodam u implementaciju kompajler javlja greške tipa "no matching function to call...". Jel može netko objasniti kako to treba napraviti i reći nešto malo više općenito o konstruktorima/destruktorima...?


Kod:

struct tocka
{
  int x,y;

  tocka(int a, int b) //konstruktor
  {
    x=a;
    y=b;
  }

   ~tocka() //destruktor
   {
      cout << "Unistila se: "<<"("<<x<<", "<<y<<")"<<endl;
    }
};


Evo koda za strukturu tocka sa konstruktorom i destruktorom...

glavne stvari oko konstruktora:
1. pozivaju se kod deklariranja varijable, recimo kod:
tocka A(2,4);
2. mogu, ali i ne moraju imati parametre (u gornjem slučaju paramtri su 2 i 4).
3. Može postojati više konstruktora za istu strukturu, pogledaj recimo string... možeš ga pozvati sa:
string s="ANSCF" što je isto kao s("ANSCF")
string s=('A',5) - to će dat "AAAAA"
i sl.
(napomena: kad postoji više konstruktora koji su "slični" može doći do tog da se compiler buni... al zasad nema takvih primjera pa bolje da ne kompliciram)
4. konstruktor nema povratni tip (tj ne piše se).

destruktori su uglavnom ne baš previše korisne stvari, osim kad ima nešto dinamički alocirano... onda je korisno u destruktor staviti neki free.. ima slična svojstva kao konstruktor.

Nadam se da pomaže Very Happy



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Gost






PostPostano: 23:20 pet, 13. 3. 2009    Naslov: Citirajte i odgovorite

Tako sam i napravio ali ne radi...
1. tocka.h :

struct tocka {
int x, y;
tocka(int a, int b);
~tocka();
void ispisiTocku();
void unesiTocku();
tocka simetricnaTocka();
float udaljenost( tocka Q );
};

2. tocka.cpp :

#include <iostream>
#include "tocka.h"
#include <cmath>

using namespace std;

tocka::tocka(int a, int b) {
x=a;
y=b;
}

tocka::~tocka() {
cout << "Unistila se: "<<"("<<x<<", "<<y<<")"<<endl;
}

void tocka::ispisiTocku(void){
cout << "(" << x << ", " << y << ")\n";
}

void tocka::unesiTocku(void){
cout <<" 1. koordinata: \n x= " ;
cin >> x;
cout <<"2. koordinata: \n y= ";
cin >> y;
}

tocka tocka::simetricnaTocka(){
tocka A;
A.x=-x;
A.y=-y;
return A;
}

float tocka::udaljenost( tocka Q ){
float duzina;
float p1 = x - Q.x;
float p2 = y - Q.y;

duzina = sqrt( p1*p1 + p2*p2 );

return duzina;
}

3. main (onaj s vjezbi):

#include <iostream>
#include "tocka.h"

using namespace std;

int main(){
tocka P = {10, 20}, Q, *T = &P;
Q.x = 10;
Q.y = 30;
P.ispisiTocku();
T->x=15;
T->ispisiTocku();
Q.ispisiTocku();
cout << P.udaljenost( Q );
tocka R = T->simetricnaTocka();
cout << "\n(" << R.x << ", " << R.y << ")\n";
return 0;
}

i sad, sve to bez konstruktora i destruktora radi, ali kada s njima kompajliram onda javlja grešku
"In member function `tocka tocka::simetricnaTocka()':
no matching function for call to `tocka::tocka()'
candidates are: tocka::tocka(const tocka&)
tocka::tocka(int, int) "....
Tako sam i napravio ali ne radi...
1. tocka.h :

struct tocka {
int x, y;
tocka(int a, int b);
~tocka();
void ispisiTocku();
void unesiTocku();
tocka simetricnaTocka();
float udaljenost( tocka Q );
};

2. tocka.cpp :

#include <iostream>
#include "tocka.h"
#include <cmath>

using namespace std;

tocka::tocka(int a, int b) {
x=a;
y=b;
}

tocka::~tocka() {
cout << "Unistila se: "<<"("<<x<<", "<<y<<")"<<endl;
}

void tocka::ispisiTocku(void){
cout << "(" << x << ", " << y << ")\n";
}

void tocka::unesiTocku(void){
cout <<" 1. koordinata: \n x= " ;
cin >> x;
cout <<"2. koordinata: \n y= ";
cin >> y;
}

tocka tocka::simetricnaTocka(){
tocka A;
A.x=-x;
A.y=-y;
return A;
}

float tocka::udaljenost( tocka Q ){
float duzina;
float p1 = x - Q.x;
float p2 = y - Q.y;

duzina = sqrt( p1*p1 + p2*p2 );

return duzina;
}

3. main (onaj s vjezbi):

#include <iostream>
#include "tocka.h"

using namespace std;

int main(){
tocka P = {10, 20}, Q, *T = &P;
Q.x = 10;
Q.y = 30;
P.ispisiTocku();
T->x=15;
T->ispisiTocku();
Q.ispisiTocku();
cout << P.udaljenost( Q );
tocka R = T->simetricnaTocka();
cout << "\n(" << R.x << ", " << R.y << ")\n";
return 0;
}

i sad, sve to bez konstruktora i destruktora radi, ali kada s njima kompajliram onda javlja grešku
"In member function `tocka tocka::simetricnaTocka()':
no matching function for call to `tocka::tocka()'
candidates are: tocka::tocka(const tocka&)
tocka::tocka(int, int) "....


[Vrh]
pero
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 02. 02. 2005. (17:13:37)
Postovi: (81)16
Spol: muško
Sarma = la pohva - posuda
11 = 14 - 3

PostPostano: 23:39 pet, 13. 3. 2009    Naslov: Citirajte i odgovorite

probaj stavit:
[code:1]
struct tocka {
int x, y;
tocka(int a=0, int b=0);
...
};[/code:1]
probaj stavit:
Kod:

struct tocka {
   int x, y;
   tocka(int a=0, int b=0);
...
};


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 23:49 pet, 13. 3. 2009    Naslov: Citirajte i odgovorite

U fji simtocka imaš
[tt]tocka A;[/tt]

a u strukturi ne postoji konstruktor koji nema parametara... ili napravi još jedan dodatni bez parametara, ili u onaj sa dva parametra stavi kako je pero napiso, tj defaultnu vrijednost...
S time dobivaš da ako zoveš konstruktor sa 0 ili 1 parametrom, parametri koji fale se automatski postavljaju na ono kaj piše nakon =.

napomena: ovo sa = (defaultne vrijednosti) idu samo u .h datoteku, ne piše ih se u .cpp :)
U fji simtocka imaš
tocka A;

a u strukturi ne postoji konstruktor koji nema parametara... ili napravi još jedan dodatni bez parametara, ili u onaj sa dva parametra stavi kako je pero napiso, tj defaultnu vrijednost...
S time dobivaš da ako zoveš konstruktor sa 0 ili 1 parametrom, parametri koji fale se automatski postavljaju na ono kaj piše nakon =.

napomena: ovo sa = (defaultne vrijednosti) idu samo u .h datoteku, ne piše ih se u .cpp Smile



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
pero
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 02. 02. 2005. (17:13:37)
Postovi: (81)16
Spol: muško
Sarma = la pohva - posuda
11 = 14 - 3

PostPostano: 23:59 pet, 13. 3. 2009    Naslov: Citirajte i odgovorite

i ovo [tt]tocka P = {10, 20}[/tt] mi izgleda čudno.
Možda je ok, ali ja bih radije stavio [tt]tocka P(10, 20)[/tt]
i ovo tocka P = {10, 20} mi izgleda čudno.
Možda je ok, ali ja bih radije stavio tocka P(10, 20)


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 0:26 sub, 14. 3. 2009    Naslov: Citirajte i odgovorite

[quote="pero"]i ovo [tt]tocka P = {10, 20}[/tt] mi izgleda čudno.
Možda je ok, ali ja bih radije stavio [tt]tocka P(10, 20)[/tt][/quote]

Da, i meni, piknulo me u oko odmah... al nisam niš komentiro jer valjda sam zaboravio kao nešto... a pošto nas je dvojicu piknulo, najvjerojatnije je krivo :D

e da, nije greška nikakva programerska, ali kad tražiš udaljenosti između točaka, to je DULJINA, a ne DUŽINA. ;)
pero (napisa):
i ovo tocka P = {10, 20} mi izgleda čudno.
Možda je ok, ali ja bih radije stavio tocka P(10, 20)


Da, i meni, piknulo me u oko odmah... al nisam niš komentiro jer valjda sam zaboravio kao nešto... a pošto nas je dvojicu piknulo, najvjerojatnije je krivo Very Happy

e da, nije greška nikakva programerska, ali kad tražiš udaljenosti između točaka, to je DULJINA, a ne DUŽINA. Wink



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Gost






PostPostano: 0:59 sub, 14. 3. 2009    Naslov: Citirajte i odgovorite

Upalilo je! Zahvaljujem! :D
Upalilo je! Zahvaljujem! Very Happy


[Vrh]
Mad Wilson
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 05. 2006. (22:51:14)
Postovi: (121)16
Sarma = la pohva - posuda
23 = 34 - 11

PostPostano: 16:53 sub, 14. 3. 2009    Naslov: Citirajte i odgovorite

[quote="pero"]i ovo [tt]tocka P = {10, 20}[/tt] mi izgleda čudno.
Možda je ok, ali ja bih radije stavio [tt]tocka P(10, 20)[/tt][/quote]

[tt]{10,20}[/tt] je lista objekata; to se moze koristiti u mnogim situacijama:
[code:1]int a[5] = { 1, 2, 3, 4, 5};
enum { ja, ti, mi};
typedef struct { int a; double f; } myS;
myS s = { 5, 2.3 };
[/code:1]

A kako [tt]tocka[/tt] nema konstruktor koji radi s necim takvim, navedeni izraz je besmislen.
pero (napisa):
i ovo tocka P = {10, 20} mi izgleda čudno.
Možda je ok, ali ja bih radije stavio tocka P(10, 20)


{10,20} je lista objekata; to se moze koristiti u mnogim situacijama:
Kod:
int a[5] = { 1, 2, 3, 4, 5};
enum { ja, ti, mi};
typedef struct { int a; double f; } myS;
myS s = { 5, 2.3 };


A kako tocka nema konstruktor koji radi s necim takvim, navedeni izraz je besmislen.



_________________
1 2 3 4
[Vrh]
Korisnički profil Pošaljite privatnu poruku
pero
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 02. 02. 2005. (17:13:37)
Postovi: (81)16
Spol: muško
Sarma = la pohva - posuda
11 = 14 - 3

PostPostano: 17:30 sub, 14. 3. 2009    Naslov: Citirajte i odgovorite

hm, i kak onda izgleda takav konstruktor za gornji primjer.

Mogu dobit da radi [tt]tocka P = {1, 2}[/tt], ako maknem gornji konstruktor,
ali mi onda ne radi [tt]tocka P(1,2)[/tt]. Dobim grešku kod kompajliranja:

[code:1]
$ g++ tocka.cpp main.cpp -o tocka
main.cpp: In function ‘int main()’:
main.cpp:7: error: no matching function for call to ‘tocka::tocka(int, int)’
tocka.h:1: note: candidates are: tocka::tocka()
tocka.h:1: note: tocka::tocka(const tocka&)
[/code:1]

Da li je moguće imat takva dva konstruktora da radi i jedno i drugo?
hm, i kak onda izgleda takav konstruktor za gornji primjer.

Mogu dobit da radi tocka P = {1, 2}, ako maknem gornji konstruktor,
ali mi onda ne radi tocka P(1,2). Dobim grešku kod kompajliranja:

Kod:

$ g++ tocka.cpp main.cpp -o tocka
main.cpp: In function ‘int main()’:
main.cpp:7: error: no matching function for call to ‘tocka::tocka(int, int)’
tocka.h:1: note: candidates are: tocka::tocka()
tocka.h:1: note:                 tocka::tocka(const tocka&)


Da li je moguće imat takva dva konstruktora da radi i jedno i drugo?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1 Vremenska zona: GMT + 01:00.
Idite na 1, 2  Sljedeće
Stranica 1 / 2.

 
Forum(o)Bir:  
Možete otvarati nove teme.
Možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan