View previous topic :: View next topic |
Author |
Message |
apofiss Indago dalībnieks
Joined: 06 Feb 2005 Posts: 148 Location: Latvija
|
Posted: Wed Mar 30, 2005 4:03 pm Post subject: C++ | neliels(i) jautājums(i) |
|
Ta nu tā (sorry ja jautājums liekas tups);
------------------------------------------------------------
unsigned short int -> 2 bytes -> 0 to 65,535
short int -> 2 bytes -> -32,768 to 32,767
------------------------------------------------------------
Jautājums. Vai vienīgā atšķirība lietojot unsigned ir izmērs un vērtība? |
|
Back to top |
|
|
GiGa Indago Uzvarētājs
Joined: 25 Sep 2003 Posts: 887
|
Posted: Wed Mar 30, 2005 4:12 pm Post subject: |
|
Nu vieniigaa starpiibaa arii ir taa, ko tu esi jau paraadiijis. Parastam, mainiigam pirmais bits apziimee +/-, bet unsigned vienmeer ir pozitiivs, liidz ar to pirmais bits ljauj saglabaat lielaaku pozitiivu veertiibu. Mainiigaa izmeers nemainaas - 2 baiti; iespeejamo dazaado veertiibu skaits paliek tas pats 2^16=65536; bet mainiigajaa saglabaataa informaacija tiek savaadaak interpreteeta. _________________
|
|
Back to top |
|
|
apofiss Indago dalībnieks
Joined: 06 Feb 2005 Posts: 148 Location: Latvija
|
Posted: Wed Mar 30, 2005 4:26 pm Post subject: |
|
Ok, thanks GiGa! |
|
Back to top |
|
|
apofiss Indago dalībnieks
Joined: 06 Feb 2005 Posts: 148 Location: Latvija
|
Posted: Thu Mar 31, 2005 4:23 pm Post subject: |
|
Ai nekas. (sorry par tukšu postu)...pats tikko sapratu kļūdu. o ___ O |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Mar 31, 2005 5:38 pm Post subject: |
|
Vispār jau eksistē iespēja izdzēst savu postu... |
|
Back to top |
|
|
Angel
Joined: 02 Jan 2005 Posts: 113 Location: Latvija
|
Posted: Fri Apr 15, 2005 7:20 pm Post subject: |
|
Man arī tāds sīks jautājumiņš.....
Man likas, ka šitais nav pareizs, un gribētos zināt kā būtu pareizi!!!
Code: | cMatrix4x4 operator +(cMatrix4x4 &M){
for(int i=0;i<16;i++){
m[i]+=M[i];
}
return m;
}
|
|
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Apr 15, 2005 9:06 pm Post subject: |
|
Kas ir m? un kas ir cMatrix4x4? Mums jāzīlē? |
|
Back to top |
|
|
Angel
Joined: 02 Jan 2005 Posts: 113 Location: Latvija
|
Posted: Fri Apr 15, 2005 9:15 pm Post subject: |
|
Aizmirsu, ka jūs to neziniet
cMatrix4x4 ir float m[16]
nu precīzāk cMatrix4x4 ir 4*4 matrica un m[16] ir floati, kuros ir šī matrica... A es vsp esmu pareizi panjemis apzimejumus
Nevaidzeeja defineet visus laukus???? Nu a11 a12 a13 utt |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Apr 15, 2005 9:19 pm Post subject: |
|
Masīvu pēc references nav vērts padot šajā gadījumā. Kā nekā masīvs iekš C/C++ ir pointeris pēc būtības. Citādi tu padod pointeri uz pointeri:
Code: | cMatrix4x4 operator +(const cMatrix4x4 M){
for(int i=0; i<16; i++){
m[i]+=M[i];
}
return m;
} |
Un kas tieši šajā kodā nestrādā? (vai nekompilējas?) |
|
Back to top |
|
|
Angel
Joined: 02 Jan 2005 Posts: 113 Location: Latvija
|
Posted: Fri Apr 15, 2005 9:21 pm Post subject: |
|
Itkaa viss straadaa, bet kaut kaa nesmuki izstaa, ka gan += gan + ir vienaadi |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Apr 15, 2005 9:46 pm Post subject: |
|
ghe.. Nu ja jau viss strāda. :) Un kas ir nesmuki? Mums atkal jāzīlē? Kā lai mēs zinām kā tev tas izskatās. Vai nu prasi konkrētākus jautājumus, vai arī rādi visu kodu. |
|
Back to top |
|
|
Angel
Joined: 02 Jan 2005 Posts: 113 Location: Latvija
|
Posted: Fri Apr 15, 2005 10:01 pm Post subject: operatoru paarlaadeeshana & matricas |
|
nu taksh kods prieksh Code: | cMatrix4x4 +=(cMatrix4x4 M) | ir vienaads ar Code: | cMatrix4x4 +(cMatrix4x4 M) |
Parasti, jau "+"atshkiras no "+="
P.S. Viss Kods ir diezgan garsh, bet visas operatoru paarlaadeeshanas ir te: ( ar taam man var buut daudz kluudu, viss paareejais teoreetiski straadaa (praktiski veel nevaru paarbaudiit))
Code: |
class cMatrix4x4{
private:
float m[16];
public:
cMatrix4x4(){
for(int i=0;i<16;i++){
m[i]=0;
}
}
cMatrix4x4 operator =(cMatrix4x4 &M){
for(int i=0;i<16;i++){
m[i]=M[i];
}
return m;
}
bool operator ==(cMatrix4x4 &M){
for(int i=0;i<16;i++){
if(m[i]!=M[i])return false;
}
return true;
}
bool operator !=(cMatrix4x4 &M){
for(int i=0;i<16;i++){
if(m[i]==M[i])return false;
}
return true;
}
cMatrix4x4 operator +(float k){
for(int i=0;i<16;i++){
m[i]+=k;
}
return m;
}
cMatrix4x4 operator +=(float k){
for(int i=0;i<16;i++){
m[i]+=k;
}
return m;
}
cMatrix4x4 operator +(cMatrix4x4 &M){
for(int i=0;i<16;i++){
m[i]+=M[i];
}
return m;
}
cMatrix4x4 operator +=(cMatrix4x4 &M){
for(int i=0;i<16;i++){
m[i]+=M[i];
}
return m;
}
cMatrix4x4 operator +=(cMatrix4x4 &M){
for(int i=0;i<16;i++){
m[i]+=M[i];
}
return m;
}
cMatrix4x4 operator -(cMatrix4x4 &M){
for(int i=0;i<16;i++){
m[i]-=M[i];
}
return m;
}
cMatrix4x4 operator *(float a){
for(int i=0;i<16;i++){
m[i]*=a;
}
return m;
}
cMatrix4x4 operator *(cMatrix4x4 &M){
float Rez[16];
Rez[0] = m[0]*M[0]+m[1]*M[4]+m[2]*M[8]+m[3]*M[12];
Rez[1] = m[0]*M[1]+m[1]*M[5]+m[2]*M[9]+m[3]*M[13];
Rez[2] = m[0]*M[2]+m[1]*M[6]+m[2]*M[10]+m[3]*M[14];
Rez[3] = m[0]*M[3]+m[1]*M[7]+m[2]*M[11]+m[3]*M[15];
Rez[4] = m[4]*M[0]+m[5]*M[4]+m[6]*M[8]+m[7]*M[12];
Rez[5] = m[4]*M[1]+m[5]*M[5]+m[6]*M[9]+m[7]*M[13];
Rez[6] = m[4]*M[2]+m[5]*M[6]+m[6]*M[10]+m[7]*M[14];
Rez[7] = m[4]*M[3]+m[5]*M[7]+m[6]*M[11]+m[7]*M[15];
Rez[8] = m[8]*M[0]+m[9]*M[4]+m[10]*M[8]+m[11]*M[12];
Rez[9] = m[8]*M[1]+m[9]*M[5]+m[10]*M[9]+m[11]*M[13];
Rez[10] = m[8]*M[2]+m[9]*M[6]+m[10]*M[10]+m[11]*M[14];
Rez[11] = m[8]*M[3]+m[9]*M[7]+m[10]*M[11]+m[11]*M[15];
Rez[12] = m[12]*M[0]+m[13]*M[4]+m[14]*M[8]+m[15]*M[12];
Rez[13] = m[12]*M[1]+m[13]*M[5]+m[14]*M[9]+m[15]*M[13];
Rez[14] = m[12]*M[2]+m[13]*M[6]+m[14]*M[10]+m[15]*M[14];
Rez[15] = m[12]*M[3]+m[13]*M[7]+m[14]*M[11]+m[15]*M[15];
return Rez;
} |
|
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Apr 15, 2005 10:07 pm Post subject: |
|
Ahā. Tu tur iepriekš samelojies.
Tu teici ka cMatrix4x4 ir float[16].
A nē cMatrix4x4 ir class!
un tev priekš šīs class nav definēts operators []
Tāpēc pielietojot to, piemēra, šai vietā:
Code: |
cMatrix4x4 operator +(cMatrix4x4 &M){
for(int i=0;i<16;i++){
m[i]+=M[i];
}
return m;
} |
Tu iegūsti galīgi ne to ko vajag. Tev vispār tāds kods kompilējas? Manuprāt, tam nemaz nevajadzētu kompilēties!
Pie tam, šai pašai fjai: funkcijas rezultāts ir cMatrix4x4, bet return m atgriež float[16]. Tev nešķiet, ka tie ir divi dažādi tipi?
P.S. iemācies lietot const keywordu. C++ valodā tam ir liela nozīme. |
|
Back to top |
|
|
Angel
Joined: 02 Jan 2005 Posts: 113 Location: Latvija
|
Posted: Fri Apr 15, 2005 10:25 pm Post subject: |
|
Nu vispaar jaa, nebiju aizdomaajies.... Man gan likaas, ka vinsh pats sapratiis, jo ir tikai viens mainiigais, bet laikam jau nee......
Aaa, pie vektoriem bija atgrieshana noraadot katru (x,y,z) bet sheit, taa darbiiba taksh nav sakariiga (16 skaitlji kaa nekaa)
Koods man nekompileejas, bet tur ir daudz vainu (ne tikai shiis)
hmm.... vai Tu luudzu nevareetu sho te "+" paraadiit kaa jaaraksta buutu pareizi, (ja vispaar te var kaut ko izdariit), un tikai ja tas nav baigais darbs...
P.S. Centiishos =) |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Apr 15, 2005 10:46 pm Post subject: |
|
Nezinu kā ir pareizi, bet es taisītu šādi (kodu rakstu tepatās, testējis neesu, tā ka ļoti iespējams, ka nav kautkas labi, bet nu galvenais ir ideja :)
Code: | class Matrix {
private:
float m[16];
public:
Matrix () {
for (int i=0; i<16; i++) m[i]=0;
}
Matrix (const Matrix &M) {
for (int i=0; i<16; i++) m[i]=M.m[i];
}
// +=
Matrix& operator += (const Matrix &M) {
for (int i=0; i<16; i++) m[i]+=M.m[i];
return *this;
}
};
inline Matrix operator + (const Matrix &M1, const Matrix &M2) {
Matrix M(M1);
M+=M2;
return M;
} |
P.S. Nezinu gan kam tev + operators, bet lai jau. Vienkārši 3d ģeometrijā tādu diez vai vajadzēs. Tur dāaudz biežāk vajadzēs * operatoru. |
|
Back to top |
|
|
|