THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: ampoulog on February 17, 2008, 18:49:03 pm



Title: Απορίες στη C++
Post by: ampoulog on February 17, 2008, 18:49:03 pm
Υλοποιώ το παρακάτω πρόγραμμα στον compiler της ms , visual C++ εκδοση του 2005 .
Το πρόγραμμα αυτό είναι παράδειγμα στισ σημειώσεις του κυρίου Κορτέση σελίδα 76 ,και θα έπρεπε βάση των σημειώσεων να εκτυπώνει :
10
$$$$$$$$10
Παρόλα αυτά όταν κάνω compile μου εμφανίζει μία σείρα από λάθη , όπως :
Error   1   error C3646: 'setup' : unknown override specifier   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par32\par32\par32.cpp   14   
Error   2   error C2091: function returns function   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par32\par32\par32.cpp   15   
Error   3   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par32\par32\par32.cpp   15   
Error   4   error C2144: syntax error : 'int' should be preceded by ')'   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par32\par32\par32.cpp   16   
Error   5   error C2660: 'OMANIP' : function does not take 0 arguments   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par32\par32\par32.cpp   16   
Error   6   error C2059: syntax error : ')'   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par32\par32\par32.cpp   16   
Warning   7   warning C4508: 'OMANIP' : function should return a value; 'void' return type assumed   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par32\par32\par32.cpp   17   
Error   8   error C2660: 'setup' : function does not take 1 arguments   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par32\par32\par32.cpp   21   
τα οποία δεν μπορώ να διορθώσω .
Code:
#include<process.h>
#include<iostream>
#include<iomanip>
#include<conio.h>
using std::cin;
using std::cout;
using std::ostream;
using namespace std;
ostream &setup(ostream &s,int len)
{
s<<setw(len)<<setfill('$');
return s;
}
OMANIP (int)setup(int len)
{
return OMANIP (int)(setup,len);
}
void main()
{
cout<<10<<"\n";
cout<<setup(10)<<"  "<<10<<" "<<endl;
getch();
}
Το ίδιο πρόβλημα αντιμετωπίζω και στο παράδειγμα σελίδα 77 με κώδικα:
Code:
#include<process.h>
#include<iostream>
#include<iomanip>
#include<conio.h>
using std::cin;
using std::cout;
using namespace std;
IOMANIPdeclare(char);
ostream &setup(ostream &s,char c)
{
s<<setw(10)<<setfill(c);
return s;
}
OMANIP(char)setup(char c)
{
return OMANIP(char)(setup,c)
}
void main()
{
cout<<10<<" ";
cout<<setup('#')<<10<<endl;
}

που εμφανίζει τα εξής errors :
Error   1   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par33\par33\par33.cpp   8   
Error   2   error C3646: 'setup' : unknown override specifier   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par33\par33\par33.cpp   14   
Error   3   error C2091: function returns function   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par33\par33\par33.cpp   15   
Error   4   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par33\par33\par33.cpp   15   
Error   5   error C2144: syntax error : 'char' should be preceded by ')'   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par33\par33\par33.cpp   16   
Error   6   error C2660: 'OMANIP' : function does not take 0 arguments   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par33\par33\par33.cpp   16   
Error   7   error C2059: syntax error : ')'   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par33\par33\par33.cpp   16   
Warning   8   warning C4508: 'OMANIP' : function should return a value; 'void' return type assumed   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par33\par33\par33.cpp   17   
Error   9   error C2660: 'setup' : function does not take 1 arguments   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par33\par33\par33.cpp   21   

Και στο παράδειγμα σελίδα 83-84 στις σημειώσεις :
Code:
#include<process.h>
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<conio.h>
using std::cin;
using std::cout;
using namespace std;
void main()
{
int a[]={1,2,3,4,5};
int b[10];
int i;
ofstream ostrm("data.txt");
if(!ostrm){
cout<<"I cannot open the file \n\n";
getch();
exit(1);
}
ostrm.write((unsigned char*)a,sizeof(a));
ostrm.close();
ifstream istrm("data.txt");
if(!istrm){
cout<<"I cannot open the file \n\n";
getch();
exit(1);
}
istrm.read((unsigned char*)b,sizeof(b));
for(i=0;i<5;i++)
{
cout<<b[i]<<"\n";
}
cout<<istrm.gcount()<<"\n\n";
istrm.close();
getch();
}
Μου εμφανίζει τα παρακάτω σφάλματα :
Error   2   error C2664: 'std::basic_ostream<_Elem,_Traits>::write' : cannot convert parameter 1 from 'unsigned char *' to 'const char *'   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par37\par37\par37_read_write.cpp   20   
Error   3   error C2664: 'std::basic_istream<_Elem,_Traits>::read' : cannot convert parameter 1 from 'unsigned char *' to 'char *'   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par37\par37\par37_read_write.cpp   28   
Ακόμη στο παράδειγμα σελ 100-101
Code:
#include<process.h>
#include<iostream>
#include<conio.h>
using std::cout;
using std::cin;
using namespace std;
class A{
int i,j,k,m;
public:
A(int n,int m);
void sum(void);
void prod(void);
};
A::A(int n, int m)
{
i=n;
j=m;
}
void A::sum(void)
{
k=i+j;
}
void A::prod(void)
{
m=i*j;
}
void main()
{
A a(3,4),*p;
int A::*pk;
int A::*pm;
void(A::*psum)(void);
void(A::*pprod)(void);
p=&a;
pk=(&A::k);
pm=&A::m;
psum=&A::sum;
pprod=&A::prod;
(a.*psum)();
(p->*pprod)();
cout<<a.*pk<<" "<<p->*pm<<"\n";
getch();
}
Παρουσιάζει τα εξής σφάλματα :
Error   1   error C2248: 'A::k' : cannot access private member declared in class 'A'   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par43\par43\par43.cpp   35   
Error   2   error C2248: 'A::m' : cannot access private member declared in class 'A'   c:\documents and settings\administrator\τα έγγραφά μου\visual studio 2005\projects\par43\par43\par43.cpp   36   

Μήπως μπορεί κάποιος να βοηθήσει ??


Title: Re: Απορίες στη C++
Post by: Verminoz on February 17, 2008, 18:56:58 pm
Με memory leak μοιάζει αλλά εκ πρώτης όψεως δεν μπορώ να καταλάβω που οφείλεται. Debug δοκίμασες? Πάν'το step-by-step να δεις σε ποια γραμμή κώδικα σου πετάει το πρόβλημα.

Άσχετα από αυτό θα σύστηνα να αλλάξεις compiler αλλά τεσπα.


Title: Re: Απορίες στη C++
Post by: ampoulog on February 17, 2008, 18:59:40 pm
Όταν λες memoru leak τι εννοείς ??



Title: Re: Απορίες στη C++
Post by: ampoulog on February 17, 2008, 19:09:17 pm
Με memory leak μοιάζει αλλά εκ πρώτης όψεως δεν μπορώ να καταλάβω που οφείλεται. Debug δοκίμασες? Πάν'το step-by-step να δεις σε ποια γραμμή κώδικα σου πετάει το πρόβλημα.

Άσχετα από αυτό θα σύστηνα να αλλάξεις compiler αλλά τεσπα.

Βασικά τα δοκίμασα και σε Borland αλλά και εκεί τα ίδια !!


Title: Re: Απορίες στη C++
Post by: ampoulog on February 18, 2008, 11:45:20 am
Κανένας ?????


Title: Re: Απορίες στη C++
Post by: (Stalin)^2 on February 20, 2008, 10:47:42 am
Λοιπόν έχω την εξής απορία: Έστω οτι έχουμε μια class A και μια class B public παραγώμενη  από την Α. Η Α και η Β έχουν μια public συνάρτηση με το ίδιο όνομα πχ void calc(); η οποία κάνει διαφορετικά πραγματα για την μια και την άλλη.

Τώρα αν εγώ θέλω να τρέξω για ένα αντικείμενο class B την calc της Α και οχι της Β με ποιά εντολή θα μπορούσα να το κάνω?

Σκέφτηκα με pointer σε Β τον οποίο έχω κάνει cast αλλά δεν είμαι σίγουρος...
Όποιος ξέρει ας δώσει λίγο τα φώτα του....


Title: Re: Απορίες στη C++
Post by: Wade on February 20, 2008, 10:57:36 am
Μπορείς να χρησιμοποιήσεις τον τελεστή εμβέλειας.  Αν b το αντικείμενο της κλάσης B που λες, καλείς την calc() της A ως εξής: b.A::calc();


Title: Re: Απορίες στη C++
Post by: jeen on September 03, 2008, 17:29:35 pm
Εγώ έχω μία άλλη απορία σχετικά με την κληρονομικότητα...Έστω class A βασική, class B κληρονομεί την Α και τέλος class C όπου και αυτή κληρονομεί την Α...Έστω τώρα ότι όλες οι κλάσεις έχουν συναρτήσεις δόμησης και φτίαχνω δύο αντικείμενα τύπου B, C...Πως θα αποφύγω να τρέξει δύο φορές η συνάρτηση δόμησης της Α :???:


Title: Re: Απορίες στη C++
Post by: Verminoz on September 03, 2008, 19:21:37 pm
Τα αντικείμενα B και C είναι διαφορετικά, δεν μπορείς και δεν υπάρχει λόγος να αποφύγεις να κληθεί δύο φορές η συνάρτηση δόμησης του Α γιατί πολύ απλά κάθε μία από τις δύο εκτελέσεις της θα είναι για διαφορετικό αντικείμενο (B και C), δηλάδη δύο διαφορετικές μεταβλητές που αποθηκεύονται σε διαφορετικά σημεία στη μνήμη.

Το ότι κληρονομούν και τα δύο από την Α δε σημαίνει τίποτα. Κάθε συνάρτηση δόμησης θα αφορά διαφορετικό στιγμυότυπο της μεταβλητής Α που περιέχεται στο στιγμυότυπο της παραγόμενης κλάσης (B και C).

Ελπίζω να το εξήγησα επαρκώς! :)


Title: Re: Απορίες στη C++
Post by: jeen on September 03, 2008, 20:03:12 pm
ΟΚ το κατάλαβα...Απλά να σου φέρω σαν παράδειγμα το θέμα 2 του 2000...Ανάλογα με το τι επιστρέφει η calck() κρατάμε περισσότερα ή λιγότερα στοιχεία από τον πρώτο πίνακα, έστω α γιατί δε δίνει κάποιο όνομα...Εμείς δε θέλουμε να είναι ο ίδιος πίνακας και για το αντικείμενο τύπου C και για το Β; Δηλαδή θα δώσουμε 2 φορές τον ίδιο πίνακα...


Title: Re: Απορίες στη C++
Post by: Verminoz on September 03, 2008, 20:20:53 pm
Κάθε κλάση έχει έναν δικό της πίνακα με 10 στοιχεία, η Α τον α, η Β τον b,  η C τον c. Προφανώς κάθε στιγμυότυπο της B και της C περιέχει εκτός από τον δικό της και έναν α κληρονομημένο από την Α. Προφανώς αφού η κληρονομημένη συνάρτηση run καλείται πρέπει να κληθεί ξέχωρα για ένα αντικείμενα Β και για ένα αντικείμενο C τότε θα σου ζητηθεί δύο φορές είσοδος, γιατί έτσι είναι υλοποιημένη η run στην Α.
Αφού το ζητάει έτσι δεν είναι ανάγκη να μπουν τα ίδια δεδομένα και στις δύο. Εξάλλου η calck() κάνει διαφορετικά πράγματα για την Β και για την C.


Title: Re: Απορίες στη C++
Post by: vasso on October 09, 2008, 00:02:09 am
Παιδιά μια άσχετη απορία, αλλά ας μην ανοίξω άλλο τόπικ.

Κάποιος που έδωσε και πέρασε C++ το Σεπτέμβρη μπορεί να μου πει αν η βαθμολογία του περάστηκε στο ITC?


Title: Re: Απορίες στη C++
Post by: fkoufis on October 09, 2008, 09:35:15 am
Τώρα που τσέκαρα το itc δεν εχει περαστεί ακόμα η βαθμολογία της c++ σε εμένα. Ελπίζω ότι κάποια στιγμή θα γίνει και αυτό.


Title: Re: Απορίες στη C++
Post by: crystal on November 15, 2008, 00:23:48 am
H συναρτηση .lenght() σε ποια βιβλιοθηκη υπαρχει?


Title: Re: Απορίες στη C++
Post by: radio on November 15, 2008, 00:51:31 am
include <string>


Title: Re: Απορίες στη C++
Post by: ^^DaRk_HunTeR on November 15, 2008, 00:55:38 am
http://www.cplusplus.com/reference/string/string/length.html

indeed


Title: Re: Απορίες στη C++
Post by: crystal on November 15, 2008, 01:01:57 am
Thnx  :)


Title: Re: Απορίες στη C++
Post by: tolis_1 on November 15, 2008, 06:49:27 am
εμενα ο borland μοθ βγαζει ενα λαθος του τυπου could not find a match for a::a()
οπου α ειναι μια τθχαια κλαση κ α() η σθναρτηση αρχικων συνθηκων.Μπορει κανεις να  βοηθησει τι μπορει να σημαινει αυτο?


Title: Re: Απορίες στη C++
Post by: Καμένος on November 15, 2008, 07:54:35 am
μήπως θέλει a::a(void) και όχι σκέτες παρενθέσεις?


Title: Re: Απορίες στη C++
Post by: Aurelius on November 15, 2008, 11:10:37 am
Στην C++ ειναι το ιδιο και το αυτο.


Title: Re: Απορίες στη C++
Post by: MARIOS on December 24, 2008, 12:46:25 pm
class A{
      protected:
                int k;
      public:
             static int t;
             int fun(){k=7;return k;}
};

int A::t;                       
                       
class B:public A{
      int n,m;
      public:
             B(){n=3;m=8;}
             int fun(){t=4;k=n+m;return k;}
             operator int (){k=m/n;if(t) k=n*m;return k;}
             };
             
             
             
int main()
{B b,c,d;
cout<<b+c+d<<"\n";
cout<<b.fun()<<"\n";
cout<<2*c<<"\n";
d.t=0;
cout<<b+c<<"\n";
return 0;
}

Έχουμε αυτόν τον κώδικα!!!
Μπορείτε να μου εξηγήσετε πως γίνονται τα b+c+d
2*c
τι ακριβώς προσθέτει και πολλαπλασιάζει???
όπως επείσης που χρεισιμοποιείτε ο τελεστής () του οποίου έγινε ειδική συνάρτηση ώστε να αλλάξει την λειτουργία του?


Title: Re: Απορίες στη C++
Post by: MARIOS on December 24, 2008, 16:08:03 pm
Κάποιος???


Title: Re: Απορίες στη C++
Post by: vasso on December 24, 2008, 21:01:11 pm
μου θυμίζει το περσινό θέμα.. αυτό είναι;

δεν μπορώ να δω τώρα τις σημειώσεις του Κορτέση αλλά έχω την εντύπωση ότι οι τελευταίες σελίδες είναι διαφωτιστικές πάνω στο θέμα. Αν δεν ήταν αυτές δεν θα το έπιανα βασικά...


Title: Re: Απορίες στη C++
Post by: Grecs on December 24, 2008, 22:15:44 pm
δοκιμασες να αντιγραψεις το προγραμμα και να δεις τι εκτυπωνει? θα καταλαβεις αρκετα


Title: Re: Απορίες στη C++
Post by: MARIOS on December 25, 2008, 23:05:38 pm
το έκανα!!!!

Δεν κατάλαβα....
Μάλλον επειδή δεν είχα διαβάσει τις τελευταίες σελίδες του Κορτέση!!!!

Με παραξένεψε το + ανάμεσα στα αντικείμενα!!!


Title: Re: Απορίες στη C++
Post by: Grecs on December 26, 2008, 01:09:20 am
Αν παρατηρησεις οταν γινεται το a+b+c  τοτε εκτελειται η επικαλυψη(),γιατι μη με ρωτας δε ξερω.
το ιδιο και για το 2c και το b +c.Υποψιαζομαι χωρις να μαι σιγουρος οτι επειδη τα αντικειμενα εχουν αυτη τη γραφη κανονικα
B a(),b(),c()  ,μιας και μπορουμε να βαλουμε ορισματα στα αντικειμενα αν θελουμε, οτι εκτελειται η επικαλυψη αρα μπορουμε να βαλουμε + αναμεσα στα αντικειμενα αφου ουσιαστικα γινεται ενα return καθε φορα που τα χρησιμοποιουμε. Αν καποιος ξερει σιγουρα ας πει.


Title: Re: Απορίες στη C++
Post by: MARIOS on December 26, 2008, 14:12:32 pm
nai nai!!!!!

Eisai sostos!!!!!


Title: Re: Απορίες στη C++
Post by: crystal on December 26, 2008, 22:39:58 pm
Nα ρωτησω και εγω  :-[

εδω

void swapargs(int &a,int &b){
     int temp;

     temp=a;
     a=b;
     b=temp;
}

int main(){
     int i=10,j=20;
     swapargs(i,j);
     return 0;
}

Μπορει να εξηγησει καποιος τι γινεται με τα ορισματα??Και γιατι οι αλλαγες μενουν μετα την εξοδο απο την συναρτηση??  :-[

thnx


Title: Re: Απορίες στη C++
Post by: Emfanever on December 27, 2008, 00:29:10 am
Nα ρωτησω και εγω  :-[

εδω

void swapargs(int &a,int &b){
     int temp;

     temp=a;
     a=b;
     b=temp;
}

int main(){
     int i=10,j=20;
     swapargs(i,j);
     return 0;
}

Μπορει να εξηγησει καποιος τι γινεται με τα ορισματα??Και γιατι οι αλλαγες μενουν μετα την εξοδο απο την συναρτηση??  :-[

thnx

Είναι ένας άλλος τρόπος να κάνεις κλήση με αναφορά στη c++ .Γιαυτό μένουν οι διαφορέςز Δηλαδή θα μπορούσε να γραφεί αλλιώς:


void swapargs(int *a,int *b){
     int temp;

     temp=*a;
     *a=*b;
     *b=temp;

}

int main(){
     int i=10,j=20;
     swapargs(&i,&j);
     return 0;
}


Title: Re: Απορίες στη C++
Post by: crystal on December 27, 2008, 10:56:42 am
Thnx
αλλα δεν ζητησα 2ο τροπο
Θελω απλα να μου εξηγησει καποιος σε αυτη την υλοποιηση
ποιες διευθυνσεις παιρνει σαν ορισμα.
Δηλαδη οταν εχεις αυτο
void swapargs(int &a,int &b)

στην κληση swapargs(i,j);
γιατι παιρνει την διευθυνση του i,j.



Title: Re: Απορίες στη C++
Post by: Emfanever on December 27, 2008, 12:11:56 pm
Thnx
αλλα δεν ζητησα 2ο τροπο
Θελω απλα να μου εξηγησει καποιος σε αυτη την υλοποιηση
ποιες διευθυνσεις παιρνει σαν ορισμα.
Δηλαδη οταν εχεις αυτο
void swapargs(int &a,int &b)

στην κληση swapargs(i,j);
γιατι παιρνει την διευθυνση του i,j.


Έτσι είναι η σύνταξή του.Το πρόγραμμα βλέπει ότι στα ορίσματα υπάρχει το σύμβολο & ,άρα ξέρει ότι τις αλλαγές που θα υποστούν τα a,b θα τις υποστούν αντίστοιχα τα i,j.  Δεν είναι θέμα κατανόησης, είναι θέμα σύνταξης της κλήσης με αναφοράς με άλλο τρόπο. Δηλαδή αν έχεις καταλάβει την κλασική κλήση με αναφορά , πιστεύω το ίδιο είναι και αυτό.


Title: Re: Απορίες στη C++
Post by: Anyparktos on January 14, 2009, 18:47:03 pm
Aναφέρθηκε καθόλου πότε θα γίνει η τελική προφορική εξέταση εργασιών στο εργαστήριο?


Title: Re: Απορίες στη C++
Post by: Salvation on January 27, 2009, 01:08:21 am
Αν κάποιος δεν έχει παραδώσει όλες τις εργασίες ή δεν έχει παρακολουθήσει το εργαστήριο πάει με βάση το 6 στις εξετάσεις;


Title: Re: Απορίες στη C++
Post by: Airmak_gr on January 27, 2009, 19:37:56 pm
5. Είσοδος και έξοδος δεδομένων με τη βιβλιοθήκη της C++..........αυτο το κεφαλαιο παιδια που βρισκεται στις σημειωσεις θα με βοηθησει πουθενα να το διαβασω??γιατι ουσιαστικα επειδη εκανα ολες τις εργασιες δεν μου φανηκε οτι μου χρειαστηκε κατι απο αυτα.......οποιος μπορει να πει κατι τον ευχαριστω!!!


Title: Re: Απορίες στη C++
Post by: vasso on January 28, 2009, 18:04:22 pm
Στο τελευταίο κεφάλαιο είναι είσοδος κ έξοδος σε αρχεία...


Title: Re: Απορίες στη C++
Post by: Airmak_gr on January 29, 2009, 16:17:55 pm
δηλαδη πρεπει να το διαβασω???δεν νομιζω οτι καναμε κατι τετοιο ουτε οτι χρησιμοποιησα πουθενα abstract class......thx παντως.....!!!


Title: Re: Απορίες στη C++
Post by: mitsos_dlx on January 29, 2009, 21:48:03 pm
Ξέρει κανείς αν στις εξετάσεις θα είναι μόνο προγράμματα ή αν θα έχει και θεωρητικές ερωτήσεις όπως στη C;
H τίποτα ασκήσεις του τύπου "τι θα τυπώσει στην οθόνη;"΄;


Title: Re: Απορίες στη C++
Post by: AgentCain on January 29, 2009, 22:34:07 pm
Ξέρει κανείς αν στις εξετάσεις θα είναι μόνο προγράμματα ή αν θα έχει και θεωρητικές ερωτήσεις όπως στη C;
H τίποτα ασκήσεις του τύπου "τι θα τυπώσει στην οθόνη;"΄;

Προγράμματα και ασκήσεις του τύπου "τι θα εκτυπώσει στην οθόνη"
Θεωρία σαν τη C δε θα υπάρχει. Η όποια θεωρία εξετάζεται με την οργάνωση και υλοποίηση του προγράμματος


Title: Re: Απορίες στη C++
Post by: sarasd on January 29, 2009, 23:01:59 pm
Τελικά με το κεφάλαιο περί αρχείων τι παίζει ;  Ξέρει κανείς αν κάναμε με τον κ.Συμεωνίδη ή τον κ. Κορτέση κάποιο παράδειγμα με κανάλια και αρχεία ;   


Title: Re: Απορίες στη C++
Post by: AgentCain on January 30, 2009, 00:11:41 am
Τελικά με το κεφάλαιο περί αρχείων τι παίζει ;  Ξέρει κανείς αν κάναμε με τον κ.Συμεωνίδη ή τον κ. Κορτέση κάποιο παράδειγμα με κανάλια και αρχεία ;   
Αναφέρθηκαν πολύ γενικά. Έδειξαν και καναδυο παραδείγματα.
Ο κ.Συμεωνίδης άφησε ανοιχτό το ενδεχόμενο ενός θέματος με άνοιγμα και επεξεργασία αρχείων


Title: Re: Απορίες στη C++
Post by: sarasd on January 30, 2009, 20:08:45 pm
Εντάξει ευχαριστώ.


Να ρωτήσω και κάτι άλλο. Ξέρει κανείς αν έχει γίνει αναφορά καθόλου στο μάθημα για τους τελεστές    .*  και     ->* ;


Title: Re: Απορίες στη C++
Post by: Errikos on February 01, 2009, 15:09:17 pm
Απορία: Κατέβασα και έβαλα σε ένα άλλο pc  το borlandDC, αλλά όταν γράφω ένα πρόγραμμα και το τρέχω δεν αναγνωρίζει τις βιβλιοθήκες..

δλδ include <iostream.h> λέει ότι δεν αναγνωρίζει το iostream.h, με αποτέλεσμα να μην αναγνωρίζει ούτε το cin, cout..


καμιά ιδέα τι φταίει?


Title: Re: Απορίες στη C++
Post by: zeus90 on February 01, 2009, 18:11:04 pm
1.Έβαλες το # μπροστα απο το ινκλουντ;
2.Μετά τα ινκλουντ δοκιμασε να γράψεις την εντολή using namespace std;


Title: Re: Απορίες στη C++
Post by: bard on February 03, 2009, 13:58:14 pm
  Ερωτηση:Η constructor ξερουμε οτ εκτελειτε κατα τη δημιουργια του αντικειμενου.Η destructor ποτε εκτελείτε;


Title: Re: Απορίες στη C++
Post by: Emfanever on February 03, 2009, 14:13:37 pm
Κατά την καταστροφή του αντικειμένου. Αυτό μπορεί να γίνεται στο τέλος του προγράμματος, στο τέλος ενός block { } αν έχει δημιουργηθεί εκεί μέσα το αντικείμενο ή όταν φτιάχνουμε ένα αντικείμενο με το ίδιο όνομα ,οπότε καταστρέφεται το προηγούμενο.


Title: Re: Απορίες στη C++
Post by: apoxa on February 04, 2009, 13:38:02 pm
...


Title: Re: Απορίες στη C++
Post by: bard on February 04, 2009, 17:44:14 pm
  thx!!!


Title: Re: Απορίες στη C++
Post by: pitsa on February 04, 2009, 21:17:11 pm
χρησιμοποιώ την εντολή this.n σε έναν κώδικά μου και μου  βγάζει το εξής λάθος:
 error: request for member ‘n’ in ‘this’, which is of non-class type ‘f_matrix* const’


η πλάκα είναι ότι η εργασία είναι παλιά! όταν την είχα πρωτοκάνει θυμάμαι ότι μου έτρεχε (είχε βέβαια πρόβλημα,αλλά όχι εκεί...)
και τώρα μου βγάζει αυτό στο compile......


Title: Re: Απορίες στη C++
Post by: Emfanever on February 04, 2009, 21:30:24 pm
χρησιμοποιώ την εντολή this.n σε έναν κώδικά μου και μου  βγάζει το εξής λάθος:
 error: request for member ‘n’ in ‘this’, which is of non-class type ‘f_matrix* const’


η πλάκα είναι ότι η εργασία είναι παλιά! όταν την είχα πρωτοκάνει θυμάμαι ότι μου έτρεχε (είχε βέβαια πρόβλημα,αλλά όχι εκεί...)
και τώρα μου βγάζει αυτό στο compile......

δοκίμασε this->n

Το this μπορείς να το χρησιμοποιήσεις στο εσωτερικό μόνο της κλάσης και επιστρέφει pointer γι'αυτο βάζεις ->


Title: Re: Απορίες στη C++
Post by: pitsa on February 04, 2009, 21:42:12 pm
θενξ!!!! πάντως απορώ γιατί παλιά δε μου το έβγαζε.... :P


Title: Re: Απορίες στη C++
Post by: gate4 on February 05, 2009, 21:12:47 pm
Στην 1η άσκηση των εξετάσεων 2003 που εχει πολλαπλή κληρονομικότητα,ζητάει στην main ενα αντικείμενο D με παράμετρο k το n και η συνάρτηση αρχικών συνθηκών της Α πως θα εκτελεστεί που δεν έχει παράμετρο?  :o αν εκτελεστεί έτσι A(); μέσα στην σ.α.σ. της D είναι σωστό?


Title: Re: Απορίες στη C++
Post by: Neal on February 06, 2009, 01:00:38 am
Υπάρχει κάποια εξήγηση στο γιατί ακόμα χρησιμοποιεί(ούμε) malloc και όχι new;


Title: Re: Απορίες στη C++
Post by: Καμένος on February 06, 2009, 09:48:42 am
H C έχει malloc, η C++ έχει new. Μπορείς να χρησιμοποιήσεις την malloc στη C++ αλλά δεν έχει και πολύ νόημα..


Title: Re: Απορίες στη C++
Post by: Neal on February 06, 2009, 14:06:50 pm
Ναι και υποτίθεται κάνουμε C++ και όχι C,  οπότε προς τι η εμμονή του με τη malloc; Ελπίζω στο τέλος να μη θεωρήσει λάθος αν χρησιμοποιήσουμε new για δυναμική κατανομή πινάκων κλπ.


Title: Re: Απορίες στη C++
Post by: Emfanever on February 06, 2009, 14:08:03 pm
και επίσης η malloc βγάζει προβλήματα σε κάποιες περιπτώσεις στη c++ τα οποία δε τα βγάζει η new


Title: Re: Απορίες στη C++
Post by: Neal on February 06, 2009, 15:38:06 pm
Επίσης στις σημειώσεις στο κεφάλαιο 6.4 "Οι τελεστές .* και ->*", το παράδειγμα που βάζει είναι λάθος. Πάει να προσπελάσει private μεταβλητές με pointers σε κλάση. Καλά δεν τα ελέγχει πριν τα αμολήσει;


Title: Re: Απορίες στη C++
Post by: ripper_george on February 06, 2009, 23:19:26 pm
παίδες, ξέρει κανείς αν γίνεται να υλοποιήσω επικάλυψη τελεστή virtual???
Προσπαθώ να κάνω επικάλυψη του = για πρόγραμμα στυλ μηχανές(open close) αλλά μου βγάζει σφάλμα...
Ιδού και κώδικας:


Αυτό στη βασική:
virtual base operator = (base *X)=0;

και στην παραγόμενη:
base operator = (base *X)
   {
      n=X->n;
   }

base είναι η βασική κλάση.

Any ideas?

Οκ τη βρήκα τη λύση... :p


Title: Re: Απορίες στη C++
Post by: Anyparktos on February 07, 2009, 19:36:15 pm
Πρώτο θέμα απο αύτα: http://www.thmmy.gr/smf/index.php?action=tpmod;dl=item398

Έγραψα αυτό:
Code:
#include <iostream.h>
#include <process.h>

class A
{
 protected:

 int n;
 int *a;

 public:

 A();
};

A::A()
{
 int i;
 cout<<"\nn= : ";
 cin>>n;
 a=new int[n];
 for(i=0;i<n;i++)
 {
  cout<<"\n"<<i+1<<"o stoixeio tou pinaka a: ";
  cin>>a[i];
 }
}

class B:public A
{
 protected:

 int *b;

 public:

 B(int k);

};

B::B(int k)
{
 int i;
 if(k<n)
 {
  b=new int[k];
  for(i=0;i<k;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou b: ";
   cin>>b[i];
  }
 }
 else
 {
  b=new int[n];
  for(i=0;i<n;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou b: ";
   cin>>b[i];
  }
 }
}



class C:public A
{
 protected:

 int *c;

 public:

 C(int k);

};

C::C(int k)
{
 int i;
 if(k<n)
 {
  c=new int[k];
  for(i=0;i<k;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou c: ";
   cin>>c[i];
  }
 }
 else
 {
  c=new int[n];
  for(i=0;i<n;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou c: ";
   cin>>c[i];
  }
 }
}

class D:public B,public C
{
 public:

 D(int k):B(k),C(k){};
 void operator [](int k);

};

void D::operator[](int k)
{
 int i;
 if(n<k)
 {
  for(i=0;i<n;i++)
  a[i]=b[i]+c[i];
 }
 else
 {
  for(i=0;i<k;i++)
  a[i]=b[i]+c[i];
 }
}
 

Μου βγαζει "Member is ambiguous: 'A::n' and 'A::n' " και "Member is ambiguous: 'A::a' and 'A::a' "

Eχει κανείς ιδέα για το τί παίζει??


Title: Re: Απορίες στη C++
Post by: tolis_1 on February 07, 2009, 19:38:52 pm
εγω να κανω μια ερωτηση διαφορετικου ειδους...τι επιτρεπεται να εχουμε μαζι μας στην εξεταση?????


Title: Re: Απορίες στη C++
Post by: Emfanever on February 07, 2009, 20:23:34 pm
Πρώτο θέμα απο αύτα: http://www.thmmy.gr/smf/index.php?action=tpmod;dl=item398

Έγραψα αυτό:
Code:
#include <iostream.h>
#include <process.h>

class A
{
 protected:

 int n;
 int *a;

 public:

 A();
};

A::A()
{
 int i;
 cout<<"\nn= : ";
 cin>>n;
 a=new int[n];
 for(i=0;i<n;i++)
 {
  cout<<"\n"<<i+1<<"o stoixeio tou pinaka a: ";
  cin>>a[i];
 }
}

class B:public A
{
 protected:

 int *b;

 public:

 B(int k);

};

B::B(int k)
{
 int i;
 if(k<n)
 {
  b=new int[k];
  for(i=0;i<k;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou b: ";
   cin>>b[i];
  }
 }
 else
 {
  b=new int[n];
  for(i=0;i<n;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou b: ";
   cin>>b[i];
  }
 }
}



class C:public A
{
 protected:

 int *c;

 public:

 C(int k);

};

C::C(int k)
{
 int i;
 if(k<n)
 {
  c=new int[k];
  for(i=0;i<k;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou c: ";
   cin>>c[i];
  }
 }
 else
 {
  c=new int[n];
  for(i=0;i<n;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou c: ";
   cin>>c[i];
  }
 }
}

class D:public B,public C
{
 public:

 D(int k):B(k),C(k){};
 void operator [](int k);

};

void D::operator[](int k)
{
 int i;
 if(n<k)
 {
  for(i=0;i<n;i++)
  a[i]=b[i]+c[i];
 }
 else
 {
  for(i=0;i<k;i++)
  a[i]=b[i]+c[i];
 }
}
 

Μου βγαζει "Member is ambiguous: 'A::n' and 'A::n' " και "Member is ambiguous: 'A::a' and 'A::a' "

Eχει κανείς ιδέα για το τί παίζει??

Η main που πήγε?


Title: Re: Απορίες στη C++
Post by: Anyparktos on February 07, 2009, 20:29:59 pm
H main δε πηγε πουθενα,γιατι άμα βγάζει error απο τώρα για ποιόν λόγο να την κάνω την Main???


Title: Re: Απορίες στη C++
Post by: Emfanever on February 07, 2009, 20:31:14 pm
H main δε πηγε πουθενα,γιατι άμα βγάζει error απο τώρα για ποιόν λόγο να την κάνω την Main???
:D

Αν δε τελειώσεις τη main πάντα βγάζει errors. Είναι πιο εύκολα να εντοπίσεις τα λάθη όταν είναι ολοκληρωμένο το πρόγραμμα


Title: Re: Απορίες στη C++
Post by: Anyparktos on February 07, 2009, 20:39:01 pm
H main δε πηγε πουθενα,γιατι άμα βγάζει error απο τώρα για ποιόν λόγο να την κάνω την Main???
:D

Αν δε τελειώσεις τη main πάντα βγάζει errors. Είναι πιο εύκολα να εντοπίσεις τα λάθη όταν είναι ολοκληρωμένο το πρόγραμμα

Code:
#include <iostream.h>
#include <process.h>

class A
{
 protected:

 int n;
 int *a;

 public:

 A();
 void print(int k);
};

A::A()
{
 int i;
 cout<<"\nn= : ";
 cin>>n;
 a=new int[n];
 for(i=0;i<n;i++)
 {
  cout<<"\n"<<i+1<<"o stoixeio tou pinaka a: ";
  cin>>a[i];
 }
}

void A::print(int k)
{
 int i;
 for(i=0;i<k;i++)
 cout<<"\n"<<i+1<<"o stoixeio tou a: "<<a[i];
}

class B:public A
{
 protected:

 int *b;

 public:

 B(int k);

};

B::B(int k)
{
 int i;
 if(k<n)
 {
  b=new int[k];
  for(i=0;i<k;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou b: ";
   cin>>b[i];
  }
 }
 else
 {
  b=new int[n];
  for(i=0;i<n;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou b: ";
   cin>>b[i];
  }
 }
}



class C:public A
{
 protected:

 int *c;

 public:

 C(int k);

};

C::C(int k)
{
 int i;
 if(k<n)
 {
  c=new int[k];
  for(i=0;i<k;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou c: ";
   cin>>c[i];
  }
 }
 else
 {
  c=new int[n];
  for(i=0;i<n;i++)
  {
   cout<<"\n"<<i+1<<"o stoixeio tou c: ";
   cin>>c[i];
  }
 }
}

class D:public B,public C
{
 public:

 D(int k):B(k),C(k){};
 void operator [](int k);

};

void D::operator[](int k)
{
 int i;
 if(n<k)
 {
  for(i=0;i<n;i++)
  a[i]=b[i]+c[i];
 }
 else
 {
  for(i=0;i<k;i++)
  a[i]=b[i]+c[i];
 }
}
 
void main()
{
 int k;
 cout<<"Dwse k: ";
 cin>>k;
 D d(k);
 d[k];
 d.print();
}

I would very much like to see a difference,but i don't.  :(


Title: Re: Απορίες στη C++
Post by: mitsos_dlx on February 07, 2009, 22:23:05 pm
Από ότι βλέπω στην κλάση Α έχεις τον pointer α και τον integer n.
Αυτοί κληρονομούνται στις B και C κλάσεις.
Όταν τέλος φτιάχνεις την D κλάση καταλήγεις να έχεις 2 n και 2 pointers a . Ένα από την Β και ένα από την C.
Δεν ξέρω τώρα τι θέλεις να κάνει το πρόγραμμα αλλά εκει βρίσκεται το μπέρδεμα. Δεν ξέρουμε σε ποιο n αναφέρεσαι...

Πιθανώς να θέλεις η κλάση D σου να έχει 1 μόνο φορά τα στοιχεία της Α. Τότε πρέπει να ορίσεις τις Β και C ως εξής:

class Β: virtual public A
class C: virtual public A



Title: Re: Απορίες στη C++
Post by: Anyparktos on February 07, 2009, 22:43:46 pm
Από ότι βλέπω στην κλάση Α έχεις τον pointer α και τον integer n.
Αυτοί κληρονομούνται στις B και C κλάσεις.
Όταν τέλος φτιάχνεις την D κλάση καταλήγεις να έχεις 2 n και 2 pointers a . Ένα από την Β και ένα από την C.
Δεν ξέρω τώρα τι θέλεις να κάνει το πρόγραμμα αλλά εκει βρίσκεται το μπέρδεμα. Δεν ξέρουμε σε ποιο n αναφέρεσαι...

Πιθανώς να θέλεις η κλάση D σου να έχει 1 μόνο φορά τα στοιχεία της Α. Τότε πρέπει να ορίσεις τις Β και C ως εξής:

class Β: virtual public A
class C: virtual public A


Oπως είπα και σε προηγούμενο ποστ αυτό είναι θέμα αυτής της χρονιας: http://www.thmmy.gr/smf/index.php?action=tpmod;dl=item398

Χρειάζεται κάποιες περισσότερες τροποποιήσεις πέρα από το να κάνω την προσπέλαση των B,C virtual?
Πάντως όταν κάνω την προσπέλαση virtual δε βγάζει error!Ευχαριστώ!  :)


Title: Re: Απορίες στη C++
Post by: crystal on February 08, 2009, 10:41:41 am
Στην υπερφόρτωση του new αυτό είναι οκ, αντί για την malloc?

void *operator new(size_t size){
    void *p;
    p= new size_t;
}

Εχώ προβλημα στο πώς γίνεται με την delete χωρίς να χρησιμοποίησω την free..  :-[


Title: Re: Απορίες στη C++
Post by: Sonic on February 08, 2009, 11:55:43 am
Από ότι βλέπω στην κλάση Α έχεις τον pointer α και τον integer n.
Αυτοί κληρονομούνται στις B και C κλάσεις.
Όταν τέλος φτιάχνεις την D κλάση καταλήγεις να έχεις 2 n και 2 pointers a . Ένα από την Β και ένα από την C.
Δεν ξέρω τώρα τι θέλεις να κάνει το πρόγραμμα αλλά εκει βρίσκεται το μπέρδεμα. Δεν ξέρουμε σε ποιο n αναφέρεσαι...

Πιθανώς να θέλεις η κλάση D σου να έχει 1 μόνο φορά τα στοιχεία της Α. Τότε πρέπει να ορίσεις τις Β και C ως εξής:

class Β: virtual public A
class C: virtual public A


Oπως είπα και σε προηγούμενο ποστ αυτό είναι θέμα αυτής της χρονιας: http://www.thmmy.gr/smf/index.php?action=tpmod;dl=item398


δε νομιζω πως ειναι το ιδιο πραγμα.στο παραδειγμα σου δεν ειναι σαφως ορισμενα τα n,a και γι αυτο χρειαζεται η παραπανω τροποποιηση.ωστοσο στο θεμα του 2003 τα k,m δηλωνονται private σε ολες τις κλασεις και δεν κληρονομουνται.ετσι καθε κλαση εχει τα δικα της k,m.


Title: Re: Απορίες στη C++
Post by: pitsa on February 08, 2009, 20:33:49 pm
εγώ έχω μια άλλη απορία για την αρχή αρχή...

όταν θέλω να φτιάξω πίνακα αντικειμένων..πως τον ορίζω??
αν κάνω:

A pinakas[n];
for i=0;i<n;i++ {
    pinakas[ i ]=A(parametroi);
}

είναι σωστό?ή πρέπει να κάνω:


A pinakas[n];
for i=0;i<n;i++ {
    pinakas[ i ](parametroi);
}

??


Title: Re: Απορίες στη C++
Post by: AgentCain on February 08, 2009, 20:46:34 pm
Το 1ο που γράφεις είναι σχεδόν σωστό εφόσον η κλάση Α έχει 2 ΣΑΣ μια με ορίσματα και μια χωρίς. Επιπλέον πρέπει να ορίσεις ένα αντικείμενο με τη new στο οποίο θα βάζεις τις παραμέτρους σου, μετα να το περνάς στον πίνακα και τέλος να το σβήνεις.
Το 2ο δεν είναι σωστό διότι από τη στιγμή που γράφεις Α pinakas[n] έχουν τρέξει οι ΣΑΣ για τα αντικείμενα, οπότε δεν μπορείς να γράψεις pinakas[ i](parametroi) αλλά μπορείς να γράψεις pinakas[ i].set_param( parametroi)


Title: Re: Απορίες στη C++
Post by: gate4 on February 08, 2009, 21:02:47 pm
eite exei orismata eite den exei autp de kalyptei tis periptoseis?
a pinakas[ n ];
for(i=0;i<n;i++) {
 a b; // h a b(.....)
pinakas[ i ]=b;
}

sto prwto tou 2003 ta antikeimena c kai b ston operator [ ] pou orizontai?


Title: Re: Απορίες στη C++
Post by: Emfanever on February 08, 2009, 21:13:00 pm
eite exei orismata eite den exei autp de kalyptei tis periptoseis?
a pinakas[ n ];
for(i=0;i<n;i++) {
 a b; // h a b(.....)
pinakas[ i ]=b;
}


Ναι έτσι γίνεται


Title: Re: Απορίες στη C++
Post by: AgentCain on February 08, 2009, 21:16:35 pm

το σωστό θα ήταν
a pinakas[ n];
a *p;
for( i=0;i<n;i++){
p=new a(parametroi);
pinakas[ i]=*p;
delete(p);
}
πρέπει όμως να έχεις και στη κλάση σου 2 ΣΑΣ μια με ορίσματα και μία χωρίς
σύμφωνα με τον Κορτέση πάντα ε...


Title: Re: Απορίες στη C++
Post by: Emfanever on February 08, 2009, 21:23:31 pm

το σωστό θα ήταν
a pinakas[ n];
a *p;
for( i=0;i<n;i++){
p=new a(parametroi);
pinakas[ i]=*p;
delete(p);
}
πρέπει όμως να έχεις και στη κλάση σου 2 ΣΑΣ μια με ορίσματα και μία χωρίς
σύμφωνα με τον Κορτέση πάντα ε...

βασικά δεν έχει νόημα να κάνεις new για ένα αντικείμενο.

όταν γράφεις σκέτο a temp;  κάθε φορά το temp καταστρέφεται και το αντικαθιστά το καινούριο και όταν βγεις από τη for πάλι καταστρέφεται, άρα δε χρειάζεται new και delete.


Title: Re: Απορίες στη C++
Post by: Emfanever on February 08, 2009, 21:32:43 pm
επίσης όταν γράφεις A pinakas[n];

και η αρχικών συνθηκών της A θέλει ορίσματα βγάζει λάθος πάλι

με malloc πρέπει να γίνει νομίζω  p=(A*)malloc(n*sizeof(A))

και μετά με τη for αρχικοποιείς....


Title: Re: Απορίες στη C++
Post by: AgentCain on February 08, 2009, 21:35:54 pm
βασικά δεν έχει νόημα να κάνεις new για ένα αντικείμενο.

όταν γράφεις σκέτο a temp;  κάθε φορά το temp καταστρέφεται και το αντικαθιστά το καινούριο και όταν βγεις από τη for πάλι καταστρέφεται, άρα δε χρειάζεται new και delete.

Συμφωνώ, αλλά δε διαβάζεις τα ψιλά γράμματα

"σύμφωνα με τον Κορτέση πάντα ε..."

no offence αλλά έχει προηγηθεί ολόκληρη συζήτηση για αυτό το θέμα για να καταλήξουμε στο πιο πάνω το οποίο και πρότεινε ο κ. Κορτέσης

Quote
επίσης όταν γράφεις A pinakas[n];

και η αρχικών συνθηκών της A θέλει ορίσματα βγάζει λάθος πάλι
Γιαυτό το λόγο θέλει 2 ΣΑΣ, μια με και μια ... διαίτης ;D


Title: Re: Απορίες στη C++
Post by: Emfanever on February 08, 2009, 21:48:28 pm

Γιαυτό το λόγο θέλει 2 ΣΑΣ, μια με και μια ... διαίτης ;D


Θα κάνουμε δηλαδή πάντα μια χωρίς ορίσματα μόνο και μόνο για να μπορούμε να γράψουμε Α pinakas[n] ?  και μετά να βάλουμε ορίσματα με for και new ?


Υπάρχει κανένα παράδειγμα του Κορτέση όπου το κάνει έτσι?


Title: Re: Απορίες στη C++
Post by: AgentCain on February 08, 2009, 22:02:32 pm
Γενικά δεν έχω δει παράδειγμά του που να συνδυάζει πίνακα αντικειμένων + ΣΑΣ με ορίσματα (δεν τα διάβασα βέβαια και όλα)
Αλλά ξέρεις τι μυστήριος που μπορεί να γίνει. Τα γνωστά περί "αφήνεις στον compiler και το λειτουργικό να καταστρέψει αντικείμενα ενώ έπρεπε να το ελέγχεις εσύ " κτλ κτλ

Εφόσον όμως δουλεύει μπορείς κάλλιστα να το χρησιμοποιήσεις.
Εγώ αναφέρω απλώς τι ειπώθηκε ακριβώς στο εργαστήριο (1ο ή 2ο δε θυμάμαι)
Και θυμάμαι ότι με αυτή τη μέθοδο είπε ότι μπορούμε να περάσουμε ορίσματα σε πίνακα με αντικείμενα (μάλιστα τότε δε ξέραμε και τη new)


Title: Re: Απορίες στη C++
Post by: ion on February 08, 2009, 23:36:32 pm
Θυμήστε μου γιατί κάνουμε αρχικοποίηση!  ::)



Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 00:25:11 am
Θυμήστε μου γιατί κάνουμε αρχικοποίηση!  ::)



όταν λέμε αρχικοποιήση εννοούμε, όταν η συναρτ. αρχ συνθηκών έχει ορίσματα και πρέπει με κάποιο τρόπο να τα περάσεις στη συνάρτηση όταν δημιουργείς το αντικείμενο.        πχ  Α obj(1,2);


Title: Re: Απορίες στη C++
Post by: tomshare3 on February 09, 2009, 01:01:25 am
Σχεδον σε ολες τις τελευταιες εργασιες που ανεβασε λυμενες ακολουθει την εξης φιλοσοφια:
Code:
class Α{
  protected:
    static  Α **α;
    static int n;
.
.
.
};
Α **Α::α;
int Α::n;

Μπορει καποιος να εξηγησει (ή να μ πει που βρισκεται αυτο το κομματι της θεωριας) γιατι οριζει τον διπλο pointer στην ιδια την κλαση?
και που χρησιμευουν οι τελευταιες εντολες εξω απο την κλαση?..


Title: Re: Απορίες στη C++
Post by: gate4 on February 09, 2009, 01:31:15 am
epeidh einai static oi metablites prepei na ginei ksexwristi dilwsh eksw apo tin klash ta leei sto biblio mathete tin c++ apo to mhden. Oi g kai h htan skata  >:(  :-\  Apo oso katalaba ton diplo pointer tis basikis klasis to xrisimopoei se sinartiseis kai stis 2 tis ergasies gia na desmeusi mnimi gia ta antikeimena twn paragomenwn


Title: Re: Απορίες στη C++
Post by: gate4 on February 09, 2009, 01:37:38 am


sto prwto thema tou 2003 ta antikeimena c kai b ston operator [ ] pou orizontai?
apo ton kodika pou egrapse o anyparktos


Title: Re: Απορίες στη C++
Post by: Christy on February 09, 2009, 12:08:49 pm
Στο πρωτο θεμα του φεβρουαρίου του 2008 η συναρτηση point(...) τι ορισματα θα παιρνει για να ειναι ανεξαρτητη απο την κατηγορια των μαθηματω ???? :-[ :-[ :-[


Title: Re: Απορίες στη C++
Post by: AgentCain on February 09, 2009, 12:21:59 pm
Μπορείς να κάνεις μια βασική κλάση ΜΑΘΗΜΑ
Από αυτήν να παράγεις το Α μάθημα και το Β μάθημα (για την εφαρμογή που ζητάει)
Μετά να κάνεις πίνακα από ποιντερ στο τύπο της βασικής ΜΑΘΗΜΑ
Στο πίνακα αυτό θα αποθηκεύεις τους πόιντερ στα αντικείμενα που κάνεις (συνολικά 3 αντικείμενα)
Μετά θα περνάς τον πίνακα + το μέγεθός του στη συνάρτηση point
Επειδή είναι πίνακας στο τύπο της βασικής, είναι ανεξάρτητη από το είδος του μαθήματος
Βέβαια αυτό προϋποθέτει να κάνεις μία virtual στη βασική για τον υπολογισμό και επιστροφή του βαθμού. Οπότε στην point για να πάρεις τον βαθμό ενός από τα μαθήματα αρκεί να γράψεις M[ i]->get_grade() όπου Μ ο πίνακας με τους ποιντερ στο τύπο της βασικής και get_grade() η virtual συνάρτηση.

μπορείς να το κάνεις και με templates (φαντάζομαι...)


Title: Re: Απορίες στη C++
Post by: N3ikoN on February 09, 2009, 12:26:13 pm


κάτι παραδείγματα που χει ανεβάσει στο ετημμυ..με client server ktl..που στην μαιν ειναι μονο δυο γραμμες..τι ειναι? λολ  :)


Title: Re: Απορίες στη C++
Post by: Christy on February 09, 2009, 12:36:38 pm
Quote
Στο πίνακα αυτό θα αποθηκεύεις τους πόιντερ στα αντικείμενα που κάνεις (συνολικά 3 αντικείμενα)
με this?
η point θα ειναι void??
νομιζω εχω χαθει....  :'( :'(


Title: Re: Απορίες στη C++
Post by: AgentCain on February 09, 2009, 12:44:55 pm
ή με this (δηλαδή να έχεις μία συνάρτηση που το μόνο που θα κάνει είναι να επιστρέφει τον πόιντερ του αντικειμένου)
ή πιο απλά έτσι

main(){
.
.
ma8ima *M[3];
A a;
B b, c;

M[0]=&a;
M[1]=&b;
M[2]=&c;
cout<<point(M,3);
.
.
}

Η point θα έχει το πρότυπο:
float point(ma8ima **M, int n)


Title: Re: Απορίες στη C++
Post by: tomshare3 on February 09, 2009, 13:10:37 pm
η πρωτη του 2008 ειναι ιδια σχεδον με την G.
στο ethmmy εχει ενα πολυ καλο παραδειγμα (ασκησεις εβδομαδας 7 - circuit.cpp) που εξηγει ακριβως τι παιζει με ολη αυτη την ιστορια με λογισμικα και ανεξαρτητες συναρτησεις!!


Title: Re: Απορίες στη C++
Post by: Sonic on February 09, 2009, 13:15:23 pm
Quote
Στο πίνακα αυτό θα αποθηκεύεις τους πόιντερ στα αντικείμενα που κάνεις (συνολικά 3 αντικείμενα)
με this?
η point θα ειναι void??
νομιζω εχω χαθει....  :'( :'(

το συγκεκριμενο παραδειγμα επειδη ζητα μονο η point  να ειναι ανεξαρτητη της κατηγοριας των μαθηματων (οχι και η main) νομιζω ειναι πιο ευκολο και εξισου σωστο και δουλεψεις με templates.(ο τροπος του Agent Cain ειναι μεν πιο γενικος αλλα πιο δυσκολος.)μπορεις δηλ.να κανεις κατι τετοιο:

template<class T1,class T2,class T3>//γενικα μπορει να εχεις 3 διαφορετικες κατηγοριες
float point(T1 X,T2 Y,T3 Z){
.
.
.
}

οριζεις μετα τις δυο κατηγοριες   "class A" και "class B" και στη main καλεις τη συναρτηση point(a,b1,b2) οπου a,b1,b2 αντικειμενα στις αντιστοιχες κλασεις.
αν σου ελεγε να ειναι και η main ανεξαρτητη τοτε ειχες "προβλημα" αφου η παραπανω κληση της point και η δημιουργια των αντικειμενων a,b1,b2 καθιστουν τη main  εξαρτημενη απο την κατηγορια μαθηματων.


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 13:18:21 pm
circuit **circuit::M;
int circuit::n;

Γιατί το κάνει αυτό αμέσως μετά τη δήλωση της circuit?


Title: Re: Απορίες στη C++
Post by: tomshare3 on February 09, 2009, 13:22:25 pm
epeidh einai static oi metablites prepei na ginei ksexwristi dilwsh eksw apo tin klash ta leei sto biblio mathete tin c++ apo to mhden. Oi g kai h htan skata  >:(  :-\  Apo oso katalaba ton diplo pointer tis basikis klasis to xrisimopoei se sinartiseis kai stis 2 tis ergasies gia na desmeusi mnimi gia ta antikeimena twn paragomenwn



Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 13:25:16 pm
sorry δν τ ειδα!
όντως ειναι καλη ασκηση γιατι ειναι συμμαζεμένη!
θενκς


Title: Re: Απορίες στη C++
Post by: evageliav on February 09, 2009, 13:34:47 pm
Να ρωτήσω,όταν στο τέλος κάποιας εντολής υπάρχει  το endl τι σημαίνει;


Title: Re: Απορίες στη C++
Post by: Sonic on February 09, 2009, 13:44:37 pm
τελος γραμμης.αντι για το "\n".


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 14:15:51 pm
πάντως στην circuit έχει λάθος. Δεν έχει δηλώσει στη μαιν αντικείμενα
και τ ψαχνα μισή ώρα


Title: Re: Απορίες στη C++
Post by: tomshare3 on February 09, 2009, 14:22:15 pm
τα δημιουργει αμεσως μετα τις αντιστοιχες κλασεις:
class circuit_1:public circuit{
.
.
.
}cir_1;

βασικα νομιζω πως ειναι το ιδιο, αρκει αν τα βαλεις στη main να ειναι πριν τις εντολες:
n=circuit::get_n();
P=circuit::get_M();

ετσι μενει "ανεξαρτητη" και η main αν και δεν εχει και πολυ σημασια...


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 14:28:35 pm
α ραιτ δν τ προσεξα!

στην G τα εχει οντως μεσα στην μαιν!


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 14:29:32 pm
έχουμε και static δλδ?


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 14:31:46 pm
τι εννοεις εχουμε; φανταζομαι σ'ότι κάναμε θ εξεταστούμε


Title: Re: Απορίες στη C++
Post by: Sonic on February 09, 2009, 14:35:43 pm
τα δημιουργει αμεσως μετα τις αντιστοιχες κλασεις:
class circuit_1:public circuit{
.
.
.
}cir_1;

βασικα νομιζω πως ειναι το ιδιο, αρκει αν τα βαλεις στη main να ειναι πριν τις εντολες:
n=circuit::get_n();
P=circuit::get_M();

ετσι μενει "ανεξαρτητη" και η main αν και δεν εχει και πολυ σημασια...


ανεξαρτητη απο το ειδος οχι και απο τον αριθμο.για να βαλω π.χ. δυο εν σειρα επρεπε να αλλαξω τον κωδικα και να οριζω και δευτερο αντικειμενο μετα τη δηλωση της πρωτης κλασης.


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 14:37:00 pm
ε αυτο λυνεται ευκολα με ενα ντιφαιν


Title: Re: Απορίες στη C++
Post by: Sonic on February 09, 2009, 14:47:23 pm
ε αυτο λυνεται ευκολα με ενα ντιφαιν

αν και δε σε επιασα με το define,δεν ειπα οτι δεν ειναι ευκολο να αλλαξει ο κωδικας.το θεμα ειναι να ΜΗΝ αλλαξει απο τη στιγμη που λεει ανεξαρτητο απο τον αριθμο.   


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 14:50:51 pm
τι εννοεις εχουμε; φανταζομαι σ'ότι κάναμε θ εξεταστούμε

Επειδή δεν πατούσα δε ξέρω τι έχουμε ακριβώς. Για static σε κλάσεις που λέει στο βιβλιο?

εδιτ : το βρήκα


Title: Re: Απορίες στη C++
Post by: tomshare3 on February 09, 2009, 14:51:19 pm
τα δημιουργει αμεσως μετα τις αντιστοιχες κλασεις:
class circuit_1:public circuit{
.
.
.
}cir_1;

βασικα νομιζω πως ειναι το ιδιο, αρκει αν τα βαλεις στη main να ειναι πριν τις εντολες:
n=circuit::get_n();
P=circuit::get_M();

ετσι μενει "ανεξαρτητη" και η main αν και δεν εχει και πολυ σημασια...


ανεξαρτητη απο το ειδος οχι και απο τον αριθμο.για να βαλω π.χ. δυο εν σειρα επρεπε να αλλαξω τον κωδικα και να οριζω και δευτερο αντικειμενο μετα τη δηλωση της πρωτης κλασης.

αν ηθελες αλλο ενα υποκυκλωμα με αντιστασεις σε σειρα θα εβαζες:
class circuit_1:public circuit{
.
.
}cir_1,cir_2;

ή πχ αν ηθελες ενα αλλο ειδος υποκυκλωματος θα επρεπε να φταξεις μια αλλη κλαση
class circuit_3:public circuit{
.
.
}cir_3;

ετσι το βασικο συστημα μενει ανεξαρτητο απο τον αριθμο και το ειδος των υποκυκλωματων!


Title: Re: Απορίες στη C++
Post by: tomshare3 on February 09, 2009, 14:53:26 pm
τι εννοεις εχουμε; φανταζομαι σ'ότι κάναμε θ εξεταστούμε

Επειδή δεν πατούσα δε ξέρω τι έχουμε ακριβώς. Για static σε κλάσεις που λέει στο βιβλιο?

στο βιβλιο δεν βρηκα κατι και στις σημειωσεις του εχει μονο μια σελ οπου δεν λεει ουσιαστικα τιποτα..
Μονο απο παραδειγματα και ασκησεις στο ethmmy βγαζεις ακρη..


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 14:55:16 pm
λαθος φιλοι μου μαθετε τη ΣΕ++ απο το 0 σελ.537-539

εδιτ:
για το ντιφαιν εννοουσα αυτο που ειπε ο τομσερ αλλα σ πινακα


Title: Re: Απορίες στη C++
Post by: tomshare3 on February 09, 2009, 14:57:51 pm
nice!!!!! :D :D
thx το εψαχνα ωρες!!


Title: Re: Απορίες στη C++
Post by: Sonic on February 09, 2009, 14:59:04 pm
@tomshare3

ναι αυτο εννοουσα κι εγω.απλα νομιζω οτι ο κορτεσης ειχε κανει και μια παραλλαγη(οχι του συγκεκριμενου,νομιζω ειναι η mach3) στην οποια το προγραμμα ρωτουσε το χρηστη ποσες μηχανες απο τον καθε τυπο θελει να συμπεριλαβει. και δεν ξερω κατα ποσο με αυτη τη λογικη το προγραμμα με τα κυκλωματα θεωρειται ανεξαρτητο απο τον αριθμο των κυκλωματων.


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 15:07:30 pm
nice!!!!! :D :D
thx το εψαχνα ωρες!!

Tα περιεχόμενα του βιβλίου χάλια είναι,όλα είναι κρυμμένα!

Τελικά αύριο επιτρέπεται να φέρουμε τπτ??


Title: Re: Απορίες στη C++
Post by: tomshare3 on February 09, 2009, 15:09:52 pm
βασικα δεν εχει πολυ μεγαλη διαφορα.. δες και την υλοποιηση της G..
Εκει ρωταει τον χρηστη στη μαιν ποσες μηχανες θελει απο τον καθε τυπο..
και εδω θα ηταν το ιδιο αν ρωτουσε η μαιν το χρηστη ποσα υποκυκλωματα θελει και να δημιουργουσε εκει τα αντικειμενα.

nice!!!!! :D :D
thx το εψαχνα ωρες!!

Tα περιεχόμενα του βιβλίου χάλια είναι,όλα είναι κρυμμένα!

Τελικά αύριο επιτρέπεται να φέρουμε τπτ??

επιτρεπεται να εχουμε τα παντα εκτως απο χειρογραφα!!!


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 15:11:27 pm
ευρετηριο γκαιζ τελευταιες σελιδες

σημειωσεις λεει στην περιγραφη τουμαθηματος


Title: Re: Απορίες στη C++
Post by: stefdth on February 09, 2009, 15:43:28 pm
Στην άσκηση 3 του Φεβρουαρίου του 2003, που βρίσκεται στα downloads, μπορεί κάποιος να εξηγήσει πως ακριβώς εκτυπώνονται αυτά που εκτυπώνονται? Βασικά δηλαδή πως λειτουργούν αυτά τα m=*(((*int*)p)+1) κτλ.


Title: Re: Απορίες στη C++
Post by: Christy on February 09, 2009, 15:49:07 pm
Quote
main(){
.
.
ma8ima *M[3];
A a;
B b, c;

M[0]=&a;
M[1]=&b;
M[2]=&c;
cout<<point(M,3);
.
.
}

Η point θα έχει το πρότυπο:
float point(ma8ima **M, int n)

η point σου με μπερδεψε...δλδ τι υλοποιηση θα εχει ετσι οπως την εχεις δηλώσει??? :-[


Title: Re: Απορίες στη C++
Post by: AgentCain on February 09, 2009, 16:08:18 pm
η point σου με μπερδεψε...δλδ τι υλοποιηση θα εχει ετσι οπως την εχεις δηλώσει??? :-[

float point(ma8ima **M, int n){
  int i;
  int sum=0;
  for(i=0;i<n;i++){
    sum+=M[ i]->get_grade()*M[ i]->get_coeff();
  }
  return sum;
}

οι get_grade() και get_coeff() είναι 2 public συναρτήσεις μέλη της βασικής κλάσης ma8ima, οι οποίες επιστρέφουν το τελικό βαθμό και συντελεστή βαρύτητας του μαθήματος αντίστοιχα.


Title: Re: Απορίες στη C++
Post by: gate4 on February 09, 2009, 16:10:37 pm
Στο 2008 +1 για ποιντ() με τεμπλειτ


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 17:25:06 pm
Με templates είναι πιο απλό πάντως


Title: Re: Απορίες στη C++
Post by: evageliav on February 09, 2009, 17:46:49 pm
Στις βιβλιοθήκες conio.h, process.h kai new.h τι περιέχεται,δεν υπερκαλύπτονται οι εντολές που θέλουμε μόνο με #include <iostream.h>;


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 17:48:09 pm
Στις βιβλιοθήκες conio.h, process.h kai new.h τι περιέχεται,δεν υπερκαλύπτονται οι εντολές που θέλουμε μόνο με #include <iostream.h>;

ανάλογα με τον compiler νομίζω είναι αυτά


Title: Re: Απορίες στη C++
Post by: tsolias on February 09, 2009, 17:51:12 pm
Στις βιβλιοθήκες conio.h, process.h kai new.h τι περιέχεται,δεν υπερκαλύπτονται οι εντολές που θέλουμε μόνο με #include <iostream.h>;

στο κονιο εχει ας πουμε την getch

καμια δν ειναι περιττη στ προγραμματα που τσεκαρα


Title: Re: Απορίες στη C++
Post by: Anyparktos on February 09, 2009, 18:31:06 pm



Τελικά αύριο επιτρέπεται να φέρουμε τπτ??

επιτρεπεται να εχουμε τα παντα εκτως απο χειρογραφα!!!

Wait.WAT?SERIOUSLY? O_O

Δλδ σε περίιιιιιπτωση λέμε τώρα που βάλει templates μπορώ να εκτυπώσω το .ppt που έχει τη θεωρία και να το χω μαζί μου??

Αυτό το λέω γιατί όταν εξετάστηκα στις εργασίες δεν είχα κάνει τις εργασίες I και J και μου λεει "όλο τις πιο κρίσιμες εργασίες δε μου παραδίδετε..."

Όποιος κατάλαβε,κατάλαβε.(και πολύ υπονοούμενο κι ετς'.Ξες τώρα.)


Title: Re: Απορίες στη C++
Post by: tomshare3 on February 09, 2009, 18:43:52 pm
ναι μπορουμε να εχουμε οτιδηποτε τυπωμενο! οχι χειρογραφο για να μην ανταλλασονται οι λυσεις.. Ηταν ξεκαθαρος σε αυτο!


Title: Re: Απορίες στη C++
Post by: Airmak_gr on February 09, 2009, 19:02:30 pm
παιδες μπορειτε να μπειτε στο ethmmy γιατι θελω να κατεβασω καποια πραγματα και δεν μπαινει σε μενα........!!!!


Title: Re: Απορίες στη C++
Post by: goustafson on February 09, 2009, 19:07:49 pm
class A{
      protected:
                int k;
      public:
             static int t;
             int fun(){k=7;return k;}
};

int A::t;                       
                       
class B:public A{
      int n,m;
      public:
             B(){n=3;m=8;}
             int fun(){t=4;k=n+m;return k;}
             operator int (){k=m/n;if(t) k=n*m;return k;}
             };
             
             
             
int main()
{B b,c,d;
cout<<b+c+d<<"\n";
cout<<b.fun()<<"\n";
cout<<2*c<<"\n";
d.t=0;
cout<<b+c<<"\n";
return 0;
}

Έχουμε αυτόν τον κώδικα!!!
Μπορείτε να μου εξηγήσετε πως γίνονται τα b+c+d
2*c
τι ακριβώς προσθέτει και πολλαπλασιάζει???
όπως επείσης που χρεισιμοποιείτε ο τελεστής () του οποίου έγινε ειδική συνάρτηση ώστε να αλλάξει την λειτουργία του?

6
11
48
4
παραπάνω είναι τα αποτελέσματα μπορεί καποιος να με εξηγήσει γιατί το 1ο βγαίνει 6 και όχι 8 και το τελευταίο βγαίνει 4;;;;;;


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 19:08:33 pm
παιδες μπορειτε να μπειτε στο ethmmy γιατι θελω να κατεβασω καποια πραγματα και δεν μπαινει σε μενα........!!!!

ούτε εγώ μπορώ να μπω ...

Ξέρεις κανείς τι παίζει με το τελευταίο θέμα του 2003?
http://www.thmmy.gr/smf/index.php?action=tpmod;dl=item398

έγραψα το πρόγραμμα και έβγαλε ότι εκτυπώνει

2 3
5 -1
5  5
5 -1

Κατάλαβα περίπου πως προκύπτουν, αλλά δεν ξέρω πως ακριβώς να το δικαιολογήσω..


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 19:19:35 pm
class A{
      protected:
                int k;
      public:
             static int t;
             int fun(){k=7;return k;}
};

int A::t;                       
                       
class B:public A{
      int n,m;
      public:
             B(){n=3;m=8;}
             int fun(){t=4;k=n+m;return k;}
             operator int (){k=m/n;if(t) k=n*m;return k;}
             };
             
             
             
int main()
{B b,c,d;
cout<<b+c+d<<"\n";
cout<<b.fun()<<"\n";
cout<<2*c<<"\n";
d.t=0;
cout<<b+c<<"\n";
return 0;
}

Έχουμε αυτόν τον κώδικα!!!
Μπορείτε να μου εξηγήσετε πως γίνονται τα b+c+d
2*c
τι ακριβώς προσθέτει και πολλαπλασιάζει???
όπως επείσης που χρεισιμοποιείτε ο τελεστής () του οποίου έγινε ειδική συνάρτηση ώστε να αλλάξει την λειτουργία του?

6
11
48
4
παραπάνω είναι τα αποτελέσματα μπορεί καποιος να με εξηγήσει γιατί το 1ο βγαίνει 6 και όχι 8 και το τελευταίο βγαίνει 4;;;;;;

Αν κατάλαβες πως βγαίνει το ένα , καταλαβαίνεις πως βγαίνουν όλα.

έχει παραδώσει τν επικάλυψη αυτή?

απότι κατάλαβα, όταν γράφεις b+c+d εκτελείται η επικάλυψη () και επειδή t=0 γίνεται  ουσιαστικά k + k + k = m/n + m/n +m/n = 8/3 +8/3 +8.3 = 2 + 2 +2 γιατί είναι int και τρώει τα δεκαδικά


Title: Re: Απορίες στη C++
Post by: goustafson on February 09, 2009, 19:29:47 pm
class A{
      protected:
                int k;
      public:
             static int t;
             int fun(){k=7;return k;}
};

int A::t;                       
                       
class B:public A{
      int n,m;
      public:
             B(){n=3;m=8;}
             int fun(){t=4;k=n+m;return k;}
             operator int (){k=m/n;if(t) k=n*m;return k;}
             };
             
             
             
int main()
{B b,c,d;
cout<<b+c+d<<"\n";
cout<<b.fun()<<"\n";
cout<<2*c<<"\n";
d.t=0;
cout<<b+c<<"\n";
return 0;
}

Έχουμε αυτόν τον κώδικα!!!
Μπορείτε να μου εξηγήσετε πως γίνονται τα b+c+d
2*c
τι ακριβώς προσθέτει και πολλαπλασιάζει???
όπως επείσης που χρεισιμοποιείτε ο τελεστής () του οποίου έγινε ειδική συνάρτηση ώστε να αλλάξει την λειτουργία του?

6
11
48
4
παραπάνω είναι τα αποτελέσματα μπορεί καποιος να με εξηγήσει γιατί το 1ο βγαίνει 6 και όχι 8 και το τελευταίο βγαίνει 4;;;;;;

Αν κατάλαβες πως βγαίνει το ένα , καταλαβαίνεις πως βγαίνουν όλα.

έχει παραδώσει τν επικάλυψη αυτή?

απότι κατάλαβα, όταν γράφεις b+c+d εκτελείται η επικάλυψη () και επειδή t=0 γίνεται  ουσιαστικά k + k + k = m/n + m/n +m/n = 8/3 +8/3 +8.3 = 2 + 2 +2 γιατί είναι int και τρώει τα δεκαδικά
ευχαριστώ αδερφέ .....ξεχασα να βγαλω τα δεκαδικα :D


Title: Re: Απορίες στη C++
Post by: Sonic on February 09, 2009, 19:35:56 pm
γιατι με την εντολη cout<<b+c+d; εκτελειται η επικαλυψη του τελεστη? :???:


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 19:40:19 pm
γιατι με την εντολη cout<<b+c+d; εκτελειται η επικαλυψη του τελεστη? :???:

εκτελείται η επικάλυψη b()  , αλλά έχει διδαχτεί αυτό? Δε βρήκα κάτι στις σημειώσεις. Και γιατί το int μπαίνει μετά και όχι στην αρχή???


Title: Re: Απορίες στη C++
Post by: Sonic on February 09, 2009, 19:51:40 pm
Και γιατί το int μπαίνει μετά και όχι στην αρχή???

σωστο κ αυτο :???:.ειναι οπως το σεπτεμβρη στη C που ηθελε να ξερουμε οτι μια static  αρχικοποιειται 0 αυτοματα και η μονη αναλογη αναφορα ηταν στο κεφαλαιο 20 του βιβλιου για τη C++. σε καθε μαθημα μας θελει ενα βημα μπροστα ;D ;D :D


Title: Re: Απορίες στη C++
Post by: AgentCain on February 09, 2009, 19:57:55 pm
αυτό το operator int() δεν είναι επικάλυψη ακριβώς
είναι συνάρτηση μετατροπής τύπου. Το έχει στις σημειώσεις.
Ο compiler βλέπει ότι δεν έχει οριστεί επικάλυψη του + για τα αντικείμενα, οπότε μετά κοιτάει αν υπάρχει συνάρτηση που μπορεί να μετατρέψει αυτά τα 2 αντικείμενα
Βρίσκει λοιπόν μία συνάρτηση που τα μετατρέπει σε int και την εκτελεί.
Το θέμα είναι, αμα υπήρχε και άλλη 1 συνάρτηση αλλά σε float, ποια θα επέλεγε? Ή μήπως θα χτυπούσε?


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 20:08:08 pm

Το θέμα είναι, αμα υπήρχε και άλλη 1 συνάρτηση αλλά σε float, ποια θα επέλεγε? Ή μήπως θα χτυπούσε?

Το θέμα είναι έχει παραδώσει συναρτήσεις μετατροπής τύπου?


Title: Re: Απορίες στη C++
Post by: Sonic on February 09, 2009, 20:10:54 pm
σωστος.να γιατι πρεπει να διαβαζεις και τις σημειωσεις ;)
οσο για αυτο που λες λογικα θα χτυπησει αφου δεν υπαρχει τροπος να ξεχωρισει ποια τιμη να επιστρεψει,εκτος αν του το δηλωσεις ρητα.
π.χ. cout<<(int)b+(float)c+(int)d;


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 20:18:16 pm
σωστος.να γιατι πρεπει να διαβαζεις και τις σημειωσεις ;)
οσο για αυτο που λες λογικα θα χτυπησει αφου δεν υπαρχει τροπος να ξεχωρισει ποια τιμη να επιστρεψει,εκτος αν του το δηλωσεις ρητα.
π.χ. cout<<(int)b+(float)c+(int)d;

Και στο βιβλίο το έχει κεφάλαιο 20 στο τέλος!   :o


Title: Re: Απορίες στη C++
Post by: guillem on February 09, 2009, 20:32:53 pm
επειδή όλοι αναφέρονται σε σημειώσεις... βιβλίο μπορούμε να φέρουμε αύριο? :P


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 20:34:58 pm
επειδή όλοι αναφέρονται σε σημειώσεις... βιβλίο μπορούμε να φέρουμε αύριο? :P
φέρτο και αν σε αφήσουν καλώς , αν δε σε αφήσουν το βάζεις στην άκρη (λέμε τώρα!)  :P


Title: Re: Απορίες στη C++
Post by: N3ikoN on February 09, 2009, 20:42:23 pm
επειδή όλοι αναφέρονται σε σημειώσεις... βιβλίο μπορούμε να φέρουμε αύριο? :P

 κοιτα... λογικά επιτρέπεται...γιατί με την λογική του μαθήματος, θα μπορούσαμε να φωτοτυπίσουμε όλο το βιβλίο και να το φέρουμε μαζί μας...επομένως λογικά επιτρέπεται....αλλιώς έλεος....! :D


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 20:42:57 pm
έχω μια απορία για το περσινό πρώτο θέμα...
η συνάρτηση point() είναι template?? και αν ναι..πως βάζω τα ορίσματα ώστε να είναι ανεξάρτητα των κατηγοριών μαθημάτων...??
(ας τα έχει δει κάποιος....)


άκυρο...βρήκα μια λύση χωρίς templates....


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 20:43:51 pm
επειδή όλοι αναφέρονται σε σημειώσεις... βιβλίο μπορούμε να φέρουμε αύριο? :P
ο συμεωνιδης είπε με μαιλ ότι μπορούμε να έχουμε ότι θέλουμε...σημειωσεις,βιβλίο,κώδικες....


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 21:04:06 pm
έχω μια απορία για το περσινό πρώτο θέμα...
η συνάρτηση point() είναι template?? και αν ναι..πως βάζω τα ορίσματα ώστε να είναι ανεξάρτητα των κατηγοριών μαθημάτων...??
(ας τα έχει δει κάποιος....)


άκυρο...βρήκα μια λύση χωρίς templates....

πάντως με template γίνεται εύκολα

γράφεις template <class x,class y, class z) float point(x a,y b ,z c){
.
.
.
}

μπορείς να μη βάλεις z αλλά μετά πρέπει όταν την καλείς να προσέξεις να είσαι στη σωστή σειρά τα αντικείμενα όταν τα βάζεις σαν ορίσματα (δλδ τα δυο ίδια αντικείμενα να είναι και τα δυο x ή y.



Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 21:08:00 pm
k γω αυτό σκέφτηκα στην αρχή...αλλά με προβλημάτισε το γεγονός ότι δίνω τρεις κατηγορίες....
δλδ στην περίπτωση που έχουμε 2 κατηγορίες,τότε ο ένας από τους τύπους ορισμάτων που βάζω δε χρησιμοποιείται....


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 21:08:53 pm
μπορώ να βάλω για 2 από τα ορίσματα που έβαλα,ίδιο τύπο??


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 21:10:12 pm
χρησιμοποιείται αλλά είναι περιττός ας πούμε.

Αλλά καλύπτει όλες τις περιπτώσεις (δεδομένου ότι κάθε φορά η point δέχεται 3 μαθήματα)


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 21:11:14 pm
μπορείς να γράψεις

template <class X,class Y> float point (x a,y b ,y c) , αλλά στα b και c θα μπουν τα μαθήματα της ίδιας κατηγορίας


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 21:12:03 pm
δλδ μπορω παρ όλο που δήλωσα <class x,class y,class z>
εν τέλει να στείλω <int,int,float> (τα δύο ίδια??)


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 21:13:36 pm
ναι γίνεται , καθένα από αυτά μπορεί να είναι οτιδήποτε, και τα 3 ίδια κατηγορία , και τα 3 διαφορετικά , κτλ


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 21:14:31 pm
ααααα...σοβαρά??
γαμάτο.....

θενξ!!! :)


Title: Re: Απορίες στη C++
Post by: Liverpoylian on February 09, 2009, 21:15:15 pm
Ρε παιδιά τα templates τι είναι;Εγώ στις σημειώσεις του Κορτέση δεν το έχω βρει


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 21:18:32 pm
δεν το έχει στις σημειώσεις του κορτέση,τα έχει νομίζω σε κάτι έχτρα στο ετημμυ!
κάτι για μήτρες θα λέει!


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 21:18:58 pm
Ρε παιδιά τα templates τι είναι;Εγώ στις σημειώσεις του Κορτέση δεν το έχω βρει

Στο βιβλίο τα έχει κεφάλαιο 16 Πρότυπα


Title: Re: Απορίες στη C++
Post by: haas on February 09, 2009, 21:22:58 pm
παιδια μπορει μηπως κανεις να μου εξηγησει περιληπτικα τι κανει το προγραμμα στα downloads στα θεματα του 2003 στο 3ο θεμα που λεει τι θα τυπωσει κτλ?και γενικα τι κανει εκει περα με τα type casting..και γενικα ποια η ουσια του type casting??


Title: Re: Απορίες στη C++
Post by: Liverpoylian on February 09, 2009, 21:27:54 pm
Eβαλε templates στις φετεινές ασκήσεις?


Title: Re: Απορίες στη C++
Post by: haas on February 09, 2009, 21:29:38 pm
Eβαλε templates στις φετεινές ασκήσεις?
εβαλε και εργασια καναμε και εργαστηριο με templates...οποτε διαβασε τα που ξερεις μπορει να πεσει τπτ τετοιο...


Title: Re: Απορίες στη C++
Post by: Liverpoylian on February 09, 2009, 21:30:30 pm
Thanks haas


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 21:46:12 pm
έχουμε extractors?


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 21:53:08 pm
εγώ  έριξα μια ματιά στις σημειώσεις...αλλά δεν ξέρω αν είναι μέσα στην υλη......


Title: Re: Απορίες στη C++
Post by: haas on February 09, 2009, 21:58:16 pm
extractors insertors παιδια πρεπει να εκανε μαθημα αλλα κατι λιγα...εχει ανεβασει και στις ασκησεις αυτα που εκανε στο μαθημα...αλλα ελεος λετε να πεσει κατι τετοιο?ουτε καν εργαστηριο δεν το καναμε


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 22:03:31 pm
παιδια μπορει μηπως κανεις να μου εξηγησει περιληπτικα τι κανει το προγραμμα στα downloads στα θεματα του 2003 στο 3ο θεμα που λεει τι θα τυπωσει κτλ?και γενικα τι κανει εκει περα με τα type casting..και γενικα ποια η ουσια του type casting??

please οντως κάποιος τι εννοει με το κ=*(ιντ *)ρ;



Title: Re: Απορίες στη C++
Post by: Liverpoylian on February 09, 2009, 22:09:20 pm
Παιδιά έχω τη λύση. Την  ανεβάζω. Μπορεί ναχει και κάποια λάθη


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 22:21:49 pm
πρέπει να είναι λάθος γτ το έτρεξα το πρόγραμμα και έβγαλε αυτά που γράφω εδώ

http://www.thmmy.gr/smf/index.php?topic=22725.msg557883#msg557883

για δικαιολόγηση δε ξέρω


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 22:25:13 pm
στο πρώτο βήμα το m=-1 δηλαδή αυτό στν τελευταια θεση τωρα ειμαι καπου στη μεση θ επανελθω


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 22:28:06 pm
Παιδιά έχω τη λύση. Την  ανεβάζω. Μπορεί ναχει και κάποια λάθη

η λογική είναι σωστή νομίζω

το λάθος είναι ότι  γράφεις t+1 και t-1  ενώ είναι t+l και t-l


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 22:35:28 pm
λοιπόν το λάθος είναι στην καταχώρηση των τιμών C::k C::m

αν δεις το άθροισμα είναι 3+2 άρα C::k=5
και m=2-3=-1

δν κτλβαινω το #8 ! Δεν θ επρεπε να δείξει το C::k και μετά στο #9 το C::m?

εδιτ ΥΓ: αυτο που έκανες είναι θεικό. ετσι παραστατικότατο

εδιτ 2: ολα τέλεια μ αυτή τη διόρθωση βγαίνει αυτό που λέει ο εμφανεβερ


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 22:49:22 pm
Από την αλλη αφού είναι private πως μεταφέρονται στη c?????


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 23:00:39 pm
δεν μεταφέρονται αλλά κάθε παραγόμενη κουβαλάει και όλα τα προηγούμενα

εδιτ: βσκ εννοούσα ότι δεν προσπελαύνονται αλλά κουβαλιούνται

αυτή είναι η διαφορά με το να δήλωνες πχ. στο Α το κ στάτικ.

τότε αυτό θα υπήρχε μόνο μια φορά όσες φορές και αν δημιουργούσες παράγωγα από το Α


Title: Re: Απορίες στη C++
Post by: crystal on February 09, 2009, 23:18:34 pm
Η conio.h τι κάνει???


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 23:26:30 pm
έχω φτιάξει το template για το περσινό θέμα με το βαθμό....

έβαλα: template<class t1,class t2,class t3> float point (t1 &a,t2 &b, t3 &c)

και μετά στη μαιν όταν την καλώ τη συνάρτηση: point(a,b1,b2)  (όπου a είναι τύπου Α και b1,b2 είναι τύπου Β!)

μου βγάζει το εξής λάθος:

Unsaved Document 1.cpp: In function ‘float point(t1&, t2&, t3&) [with t1 = A, t2 = B, t3 = B]’:
Unsaved Document 1.cpp:65:   instantiated from here
Unsaved Document 1.cpp:51: error: invalid use of member (did you forget the ‘&’ ?)
Unsaved Document 1.cpp:51: error: invalid use of member (did you forget the ‘&’ ?)
Unsaved Document 1.cpp:51: error: invalid use of member (did you forget the ‘&’ ?)
Unsaved Document 1.cpp:51: error: invalid use of member (did you forget the ‘&’ ?)
Unsaved Document 1.cpp:51: error: invalid use of member (did you forget the ‘&’ ?)
Unsaved Document 1.cpp:51: error: invalid use of member (did you forget the ‘&’ ?)


Title: Re: Απορίες στη C++
Post by: ion on February 09, 2009, 23:37:16 pm
έχω φτιάξει το template για το περσινό θέμα με το βαθμό....

έβαλα: template<class t1,class t2,class t3> float point (t1 &a,t2 &b, t3 &c)



float point(t1 a,t2 b,t3 c)

γιατί &α?


Title: Re: Απορίες στη C++
Post by: Neal on February 09, 2009, 23:42:23 pm
Πόση ώρα γράφουμε?


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 23:45:45 pm
έχω φτιάξει το template για το περσινό θέμα με το βαθμό....

έβαλα: template<class t1,class t2,class t3> float point (t1 &a,t2 &b, t3 &c)



float point(t1 a,t2 b,t3 c)

γιατί &α?

και χωρίσ & το έβαλα αλλά μου πετάει το ίδιο λάθος.... :(


Title: Re: Απορίες στη C++
Post by: Emfanever on February 09, 2009, 23:51:49 pm
πρέπει να κάνεις την point friend  

template <.......> friend float point (.........)

μέσα στις κλάσεις


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 23:53:05 pm
γτ?? έτσι κι αλλιώς οι συναρτήσεις που χρησιμοποιεί η point είναι public....


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 23:55:02 pm
πάλι και με friend τα ίδια λάθη βγάζει!


Title: Re: Απορίες στη C++
Post by: pitsa on February 09, 2009, 23:59:51 pm
άκυρο παιδιά σόρρυ...
είχα ξεχάσει κάτι παρενθέσεις... :(


Title: Re: Απορίες στη C++
Post by: Neal on February 10, 2009, 00:39:20 am
Είναι αυτά τα δύο ισοδύναμα;

SN++;
if(SN==1)
    S=(source **)malloc(sizeof(source *));
else
    S=(source **)realloc(S,SN*sizeof(source *));


και


S=(source **)(new source* [SN]);



Title: Re: Απορίες στη C++
Post by: Merlin on July 13, 2009, 23:33:31 pm
Παιδια,ακυρη ερωτηση σε ακυρο χρονο: η new κανει και ανακατανομη μνημης? ;D


Title: deleted
Post by: BOBoMASTORAS on July 14, 2009, 01:20:14 am
deleted


Title: Re: Απορίες στη C++
Post by: crystal on August 23, 2009, 21:11:37 pm
Εχει κανείς τις λυσεις του Κορτεση απο τις εργασίες να τις ανεβάσει??
Είναι πεσμένο το ethmmy..


Title: Re: Απορίες στη C++
Post by: crystal on September 02, 2009, 17:12:17 pm
Στις εργασίες με την ανεξαρτησία των αντικειμένων,πχ στην G,στις λύσεις του Κορτέση
γιατι χρησιμοποιεί διπλό pointer στα αντικείμενα και μπροστά απο την δήλωση των συναρτήσεων???


Title: Re: Απορίες στη C++
Post by: Merlin on September 02, 2009, 17:36:08 pm
Γιατι στις συναρτησεις θελει να χρησιμοποιησει πινακες απο pointer σε αντικειμενα.Το
Code:
p[i]->get_state();
ειναι πινακας απο pointers,καθε στοιχειο του ειναι ενας pointer  σε αντικειμενα τυπου source.Αρα θελει 2πλο ποιντερ(1ο επιπεδο για τον ποιντερ στο αντικειμενο,2ο επιπεδο για την δεικτοδοτηση στον πινακα)


Title: Re: Απορίες στη C++
Post by: termi on September 02, 2009, 19:16:43 pm
Φεβρουάριος 2009 : 3ο θέμα Β ομάδας μπορεί να εξηγήσει κανείς πως βγαίνει?


Title: Re: Απορίες στη C++
Post by: Matzika on September 02, 2009, 20:06:52 pm
να ρωτήσω και εγώ...όταν κάνουμε επικάλυψη του τελεστή new το αν ο τυπος είναι float,int,κτλ καθορίζεται απο την εντολή που θα δώσω εγώ στη main μετα? (δλδ όταν θα χρησιμοποιήσω τον τελεστή new?)
ή μήπως πρέπει να το ορίσω στο σώμα της συνάρτησης επικάλυψης?
και αν οχι το μόνο που γραφω στο σώμα της συναρτησης επικάλυψης είναι το return malloc(size)?


Title: Re: Απορίες στη C++
Post by: spartacos on September 02, 2009, 20:33:05 pm
στην επικαλυψη που εχει στο βιβλιο σελ460 ο επιστρεφομενος τυπος ειναι void αρα ισχυει το δευτερο και αν δεν κανω λαθος ο τυπος οντως καθοριζεται στη main


Title: Re: Απορίες στη C++
Post by: Merlin on September 02, 2009, 20:52:20 pm
Αν δεν θες να κανεις επικαλυψη του τελεστη new,δηλαδη να τον χρησιμοποιησεις με την default χρηση του για δεσμευση int,float κτλ,τοτε στην main απλα τον χρησιμοποιεις με μεταβλητες int ,float κτλ.Η επικαλυψη των τελεστων γινεται οταν την χρησιμοποιουμε σε αντικειμενα και η λειτουργια τους οριζεται απο την συναρτηση επικαλυψης που οριζεται για την κλαση του αντικειμενου που θελεις να χρησιμοποιησεις την επικαλυψη.Νομιζω οι σημειωσεις του Κορτεση εχουν ενα παραδειγμα με default χρηση και επικαλυψη της new και delete.(ναι ειναι το 6.1.1,ντροπη :P,τα λεει σαφεστατα)


Title: Re: Απορίες στη C++
Post by: sΚονταριτσα on September 02, 2009, 21:08:30 pm
γιωργαρα πες με οτι μετα απο τοσο καψιμο δεν το περασες??

(ειναι καλος αυτος...be careful... ;))


Title: Re: Απορίες στη C++
Post by: spartacos on September 02, 2009, 21:51:59 pm
Εστω μια κλαση A με constructor A(); και μια Β με constructor B(int n)

αν η κλαση C [constructor με μια παραμετρο] κληρονομει τις Α&Β ποια μορφη του constructor της ειναι σωστη?

C::C(int m, int n):B(n)

H

C::C(int m, int n):B(n),A()


Title: Re: Απορίες στη C++
Post by: λήθη on September 02, 2009, 22:06:58 pm
to deutero

akoma kai to

C::C (int m, int n) : A() , B(n)

9a itan sosto


nai, dikio exei o merlin, i A 9a borouse na min anaferetai


Title: Re: Απορίες στη C++
Post by: Merlin on September 02, 2009, 22:08:34 pm
Aντε αφου οι βασικες κλασεις δεχονται παραμετρους,η παραγομενη πρεπει οπωσδηποτε να εχει constructor,ομως γιατι να το γραψεις στην 2η μορφη?αφου η Α δεν δεχεται παραμετρους ουτως η αλλως.Κοιτα το παραδειγμα εδω που εχει υπερφορτωμενες constructor:οταν χρησιμοποιει την εκδοση με χωρις παραμετρους,και οταν χρησιμοποιει την αλλη που εχει.

Code:
// constructors and derived classes
#include <iostream>
using namespace std;

class mother {
  public:
    mother ()
      { cout << "mother: no parameters\n"; }
    mother (int a)
      { cout << "mother: int parameter\n"; }
};

class daughter : public mother {
  public:
    daughter (int a)
      { cout << "daughter: int parameter\n\n"; }
};

class son : public mother {
  public:
    son (int a) : mother (a)
      { cout << "son: int parameter\n\n"; }
};

int main () {
  daughter cynthia (0);
  son daniel(0);
  
  return 0;
}


mother: no parameters
daughter: int parameter
 
mother: int parameter
son: int parameter

Aπ (http://www.cplusplus.com/doc/tutorial/inheritance/)


Title: deleted
Post by: BOBoMASTORAS on September 03, 2009, 02:52:45 am
deleted


Title: Re: Απορίες στη C++
Post by: Merlin on September 03, 2009, 03:00:41 am
Λοιπον,το δοκιμασα στον dev!.Εβαλα τον παρακατω κωδικα :
Code:
#include <iostream>
#include <conio.h>
using namespace std;

class mother {
  public:
    mother ()
      { cout << "mother: no parameters\n"; }
    mother (int a)
      { cout << "mother: int parameter\n"; }
};

class father {
  public:
    father ()
      { cout << "father: no parameters\n"; }

};

class daughter : public mother,public father {
  public:
    daughter (int a): mother (a)
      { cout << "daughter: int parameter\n\n"; }
};

class son : public mother,public father {
  public:
    son (int a) : mother (a),father()
      { cout << "son: int parameter\n\n"; }
};

int main () {
  daughter cynthia (0);
  son daniel(0);
  getch();
  return 0;

}

και εμφανιζει

mother: int parameter
father:no parameters
faughter:int parameter

mother: int parameter
father:no parameters
faughter:int parameter

αρα ο κωδικας δουλευει το ιδιο ειτε βαλεις το A() ειτε δεν το βαλεις καθολου


Title: Re: Απορίες στη C++
Post by: Matzika on September 03, 2009, 13:19:08 pm
όταν δημιουργουμε ένα αντικείμενο της βασικής κλάσης στη main τότε θα εκετελεστεί και η συνάρτηση αρχικών συνθηκών της κλάσης που την κληρονομεί?


Title: Re: Απορίες στη C++
Post by: kafeini on September 03, 2009, 13:30:15 pm
όταν δημιουργουμε ένα αντικείμενο της βασικής κλάσης στη main τότε θα εκετελεστεί και η συνάρτηση αρχικών συνθηκών της κλάσης που την κληρονομεί?
όχι,ισχύει μόνο το αντίστροφο! δηλ. αν δηλώσεις ένα αντικείμενο μιας παραγόμενης κλάσης, εκτελείται κ η συνάρτηση αρχ. συνθ. της βασικής!


Title: Re: Απορίες στη C++
Post by: kafeini on September 03, 2009, 13:33:10 pm
ας μ θυμίσει κάποιος αν οι μήτρες συναρτήσεων είναι εντός ύλης. θυμάμαι τα είχαμε πει στα τελευταία μαθηματα, αλλά πολύ συνοπτικά! επίσης έχω την ίδια απορία για τους insertos k extractors και για τα αρχεία. ειναι εντός ύλης?


Title: Re: Απορίες στη C++
Post by: Matzika on September 03, 2009, 13:45:43 pm
όταν δημιουργουμε ένα αντικείμενο της βασικής κλάσης στη main τότε θα εκετελεστεί και η συνάρτηση αρχικών συνθηκών της κλάσης που την κληρονομεί?
όχι,ισχύει μόνο το αντίστροφο! δηλ. αν δηλώσεις ένα αντικείμενο μιας παραγόμενης κλάσης, εκτελείται κ η συνάρτηση αρχ. συνθ. της βασικής!

τοτε μπορει να μου εξηγήσει κάποιος με ποιον τρόπο δουλευει στη εργασία Η??Δεν καταλαβαίνω πως εκτελούνται οι αρχικών συνθηκών των παραγόμενων κλάσεων!
επίσης στην ίδια εργασία γιατί στην κλάση  product έχει δύο συναρτήσεις για δεσμευση μνήμης κατα τη δημιουργία αντικειμένων? (Cregister-Pregister)


Title: Re: Απορίες στη C++
Post by: Merlin on September 03, 2009, 13:52:27 pm
ας μ θυμίσει κάποιος αν οι μήτρες συναρτήσεων είναι εντός ύλης. θυμάμαι τα είχαμε πει στα τελευταία μαθηματα, αλλά πολύ συνοπτικά! επίσης έχω την ίδια απορία για τους insertos k extractors και για τα αρχεία. ειναι εντός ύλης?

Στις σημειωσεις του Κορτεση παντως δεν εχει τιποτα για templates.Αυτες που μοιραζονται δλδ,δεν εννοουσα τις διαφανειες


Title: Re: Απορίες στη C++
Post by: termi on September 03, 2009, 13:57:00 pm
εχει στο ετημμυ σημειώσεις για templates! ξαναρωτάω πάλι για το Θέμα 3 του φεβρουαρίου 2009 κανείς? heeelppp?


Title: Re: Απορίες στη C++
Post by: Matzika on September 03, 2009, 14:03:08 pm
αν θες τη λύση την εχει σε ενα διπλανο τόπικ...τωρα αν δεν καταλαβαίνεις κατι συγκεκριμένο ρώτα...


Title: Re: Απορίες στη C++
Post by: Grecs on September 03, 2009, 14:05:13 pm
ας μ θυμίσει κάποιος αν οι μήτρες συναρτήσεων είναι εντός ύλης. θυμάμαι τα είχαμε πει στα τελευταία μαθηματα, αλλά πολύ συνοπτικά! επίσης έχω την ίδια απορία για τους insertos k extractors και για τα αρχεία. ειναι εντός ύλης?

Να σου πω την αληθεια μητρες δε χρειαζονται, γιατι το 1 θεμα που θα σου δωσει θα λυνεται  με μητρες αλλα και με virtual. Παντως εμενα με βολευε πιο πολυ με μητρες γιατι γραφεις λιγοτερα και ειναι πιο ξεκαθαρα.


Title: Re: Απορίες στη C++
Post by: Merlin on September 03, 2009, 15:14:38 pm
Manipulators,εισοδο/εξοδο σε αρχεια παιζει να βαλει?


Title: Re: Απορίες στη C++
Post by: termi on September 04, 2009, 08:37:10 am
θέμα 1ο φεβρουαρίου 2008... αν κάνουμε το θέμα με templates θα είναι η παραμετρική συνάρτηση point η οποία θα δηλώνεται κάπως έτσι :
template<class t1,class t2,class t3>
float point(t1 a,t2 b,t3 c)...

όμως δεν ξέρω μετα τι παίζει. Δηλαδή δημιουργώ 2 κλάσεις: μία για το Α μάθημα και μία για το Β μάθημα και τις κατάλληλες συναρτήσεις ώστε να μπορώ να τις καλώ μέσω της point για να υπολογίσω τον τελικό μου βαθμό??


Title: Re: Απορίες στη C++
Post by: aggalitsas on September 04, 2009, 08:47:52 am
θέμα 1ο φεβρουαρίου 2008... αν κάνουμε το θέμα με templates θα είναι η παραμετρική συνάρτηση point η οποία θα δηλώνεται κάπως έτσι :
template<class t1,class t2,class t3>
float point(t1 a,t2 b,t3 c)...

όμως δεν ξέρω μετα τι παίζει. Δηλαδή δημιουργώ 2 κλάσεις: μία για το Α μάθημα και μία για το Β μάθημα και τις κατάλληλες συναρτήσεις ώστε να μπορώ να τις καλώ μέσω της point για να υπολογίσω τον τελικό μου βαθμό??
κοιτα για τεμπλατες δεν ξερω εγω την ελυσα διαφορετικα
με βαση μια απο τις ασκησεις

1ο θεμα 08

Code:
#include <iostream.h>
#include <string.h>
#include <alloc.h>
#include <process.h>


class mathima{
public:virtual float getx()=0;
virtual float getm()=0;
virtual void printdata()=0;};


float point(mathima **p,int n)
{
int i;
float sum=0;
float sum1=0;cout<<"\nanalytika gia to mathima\n ";
for(i=0;i<n;i++){

p[i]->printdata();
sum+=(p[i]->getm())*(p[i]->getx());

}
sum1=sum/n;
return sum1;
}






class mathima_a:public mathima{
float grade,lab,x1,mesosoros;
char name[31];
public: mathima_a();
float getx();
 float getm();
void printdata();
};

mathima_a::mathima_a(){

cout<<"\ndwste bathmos eksetasis ";
cin>>grade;
cout<<"\n dwste bathmo ergastiriopu ";
cin>>lab;
cout<<"\n dwste suntelsti ";
cin>>x1;}

float mathima_a::getx(){
return x1;}

float mathima_a::getm(){
mesosoros=(lab+x1)/2;
return mesosoros;}

void mathima_a::printdata(){

cout<<"\n mesos oros a mathimatos "<<mesosoros;
}
//mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
class mathima_b:public mathima{
float grade,lab,x1,ergasia,mesosoros;
char name[31];
public: mathima_b();
float getx();
float getm();
void printdata();
};

mathima_b::mathima_b(){

cout<<"\ndwste bathmos eksetasis ";
cin>>grade;
cout<<"\n dwste bathmo ergastiriopu ";
cin>>lab;
cout<<"\n dwste bathmo ergasias ";
cin>>ergasia;
cout<<"\n dwste syntelesth baruthtas ";
cin>>x1;
}

float mathima_b::getx(){return x1;}

float mathima_b::getm(){
mesosoros=(0.5*grade+0.3*lab+0.2*ergasia);
return mesosoros;}

void mathima_b::printdata(){
cout<<"\n mesos oros mathimatos b "<<mesosoros;}
#define y 3
#define u 2
int main(){
char name[31];
cout<<"\n dwste onoma foitit ";
cin>>name;
mathima **p;
cout<<"\n mathimata typou a";
mathima_a na[y];
cout<<"\n mathimata typou b";
mathima_b nb[u];
int i;


 p=(mathima **)malloc((y+u)*sizeof(mathima *));

for(i=0;i<y;i++)
{p[i]=&na[i];}
for(i=y;i<y+u;i++)

{p[i]=&nb[i-y];}

cout<<"\n onoma foitit "<<name;
cout<<"\n bathmos ptyxiou "<<point(p,y+u);

cin>>i;}















πσ δεν ξερω αν αυτο ήθελε ο ποιητης


getm() epistrefei ton meso oro
getx() epistrefei ton syntelesth varythtas


1ο θεμα 09 ιδια λογική με το παραπάνω.
Code:
#include <iostream.h>
#include <string.h>
#include <alloc.h>
#include <process.h>
#include <conio.h>


class oikopeda{
public:
virtual float calcE()=0;
virtual float calcp()=0;
virtual void printd()=0;};
//--------------------------------
float get_area(oikopeda **c,int n)
{
int i;
float sum=0;
for(i=0;i<n;i++)
            {
    c[i]->printd();
    sum+=c[i]->calcp();
            }cout<<"\nsynolikos koinoxristos xwros!";
            
return sum;
}
//--------------------------------------
class ortho:public oikopeda{
float a;
float b,e,p;
public:
float calcE();
float calcp();
void printd();
ortho();
};

ortho::ortho(){
cout<<"\n dwste mhkos,platos";
cin>>a;
cin>>b;
}

float ortho::calcE(){
e=a*b;
return e;}

float ortho::calcp(){
calcE();
if(e<200)exit(1);
if(e<250){p=(e-200);}
if(e>=250){p=e*20/100;}
return p;
}

void ortho::printd(){calcp();
cout<<"\n emvadon "<<e;
cout<<"\n paraxorisi "<<p;
cout<<"\n----------------";}

class trigwno:public oikopeda
{float y,b,e,p;
public:
float calcE();
float calcp();
void printd();
trigwno();
};

trigwno::trigwno(){
cout<<"\ndwste bash k ypsos ";
cin>>b>>y;}

float trigwno::calcE(){
e=b*y/2;
if(e<200){exit(1);
return e;}
}

float trigwno::calcp(){
calcE();
if(e<250){p=(e-200);}
if(e>=250){p=e*20/100;}
return p;}

void trigwno::printd(){calcp();
cout<<"\n emvadon "<<e;
cout<<"\n paraxorisi "<<p;
cout<<"\n----------------";}

#define y 2
#define u 2
int main()
{int i;
    oikopeda **c;
    trigwno nt[y];
    ortho no[u];

c=(oikopeda **)malloc((y+u)*sizeof(oikopeda *));


        for(i=0;i<y;i++)
                {c[i]=&nt[i];}
        for(i=y;i<y+u;i++){
                c[i]=&no[i-u];}
cout<<"\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
cout<<get_area(c,y+u);
cout<<"\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
cin>>i;
}



Title: Re: Απορίες στη C++
Post by: sarovios on October 25, 2009, 16:15:49 pm
Η getchar δεν δουλευει στον dev? Τη θελω γιατι μου κλεινει το παραθυρο πριν δω τα αποτελεσματα.Υπαρχει κανενασ αλλος τροπος?


Title: Re: Απορίες στη C++
Post by: Αιμιλία η φτερωτή χελώνα on October 25, 2009, 16:18:41 pm
ναι
να εκτελεις το προγραμμα ξανα και ξανα οσο ισχυει μια συνθηκη
βαλε ενα do-while και απλα θα σου δειξει το αποτελεσμα και θα ξανατρεξει το προγραμμα


μπακαλιστικος τροπος ε? ;D


Title: Re: Απορίες στη C++
Post by: Αιμιλία η φτερωτή χελώνα on October 25, 2009, 16:21:20 pm
χρονια σου πολλα κιολας! :D ^carnaval^


Title: Re: Απορίες στη C++
Post by: sarovios on October 25, 2009, 16:22:08 pm
Ετσι το εκανα τλκ απλα θελω να μαθω πως γινεται και επισημα  ;D


Title: Re: Απορίες στη C++
Post by: sarovios on October 25, 2009, 16:24:33 pm
thx! Αντε κερναω...  ^beer^


Title: Re: Απορίες στη C++
Post by: sarovios on October 25, 2009, 16:59:11 pm
Βασικα γιατι οταν γραφω
do {
      ................................
........................
......................
}
while(a!=0);

μου βγαζει `a' undeclared (first use this function)
ενω το εχω δηλωσει (int a;) πιο πανω.


Title: Re: Απορίες στη C++
Post by: Αιμιλία η φτερωτή χελώνα on October 25, 2009, 17:00:27 pm
δηλωσε το int a=1;


Title: Re: Απορίες στη C++
Post by: vasso on October 26, 2009, 02:42:33 am
για να μην κλείνει το παράθυρο βάζεις μια εντολή


system("pause");
στο τέλος της main πριν το return


και στην αρχή του αρχείου έχεις κάνει
#include <stdlib.h>  (σε κάποιους compiler δεν χρειάζονται τα <> )


Title: Re: Απορίες στη C++
Post by: sarovios on November 07, 2009, 18:20:29 pm
Οταν χρησιμοποιω malloc  ο gcc μου βγαζει
C.cpp:124: error: ‘malloc’ was not declared in this scope
Δεν αλλαζει τπτ οταν βαζω την alloc.h. Βασικα μου βγαζει επισης error
 B.cpp:2:19: error: alloc.h: No such file or directory
Παιζει αυτο να οφειλεται σε δικο μου λαθος συντακτικο?
Ειμαι σχεδον σιγουρος οτι αυτο που εχω γραψει ειναι λαθος  :P


Title: Re: Απορίες στη C++
Post by: il capitano on November 07, 2009, 18:23:09 pm
Οταν χρησιμοποιω malloc  ο gcc μου βγαζει
C.cpp:124: error: ‘malloc’ was not declared in this scope
Δεν αλλαζει τπτ οταν βαζω την alloc.h. Βασικα μου βγαζει επισης error
 B.cpp:2:19: error: alloc.h: No such file or directory
Παιζει αυτο να οφειλεται σε δικο μου λαθος συντακτικο?
Ειμαι σχεδον σιγουρος οτι αυτο που εχω γραψει ειναι λαθος  :P
την stdlib.h την κανεις include?


Title: Re: Απορίες στη C++
Post by: sarovios on November 07, 2009, 18:29:16 pm
ναι με το g++ κανω compile.
ok με stdlib δουλεψε Thanks

και κατι αλλο.Στο συγκεκριμενο κομματι
if (R_serial == NULL) {
      cout << "Memory allocation error!.\n";
      return 1;
   }
μου βγαζει
test.cpp:42: error: returning a value from a constructor


Title: Re: Απορίες στη C++
Post by: Emfanever on November 07, 2009, 21:00:30 pm
λέει ότι ο constructor επιστρέφει τιμή.

Έχεις βάλει return σε constructor?


Title: Re: Απορίες στη C++
Post by: sarovios on November 07, 2009, 21:47:47 pm
τον κωδικα που εγραψα το ειχα σε constractor. Λυθηκε ομως το αντικατεστησα με exit(1)


Title: Re: Απορίες στη C++
Post by: il capitano on November 11, 2009, 19:57:22 pm
αν γραψω synarthsh(int a,float b,int c)
και synarthsh(int a,int b,float c)

θα καταλαβει ο compiler οτι αναφερομαι σε δυο διαφορετικες συναρτισεις η θα χτυπισει???


Title: Re: Απορίες στη C++
Post by: billakos on November 11, 2009, 19:58:36 pm
εγω πιστευω οτι θα δουλεψει.... ;)αλλα για πιο σιγουρα,emfanever τι λες?? :P


Title: Re: Απορίες στη C++
Post by: Emfanever on November 11, 2009, 20:10:45 pm
Το δέχεται, αλλά να προσέχεις τα ορίσματα να είναι καλά ορισμένα ως float ή int , αλλιώς μπορεί να βγάλει error


Title: deleted
Post by: BOBoMASTORAS on November 11, 2009, 22:02:31 pm
deleted


Title: Re: Απορίες στη C++
Post by: il capitano on November 22, 2009, 17:45:23 pm
Εχω μια συναρτηση και θελω να επιστρεφει ειτε ενα αντικειμενο τυπου A ειτε εναν αριθμο τυπου float, αναλογα με το αν ισχυει μια συνθηκη!

Γινεται να το κανω και αν ναι πως δηλωνω στην συναρτηση?


Title: Re: Απορίες στη C++
Post by: Αιμιλία η φτερωτή χελώνα on November 22, 2009, 17:53:13 pm
πηγαινε σε κανα ΚΕΠ αυριο και ρωτα


Title: Re: Απορίες στη C++
Post by: Merlin on November 22, 2009, 18:11:48 pm
Νομιζω γινεται με templates,αλλα μαλλον για να εχεις φτασει σε αυτο το σημειο μαλλον κατι δεν πηγε καλα.


Title: Re: Απορίες στη C++
Post by: il capitano on November 22, 2009, 18:28:53 pm
για βοηθα λιγο... τι γραφω?


Title: Re: Απορίες στη C++
Post by: Merlin on November 22, 2009, 18:38:58 pm
αν δεν σας εχει πει templates στην θεωρια αστο καλυτερα


Title: Re: Απορίες στη C++
Post by: Wanderer on November 22, 2009, 18:41:18 pm
Να σου προτείνω κάτι άλλο; Αν και δεν ξέρω τί ακριβώς κάνεις..

Κάνε τη συνάρτηση void και μέσω pointer σε αντικείμενο και pointer σε αριθμό τύπου float επέστρεψε ανάλογα με τη συνθήκη τις ζητούμενες τιμές στο πρόγραμμα.


Title: Re: Απορίες στη C++
Post by: Merlin on November 22, 2009, 18:50:30 pm
Αυτο που λες ειναι typecasting του επιστρεφομενου τυπου της συναρτησης σωστα?


Title: Re: Απορίες στη C++
Post by: il capitano on November 22, 2009, 18:58:35 pm
Θελω να κανω κατι τετοιο:

Code:
... ex(){
A a;
float b;
...
if(...) return a;
else return b;

αυτο που λεει ο wnaderer ειναι πολυ λογικο αλλα ο κορτεσης θελει η συναρτηση να επιστρεφει τιμη :(


Title: Re: Απορίες στη C++
Post by: Wanderer on November 22, 2009, 19:00:06 pm
Πάντως λίγο περίεργο αυτό που θες να κάνεις :P δεδομένου του ότι στη main μετά λογικά πρέπει κάπου να την περάσεις τη μεταβλητή που επιστρέφεις, επομένως για να ξέρει η main τί τύπου μεταβλητή να χρησιμοποιήσει για να αποθηκεύση την επιστροφή, δεν πρέπει να ελέγξει και αυτή αν ισχύει η συνθήκη;

Αυτο που λες ειναι typecasting του επιστρεφομενου τυπου της συναρτησης σωστα?
Εγώ; Όχι, απλά λέω ότι μπορεί να κάνει μια -όχι απαραίτητα void, ο,τιδήποτε- συνάρτηση int sinartisi(object *a, float *b) και ανάλογα με τη συνθήκη, να τροποποιούνται τα δεδομένα του object και της b, έτσι "επιστρέφονται" και οι δύο τύποι πίσω στο πρόγραμμα... και ανάλογα με την τιμή που επιστρέφεται από αυτή καθ'αυτή τη συνάρτηση, να ξέρει η main αν πρέπει να την ενδιαφέρει το αντικείμενο ή ο float αριθμός..


Θελω να κανω κατι τετοιο:

Code:
... ex(){
A a;
float b;
...
if(...) return a;
else return b;

αυτο που λεει ο wnaderer ειναι πολυ λογικο αλλα ο κορτεσης θελει η συναρτηση να επιστρεφει τιμη :(
Ποιά εργασία είναι;


Title: Re: Απορίες στη C++
Post by: Social_waste on November 22, 2009, 19:04:05 pm
νομιζω μπορεις να ορισεις στη main ενα void pointer
και μετα να βαλεις τη συναρτηση να επιστρεφει ενα
void pointer.

μεσα στη συναρτηση κανεις ενα void pointer και αναλογα με
τις συνθηκες τον κανεις malloc typecasting και πιπες και στο τελος
return σαν οτι απο τα δυο χρειαζεσαι.

απλα δεν εχω compiler μπροστα μου οποτε παιζει να μη δουλευει.


Title: Re: Απορίες στη C++
Post by: il capitano on November 22, 2009, 19:17:27 pm
θελω να κανω επικαλυψη του τελεστη [] τετοια ωστε το
Code:
a[i][j]
,οπου a αντικειμενο που περιεχει εναν πινακα 2 διαστασεων, να επιστρεφει την τιμη του πινακα στην θεση i,j.

Και σκευτομαι πρωτα να εκτελειται η
Code:
a[i]
σε μια μεταβλητη να αποθηκευω το i και μετα να επιστρεφει την κλαση a. μετα θα μενει το
Code:
a[j]
οποτε μολις βλεπει αυτο να επιστρεφει το στοιχειο i,j τυπου float (το i θα το εχω αποθηκευσει σε μια μεταβλητη μελος της κλασης οποτε θα μπορω να το χρησιμοποιησω!)


Title: Re: Απορίες στη C++
Post by: il capitano on December 05, 2009, 13:26:28 pm
Ξερει κανεις αν υπαρχει καποια συναρτηση η οποια να στρογυλοποιει προς τα πανω?

δηλαδη αν εχω ξερω γω 2,1 και επιστρεφει το 3


Title: Re: Απορίες στη C++
Post by: ^^DaRk_HunTeR on December 05, 2009, 14:29:41 pm
στρογγυλοποιει προς τα κατω
http://www.cplusplus.com/reference/clibrary/cmath/floor/

στρογγυλοποιει προς τα πανω
http://www.cplusplus.com/reference/clibrary/cmath/ceil/

εξου και τα ονοματα



Title: deleted
Post by: BOBoMASTORAS on December 05, 2009, 19:03:02 pm
deleted


Title: Re: Απορίες στη C++
Post by: ^^DaRk_HunTeR on December 06, 2009, 01:54:55 am
floor    Round down value (function)
floor of 2.3 is 2.0
floor of 3.8 is 3.0

ceil    Round up value (function)
ceil of 2.3 is 3.0
ceil of 3.8 is 4.0
----------------------------------------------

Round up translation= στρογγυλοποιηση

οι συναρτησεις κανουν στρογγυλοποιηση υπο την ευρεια εννοια τεσπα... αυτο ακριβως που ζηταει το παλικαρι.... (αν θελει να γινεται το 2.3 2 και οχι 3 τοτε ειναι αλλο πραγμα....ακου αποκοπη οχι επικολληση)


Title: Re: Απορίες στη C++
Post by: sarovios on December 06, 2009, 15:54:56 pm
Στην ασκηση που εκανε στην αιθουσα με το κυκλωμα απο την 7η εβδομαδα μπορει καποιος να μου εξηγησει τις παρακατω γραμμες κωδικα ?
Code:
n++;

  if(n==1)

    M=(circuit **)malloc(n*sizeof(circuit *));

  else

    M=(circuit **)realloc(M,n*sizeof(circuit *));

  M[n-1]=this;

Στον constructor της circuit_1 βρισκονται.


Title: Re: Απορίες στη C++
Post by: il capitano on December 06, 2009, 16:01:37 pm
Αν το n=1 τοτε δεν θα εχει δεσμευτει μνημη για τον πινακη M οποτε χρισημοποιει την malloc για να δεσμευση μνημη!

Αν τωρα το n>1 τοτε θα υπαρχει ο πινακας Μ και θα εχει μεγεθος n-1. Οποτε κανει realloc και αυξανει το μεγεθος του πινακα Μ κατα ενα!


Title: Re: Απορίες στη C++
Post by: sarovios on December 06, 2009, 16:06:13 pm
Και αυτο σε τι μας βοηθαει?
  M[n-1]=this;


Title: Re: Απορίες στη C++
Post by: il capitano on December 06, 2009, 16:10:42 pm
Και αυτο σε τι μας βοηθαει?
  M[n-1]=this;

Αποθηκευεις την circuit_1 στον πινακα Μ στην θεση n-1...


Title: Re: Απορίες στη C++
Post by: il capitano on December 17, 2009, 15:33:43 pm
Μπορουνε 2 κλασεις ανεξαρτητες μεταξυ τους να εχουν ενα κοινο στοιχειο, π.χ. εναν int n?

Αν ναι πως το δηλωνω;


Title: Re: Απορίες στη C++
Post by: Emfanever on December 17, 2009, 15:35:37 pm
γίνεται αν είναι καθολική μεταβλητή, αλλά δεν αρέσει στον κορτέση


Title: Re: Απορίες στη C++
Post by: il capitano on December 17, 2009, 15:37:16 pm
γίνεται αν είναι καθολική μεταβλητή, αλλά δεν αρέσει στον κορτέση

και τα δυο περασαν απ'το μυαλο μου :D

γι'αυτο ρωτησα μηπως ηπαρχει αλλος τροπος ;)


Title: Re: Απορίες στη C++
Post by: Καμένος on December 17, 2009, 15:38:36 pm
Να φτιάξεις μία βασική κλάση, να δηλώσεις static το στοιχείο και να κάνεις inherit τη βασική στις δύο που θές.


Title: Re: Απορίες στη C++
Post by: tsolias on December 19, 2009, 19:00:46 pm
Μπορεί κάποιος να μου απαντήσει τι ακριβώς κάνει η size_t που χρησιμοποιήθηκε στην άσκηση 3 εβδομάδα 7 με τους κύκλους;

void *operator new[](size_t size)
{
   void *p;
   cout << "Using overload new[].\n";
   if ((p = malloc(size)) == NULL)
   {
      cout << "allocation error";
      exit(1);
   }
   return p;
}


Title: Re: Απορίες στη C++
Post by: Καμένος on December 19, 2009, 20:01:30 pm
Είναι το μέγεθος του πίνακα για τον οποίο γίνεται δυναμική δέσμευση με τη malloc. Στη συγκεκριμένη περίπτωση που η malloc είναι μέσα σε if, γίνεται η δεύσμευση και ταυτόχρονα ελεέγχεται το κατα πόσο έγινε σωστά.


Title: Re: Απορίες στη C++
Post by: tsolias on December 19, 2009, 20:13:27 pm
Είναι το μέγεθος του πίνακα για τον οποίο γίνεται δυναμική δέσμευση με τη malloc. Στη συγκεκριμένη περίπτωση που η malloc είναι μέσα σε if, γίνεται η δεύσμευση και ταυτόχρονα ελεέγχεται το κατα πόσο έγινε σωστά.

Νομίζω ότι αυτό που λες είναι το size και όχι το size_t το οποίο όσο έψαξα είναι δεσμευμένη λέξη στις βιβλιοθήκες
alloc.h, stdio.h, stdlib.h, string.h κλπ.  Συγκεκριμένα στο help του borland λέει:

size_t(type)
Type used for memory object sizes and repeat counts.


Title: Re: Απορίες στη C++
Post by: Καμένος on December 19, 2009, 20:46:23 pm
Α ναι sorry.. κατάλαβα λάθος την ερώτηση..!


Title: Re: Απορίες στη C++
Post by: Anastacia on December 19, 2009, 21:00:23 pm
φυλλάδιο Κορτέσιου, σελίδα 92, 1η πρόταση.

Το size_t δεν είναι απλά δεσμευμένη λέξη, είναι τύπος δεδομένων, πράγμα που φαίνεται κ από το πρόγραμμα που παρέθεσες.
H μεταβλητή size είναι τύπου size_t.


Title: deleted
Post by: BOBoMASTORAS on January 10, 2010, 02:14:59 am
deleted


Title: Re: Απορίες στη C++
Post by: sweety on January 22, 2010, 23:06:38 pm
Nα ρωτησω κατι.. Στις εργασίες F και G που ζητούσε ανεξαρτησία από τον τύπο των αντικειμένων , ο 

Κορτέσης χρησιμοποίησε static και virtual συναρτήσεις. Με την ίδια λογική μπορούμε να λύσουμε και το 1ο

θέμα από Φεβρουάριο 2009 για παράδειγμα ή θα μπορούσαμε να το κάνουμε μόνο με virtual χωρις να

χρησιμοποιήσουμε τις static?



Title: Re: Απορίες στη C++
Post by: provataki on January 23, 2010, 15:55:21 pm
πιστευω πως πρεπει οπωσδηποτε να χρησιμοποιησεις static.
Θες ενα pointer διπλο, δηλωμενο ως static. και μια μεταβλητη
ωστε να μπορεις να χειριζεσαι τα διαφορετικα αντικειμενα(ή κλασεις)
και να εχεις επικοινωνια με τη main.
 


Title: Re: Απορίες στη C++
Post by: ak1s on January 23, 2010, 23:28:38 pm
μηπως καποιος τυχαινει να εχει τισ λυσεις

των θεματων 2009.Αν τις εχεις καποιος ας τισ ανεβασει ..

ευχαριστω προκαταβολικα..


Title: Re: Απορίες στη C++
Post by: mAn-_0lis on January 24, 2010, 15:27:01 pm
https://www.thmmy.gr/smf/index.php?topic=29810.msg644334#msg644334


Title: Re: Απορίες στη C++
Post by: censored on January 24, 2010, 17:33:28 pm
Να ρωτήσω κάτι και εγώ ρε παιδες.
σε αυττή εδώ την ασκηση

#include <iostream>
#include <conio.h>
using namespace std;

class Vehicle
{
   float weight, speed;
public:
   Vehicle(){};
   float getWeight(){ return weight;};
   float getSpeed() { return speed;} ;
   void setWeight(float weight_) { weight=weight_; };
   void setSpeed(float speed_) { speed=speed_; };
   void showData();
};

void Vehicle::showData()
{
   cout<<"Weight is " << getWeight() << endl;
   cout<<"Speed is " << getSpeed() << endl;
}

class Truck: public Vehicle
{
   char *name;
public:
    Truck(){};
    void setName(char *name_) { name=name_;};
   char *getName() {return name;};
   void showData();
};

void Truck::showData()
{
   Vehicle::showData();
   cout<<"Name is " << getName() << endl;

}

void newTruck(Truck *t, float a, float b, char *n)
{
     t->setWeight(a);
     t->setSpeed(b);
     t->setName(n);     
}

void main()
{
    Vehicle *ptr, veh;
   Truck *ptr2, tru[2];
//Σε αυτό το σημείο γίνεται η αρχικοποίηση που ζητάει?
   ptr = &veh;
   ptr->setWeight(5000);
   ptr->setSpeed(110);
   cout<<"Vehicle:\n";
   ptr->showData();



   ptr = & tru[0];
   ptr->setWeight(5000);
   ptr->setSpeed(110);

   cout<<"Truck 1:\n";
   ptr->showData();

   ((Truck *)ptr)-> setName("Volvo");
   
   cout<<"Truck 1 all:\n";
   ((Truck *)ptr)-> showData();
   
   // PROSOXI!!!!!
   // O pointer einai tupou Vehicle, opote to bima einai megalutero.
   //H timh tou weight exei skoupidia
   // An omws au3aname ton pointer ptr2, i timi 8a itan swsti

   ptr++;
   ptr->setWeight(6100);
   cout << "Weight of Truck tru[1] = "<< tru[1].getWeight() << endl << endl;

      
   ptr2 = & tru[1];   
   newTruck(ptr2, 6100, 95, "Scania");
   cout<<"Truck 2 all:\n";
   ptr2 -> showData();
   ptr2--;
   ptr2->setWeight(5800);
   cout << "Weight of Truck tru[0] = "<< tru[0].getWeight() << endl << endl;
   getch();   
}


μπορεί κάποιος να μου εξηγησει για ποιο λόγο γινονται ετσι τα εντονα σημεία (γιατι εχω ποιντερ)
και να εξηγησει περισσοτερο το προσοχη που αναφέρει


Title: Re: Απορίες στη C++
Post by: creat.ure on January 25, 2010, 16:36:36 pm
Στο 1ο θεμα του 2009 λέει: Να σχεδιαστεί και να υλοποιηθεί το λογισμικό στο οποίο ορίζεται η συνάρτηση get_area()  η οποία αφού υπολογίσει και εκτυπώσει το εμβαδόν κάθε οικοπέδου να επιστρέφει τη συνολική έκταση .... ανεξάρτητη του σχήματος των οικοπέδων.

Αφού θα υπολογίζει το εμβαδόν πώς θα είναι ανεξάρτητη?? εκτός και αν το εμβαδόν δεν το υπολογίζει τελικά εκεί και το πέρνει έτοιμο από τις υποκλάσεις
έχει κανείς καμιά ιδέα??


Title: Re: Απορίες στη C++
Post by: provataki on January 25, 2010, 16:37:37 pm
το 2ο εννοει....

virtual συναρτησεις επιστροφης εμβαδου σε μια γενικη κλαση και παει λεγοντας...


Title: Re: Απορίες στη C++
Post by: ΚΗΜΜΥ on January 25, 2010, 17:22:04 pm
αμα εχουμε πολλες συναρτησεις αρχικων συνθηκων και κανουμε αντικειμενα με new
καλουνται ολες?


Title: Re: Απορίες στη C++
Post by: provataki on January 25, 2010, 17:24:49 pm
τι εννοεις;
να εχεις πολλες επικαλυψεις της συναρτησης ΑΣ για μια κλαση
ή συναρτησεις αρχικων συνθηκων στις παραγωμενες ξερω γω....

Στην πρωτη περιπτωση καλειται μια αναλογα με τα ορισματα
στη δευτερη περιπτωση καλουνται ολες με βαση την ιεραρχια που περιγραφεται στις σημειωσεις...


Title: Re: Απορίες στη C++
Post by: ΚΗΜΜΥ on January 25, 2010, 17:27:34 pm
το πρωτο ελεγα
ας πουμε

class A{
  public:
  A()
 A(float x)
...


main()
 p=new A[5]



το δευτερο που λες τι ειναι?


Title: Re: Απορίες στη C++
Post by: il capitano on January 25, 2010, 17:28:54 pm
για το πρωτο θα τρεξει την Α()


το δευτερο λεει να εχεις

class A{A();...};

class B:public A {B();...};


Title: Re: Απορίες στη C++
Post by: provataki on January 25, 2010, 17:30:23 pm
γαμα το δευτερο. αναφερεται στην κληρονομικοτητα.
Σ'αυτο που γραφεις θα καλεσει τη συναρτηση χωρις ορισματα....


Title: Re: Απορίες στη C++
Post by: provataki on January 25, 2010, 17:31:14 pm
Βασικα, πως γινεται να τρεξεις τη συναρτηση με ορισματα χρησιμοποιωντας τη new?


Title: Re: Απορίες στη C++
Post by: il capitano on January 25, 2010, 17:31:51 pm
Βασικα, πως γινεται να τρεξεις τη συναρτηση με ορισματα χρησιμοποιωντας τη new?
νομιζω δεν γινεται :P


Title: Re: Απορίες στη C++
Post by: ΚΗΜΜΥ on January 25, 2010, 17:32:52 pm
ελα ντε?


ειπαμε...καναμε κεφαλι :P


Title: Re: Απορίες στη C++
Post by: provataki on January 25, 2010, 17:34:17 pm
Βασικα, πως γινεται να τρεξεις τη συναρτηση με ορισματα χρησιμοποιωντας τη new?

Δε γινεται γιατι την καλει αυτοματα.
Γινεται ομως με τη malloc και προσωρινο αντικειμενο!

Quote
class A{
    float b;
  public:
  A(){cout<<"xoris orismata!\n";}
 A(float x){b=x; cout<<"me orisma!\n";}
};



main(){
    int i;
    float x;
    A *p;
    p=(A*)malloc(2*sizeof(A));
    for (i=0;i<2;i++)
    {
        cout<<"dose x\n";
        cin>>x;
        A temp(x);
        p=temp;
    }
}


Title: Re: Απορίες στη C++
Post by: ΚΗΜΜΥ on January 25, 2010, 17:39:56 pm
ας πουμε στην βεκτορ....τοσες φορες που την καναμε...

η επικαλυψη τελεστων ποτε ειναι φιλικη και ποτε δεν ειναι?

πχ
float operator*(Vector v2);
   Vector operator+(Vector v2);
   Vector operator-(Vector v2);

   Vector operator*(float a);
   //friend Vector operator*(Vector, float); //enallaktiko ths proigoumenhs
   friend Vector operator*(float, Vector);
   Vector operator/(float a);
   friend Vector operator+(Vector, float);
   friend Vector operator+(float, Vector);
   friend Vector operator-(Vector, float);


Title: Re: Απορίες στη C++
Post by: provataki on January 25, 2010, 17:43:30 pm
friend Vector operator+(Vector, float);
friend Vector operator+(float, Vector);

αυτο σου εξασφαλιζει οτι οι πραξη που οριζεις με το + ειναι αντιμεταθετικη.
στην πρωτη ειναι Vector+float
η αλλη ειναι float+Vector


Title: Re: Απορίες στη C++
Post by: nasia!! on January 25, 2010, 17:46:51 pm
Nαι,αλλα στην τελικη η πρωτη δεν χρειαζεται καν να ειναι φιλικη προς την κλαση,θα μπορουσε να ειναι συναρτηση μελος-κατ εμε,εφοσον το ορισμα αριστερα απ'το "+" ειναι τυπου vector ;) ,το δευτερο που λες θελει να ειναι οπωσδηποτε friend συναρτηση.


Title: Re: Απορίες στη C++
Post by: Αιμιλία η φτερωτή χελώνα on January 25, 2010, 17:48:40 pm
φυσικα! 8))


Title: Re: Απορίες στη C++
Post by: ΚΗΜΜΥ on January 25, 2010, 17:51:25 pm
αυτο που ειπε η νασια ηθελα... θενκς!



Title: Re: Απορίες στη C++
Post by: provataki on January 25, 2010, 17:53:12 pm
νταξει το ιδιο πραγμα ειναι ωρε κοπέλια!  ;D


Title: Re: Απορίες στη C++
Post by: nasia!! on January 25, 2010, 17:55:03 pm
Nαι,αλλα αυτο δεν το ξερε πριν ο ΚΗΜΜΥ,ουτε και του το απαντησες  :-*


Title: Re: Απορίες στη C++
Post by: provataki on January 25, 2010, 17:57:16 pm
ε και με friend και οι 2 να ηταν σωστο ειναι;
γκεγκε;
 :D
ασε που ειναι πιο φανερο με friend εδω που τα λεμε....


Title: Re: Απορίες στη C++
Post by: il capitano on January 25, 2010, 17:59:17 pm
ασε που θα εχει και πολους friends (facebook φαση) και θα το παιζεις και καποιος ;D


Title: Re: Απορίες στη C++
Post by: provataki on January 25, 2010, 18:01:49 pm
 ;D

ελεος μλκ


Title: Re: Απορίες στη C++
Post by: Errikos on January 25, 2010, 18:32:54 pm
Έχει κάποιος μήπως να ανεβάσει την λύση της περσινής D άσκησης (κατά προτίμηση του κορτέση τη λύση :P) με τους operators.


Title: Re: Απορίες στη C++
Post by: sweety on January 25, 2010, 18:55:11 pm
ergasia D 2008


Title: Re: Απορίες στη C++
Post by: mAn-_0lis on January 25, 2010, 19:24:49 pm
Στην άσκηση 2 των επαναληπτικών ασκήσεων, η οποία αν δε κάνω λάθος είναι το 2ο περσινό θέμα Φεβρουαρίου, καταλαβαίνει κανείς τί νόημα έχει το k στην επικάλυψη της new?
Code:
void *section::operator new[](size_t size){
int k;
section *s;
k = size/sizeof(section);
s = (section *)malloc(size);
return s; }
Αναθέτεται στο k ο αριθμός των δειγμάτων όμως δε καταλαβαίνω τί νόημα έχει αυτό αφου το k είναι τοπική μεταβλητή και δε στέλνεται με κάποιο τρόπο κάπου αλλού.


Title: Re: Απορίες στη C++
Post by: provataki on January 25, 2010, 19:27:40 pm
κατα πασα πιθανοτητα ειναι λαθος.
ασε που κανει καποια δουλεια που θα επρεπε να κανει η επικαλυψη μεσα σε μια αρχικων συνθηκων..... ψιλοοτιναναι...


Title: Re: Απορίες στη C++
Post by: saddodancererer on January 25, 2010, 20:39:30 pm
παιδες μια βοηθεια... μπορει καποιος να μου εξηγησει την πληρη χρηση του operator  int() γιατι εχω μπερδευτει και βλεπω οτι πεφτει συνεχεια


Title: Re: Απορίες στη C++
Post by: sweety on January 25, 2010, 20:46:50 pm
please αν έχει κάποιος τη λύση απο πρώτο θέμα Φεβρουάριος 2009..


Title: Re: Απορίες στη C++
Post by: Ianna on January 25, 2010, 20:53:51 pm
παιδες μια βοηθεια... μπορει καποιος να μου εξηγησει την πληρη χρηση του operator  int() γιατι εχω μπερδευτει και βλεπω οτι πεφτει συνεχεια


Δες σημειώσεις Κορτέση σελ 101.


Title: Re: Απορίες στη C++
Post by: Αιμιλία η φτερωτή χελώνα on January 25, 2010, 21:13:29 pm
Στην λυση της G εργασιας συμφωνα με τον δοκτωρ Κορτεσιο,
που παιρνουνε τιμες τα CN και SN? :-\


Title: Re: Απορίες στη C++
Post by: saddodancererer on January 25, 2010, 21:33:10 pm
στις σημειωσεις για το operator int() λεει μονο για ενα αντικειμενο... αν ομως εχω οπως στο θεμα το προπερσινο νομιζω cout<<a+b; οπου και το α κ το β ειναι αντικειμενα διαφορετικης κλασης τοτε τα μετασχηματιζω και τα 2?  η μονο εκεινο που ανηκει στην κλαση του operator?


Title: Re: Απορίες στη C++
Post by: dimvam on January 25, 2010, 22:10:52 pm
στις σημειωσεις για το operator int() λεει μονο για ενα αντικειμενο... αν ομως εχω οπως στο θεμα το προπερσινο νομιζω cout<<a+b; οπου και το α κ το β ειναι αντικειμενα διαφορετικης κλασης τοτε τα μετασχηματιζω και τα 2?  η μονο εκεινο που ανηκει στην κλαση του operator?
Μα το ένα κληρονομεί το άλλο. Τα αντικείμενα τύπου Β παίρνουν, αφού δεν έχουν δικιά τους συνάρτηση επικάλυψης, αυτή από την κλάση Α (είναι public).


Title: Re: Απορίες στη C++
Post by: ΚΗΜΜΥ on January 26, 2010, 00:49:39 am
To atof τι ειπαμε σημαινει?


Title: Re: Απορίες στη C++
Post by: Ianna on January 26, 2010, 01:00:37 am
Mετατρέπει το string σε double ...κάτι τέτοιο έχω σημειωμένο από το μάθημα του Συμεωνίδη.


Title: Re: Απορίες στη C++
Post by: ΚΗΜΜΥ on January 26, 2010, 01:02:36 am
Thanks!! :)


Title: Re: Απορίες στη C++
Post by: vamos_89 on February 10, 2010, 20:50:30 pm
παιδια να ρωτησω κατι στις βαθμολογιες της c++ για τις εξετασεις πηρα 5,5 ομωσ δεν ειχα κανει εργασιες....τι σημαινει το 5.5???το εχω περασει δλδ το μαθημα η οχι??


Title: Re: Απορίες στη C++
Post by: Neal on February 10, 2010, 21:35:11 pm
Το 'χεις περάσει το μάθημα.


Title: Re: Απορίες στη C++
Post by: ΚΗΜΜΥ on February 11, 2010, 01:00:58 am
Το 'χεις περάσει το μάθημα.

αλλα εισαι και οφφ τοπικ :P


Title: Re: Απορίες στη C++
Post by: Neal on February 11, 2010, 09:34:54 am
Είχε απορία αν πέρασε στη C++, κι αυτό εντάσσεται στις απορίες :P


Title: Re: Απορίες στη C++
Post by: Αιμιλία η φτερωτή χελώνα on February 11, 2010, 16:27:01 pm
Είχε απορία αν πέρασε στη C++, κι αυτό εντάσσεται στις απορίες :P
;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D ;D
 ;D ;D ;D ;D ;D
 ;D ;D ;D ;D
 ;D ;D ;D
 ;D ;D
 ;D


Title: Re: Απορίες στη C++
Post by: Logan on September 01, 2010, 18:45:10 pm
Καλησπέρα παιδια, εχω μια απορία στις ασκησεις της 7ης εβδομαδας στην ασκηση Circuit. Στη δηλωση της κλασης circuit_1,
στο τελος της πριν την κλεισει με ; βαζει ενα cir_1; οπως φαινεται παρακατω. Το ιδιο κανει και στην circuit_2. Χωρις αυτο το προγραμμα εκτελειται λαθος, ενω παρατηρησα πως οτιδηποτε και αν βαλεις εκει, ενα οποιοδηποτε γραμμα και μετα κλεισεις με ; λειτουργει κανονικα. Γνωριζει κανενας τι παιζει γιατι δε βγαζω ακρη?
class circuit_1:public circuit{
    float power,resistance[3];
  public:
    circuit_1();
    float ret_power(float V);
    float ret_inten(float V);
}cir_1;


Title: Re: Απορίες στη C++
Post by: Καμένος on September 01, 2010, 18:48:03 pm
Δημιουργεί αυτόματα και ένα αντικείμενο της κλάσης με όνομα cir_1.


Title: Re: Απορίες στη C++
Post by: Logan on September 01, 2010, 18:51:32 pm
Ευχαριστω για την φοβερα γρηγορη απαντηση φιλε, να'σαι καλα!


Title: Re: Απορίες στη C++
Post by: avouzas on September 02, 2010, 12:41:31 pm
Στην ασκηση circuit της week 7 αμεσως μετα την δηλωση της βασικης κλασης circuit γινονται οι εξης δηλωσεις:

circuit **circuit::M;
int circuit::n;

στον κενο από κλασεις χωρο.Καταλαβαινω οτι σχετιζονται με τις static μεταβλητες  και το γεγονος οτι οι τελευταιες ειναι protected.Μπορει καποιος να εξηγησει τον ρολο των παραπανω δηλωσεων?

Υ.Γ. εννοειται οτι το προγραμμα δεν μεταφραζεται χωρις αυτες.....

Ευχαριστω εκ των προτερων...


Title: Re: Απορίες στη C++
Post by: Καμένος on September 02, 2010, 13:23:47 pm
Όταν κάποιες μεταβλητές είναι static σημαίνει ότι έχουν τις ίδιες τιμές για όλα τα αντικέιμενα. Γι αυτό πρέπει να αρχικοποιηθούν (ή στη περίπτωσή μας να δηλωθούν) κάπου εξωτερικά της κλάσης.

"An important detail to keep in mind when debugging or implementing a program using a static class member is that you cannot initialize the static class member inside of the class. In fact, if you decide to put your code in a header file, you cannot even initialize the static variable inside of the header file; do it in a .cpp file instead. Moreover, you are required to initialize the static class member or it will not be in scope. (The syntax is a bit weird: "type class_name::static_variable = value".)"

ή καλύτερα:

"Because static member variables are not part of the individual objects, you must explicitly define the static member if you want to initialize it to a non-zero value. "


Title: Re: Απορίες στη C++
Post by: adianohtos on September 02, 2010, 20:00:45 pm
Θεματα Φεβρουαριου 2009 3ο
στην borland αν το κανω run δινει
4
10
10
4
5
Μπορει καποιος να εξηγησει γιατι? Γιατι εγω βγαζω οτι να ναι!!  :-\ :(


Title: Re: Απορίες στη C++
Post by: avouzas on September 02, 2010, 21:48:41 pm
Αρχικα δημιουργει ενα αντικειμενο κλασης Β.Επειδη εχει ορισει συναρτηση αρχικοποιησης η οποια
δεχεται ενα ορισμα το 4 περναει στο m, αρα το n υπολογιζεται 4 γιατι οι static
μεταβλητες παιρνουν αρχικη τιμη μηδεν αυτοματα(κ=0).Μετα τρεχει την fun(2) και προκυπτει
το κ=4(έξοδος). Το κ διατηρει την τιμη του γιατι ειναι static καθ'όλη την διαρκεια του προγραμματος..
εκτελειται η b.bfun() η οποια επιστρεφει το n+A::fun(n)=4+(4+2)=10(εξοδος).
στο α+β γινεται χρηση της operator int() η οποια χρησιμοποιειται οταν
το αντικειμενο στο οποιο αναφερεται αλλα και στα ΠΑΡΑΓΩΓΑ αυτου λαμβανουν μερος σε
αριθμητικες πραξεις(δες προ τελευταια σελιδα απο σημειωσεις)αρα προκυπτει
 A::fun(3)+A::fun(3)=5+5=10(εξοδος).Στο τελος εκτυπωνει το n=4(δεν αλλαξε τιμη) και το
 κ=5(αλλαξε αρκετες τιμες κατα το τρεξιμο)...


Title: Re: Απορίες στη C++
Post by: cindy on September 02, 2010, 22:25:27 pm
μπορεί να μου πει κάποιος στην άσκηση με τη circuit ο δισδιάστατος πίνακας Μ τι περιλλαμβάνει;;που χρησιμεύει;; :???:


Title: Re: Απορίες στη C++
Post by: adianohtos on September 02, 2010, 23:08:54 pm
Thanks ρε, δεν ειχα βαλει αρχικη τιμη στην static το 0!!


Title: Re: Απορίες στη C++
Post by: galexang on October 06, 2010, 17:02:55 pm
mporei kapoios na parakolouthisei C++ an dn exei parakolouthisei C.aksizei ton kopo?


Title: Re: Απορίες στη C++
Post by: Μάρω on October 06, 2010, 17:06:56 pm
mporei kapoios na parakolouthisei C++ an dn exei parakolouthisei C.aksizei ton kopo?


Νομίζω πως ναι. Μπορεί στο μάθημα να θεωρούνται κάποια έως αρκετά πράγματα ψιλοδεδομένα,
αλλά αν πάρεις από την αρχή το βιβλίο "Μάθετε τη C++ από το μηδέν" δε θα 'χεις πρόβλημα.  ;)

Αν ξέρεις C είναι μια έξτρα βοήθεια,
αλλά κ από την C++ να ξεκινήσεις, μετά θα περάσεις πολύ ευκολότερα τη C. 


Title: Re: Απορίες στη C++
Post by: i_am_batman on October 08, 2010, 02:23:29 am
mporei kapoios na parakolouthisei C++ an dn exei parakolouthisei C.aksizei ton kopo?


Βασικά πρέπει να μπορείς να γράφεις απλούς αλγορίθμους (χωρίς κάποια ιδιαίτερη τεχνική) που να λύνουν προβλήματα. Δηλαδή να ξέρεις να χειρίζεσαι απλές λούπες for, while,  κ.τ.λ. και pointers, γιατί πλέον το αντικείμενο σου θα είναι τεχνικές και όχι τα βασικά. 


Title: Re: Απορίες στη C++
Post by: Grecs on October 08, 2010, 05:12:52 am

mporei kapoios na parakolouthisei C++ an dn exei parakolouthisei C.aksizei ton kopo?

Εμενα παντως με βολεψε πιο πολυ να ξεκινησω απο την c++ μην εχοντας ιδεα απο προγραμματισμο. Βεβαια καλο θα ηταν να βρεις ενα συναδερφο να σου εξηγησει 2-3 πραγματα αν δε ξερεις απο προγραμματισμο. Αν ξερεις απο προγραμματισμο και δε ξερεις απλα C λιγο αν κοιτας στο βιβλιο οτι σου φενεται αγνωστο θα την παλεψεις.



Title: Re: Απορίες στη C++
Post by: epi on October 28, 2010, 23:14:24 pm
μηπως ξερει καποιος πως μπορώ να δημιουργησω εναν πινακα  100 θεσεων που καθε θεση θα περιεχει ενα
char χ [10] ????


Title: Re: Απορίες στη C++
Post by: Καμένος on October 28, 2010, 23:16:40 pm
char a[100][10]


Title: Re: Απορίες στη C++
Post by: rspappas on October 28, 2010, 23:20:23 pm
char a[100][10]

βασικα... char a[99][10];


Title: Re: Απορίες στη C++
Post by: Καμένος on October 28, 2010, 23:21:57 pm
οχι. char a[100][10].

Και στην προσπέλαση πάει απο a[0][0] μέχρι a[99][9] ;)


Title: Re: Απορίες στη C++
Post by: epi on October 28, 2010, 23:38:28 pm
οχι. char a[100][10].

Και στην προσπέλαση πάει απο a[0][0] μέχρι a[99][9] ;)

ευχαριστω...

και οταν θελω να διαβασω το πρωτο char που ειναι πχ μητσος ...... τι κανω????


Title: Re: Απορίες στη C++
Post by: Matzika on October 28, 2010, 23:45:26 pm
οχι. char a[100][10].

Και στην προσπέλαση πάει απο a[0][0] μέχρι a[99][9] ;)

ευχαριστω...

και οταν θελω να διαβασω το πρωτο char που ειναι πχ μητσος ...... τι κανω????

θα πάρεις το στοιχειο α(0)(i) και σε ένα for θα διαβάζεις τους χαρακτήρες του ονόματος...


Title: Re: Απορίες στη C++
Post by: epi on October 28, 2010, 23:48:35 pm
θελω να πω ισχύει α [1] =μητσος ή καθε γραμμα αποθηκευεται σε διαφορετικη θεση οπότε α [1][1]=μ α [1][2]=η κτλ......


Title: Re: Απορίες στη C++
Post by: Matzika on October 28, 2010, 23:49:42 pm

to deytero


Title: Re: Απορίες στη C++
Post by: inco on November 11, 2010, 21:43:42 pm
διαβάζω από ένα αρχείο input.txt το οποίο θα είναι κάπως έτσι:
add 1,4
delete 2,4
..........
........
Πως γίνεται να σταματήσω στο κενό,να πάρω το string, μετά να συνεχίσει να πάρω τον ακέραιο που είναι πριν το κόμμα και να πάρω και τον ακέραιο που βρίσκεται μετά το κóμμα??


Title: deleted
Post by: BOBoMASTORAS on November 12, 2010, 01:16:06 am
deleted


Title: Re: Απορίες στη C++
Post by: The Stig on November 20, 2010, 16:16:42 pm
Μπορεί ένας constructor να μην κάνει τίποτα δηλαδή να έχει τη μορφή: class::class(...) { } ??


Title: Re: Απορίες στη C++
Post by: il capitano on November 20, 2010, 16:18:38 pm
Αμε!


Title: Re: Απορίες στη C++
Post by: ΚΗΜΜΥ on November 20, 2010, 16:21:53 pm
Και απ' οτι μαθαινουμε, ειναι καλη τεχνικη να βαζουμε παντα εναν αδειο constructor!


Title: Re: Απορίες στη C++
Post by: The Stig on November 20, 2010, 16:25:58 pm
Quote
Και απ' οτι μαθαινουμε, ειναι καλη τεχνικη να βαζουμε παντα εναν αδειο constructor!
Αλήθεια ή σαρκασμός?


Title: Re: Απορίες στη C++
Post by: ΚΗΜΜΥ on November 20, 2010, 16:35:41 pm
Aληθεια! Τωρα μπορει να φαινεται (και να ειναι) αχρηστο, αλλα ειναι μια μεθοδος που χρησιμοποιειται..


Title: Re: Απορίες στη C++
Post by: πρεζ on November 20, 2010, 17:15:21 pm
Και απ' οτι μαθαινουμε, ειναι καλη τεχνικη να βαζουμε παντα εναν αδειο constructor!

νομιζω εχει σχεση με τις default ρυθμισεις της C για τον constructor
αν δεν δηλωσεις δηλαδη κατι εσυ χρησιμοποιει τον default για καθε κλαση


Title: deleted
Post by: BOBoMASTORAS on November 20, 2010, 19:42:57 pm
deleted


Title: Re: Απορίες στη C++
Post by: giannhs12 on November 25, 2010, 22:57:58 pm
ΜΗΠΩΣ ΜΠΟΡΕΙ ΝΑ ΜΟΥ ΠΕΙ ΚΑΝΕΙΣ ΠΩΣ ΛΥΝΕΤΑΙ Η ΠΑΡΑΚΑΤΩ ΑΣΚΗΣΗ????
ΕΚΦΩΝΗΣΗ
Η εκθετικη συναρτηση ορίζεται απ τη σχεση ΕΧP(X)=1+X+(X^2)/2!+(X^3)/3!+.....+(X^i)/i!+.......
Xρησιμοποιώντας τη παραπανω σειρα να υπολογισετε το exp(x) εως οτου η τιμη του όρου abs(χ^i/i!) να γινει μικροτερη η ιση απο κάποια επιθυμητη ακριβεια...............
ευχαριστω


Title: Re: Απορίες στη C++
Post by: Doctor_Doctor on November 25, 2010, 23:13:29 pm
Αν δεν κάνω λάθος είναι απλό. Θέλεις τη συνάρτηση σου να πέρνει ως όρισμα μια μεταβλητή x (να δίνεται από το χρήστη τέλος πάντων).
Μέσα στη συνάρτηση ένα for που θα αυξάνει το i και θα αποθηκεύει σε μια προσωρινή μεταβλητή (με αρχική τιμή 1)
αυτό: temp+=(x^i)/i
Τέλος, ένα if που θα ελέγχει το abs < e και τότε θα κάνει break το for και θα τερματίζει η συνάρτηση.


Title: Re: Απορίες στη C++
Post by: giannhs12 on November 25, 2010, 23:22:02 pm
επιθυμητη ακριβεια τ ειναι????


Title: Re: Απορίες στη C++
Post by: Doctor_Doctor on November 25, 2010, 23:43:03 pm
Ένας πολύ μικρός αριθμός που τον ορίζεις ως το μέγιστο επιτρεπτό σφάλμα.
Αν βάλεις μεγάλο αριθμό, το πρόγραμμα θα τελειώσει σύντομα και το αποτέλεσμα θα είναι χοντροκομμένο.

Αν βάλεις πολύ μικρό, τότε θα τρέχει για κάμποση ώρα και θα σου βγάλει αποτέλεσμα κοντά στο πραγματικό.

Τυπικές τιμές είναι κάτι σε e = 0.01.


Title: Re: Απορίες στη C++
Post by: rspappas on November 26, 2010, 01:54:41 am
προσοχη, στον παρονομαστη εχει εκθετικο.

Code:
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    float x, temp, result, e;
    int n;
    n=0;
    temp=0;
    result=1;
    cout<<"X: ";
    cin>>x;
    cout<<"e: ";
    cin>>e;
    for(;;)
    {
        n++;
        for(int i=0; i<n; i++)
        {
            if (i!=0)
                temp=temp/(i+1);
            else
                temp=pow(x,n);
        }
        result+=temp;
        if (abs(temp)>0&&temp<e)
            break;
    }
    cout<<"exp("<<x<<")="<<result;
    return 0;
}

εδιτ:
αν θελεις μεγαλυτερη ακριβεια στο αποτελεσμα σου, αντικατεστησε το float με long double, και βαλε στην αρχη της main την εξης εντολη:
cout.precision(16);
η οποια βασικα λεει στην cout να εκτυπωνει μεχρι και 16 δεκαδικα ψηφια.


Title: Re: Απορίες στη C++
Post by: giannhs12 on November 28, 2010, 22:30:12 pm
ΝΑ ΣΑΙ ΚΑΛΑ ;)


Title: Re: Απορίες στη C++
Post by: rspappas on November 28, 2010, 22:34:32 pm
για τι το ηθελες?


Title: Re: Απορίες στη C++
Post by: Sage on January 25, 2011, 19:54:25 pm
Εάν μία μεταβλητή την καθορίσουμε static μέσα στα private μιας κλάσης..
μπορούμε να την καλέσουμε (και θα έχει ακόμα την ίδια τιμή?) στη main?????    (...και το αντίστροφο?)
 :???:


Title: Re: Απορίες στη C++
Post by: Emfanever on January 25, 2011, 21:09:52 pm
Εάν μία μεταβλητή την καθορίσουμε static μέσα στα private μιας κλάσης..
μπορούμε να την καλέσουμε (και θα έχει ακόμα την ίδια τιμή?) στη main?????    (...και το αντίστροφο?)
 :???:


Αν η main είναι στην ίδια κλάση με τη μεταβλητή μπορείς. Τι εννοείς θα έχει ακόμα την ίδια τιμή?


Title: Re: Απορίες στη C++
Post by: Sage on January 25, 2011, 23:55:24 pm
Εάν μία μεταβλητή την καθορίσουμε static μέσα στα private μιας κλάσης..
μπορούμε να την καλέσουμε (και θα έχει ακόμα την ίδια τιμή?) στη main?????    (...και το αντίστροφο?)
 :???:


Αν η main είναι στην ίδια κλάση με τη μεταβλητή μπορείς. Τι εννοείς θα έχει ακόμα την ίδια τιμή?
Πως γίνεται αυτό..?? Δλδ να είναι η main στην ίδια κλάση με την μεταβλητή..?
(το "και θα έχει ακόμα την ίδια τιμή?" παραβλεψέ το )


Title: Re: Απορίες στη C++
Post by: Emfanever on January 26, 2011, 02:00:45 am
Εάν μία μεταβλητή την καθορίσουμε static μέσα στα private μιας κλάσης..
μπορούμε να την καλέσουμε (και θα έχει ακόμα την ίδια τιμή?) στη main?????    (...και το αντίστροφο?)
 :???:


Αν η main είναι στην ίδια κλάση με τη μεταβλητή μπορείς. Τι εννοείς θα έχει ακόμα την ίδια τιμή?
Πως γίνεται αυτό..?? Δλδ να είναι η main στην ίδια κλάση με την μεταβλητή..?
(το "και θα έχει ακόμα την ίδια τιμή?" παραβλεψέ το )

Άκυρο, μπερδεύτηκα από τη java.


Απευθείας προσπέλαση δε μπορείς να κάνεις μέσα στη main,  αλλά μπορείς να φτιάξεις μια  public συνάρτηση μέσα στην κλάση σου που θα κάνει return την private μεταβλητή. Αυτή τη συνάρτηση θα μπορείς να την καλέσεις στη main


Title: Re: Απορίες στη C++
Post by: Tracy_McGrady on January 26, 2011, 03:30:27 am
Εάν μία μεταβλητή την καθορίσουμε static μέσα στα private μιας κλάσης..
μπορούμε να την καλέσουμε (και θα έχει ακόμα την ίδια τιμή?) στη main?????    (...και το αντίστροφο?)
 :???:


Αν η main είναι στην ίδια κλάση με τη μεταβλητή μπορείς. Τι εννοείς θα έχει ακόμα την ίδια τιμή?
Πως γίνεται αυτό..?? Δλδ να είναι η main στην ίδια κλάση με την μεταβλητή..?
(το "και θα έχει ακόμα την ίδια τιμή?" παραβλεψέ το )

Άκυρο, μπερδεύτηκα από τη java.


Απευθείας προσπέλαση δε μπορείς να κάνεις μέσα στη main,  αλλά μπορείς να φτιάξεις μια  public συνάρτηση μέσα στην κλάση σου που θα κάνει return την private μεταβλητή. Αυτή τη συνάρτηση θα μπορείς να την καλέσεις στη main
Μια static συνάρτηση που θα είναι μέλος της κλάσης θα κάνεις ώστε να επιστρέφει static μεταβλητή!!(Το έθεσα πιο σωστά για να βοηθήσω!  :) )


Title: Re: Απορίες στη C++
Post by: rspappas on January 26, 2011, 15:12:08 pm
και για να απαντησουμε αμεσα το ερωτημα: οχι, δεν μπορεις να καλεσεις αμεσα ουτε static ουτε οποιαδηποτε αλλη μεταβλητη απο το private μερος της κλασης στην main.


Title: Re: Απορίες στη C++
Post by: sakaflias7 on January 28, 2011, 19:48:32 pm
sto 3o θεμα του 2009 τι εκτυπωνει εχεις κανεις την εξηγηση και τη λυση?


Title: Re: Απορίες στη C++
Post by: cindy on January 30, 2011, 18:07:56 pm
παιδιά,ποια είναι η διαφορά ανάμεσα στην εργασία f και την g;;
δηλαδή,και στις 2 ζητάει "το λογισμικό να ειναι ανεξάρτητο από....."
γιατί στην g χρησιμοποιούμε το δισδιάστατο πίνακα και εκέινες τις συναρτήσεις στη source ενώ στην f όχι..;;
please..όποιος μπορί ας απαντήσει...να ξέρς τι πρέπει να κάνω στις εξετάσεις....


Title: Re: Απορίες στη C++
Post by: τσαι-borg on January 30, 2011, 18:54:58 pm
στην f ζηταει ανεξαρτησια συναρτησης και στη g ανεξαρτησια λογισμικου γενικοτερα.


Title: Re: Απορίες στη C++
Post by: cindy on January 30, 2011, 19:02:09 pm
στην f ζηταει ανεξαρτησια συναρτησης και στη g ανεξαρτησια λογισμικου γενικοτερα.

ευχαριστώ!!


Title: Re: Απορίες στη C++
Post by: leon-SPT on January 30, 2011, 19:18:50 pm
#include <iostream.h>

class A{
  protected:
    static int k;
  public:
    static int fun(int n){k=n+2;return k;}
    operator int(){return A::fun(3);}
};

int A::k;
class B:public A{
    int n;
  public:
    int bfun(){return n+A::fun(n);}
    B(int m){n=m+k;}
    void out(){cout<<n<<"\n"<<k<<"\n";}
};

void main()
{B b(4);
 A a;
 cout<<A::fun(2)<<"\n";
 cout<<b.bfun()<<"\n";
 cout<<a+b<<"\n";
 b.out();
}


Παιδιά τρέξτε το λίγο και θα δείτε τι σας βγάζει. 4   10    10    4     5
ΠΩΣ τα βγάζει αυτά.. Αν μπορεί κάποιος να εξηγήσει κάθε εμφάνιση θα με βοηθούσε πολύ.
Εκεί με τα statci που καλεί την b.bfun()... χαος.. Ο () οπερατορ που μπαίνει???
ΤΗΧ


Title: Re: Απορίες στη C++
Post by: varvoutis on January 31, 2011, 00:24:26 am
Λοιπον, προσπαθω να κανω την υλοποιηση του 2ου θεματος του Σεπτεμβρη που μας περασε και κολλαω στο εξης...

Η εκφωνηση λεει να γινονται καποιες ενεργειες κατα τη δημιουργια του αντικειμενου... Ολα ωραια και καλα μεχρις εδω...

Οταν ομως χρησιμοποιω καποια temporary αντικειμενα στην υπερφορτωση των τελεστων, τοτε δε θα τρεξει και η constructor? Και μου τα γαμαει ολα!

Πώς μπορω να ξεπερασω αυτο το πράμα;  :-\ :-\

HALP;


Title: Re: Απορίες στη C++
Post by: pol on January 31, 2011, 11:11:12 am
Re paidia kai ego exo kolisei stin erotisi tou leon-SPT apo ta themata tou fevrouariou 2009 mporei kaneis na voithisei???????


Title: Re: Απορίες στη C++
Post by: pol on January 31, 2011, 11:29:36 am
Telika to vrika giati ta ektiponei file mou leon-SPT alla den ksero an kanei kati i grami   int A::k;


stin arxi ektiponei 4 apo tin sinartisi fun gia n=2 ara 2+2=4
meta 10 giati kata tin dimiourgia tou antikimenou B(int m){n=m+k;} edose m=4 kai to k=0 giati exei dilothei san static...ara otan ekteleite i bfun ekteleite exoume 4+fun(4) diladi 4+6=10

meta pali 10 giati gia na ginei i praxi a+b ekteleite h:    operator int(){return A::fun(3);
giati prepei na metasximatistoun ta antikeimena se idio tipo (int edo) kai i sinartisi auti einai melos kai tis klaseis B afou h A einai i vasiki tis ara exeis 5+5


e meta ektiponei tis times tou n kai tou k


Title: Re: Απορίες στη C++
Post by: lindou on January 31, 2011, 12:06:52 pm
Telika to vrika giati ta ektiponei file mou leon-SPT alla den ksero an kanei kati i grami   int A::k;

η γραμμη αυτη αρχικοποιει την static(k=0)


Title: Re: Απορίες στη C++
Post by: sofigami on January 31, 2011, 13:31:06 pm
Να ρωτήσω κάτι. Έχουμε και τα αρχεία, ios και manipulators;;


Title: Re: Απορίες στη C++
Post by: nikitas350 on January 31, 2011, 13:39:44 pm
Να ρωτήσω κάτι. Έχουμε και τα αρχεία, ios και manipulators;;

Νομίζω ότι ήμουν ξεκάθαρος  :D  :D


Title: Re: Απορίες στη C++
Post by: epi on January 31, 2011, 13:42:57 pm
Να ρωτήσω κάτι. Έχουμε και τα αρχεία, ios και manipulators;;

για manipulators και ios δεν ξέρω... τα αρχεια ειπαν οτι θεωρητικα ειναι μεσα αλλα πολυ δυσκολα θα μπει κατι γιατι δεν εχουν γινει καν στο μαθημα των ασκησεων... απλως πρεπει να ξερουμε τα πολυ βασικα πχ προσπελαση αντιγραφη.... αλλα παλι να βάλουν κατι χωρις να εχει γινει ουτε αναφορα στο μαθημα των ασκήσεων μου φαινεται τραβηγμένο.....


Title: Re: Απορίες στη C++
Post by: sofigami on January 31, 2011, 14:16:15 pm
nikitas350 δε σε εμπιστεύομαι. Βασικά πες ξανά τι ξέρεις. Να τα διαβάσω;


Title: Re: Απορίες στη C++
Post by: nikitas350 on January 31, 2011, 18:34:14 pm
nikitas350 δε σε εμπιστεύομαι. Βασικά πες ξανά τι ξέρεις. Να τα διαβάσω;

what happens in vegas stays in vegas :P :P


Title: Re: Απορίες στη C++
Post by: pap-x on January 31, 2011, 18:43:45 pm

meta 10 giati kata tin dimiourgia tou antikimenou B(int m){n=m+k;} edose m=4 kai to k=0 giati exei dilothei san static...



Αφου το k στην προηγούμενη εντολή (cout<<A::fun(2)<<"\n"; ) έχει γίνει 4, πώς γίνεται 0 πάλι?


Title: Re: Απορίες στη C++
Post by: pol on January 31, 2011, 20:48:35 pm
kserei kaneis giati stin ergasia C oi synartiseis calk_tax giati den einai static????afou tis kali meta poio meta aneksartita apo kapoio antikimeno....


Title: Re: Απορίες στη C++
Post by: pol on January 31, 2011, 20:57:25 pm

meta 10 giati kata tin dimiourgia tou antikimenou B(int m){n=m+k;} edose m=4 kai to k=0 giati exei dilothei san static...



Αφου το k στην προηγούμενη εντολή (cout<<A::fun(2)<<"\n"; ) έχει γίνει 4, πώς γίνεται 0 πάλι?
sorry alla den katalava ti ennoeis....to k den ksanaginetai 0


Title: deleted
Post by: BOBoMASTORAS on January 31, 2011, 21:01:53 pm
deleted


Title: Re: Απορίες στη C++
Post by: pap-x on January 31, 2011, 21:07:34 pm

meta 10 giati kata tin dimiourgia tou antikimenou B(int m){n=m+k;} edose m=4 kai to k=0 giati exei dilothei san static...



Αφου το k στην προηγούμενη εντολή (cout<<A::fun(2)<<"\n"; ) έχει γίνει 4, πώς γίνεται 0 πάλι?
sorry alla den katalava ti ennoeis....to k den ksanaginetai 0

Sorry, βλακεία μου. Το αντικείμενο  b δημιουργείται πριν τρέξει η εντολή "cout<<A::fun(2)<<"\n"; "...


Title: Re: Απορίες στη C++
Post by: varvoutis on January 31, 2011, 21:07:56 pm
Λοιπον, προσπαθω να κανω την υλοποιηση του 2ου θεματος του Σεπτεμβρη που μας περασε και κολλαω στο εξης...

Η εκφωνηση λεει να γινονται καποιες ενεργειες κατα τη δημιουργια του αντικειμενου... Ολα ωραια και καλα μεχρις εδω...

Οταν ομως χρησιμοποιω καποια temporary αντικειμενα στην υπερφορτωση των τελεστων, τοτε δε θα τρεξει και η constructor? Και μου τα γαμαει ολα!

Πώς μπορω να ξεπερασω αυτο το πράμα;  :-\ :-\

HALP;

ρίξε ένα παράδειγμα κώδικα.

Δε μπορώ να καταλάβω τι εννοείς και βαριέμαι να βρω το συγκεκριμένο θέμα για να διαβάσω εκφώνηση

το παραδειγμα εδω: https://www.thmmy.gr/smf/index.php?topic=1908.msg776509#msg776509

στις επικαλυψεις που κανω και μεσα στη main ομως, χρειαζομαι καποια temporary αντικειμενα... ΣΤα οποια δε θελω να τρεχει constructor που μου ζηταει η εκφωνηση να κανω...

Εγω βρηκα ενα τσαπατσουλικο τροπο. Φτειαχνω και μια δευτερη constructor, και χρησιμοποιω αυτην οποτε θελω...

Κατι καλυτερο;  :-\


Title: deleted
Post by: BOBoMASTORAS on January 31, 2011, 21:21:32 pm
deleted


Title: Re: Απορίες στη C++
Post by: inspired on January 31, 2011, 21:58:39 pm
απτην ασκηση G

Code:
class source{
7 protected:
8 char cid[31];
9 static source **S;
10 static int SN;
11 static source **C;
12 static int CN;
13 static int *ar;
14
15 public:
16 source(char *c);
17 source();
18 virtual float get_power()=0;
19 virtual int get_state()=0;
20 virtual char *get_source_id()=0;
21 virtual char *get_class_id()=0;
22 virtual void create_units(int num)=0;
23
24
25 static source **get_S(){return S;}
26 static int get_SN(){return SN;}
27 static source **get_C(){return C;}
28 static int get_CN(){return CN;}
29 static int *get_ar(){return ar;}
30
31 };
32
33 source **source::S;
34 int source::SN;
35 source **source::C;
36 int source::CN;
37 int *source::ar;

δεν καταλαβαινω αφου δηλωνει την κλαση μετα (γραμμες 33-37) τι ακριβως κανουν??


Title: Re: Απορίες στη C++
Post by: dual on January 31, 2011, 22:04:17 pm
dhlwnei tis metavlhtes pou einai static mesa sthn class gt alliws o compiler den tis vlepei. oi times autes pairnoun san arxikh timh 0.


Title: Re: Απορίες στη C++
Post by: inspired on January 31, 2011, 22:19:57 pm
dhlwnei tis metavlhtes pou einai static mesa sthn class gt alliws o compiler den tis vlepei. oi times autes pairnoun san arxikh timh 0.
δν τ καταλαβαινω αυτο.. γιατι να μην τις βλεπει?
και γιατι τοτε σ αυτην την ασκησ (https://www.thmmy.gr/smf/index.php?topic=44200.0) δν δηλωνει την static κ εξω απτην κλαση?  :-\


Title: Re: Απορίες στη C++
Post by: dual on January 31, 2011, 22:23:50 pm
mono tis metavlhtes pou einai static prepei na tis dhlwseis kai eksw. oi sunarthseis pou einai static den xreiazetai na tis dhlwseis eksw apo thn class. se ekeinh thn pou les thn dhlwnei eksw thn static int k;   san    int A::k;


Title: Re: Απορίες στη C++
Post by: inspired on January 31, 2011, 22:32:05 pm
mono tis metavlhtes pou einai static prepei na tis dhlwseis kai eksw. oi sunarthseis pou einai static den xreiazetai na tis dhlwseis eksw apo thn class. se ekeinh thn pou les thn dhlwnei eksw thn static int k;   san    int A::k;
ωχ ναι δν το ειχα προσεξει  ::)

θενξ  :)


Title: Re: Απορίες στη C++
Post by: varvoutis on January 31, 2011, 22:33:43 pm
Αν δε σου ζητάει ρητά να διαβάζεις παραμέτρους τους χρήστη μέσα από constructor θα σου πρότεινα να το αποφύγεις. Συνήθως τα αντικείμενα όταν αρχικοποιούνται δε διαβάζουν παραμέτρους από τον χρήστη (cin) αλλά τις δέχονται ως ορίσματα εισόδου. Οπότε θα έλεγα να δέχεσαι τις παραμέτρους που χρειάζεσαι (M και float area[]) ως ορίσματα εισόδου. Οπότε θα έχεις έναν constructor station::station(int M,float area[]) και έναν station::station(void)

Έτσι αν αρχικοποιήσεις ένα προσωρινό αντικείμενο station δε δίνεις όρισμα  στον constructor πχ
station temp; και δεν έχεις πρόβλημα. Αν θες να έχεις ένα κανονικό αντικείμενο, διαβάζεις από την main τα Μ, area και τα δίνεις σαν ορίσματα εισόδου. Εκεί δημιουργείς αντίγραφα τους σε private μεταβλητές μέλη της κλάσης (κοινώς κάνεις και 2ο new και αντιγράφεις τα δεδομένα)

Στον constructor χωρίς όρισμα αρικοποιείς πάντα τις εσωτερικές μεταβλητές ακόμα και αν δε θες να τις χρησιμοποιήσεις. Επίσης ένας καλός τρόπος για να γλυτώσεις το flag μεταβλητή μέλος είναι να αρχικοποιήσεις τον pointer τους δυναμικά δεσμευμένου πίνακα σε NULL. Προφανώς για να είναι NULL δε τον έχεις δεσμεύσει και δε χρειάζεται να τον διαγράψεις από τον destructor.

Έτσι θα το υλοποιούσα εγώ, αλλά δηλώνω ότι δεν έχω διαβάσει την εκφώνηση για να ξέρω ξεκάθαρα τι ζητάει ο κορτέσης.

Σ ευχαριστω πολυ BOB  ;)


Title: Re: Απορίες στη C++
Post by: varvoutis on August 28, 2011, 23:46:52 pm
Στις γενικές συναρτήσεις ( ή αλλιώς μήτρες ή αλλιώς templates ( πρότυπα ) ) μπορούμε να έχουμε τύπο επιστρεφόμενης τιμής ο οποίος να μην είναι κάποιος από τους γνωστούς ( δηλ int, float, char κλπ κλπ ) ούτε κάποιος τύπος που να έχει δοθεί πρωτύτερα από το πρόγραμμα στη συνάρτηση;

Εξηγώ καλύτερα την ερώτηση με ένα παράδειγμα:

ορισμός συνάρτησης:

template <class type1, class type2> type2 function(type1 A){
...
}  

και το αντίστοιχο κομμάτι στη main:

int main(void){
   int p;
.
.
.
   p=function(10);
.
.
.
}

Αυτή τη μορφή της γενικής συνάρτησης τη χρειάστηκα σε ένα προγραμματάκι. Προσπάθησα να το μεταγλωττίσω αλλά δεν...

Βέβαια επειδή δεν ξέρω αν έχω κάνει κανένα άλλο λάθος ( αλλά και για επιβεβαίωση αν ξέρει κανείς στα σίγουρα ) ρωτάω και εδώ


Title: deleted
Post by: BOBoMASTORAS on August 29, 2011, 13:48:24 pm
deleted


Title: Re: Απορίες στη C++
Post by: varvoutis on August 29, 2011, 14:09:02 pm
Thanks again BOB!

Στην περίπτωσή μου βέβαια που ο επιστρεφόμενος τύπος της γενικής συνάρτησης αποφασίζεται κατά τη διάρκεια εκτέλεσης του προγράμματος δεν μπορώ να χρησιμοποιήσω τη δομή που προτείνεις ( γιατί δεν ξέρω τον επιστρεφόμενο τύπο )

Οπότε θα βρω άλλον τρόπο υλοποίησης  ;)

Θενξ και πάλι


Title: Re: Απορίες στη C++
Post by: rspappas on August 29, 2011, 14:38:38 pm
και με typecasting δεν μπορει να γινει? Δηλαδη:

p= (int) function(10);


Title: deleted
Post by: BOBoMASTORAS on August 29, 2011, 14:40:33 pm
deleted


Title: Re: Απορίες στη C++
Post by: ForestBlack on January 27, 2012, 13:19:28 pm
Μπορεί κάποιος να με βοηθήσει?

//2009
#include<iostream>
using namespace std;

class A{
protected:
   static int k;
public:
   static int fun(int n){k=n+2;return k;}
   operator int() {return A::fun(3);}
};
int A::k;
class B:public A{
   int n;
public:
   int bfun(){return n+A::fun(n);}
   B(int m){n=m+k;}
   void out(){cout<<n<<"\n"<<k<<"\n";}
};

int main(){
   B b(4);
   A a;
   cout<<A::fun(2)<<"\n";
   cout<<b.bfun()<<"\n";
   cout<<a+b<<"\n";
   b.out();
   system("PAUSE");
}

αυτό είναι το θέμα τι θα τυπωθεί του 2009
οι μπολτουπογραμισμένες γραμμές τι κάνουν???
η σύνταξη δεν είναι " τύπος οperator#(........){...} " ?? αυτό: operator int() {return A::fun(3);} γιατί το έχει έτσι στην ασκηση?

αυτά θα εκτυπωθούν:
4
10
10    <-- αυτό πως προκύπτει?
4
5

ευχαριστώ.


Title: Re: Απορίες στη C++
Post by: Infinite Loop on January 27, 2012, 14:00:45 pm
operator int() {return A::fun(3);}
type conversion operator overload.

cout<<a+b<<"\n";

implicit cast A σε int.


Title: Re: Απορίες στη C++
Post by: ForestBlack on January 27, 2012, 14:47:16 pm
ok.. μπορεις να το πεις μηπως κ λιγο πιο αναλυτικα?
ειναι δλδ operator που αλλαζει τον τυπο της μεταβλητης?


Title: Re: Απορίες στη C++
Post by: teslaaaa on January 29, 2012, 21:33:26 pm
μπορει καποιος που βλεπει ολοκαθαρα τα θεματα φεβρουαριου 2008 να πει τι λεει στη main και στον oprerator int() της κλασης Aστο θεμα που θελει να πουμε τι θα εκτυπωσει?


Title: Re: Απορίες στη C++
Post by: Endeavour X on January 30, 2012, 20:44:05 pm
ok.. μπορεις να το πεις μηπως κ λιγο πιο αναλυτικα?
ειναι δλδ operator που αλλαζει τον τυπο της μεταβλητης?
+1


Title: Re: Απορίες στη C++
Post by: BabylonX on January 30, 2012, 21:19:24 pm
ok.. μπορεις να το πεις μηπως κ λιγο πιο αναλυτικα?
ειναι δλδ operator που αλλαζει τον τυπο της μεταβλητης?
+1

Νομίζω ότι επειδή δεν έχει οριστεί πρόσθεση μεταξύ αντικειμένων, αναγκαστικά πρέπει οι δύο προσθεταίοι να είναι αριθμοί. Η περίπτωση αυτή καλύπτεται με το

Code:
operator int() {return A::fun(3);}

που είναι κοινό και για την κλάση Β. Οπότε επιστρέφονται και για το a και για το b οι int τιμές που επιστρέφει η fun(3), δηλαδή το 5. Η πράξη δηλαδή είναι 5+5.

Δεν είμαι σίγουρος όμως γιατί έχει μόλις μια βδομάδα που καταγίνομαι με C++!  :D


Title: Re: Απορίες στη C++
Post by: JakeLaMotta on January 30, 2012, 22:50:30 pm
Νομίζω ότι επειδή δεν έχει οριστεί πρόσθεση μεταξύ αντικειμένων, αναγκαστικά πρέπει οι δύο προσθεταίοι να είναι αριθμοί. Η περίπτωση αυτή καλύπτεται με το

Code:
operator int() {return A::fun(3);}

που είναι κοινό και για την κλάση Β. Οπότε επιστρέφονται και για το a και για το b οι int τιμές που επιστρέφει η fun(3), δηλαδή το 5. Η πράξη δηλαδή είναι 5+5.

Δεν είμαι σίγουρος όμως γιατί έχει μόλις μια βδομάδα που καταγίνομαι με C++!  :D

Ακριβώς έτσι όπως το λέει ο BabylonX γίνεται.
Για περισσότερες και πιο αναλυτικές πληροφορίες:
https://www.thmmy.gr/smf/index.php?topic=44200.0
Εδώ την αναλύουν πραγματικά πολύ,δε φαντάζομαι να σας μείνουν απορίες.


Title: Re: Απορίες στη C++
Post by: Endeavour X on January 31, 2012, 01:56:54 am
Περισότερες πληροφορίες για όσους έχουν τον Schildt σελίδα 550. ;)


Title: Re: Απορίες στη C++
Post by: Marmotakos on January 31, 2012, 13:53:43 pm
στο μάθημα ο Συμεωνίδης είχε ξεχωρίσει τις διαφορες μεταξυ ανεξαρτησιας συνάρτησης και ανεξαρτησιας λογισμικού και είχε πει 2 τρόπους για την κάθε περιπτωση
τους θυμαται κανεις?

ανεξαρτησια συναρτησης (virtual templates?)?
ανεξαρτησια λογισμικου (static me diplo pointer,ορισμος αντικειμενων στην κλαση??)?


Title: Re: Απορίες στη C++
Post by: Ναταλία on January 31, 2012, 14:28:51 pm
στο μάθημα ο Συμεωνίδης είχε ξεχωρίσει τις διαφορες μεταξυ ανεξαρτησιας συνάρτησης και ανεξαρτησιας λογισμικού και είχε πει 2 τρόπους για την κάθε περιπτωση
τους θυμαται κανεις?

ανεξαρτησια συναρτησης (virtual templates?)?
ανεξαρτησια λογισμικου (static me diplo pointer,ορισμος αντικειμενων στην κλαση??)?

για ανεξαρτησια συναρτησης ειναι με τους 2 τροπους που λες..
λογισμικου νομιζω ειναι ενας τροπος και ειναι αυτος που υλοποιειται στην εργασια G την φετινη!


Title: Re: Απορίες στη C++
Post by: JakeLaMotta on January 31, 2012, 16:01:32 pm
στο μάθημα ο Συμεωνίδης είχε ξεχωρίσει τις διαφορες μεταξυ ανεξαρτησιας συνάρτησης και ανεξαρτησιας λογισμικού και είχε πει 2 τρόπους για την κάθε περιπτωση
τους θυμαται κανεις?

ανεξαρτησια συναρτησης (virtual templates?)?
ανεξαρτησια λογισμικου (static me diplo pointer,ορισμος αντικειμενων στην κλαση??)?

για ανεξαρτησια συναρτησης ειναι με τους 2 τροπους που λες..
λογισμικου νομιζω ειναι ενας τροπος και ειναι αυτος που υλοποιειται στην εργασια G την φετινη!

Νομίζω ότι αυτό που κάνει στη G εργασία είναι για ανεξαρτησία και της main.Ανεξαρτησία λογισμικού(ουσιαστικά δηλαδή κάποιας συνάρτησης που δεν είναι μέλος κάποιας κλάσης),γίνεται με static με διπλό pointer(και με global),κ δημιουργώντας αντικείμενα στη βασική κλάση με τον pointer.Όπως στην εργασία Ε φέτος,και στο πρώτο παράδειγμα της εβδομάδας 7 στις ασκήσεις.


Title: Re: Απορίες στη C++
Post by: png on August 24, 2012, 22:44:12 pm
στη λύση της εργασίας E υπάρχουν 2 μεταβλητές που ορίζονται έξω από κλάση/συνάρτηση/main()...
τι σημαίνει αυτό;


Title: Re: Απορίες στη C++
Post by: Silvo the Beautiful on August 24, 2012, 22:50:39 pm
στη λύση της εργασίας E υπάρχουν 2 μεταβλητές που ορίζονται έξω από κλάση/συνάρτηση/main()...
τι σημαίνει αυτό;

Οτι ο θεος προβλεψε για ολα


Title: Re: Απορίες στη C++
Post by: png on August 24, 2012, 22:52:13 pm
στη λύση της εργασίας E υπάρχουν 2 μεταβλητές που ορίζονται έξω από κλάση/συνάρτηση/main()...
τι σημαίνει αυτό;

Οτι ο θεος προβλεψε για ολα

είσαι αμετάκλητα ζαβό αλλά κι έτσι σ'αγαπάμε. σκάσε τώρα να μας πει κάνας χριστιανός.


Title: Re: Απορίες στη C++
Post by: Jim D. Ace on August 24, 2012, 23:10:52 pm
κοιτα αν και δεν εχω κανει ακομα c++ λογικα (συμφωνα με τη C) εσυ αναφερεσαι σε global variable
στην ουσια οι μεταβλητες που οριζονται εξω απο κλάση/συνάρτηση/main()... αναφερονται σε ολο το προγραμμα και αφου οριστουν  θα σβηστουν απο τη μνημη του υπολογιστη μονο οταν θα χει τελειωσει το προγραμμα


Title: Re: Απορίες στη C++
Post by: Endeavour X on August 24, 2012, 23:12:50 pm
στη λύση της εργασίας E υπάρχουν 2 μεταβλητές που ορίζονται έξω από κλάση/συνάρτηση/main()...
τι σημαίνει αυτό;
Παιζει να εννοεις τις στατικες? Στη λυση δεν εισαι?


Title: Re: Απορίες στη C++
Post by: png on August 24, 2012, 23:25:23 pm
στη λύση της εργασίας E υπάρχουν 2 μεταβλητές που ορίζονται έξω από κλάση/συνάρτηση/main()...
τι σημαίνει αυτό;
Παιζει να εννοεις τις στατικες? Στη λυση δεν εισαι?

μάλλον... ξέρω κι εγώ; :P

υ.γ. ξέχασα, thanks jim d. ace, εντάξει, το βρήκα, global είναι


Title: Re: Απορίες στη C++
Post by: princess_of_the_dawn on September 03, 2012, 17:08:32 pm
στις σημειώσεις έχει το εξής:

Code:
#include <iostream.h>
class array {
int a[3];
public:
array operator+(array t);
array operator=(array t);
array operator++(void);
void out(void);
void set(int *k);
};
array array::operator+(array t)
{
array tm;
int i;
for(i=0; i<3; i++)
tm.a[i]=a[i]+t.a[i];
return tm;
}
array array::operator=(array t)
{
int i;
for(i=0; i<3; i++)
a[i]=t.a[i];
return *this;
}
array array::operator++(void)
{
int i;
for(i=0; i<3; i++)
a[i]++;
return *this;
}
void array::out(void)
{
int i;
for(i=0; i<3; i++)
cout <<a[i]<<" ";
cout <<"\n";
}
void array::set(int *k)
{
int i;
for(i=0; i<3; i++)
a[i]=*(k+i);
}
void main()
{
array w,r,u;
int k[]={1,2,3},m[]={10,20,30};
w.set(k);
r.set(m);
u=r+w;
u.out();
u=w+r+u;
u.out();
u=r=w;
u.out();
u++;
u.out();
++u;
u.out();
}

"Το πρόγραμμα θα εκτυπώσει τις τιμές
11 22 33
22 44 66
1 2 3
2 3 4
3 4 5
"

Γτ θα εκτυπώσει αυτές τις τιμές και όχι

    11  24   37
    22  48   74
      1     2    3
      2     3    4
      3     4    5



??
 :-[


Title: Re: Απορίες στη C++
Post by: Infinite Loop on September 04, 2012, 04:53:55 am
Ασχετο, αλλα:
Quote from: Μαλακισμενος κωδικας
Code:
void out(void)
ΘΕΕ ΚΑΙ ΚΥΡΙΕ, void ΣΤΗΝ ΛΙΣΤΑ ΤΩΝ ΠΑΡΑΜΕΤΡΩΝ ΣΕ ΚΩΔΙΚΑ C++ ^facepalm^

στις σημειώσεις έχει το εξής:

Code:
#include <iostream.h>
class array {
int a[3];
public:
array operator+(array t);
array operator=(array t);
array operator++(void);
void out(void);
void set(int *k);
};
array array::operator+(array t)
{
array tm;
int i;
for(i=0; i<3; i++)
tm.a[i]=a[i]+t.a[i];
return tm;
}
array array::operator=(array t)
{
int i;
for(i=0; i<3; i++)
a[i]=t.a[i];
return *this;
}
array array::operator++(void)
{
int i;
for(i=0; i<3; i++)
a[i]++;
return *this;
}
void array::out(void)
{
int i;
for(i=0; i<3; i++)
cout <<a[i]<<" ";
cout <<"\n";
}
void array::set(int *k)
{
int i;
for(i=0; i<3; i++)
a[i]=*(k+i);
}
void main()
{
array w,r,u;
int k[]={1,2,3},m[]={10,20,30};
w.set(k);
r.set(m);
u=r+w;
u.out();
u=w+r+u;
u.out();
u=r=w;
u.out();
u++;
u.out();
++u;
u.out();
}

"Το πρόγραμμα θα εκτυπώσει τις τιμές
11 22 33
22 44 66
1 2 3
2 3 4
3 4 5
"

Γτ θα εκτυπώσει αυτές τις τιμές και όχι

    11  24   37
    22  48   74
      1     2    3
      2     3    4
      3     4    5



??
 :-[


Πώς εβγαλες το 11, 24, 37; Αφου η προσθεση γινεται στοιχειο προς στοιχειο. Δες τις γραμμες:
Code:
int k[]={1,2,3},m[]={10,20,30};
w.set(k);
r.set(m);
u=r+w;


Title: Re: Απορίες στη C++
Post by: nikitas350 on September 04, 2012, 12:12:24 pm
Ασχετο, αλλα:
Quote from: Μαλακισμενος κωδικας
Code:
void out(void)
ΘΕΕ ΚΑΙ ΚΥΡΙΕ, void ΣΤΗΝ ΛΙΣΤΑ ΤΩΝ ΠΑΡΑΜΕΤΡΩΝ ΣΕ ΚΩΔΙΚΑ C++ ^facepalm^


Γιατί είναι μαλακισμένος? Δεν είναι λάθος και προσφέρει και συμβατότητα με την C.


Title: Re: Απορίες στη C++
Post by: Infinite Loop on September 04, 2012, 12:36:08 pm
Γιατι αλλο πραμα η C++, αλλο πραμα η C. Ειναι δυο τελειως ξεχωριστες γλωσσες.
Related:
1 (http://www.parashift.com/c++-faq/void-in-param-list.html) 2 (http://www.parashift.com/c++-faq/main-returns-int.html)

και δεν θα σχολιασω καν το .h στο #include και το return type της main...


Title: Re: Απορίες στη C++
Post by: princess_of_the_dawn on September 04, 2012, 13:18:24 pm


Πώς εβγαλες το 11, 24, 37; Αφου η προσθεση γινεται στοιχειο προς στοιχειο. Δες τις γραμμες:
Code:
int k[]={1,2,3},m[]={10,20,30};
w.set(k);
r.set(m);
u=r+w;

ναι αλλά τότε το εξής σημείο:
Code:
void array::set(int *k)
{
int i;
for(i=0; i<3; i++)
a[i]=*(k+i);
}

γιατί το βάζουμε??
δεν έχουμε:
Gia to W
a[0]=1+0=1
a[1]=2+1=3
a[2]=3+2=5

gia to  r
a[0]=10+0=10
a[1]=20+1=21
a[2]=30+2=32

u=r+w=11 24 35

???
 :-[


Title: Re: Απορίες στη C++
Post by: nikitas350 on September 04, 2012, 13:21:23 pm
Γιατι αλλο πραμα η C++, αλλο πραμα η C. Ειναι δυο τελειως ξεχωριστες γλωσσες.
Related:
1 (http://www.parashift.com/c++-faq/void-in-param-list.html) 2 (http://www.parashift.com/c++-faq/main-returns-int.html)

και δεν θα σχολιασω καν το .h στο #include και το return type της main...

Το void για return στην main δείχνει την γελοιότητα του Κορτέση.
Για το void ως argument στην C++ με καλύπτει αυτό:

http://stackoverflow.com/questions/51032/is-there-a-difference-between-foovoid-and-foo-in-c-or-c


Title: Re: Απορίες στη C++
Post by: Infinite Loop on September 04, 2012, 13:23:04 pm
Code:
a[i]=*(k+i);

Pointer arithmetic. Look it up.

Α, και αφου ειπε ο θεος οτι το
Code:
f(void)
ειναι abomination, εμεις οι θνητοι μπορουμε να σωπασουμε :P


Title: Re: Απορίες στη C++
Post by: princess_of_the_dawn on September 04, 2012, 13:30:04 pm
thanks infinite  :-*


Title: Re: Απορίες στη C++
Post by: BOBoMASTORAS on September 04, 2012, 14:52:28 pm
Γιατι αλλο πραμα η C++, αλλο πραμα η C. Ειναι δυο τελειως ξεχωριστες γλωσσες.
Το void για return στην main δείχνει την γελοιότητα του Κορτέση.
Για το void ως argument στην C++ με καλύπτει αυτό:

http://stackoverflow.com/questions/51032/is-there-a-difference-between-foovoid-and-foo-in-c-or-c


Συμφωνώ.

Το να δηλώσεις στη λίστα των ορισμάτων void στη C++ δε λέει τίποτα, αλλά είναι καθ' όλα σωστό και μάλιστα πολλά coding standards λένε να το δηλώνεις για να τονίζεις το γεγονός ότι η συνάρτηση δε δέχεται ορίσματα. Άλλωστε όπως λέει και το link που παρέθεσες:

Quote
In C++:
void foo() means "a function foo taking no arguments"
void foo(void) means "a function foo taking no arguments"

Και οι 2 τρόποι σύνταξης είναι ισσοδύναμοι. Δεν υπάρχει λόγος να χρησιμοποιήσεις τον έναν έναντι του άλλου, πέρα από τα coding standards τα οποία πολλές φορές είναι υποκειμενικά. Είναι και το θέμα συμβατότητας που αναφέρεις, αλλά είναι πολύ συγκεκριμένες οι περιπτώσεις που θα πρέπει να σε απασχολεί αυτό.

Το θέμα είναι όπως πολύ σωστά αναφέρεις, ο επιστρεφόμενος τύπος. Το πρότυπο αναφέρει ότι η main πρέπει να επιστρέφει int. Το γεγονός ότι ο g++ (και άλλοι compiler) το δέχεται(?) δε σημαίνει ότι είναι σωστό ή ότι θα το δέχονται όλοι οι compiler. Μάλιστα η επιστρεφόμενη τιμή στο λειτουργικό είναι σε αυτή τη περίπτωση σκουπίδια. Συγκεκριμένα το λειτουργικό συνήθως παίρνει ως επιστρεφόμενη τιμή τη τελευταία τιμή που επιστράφηκε από την τελευταία κλήση
Μάλιστα ο g++ στις καινούργιες εκδόσεις δε το δέχεται καθόλου, ενώ παλιά εμφάνιζε warning.  Βέβαια για να είμαστε σωστοί το πρότυπο της C (όχι C++) επιτρέπει σε συγκεκριμένες υλοποιήσεις ο επιστρεφόμενος τύπος να είναι void. Πχ σε έναν compiler για standalone εφαρμογές πάνω σε μικροελεγκτή. Σε αυτή την περίπτωση δεν υπάρχει λειτουργικό. Η περίπτωση αυτή ονομάζεται freestanding environment και μόνο τότε το πρότυτο της C αναφέρει ότι ο τύπος της main είναι implementation defined.

Quote
Working Draft, Standard for Programming
            Language C++

  An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return
  type of type int
, but otherwise its type is implementation-defined. All implementations shall allow both of the following
  definitions of main

  int main () { / ∗      ∗/ }
                     ...
and
  int main ( int argc , char * argv []) { / ∗     ∗/ }
                                              ...

Code:
#include <stdio.h>

int fun(void){
        return 10;
}

void main(void){
        fun();
}

Code:
bob@domain:~$ gcc test.c
bob@domain:~$ ./a.out
bob@domain:~$ echo $?
10


Code:
#include <iostream>

void main(void){
        std::cout<<"a"<<std::endl;
        return 0;
}

Quote
bob@domain:~$ g++ test.cpp
test.cpp:4: error: ‘::main’ must return ‘int’

Το τραγικό όμως είναι το

Quote
#include <iostream.h>

Εντελώς εκτός προτύπου και σε όλους τους σύγχρονους compiler:

Code:
#include <iostream.h>

int main(void){
        std::cout<<"test"<<std::endl;
        return 0;
}

Quote
test.cpp:1:22: error: iostream.h: No such file or directory
test.cpp: In function ‘int main()’:
test.cpp:5: error: ‘cout’ is not a member of ‘std’
test.cpp:5: error: ‘endl’ is not a member of ‘std’




Title: Re: Απορίες στη C++
Post by: Infinite Loop on September 04, 2012, 15:07:16 pm
Και περιμενουμε καποιος, του οποιου ο κωδικας δεν κανει καν compile (και ας μην μιλησω για τις Προγραμματιστικες """"Τεχνικες"""" που χρησιμοποιει), να μας μαθει C++ και να μας βαθμολογησει σωστα πανω σε αυτην.


Title: Re: Απορίες στη C++
Post by: AgentCain on September 04, 2012, 15:14:04 pm
Όπως είπε και ο Bjarne Stroustrup, "Within C++, there is a much smaller and cleaner language struggling to get out. And no, that smaller and cleaner language is not Java or C#."  :P

Και περιμενουμε καποιος, του οποιου ο κωδικας δεν κανει καν compile (και ας μην μιλησω για τις Προγραμματιστικες """"Τεχνικες"""" που χρησιμοποιει), να μας μαθει C++ και να μας βαθμολογησει σωστα πανω σε αυτην.

Ε μη κολλάς μόνο στις προγραμματιστικές τεχνικές, σε πολλά μαθήματα γίνεται αυτό. Απλά το βασικό θέμα είναι ο τρόπος εξέτασης. Όπως και στα μίκρο, έτσι και στη C,C++ το να γράψεις κώδικα στο χαρτί (και όχι διάγραμμα ή ψευδογλώσσα ξέρω γω) είναι αρκετά έως πολύ δύσκολο (αν και όχι ακατόρθωτο). Σε γενικές γραμμές πάντως είναι βλακώδες και καλά θα είναι να βρεθεί λύση.


Title: Re: Απορίες στη C++
Post by: BOBoMASTORAS on September 04, 2012, 15:21:32 pm
Και περιμενουμε καποιος, του οποιου ο κωδικας δεν κανει καν compile (και ας μην μιλησω για τις Προγραμματιστικες """"Τεχνικες"""" που χρησιμοποιει), να μας μαθει C++ και να μας βαθμολογησει σωστα πανω σε αυτην.

Ε στον borland compiler κάνει :P

Και δεν αναφέρομαι μόνο στον παλιό που χρησιμοποιεί ο κορτέσης. Ο Visual Borland compiler ο οποίος είναι σύγχρονος compiler είναι πολύ χαλαρός όσο αναφορά τα πρότυπα. Οπότε παίζει εκεί να κάνει compile ο κώδικας. Το θέμα είναι ότι ο κώδικας είναι εκτός προτύπου. Τώρα τι σημασία έχει αυτό, το κρίνει ο καθένας μόνος του.....


Title: Re: Απορίες στη C++
Post by: Infinite Loop on September 04, 2012, 16:03:07 pm
Ε μη κολλάς μόνο στις προγραμματιστικές τεχνικές, σε πολλά μαθήματα γίνεται αυτό. Απλά το βασικό θέμα είναι ο τρόπος εξέτασης. Όπως και στα μίκρο, έτσι και στη C,C++ το να γράψεις κώδικα στο χαρτί (και όχι διάγραμμα ή ψευδογλώσσα ξέρω γω) είναι αρκετά έως πολύ δύσκολο (αν και όχι ακατόρθωτο). Σε γενικές γραμμές πάντως είναι βλακώδες και καλά θα είναι να βρεθεί λύση.

Μα και εκει κολλαω... Και αυτο ακουω συμβαινει και σε πολλα τμηματα Πληροφορικης ανα την Υφηλιο στην υπολοιπη Ελλαδα... Παντως αμα μου βαλει κακο βαθμο εγω θα του πω "στο χαρτι που εκανα compile τον κωδικα, αυτος ετρεχε μια χαρα"!


Title: Re: Απορίες στη C++
Post by: Issle on September 04, 2012, 16:35:09 pm
Ε μη κολλάς μόνο στις προγραμματιστικές τεχνικές, σε πολλά μαθήματα γίνεται αυτό. Απλά το βασικό θέμα είναι ο τρόπος εξέτασης. Όπως και στα μίκρο, έτσι και στη C,C++ το να γράψεις κώδικα στο χαρτί (και όχι διάγραμμα ή ψευδογλώσσα ξέρω γω) είναι αρκετά έως πολύ δύσκολο (αν και όχι ακατόρθωτο). Σε γενικές γραμμές πάντως είναι βλακώδες και καλά θα είναι να βρεθεί λύση.

Μα και εκει κολλαω... Και αυτο ακουω συμβαινει και σε πολλα τμηματα Πληροφορικης ανα την Υφηλιο στην υπολοιπη Ελλαδα... Παντως αμα μου βαλει κακο βαθμο εγω θα του πω "στο χαρτι που εκανα compile τον κωδικα, αυτος ετρεχε μια χαρα"!

Κοίτα γενικά οι καθηγητές από κάποια ηλικία και έπειτα τα παρατάνε. Έχουν πόστο διοικητικό. Ιδιαίτερα στον προγραμματισμό που τα πράγματα εξελίσσονται αρκετά γρήγορα, δεν θα βρεις εύκολα καθηγητές που να είναι up-to-date. Διδακτορικούς ίσως βρεις πιο εύκολα.


Title: Re: Απορίες στη C++
Post by: johnvoyager on September 05, 2012, 20:24:16 pm
Μπορεί να ανεβάσει κανείς λύση απο το 2ο θέμα του φεβρουαρίου2012Α ?  (αυτό με τα κυκλώματα)  ^beg^


Title: Re: Απορίες στη C++
Post by: 020400e on November 10, 2012, 20:25:12 pm
Μια γενική απορία για τη C++... Οι κλάσεις πρέπει να γράφονται πριν την main ή μετά ή δεν έχει σημασία?


Title: Re: Απορίες στη C++
Post by: Grecs on November 10, 2012, 20:59:54 pm
Μια γενική απορία για τη C++... Οι κλάσεις πρέπει να γράφονται πριν την main ή μετά ή δεν έχει σημασία?
try it


Title: Re: Απορίες στη C++
Post by: Exomag on November 10, 2012, 21:09:38 pm
Μια γενική απορία για τη C++... Οι κλάσεις πρέπει να γράφονται πριν την main ή μετά ή δεν έχει σημασία?

Πρέπει να είναι αναγαστικήα πριν από την main, εφόσον θέλεις να τις χρησιμοποιήσεις στην main...


Title: Re: Απορίες στη C++
Post by: varvoutis on December 20, 2012, 02:41:37 am
class oil_source:public source{
   float fuel,c,spower,power;
   char id[30];
   int state;
   
public:
   
   int get_state(){return state;}
   void set_state(int k){state=k;}
   float get_power();
   float get_spower(){return spower;}
   char *get_source_id(){return id;}
   char *get_class_id(){return cid;}
   float return_power(){return power;}
   void create_units(int n);
   
   oil_source();
   oil_source(char *p);
}oil("oil");
.
.
.
oil_source::oil_source(char *p):source(p){}

Το παραπάνω είναι κομμάτι κώδικα από την λύση της εργασίας G του 2010-2011.

Μπορεί κάποιος να μου εξηγήσει τι κάνουν τα boldαρισμένα;

Ευχαριστώ.


Title: Re: Απορίες στη C++
Post by: Endeavour X on December 20, 2012, 02:48:18 am
Αν θυμαμαι καλα αυτο ηταν στην ανεξαρτησια λογισμικου.
Το πρωτο που εχεις bold ειναι σα να φτιαχνεις ενα αντικειμενο oil source μεσα στη main.
Ετσι επιτυγχανεται η ανεξαρτησια λογισμικου δηλαδη, η main σου ειναι ανεξαρτητη απο δηλωσεις αντικειμενων.


Title: Re: Απορίες στη C++
Post by: Exomag on December 20, 2012, 21:07:34 pm
oil("oil");
Ορίζει ένα αντικείμενο τύπου oil_source εκτός της main(), με σκοπό να πετύχει την ανεξαρτησία του λογισμικού.

oil_source::oil_source(char *p):source(p){}
Πρόκειται για τον constructor (κενό, χωρίς καθόλου κώδικα) της κλάσης oil_source, που είναι παραγόμενη της source (και εξού το ":source(p)" πριν τον κώδικα).