THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: Grecs on October 22, 2008, 15:41:04 pm



Title: [C++] 1η εργασία 2008
Post by: Grecs on October 22, 2008, 15:41:04 pm
Αντιγραφω απο ethmmy

¨    

Πρώτη εργασία - Εισαγωγική στις κλάσεις (Hμ/νία λήξης δηλώσεων: 28/10/2008)

Να σχεδιαστεί και να υλοποιηθεί το λογισμικό το οποίο διαχειρίζεται έναν τραπεζικό λογαριασμό. Στο λογισμικό να δίνεται η δυνατότητα, με το άνοιγμα ενός λογαριασμού να εισάγονται ο αριθμός του λογαριασμού, το όνομα του δικαιούχου και το pin για τη διαχείριση του λογαριασμού. Το λογισμικό να διαθέτει τις κατάλληλες συναρτήσεις για την κατάθεση ή την ανάληψη χρημάτων από τον λογαριασμό καθώς και την εκτύπωση του υπολοίπου του λογαριασμού.

Για την εφαρμογή του λογισμικού να γραφεί η συνάρτηση main η οποία να δημιουργεί έναν πίνακα από 10 λογαριασμούς και στη συνέχεια να ζητά τον αριθμό ενός από αυτούς και να καταθέτει σε αυτόν ένα ποσό 1000 ευρώ εκτυπώνοντας και το νέο υπόλοιπο του λογαριασμού.

Σημείωση: Το λογισμικό να πληροί την αρχή της ενσωμάτωσης και να παρέχει ασφάλεια στο λογαριασμό από μη εξουσιοδοτημένους χρήστες.


Title: Re: 1η εργασια c++
Post by: Grecs on October 22, 2008, 15:44:13 pm
Εγω κολαω στο πως να εισαγω το ονομα κανω ενα στρινγκ χαρακτηρων για το maximum
χαρακτηρων του ονοματος πως μπορω να εισαγω το ονομα και με το εντερ να φευγω απο την εισαγωγη χαρακτηρων αν αυτοι ειναι λιγοτεροι απο το maximum


Title: deleted
Post by: BOBoMASTORAS on October 22, 2008, 16:25:08 pm
deleted


Title: Re: 1η εργασια c++
Post by: Grecs on October 22, 2008, 16:45:54 pm
διαβαζε τους χαρακτήρες εναν εναν προσθετε τους χαρκτηρες εναν εναν στο στρινγκ μονο αφου κανεις τον ελεγχο για το μαξιμουμ οποτε και θα φευγεις απο το λοοπ ο χαρακτηρας του εντερ θα πρεπει να σταματαει το λοοπ ο χαρακτηρας του εντερ ειναι το 13 θα ηταν καλο να βαζεις και καμια τελεια για να καταλαβαινουμε τι γραφεις


Δε το πιασα πως να το κανω αυτο


Title: Re: 1η εργασια c++
Post by: vasso on October 22, 2008, 16:51:16 pm
διαβαζε τους χαρακτήρες εναν εναν, προσθετε τους χαρκτηρες εναν εναν στο στρινγκ μονο αφου κανεις τον ελεγχο για το μαξιμουμ, οποτε και θα φευγεις απο το λοοπ. ο χαρακτηρας του εντερ θα πρεπει να σταματαει το λοοπ. ο χαρακτηρας του εντερ ειναι το 13. θα ηταν καλο να βαζεις και καμια τελεια για να καταλαβαινουμε τι γραφεις


Δε το πιασα πως να το κανω αυτο


Μπάμπη είσαι κακός :P


Title: Re: 1η εργασια c++
Post by: N3ikoN on October 22, 2008, 16:59:20 pm
διαβαζε τους χαρακτήρες εναν εναν, προσθετε τους χαρκτηρες εναν εναν στο στρινγκ μονο αφου κανεις τον ελεγχο για το μαξιμουμ, οποτε και θα φευγεις απο το λοοπ. ο χαρακτηρας του εντερ θα πρεπει να σταματαει το λοοπ. ο χαρακτηρας του εντερ ειναι το 13. θα ηταν καλο να βαζεις και καμια τελεια για να καταλαβαινουμε τι γραφεις


Δε το πιασα πως να το κανω αυτο


Μπάμπη είσαι κακός :P

hHahHAHhaHAHAHAHAahAH  :D


Title: deleted
Post by: BOBoMASTORAS on October 22, 2008, 18:03:17 pm
deleted


Title: deleted
Post by: BOBoMASTORAS on October 22, 2008, 18:09:41 pm
deleted


Title: Re: [C++] 1η εργασία
Post by: Grecs on October 22, 2008, 18:19:26 pm
Σε αυτο που εγραψες μηπως θελει include κανενα αρχειο?


Title: Re: [C++] 1η εργασία
Post by: Καμένος on October 22, 2008, 18:35:00 pm
προφανως.. αυτή δεν είναι η λύση της άσκησης. Είναι το κομμάτι που είπες ότι δε μπορείς να φτιάξεις...


Title: Re: [C++] 1η εργασία
Post by: Grecs on October 22, 2008, 18:39:13 pm
προφανως.. αυτή δεν είναι η λύση της άσκησης. Είναι το κομμάτι που είπες ότι δε μπορείς να φτιάξεις...

?!?!?!?!??!?!?!?!?
 Το ξερω αλλα λεω μηπως θελει τπτ include extra γτι μου βγαζει error


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 22, 2008, 18:43:24 pm
προφανως.. αυτή δεν είναι η λύση της άσκησης. Είναι το κομμάτι που είπες ότι δε μπορείς να φτιάξεις...

?!?!?!?!??!?!?!?!?
 Το ξερω αλλα λεω μηπως θελει τπτ include extra γτι μου βγαζει error
Δοκίμασε conio.h και string.h


Title: Re: [C++] 1η εργασία
Post by: Καμένος on October 22, 2008, 19:05:11 pm
θέλει την conio.h για την getch


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 22, 2008, 19:52:57 pm
Πως γίνεται να βάλουμε counter στη συνάρτηση δόμησης? Δηλαδή κάθε φορά που δημιουργείται ένα αντικείμενο της τάξης αυτής να αυξάνεται ο counter??

edit: Μόνο με καθολική μεταβλητή?


Title: Re: [C++] 1η εργασία
Post by: Grecs on October 22, 2008, 20:08:24 pm
Πως γίνεται να βάλουμε counter στη συνάρτηση δόμησης? Δηλαδή κάθε φορά που δημιουργείται ένα αντικείμενο της τάξης αυτής να αυξάνεται ο counter??

edit: Μόνο με καθολική μεταβλητή?
Γιατι τι θελεις να κανεις?? Δε νομιζω να χρειαζεται

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


Title: Re: [C++] 1η εργασία
Post by: ripper_george on October 22, 2008, 20:40:43 pm
Αντι να κάνω επαναλήψεις και getch για να διαβάσω ενα string του οπίου το μέγεθος δεν ξέρω, δεν υπάρχει κανένας πιο γρήγορος τρόπος να γράψει ο χρήστης ένα string, και στη συνέχεια αφού πατήσει enter να γίνει δυναμικά μια δέσμευση μνήμης και να δημιουργηθεί ένας πίνακας, ακριβώς στο μέγεθος που χρειάζεται???

Μου φαίνεται πολύ ποντιακό με getch να αποθηκεύεις κάθε φορά το χαρακτήρα που θες και με realloc να δημιουργείς ξανά χώρο στη μνήμη...( Άμα ο χρήστης θέλει να σβήσει κάποιο χαρακτήρα δλδ τι θα κάνει??? PC είναι όχι γραφομηχανή!!!! :) )

Όσο για τον πίνακα με στανταρ μέγεθος, αυτό κι είναι ελεινό.... Άμα βγεις απτα όρια την ***σες, και άμα περισσεύει πίνακας σπαταλάς μνήμη....


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 22, 2008, 21:09:54 pm
Code:
    char *temp,*name;
    temp=(char *)malloc(100*sizeof(char));
   
    gets(temp);
    len=strlen(temp);
   
    name=(char *)malloc((len+1)*sizeof(char));
    strcpy(name,temp);
   
    free(temp);
   
    cout<<name;
Αυτό νομίζω κάνει αυτό που λες


Title: Re: [C++] 1η εργασία
Post by: ripper_george on October 22, 2008, 21:19:35 pm
Σαν λύση είναι καλη, αλλά προυποθέτει ότι το πρώτο string δεν θα ξεπερνά τους 100 χαρακτήρες.
Υπάρχει δυνατότητα να το κάνεις χωρίς να χρειαστεί να δώσεις κάποιο όριο στο μέγεθος???


Title: Re: [C++] 1η εργασία
Post by: ripper_george on October 22, 2008, 21:21:04 pm
Πχ, Ακόμα και έκθεση να γράψει ο χρήστης εγώ να καταφέρω να το διαβάσω...
(Μην ξεχνάμε οι ισπανοί έχουν για ονόματα εκθέσεις....  :D )


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 22, 2008, 21:21:52 pm
Πχ, Ακόμα και έκθεση να γράψει ο χρήστης εγώ να καταφέρω να το διαβάσω...
(Μην ξεχνάμε οι ισπανοί έχουν για ονόματα εκθέσεις....  :D )
Ε καλά! Τα 99 γράμματα δε νομίζω να τα περάσουν!
edit: βάλε διακόσια! Τι είναι 200 byte για τις σημερινές μνήμες? Τπτ! Εξάλλου μετά από λίγο απελευθερώνεται


Title: Re: [C++] 1η εργασία
Post by: ripper_george on October 22, 2008, 21:25:23 pm
οκ, το πιάνω το νόημα...
Και με 100 δεν θα υπήρχε θέμα, απλά είναι το ότι νιώθω καλύτερος προγραμματιστής όταν οτιδήποτε μλκ και να δώσει ο χρήστης, το πρόγραμμά μου δεν θα κρασάρει!  8) 8)
(Ο εχθρός του καλού είναι το καλύτερο!!!!  :) )


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 22, 2008, 21:27:55 pm
οκ, το πιάνω το νόημα...
Και με 100 δεν θα υπήρχε θέμα, απλά είναι το ότι νιώθω καλύτερος προγραμματιστής όταν οτιδήποτε μλκ και να δώσει ο χρήστης, το πρόγραμμά μου δεν θα κρασάρει!  8) 8)
(Ο εχθρός του καλού είναι το καλύτερο!!!!  :) )

Το πρόβλημα αυτό σε περιβάλλον windows λύνεται και αλλιώς. Πχ βάζεις ένα text box που να δέχεται μέγιστο αριθμό γραμμάτων 30. Αν θέλει παραπάνω , να αλλάξει όνομα! :P


Title: Re: [C++] 1η εργασία
Post by: ripper_george on October 22, 2008, 21:31:47 pm
LOL
Μ' αρέσει η λογική σου!!!
 :D :D :D :D ;D ;D ;D ;D ;D


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 22, 2008, 21:59:23 pm
Η συνάρτηση για την ανάληψη χρημάτων δε χρησιμοποιείται πουθενά ε??


Title: Re: [C++] 1η εργασία
Post by: Grecs on October 22, 2008, 22:09:47 pm
Emfaver εβαλα τον κωδικα σου και δε μου δειχνει τπτ οταν το τρεχω δειχνει μονο το cout
που χω πριν τον κωδικα σου και προχωραει αμεσως στο επομενο αντικειμενο ξερεις τι φταιει?


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 22, 2008, 22:16:06 pm
Emfaver εβαλα τον κωδικα σου και δε μου δειχνει τπτ οταν το τρεχω δειχνει μονο το cout
που χω πριν τον κωδικα σου και προχωραει αμεσως στο επομενο αντικειμενο ξερεις τι φταιει?
Στον Dev++ αυτό ακριβώς λειτουργεί σε μένα. Τώρα σε άλλον compiler αν προσθέσεις τπτ βιβλιοθήκες που μπορεί να χρειάζεται και βάλεις πριν τη main int/void (ανάλογα τι θέλει)θα λειτουργήσει

Code:
#include <iostream.h>

int main()
{
    int len;
    char *temp,*name;
    temp=(char *)malloc(100*sizeof(char));
   
    gets(temp);
    len=strlen(temp);
   
    name=(char *)malloc((len+1)*sizeof(char));
    strcpy(name,temp);
   
    free(temp);
   
   
    cout<<name;

    fflush(stdin);
    getchar(); 
}   

edit: Όταν το τρέξεις δε θα σου δείξει τπτ. Απλά περιμένει να εισάγεις ένα string και όταν πατήσεις enter θα το δείξει από κάτω


Title: Re: [C++] 1η εργασία
Post by: Grecs on October 22, 2008, 22:21:23 pm
κι εγω devc++ εχω αλλα οτι να ναι


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 23, 2008, 00:04:44 am
Grecs: Μήπως για όνομα στον κώδικα του Emfanever χρησιμοποιείς δύο λέξεις που τις χωρίζεις με space (π.χ. Κώστας Παπαδόπουλος);; Ο Dev "πηδάει" γραμμές αν το κάνεις αυτό, δοκίμασε να βάλεις ένα όνομα (στο temp) που να μην έχει κενό (spacebar) και δες αν λειτουργεί. Αν ναι τότε καλύτερα να εισάγεις το όνομα έτσι Κώστας_Παπαδόπουλος.


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 23, 2008, 00:14:18 am
Α, ripper_george.. μπορείς στον κώδικα του emfanever να αντικαταστήσεις αυτό:

Code:
int len;
    char *temp,*name;
    temp=(char *)malloc(100*sizeof(char));
   
    gets(temp);

Με αυτό:

Code:
string temp;
cin>>temp;

Το ίδιο πράγμα είναι και δεν χρειάζεται να ορίσεις maximum τπτ.

edit: άκυρο.. η μεταβλητή string δεν λειτουργεί με το strlen :-\


Title: Re: [C++] 1η εργασία
Post by: Grecs on October 23, 2008, 00:22:09 am
Grecs: Μήπως για όνομα στον κώδικα του Emfanever χρησιμοποιείς δύο λέξεις που τις χωρίζεις με space (π.χ. Κώστας Παπαδόπουλος);; Ο Dev "πηδάει" γραμμές αν το κάνεις αυτό, δοκίμασε να βάλεις ένα όνομα (στο temp) που να μην έχει κενό (spacebar) και δες αν λειτουργεί. Αν ναι τότε καλύτερα να εισάγεις το όνομα έτσι Κώστας_Παπαδόπουλος.

εχω τον κωδικα μου ετοιμο και μονο σε αυτο το σημειο εχω προβλημα οποτε κανω copy paste τον κωδικα του emfaver στο αναλογο σημειο το μονο που μου βγαζει οταν το τρεχω ειναι "δωσε το ονομα του πελατη" και κολλητα(δεν βαζω καν ονομα)"δωσε αριθμο λογαριασμου" <---- για τον επομενο λογαριασμο κοκ


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 23, 2008, 00:38:16 am
Αν θες μπορείς να μου δώσεις τον κώδικά σου να τον τρέξω στον δικό μου compiler.. πάντως μεμονωμένα ο κώδικας του Emfanever μου τρέχει καλά εμένα (devc++)


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 23, 2008, 00:46:40 am
Grecs: Μήπως για όνομα στον κώδικα του Emfanever χρησιμοποιείς δύο λέξεις που τις χωρίζεις με space (π.χ. Κώστας Παπαδόπουλος);; Ο Dev "πηδάει" γραμμές αν το κάνεις αυτό, δοκίμασε να βάλεις ένα όνομα (στο temp) που να μην έχει κενό (spacebar) και δες αν λειτουργεί. Αν ναι τότε καλύτερα να εισάγεις το όνομα έτσι Κώστας_Παπαδόπουλος.

εχω τον κωδικα μου ετοιμο και μονο σε αυτο το σημειο εχω προβλημα οποτε κανω copy paste τον κωδικα του emfaver στο αναλογο σημειο το μονο που μου βγαζει οταν το τρεχω ειναι "δωσε το ονομα του πελατη" και κολλητα(δεν βαζω καν ονομα)"δωσε αριθμο λογαριασμου" <---- για τον επομενο λογαριασμο κοκ

Βάλε ένα fflush(stdin); πριν από τα cin ( ή τα scanf) και ξαναδοκίμασε


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 23, 2008, 00:53:25 am
Λοιπόν τελικά έχω να προτείνω τον παρακάτω κώδικα αν κάποιος θέλει να μην υπάρχει maximum όριο εκ των προτέρων

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

int main()
{
    string name;
   
    cin>>name;
   
    int count=0;
    int nem=0;
   
    while(nem==0) {
      if( name[count]=='\0' ) {
          nem=1;
          }
      else {
        count++;
      }
    }
   
    cout<<count<<"xaraktires";
    getch();
   
    //ara o count deixnei to megethos tou string name
}   

Έτσι με τον count θα ξέρει το πρόγραμμα πόση μνήμη να δεσμεύσει στη συνέχεια.


Title: Re: [C++] 1η εργασία
Post by: Grecs on October 23, 2008, 01:04:21 am
Βασικα εκανα αυτο που ειπε ο Emfaver και λειτουργησε. Eβαλα μετα το τελευταιο cin
πριν τον κωδικα του το stdin kai εφτιαξε thanx


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 23, 2008, 01:07:54 am
Λοιπόν τελικά έχω να προτείνω τον παρακάτω κώδικα αν κάποιος θέλει να μην υπάρχει maximum όριο εκ των προτέρων

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

int main()
{
    string name;
   
    cin>>name;
   
    int count=0;
    int nem=0;
   
    while(nem==0) {
      if( name[count]=='\0' ) {
          nem=1;
          }
      else {
        count++;
      }
    }
   
    cout<<count<<"xaraktires";
    getch();
   
    //ara o count deixnei to megethos tou string name
}   

Έτσι με τον count θα ξέρει το πρόγραμμα πόση μνήμη να δεσμεύσει στη συνέχεια.
Όμως το name που βάζεις στην αρχή, πως ξέρουμε αν θα χωρέσει το string που θα εισάγεις?


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 23, 2008, 01:24:49 am
Πού λες; :???: Γιατί να μη χωρέσει;


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 23, 2008, 01:30:16 am
Πού λες; :???: Γιατί να μη χωρέσει;
λες cin>>name ,   όμως αν το string είναι πολύ μεγάλο που θα πάει να γράψει? Γιατί λογικά το string name  είναι ισοδύναμο με char *temp .
Δλδ και στο παράδειγμά μου, θα μπορούσα να παραλείψω τη temp=(char *)malloc(100*sizeof(char)); (να μη βάλω max κατά κάποιο τρόπο) αλλά μπορεί να υπάρξει πρόβλημα.


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 23, 2008, 01:37:31 am
Οκ καμιά διαφωνία, απλά προσπάθησα αφ'ενός να το απλοποιήσω λίγο (δλδ ο κώδικας να μην χρησιμοποιεί πολλές συναρτήσεις αλλά τις βασικές) και αφ'ετέρου να μην εισάγω κάποιον αύστηρο περιορισμό --που προφανώς και με τον τρόπο σου πάλι γίνεται. Ο μόνος περιορσιμός τώρα είναι η μνήμη του συστήματος.

Βέβαια εδώ που τα λέμε.. πόσο ποιά μεγάλο να είναι το string? :P αν είναι έτσι και περιορισμό να βάλεις πάλι το error θα το βγάλει αν ο χρήστης βάλει (πριν ας πούμε κάνεις έλεγχο του τί έβαλε) έναν τρομαχτικά μεγάλο αριθμό που δεν χωράει στη μνήμη!

edit: μεγάλο όνομα εννοούσα


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 23, 2008, 01:42:24 am
Δλδ δεν είπα ότι αυτό που έκανα εγώ είναι καλύτερο από το δικό σου.. ο καθένας ό,τι του αρέσει καλύτερα και τον βολεύει χρησιμοποιεί :)


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 23, 2008, 01:43:40 am
Βέβαια εδώ που τα λέμε.. πόσο ποιά μεγάλο να είναι το string? :P αν είναι έτσι και περιορισμό να βάλεις πάλι το error θα το βγάλει αν ο χρήστης βάλει (πριν ας πούμε κάνεις έλεγχο του τί έβαλε) έναν τρομαχτικά μεγάλο αριθμό που δεν χωράει στη μνήμη!

edit: μεγάλο όνομα εννοούσα
Ναι σωστά, απλά το είπα για το τυπικό της υπόθεσης!


Title: deleted
Post by: BOBoMASTORAS on October 23, 2008, 01:44:52 am
deleted


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 23, 2008, 01:46:11 am
και επειδή δεν ήμουν σίγουρος για τον ορισμό string name.Λέω μήπως λειτουργούσε διαφορετικά από το char* name αλλά τώρα λύθηκε η απορία!

edit: τλκ λειτουργεί διαφορετικά!  :D :D


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 23, 2008, 01:48:15 am
Δηλαδή το με το string δεσμεύεται τόσος χώρος όσος χρειάζεται


Title: deleted
Post by: BOBoMASTORAS on October 23, 2008, 01:54:01 am
deleted


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 23, 2008, 01:56:10 am
Δυστυχώς όμως δεν υποστηρίζεται ο τύπος μεταβλητής string από όλλους τους compilers. Π.χ. ο borland που έχει το ethmmy δεν τον αναγνωρίζει, εκτός και αν γράφεται κάπως αλλιώς σε αυτόν..

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


Title: Re: [C++] 1η εργασία
Post by: Grecs on October 23, 2008, 04:19:56 am
την εργασια με τι ονομα την αποθηκευουμε και την στελνουμε?


Title: Re: [C++] 1η εργασία
Post by: tolis_1 on October 23, 2008, 08:33:23 am
μπορει καποιος να εξηγησει με τις κλασεις πως θα γινει η δουλεια για να μπουμε κ οι νεοι στα πνευμα της c++?


Title: deleted
Post by: BOBoMASTORAS on October 23, 2008, 10:48:00 am
deleted


Title: deleted
Post by: BOBoMASTORAS on October 23, 2008, 11:15:30 am
deleted


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 23, 2008, 11:31:55 am
DevC++ χρησιμοποιούσα και εγώ και λειτουργούσε με string.  Στον BorlandC δοκίμασα και με std::string (std::string abc; ) και με string, αλλά βγάζει errors.

Για unclude αναγνωρίζει την <string.h>

Τον BorlandC τον είχα κρατήσει μόνο και μόνο για το τρομερό help file που έχει! Ό,τι εντολές χρειαζόμουν τις είχε με παράδειγμα.. δεν ξέρω αν είχε και ο DevC++ κάτι αντίστοιχο, πάντως εγώ δεν βρήκα κανένα χρήσιμο help file σε αυτόν.

Μάλλον τελικά ίσως και να υποστηρίζει strings αλλά με κάποιον άλλο τρόπο.. στο help file αναφέρονται string objects.



Title: Re: [C++] 1η εργασία
Post by: antonios on October 23, 2008, 21:08:57 pm
Παιδιά, αν μπορεί να μου απαντήσει κάποιος.. στην κλάση μέσα τι πρέπει να συμπεριλάβουμε?? απλά τα στοιχεί απου λέει στην αρχή??? και πότε θα τα καταχωρούμε αυτά??? μέσα στη main?


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 23, 2008, 21:11:36 pm
Παιδιά, αν μπορεί να μου απαντήσει κάποιος.. στην κλάση μέσα τι πρέπει να συμπεριλάβουμε?? απλά τα στοιχεί απου λέει στην αρχή??? και πότε θα τα καταχωρούμε αυτά??? μέσα στη main?

Θα βάλεις το υπόλοιπο, τον αριθμό λογαριασμού, το όνομα και τον κωδικό (και τις συναρτήσεις για την επεξεργασία τους).

Πρέπει να κάνεις μια συνάρτηση αρχικών συνθηκών που να ζητάει από τα χρήστη να εισάγει τα παραπάνω δεδομένα.


Title: Re: [C++] 1η εργασία
Post by: antonios on October 23, 2008, 21:32:13 pm
Τα στοιχεία πρέπει να διαβαστούν με ΄συναρτήσεις αρχικών συνθηκών?? Δεν μπορούμε να το κάνουμε μέσα από την main??


Title: Re: [C++] 1η εργασία
Post by: antonios on October 23, 2008, 22:10:12 pm
otan mou vgazei kati tetoio ti simainei??????????

#warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard................


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 23, 2008, 22:52:25 pm
otan mou vgazei kati tetoio ti simainei??????????

#warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard................
Τίποτα , ένα warning είναι μόνο, δεν εμπόδίζει την εκτέλεση. Λέει ότι η βιβλιοθήκη που κάνεις #include είναι κάπως ξεπερασμένη (δλδ δεν πολυχρησιμοποιείται πια, γτ μάλλον υπάρχουν καινούριες που κάνουν παρόμοια δουλειά)


Title: Re: [C++] 1η εργασία
Post by: antonios on October 23, 2008, 23:20:57 pm
Κανένας ευγενής να μας δείξει περίπου τις συναρτήσεις αρχικών μεταβλητών????? ^beg^

έχω λιώσει να προσπαθώ και δεν μπορώ να τις κάνω να δουλέψουν............... ^pcsleep^


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 23, 2008, 23:44:04 pm
Ένα παράδειγμα χωρίς να έχω διαβάσει τη συγκεκριμένη άσκηση ακριβώς τί ζητάει:

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


class pelatis {

private:
  float logariasmos;
  string onoma;
  int arithmos;

public:
  pelatis() {
    cout<<"Dose arithmo pelati\n";
    cin>>arithmos;
    cout<<"Dose onoma\n";
    cin>>onoma;
    cout<<"Dose logariasmo\n";
    cin>>logariasmos;
  }
 
  void onom() {
    cout<<onoma<<arithmos<<logariasmos;
}

};

int main() {
    pelatis ab;
   
    ab.onom();
   
    getch();
}

Η ab.onom() θα σου εμφανίσει (κολητά :P ) το όνομα τον αριθμό και το λογαριασμό..


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 23, 2008, 23:52:42 pm
Φυσικά υπάρχουν και άλλοι τρόποι να το κάνεις αυτό. Π.χ. μπορείς στη συνάρτηση αρχικών συνθηκών να τη κάνεις κάπως έτσι:  pelatis(int logariasm, float arith, string name) και να δώσεις τις τιμές μέσα από τη main. Οι σημειώσεις του Κορτέση υπάρχουν στο eTHMMY. Το καλύτερο πιστεύω θα ήταν να δεις ποιός τρόπος σε βολεύει και να ακούσεις προσεχτικά την υλοποίηση που θα προτείνουν στο εργαστήριο.


Title: Re: [C++] 1η εργασία
Post by: haas on October 24, 2008, 00:35:24 am
θελω να κανω μια ερωτηση:
οσον αφορα την δημιουργια των λογαριασμων στο σημειο στο οποιο ζηταω τα ονοματα και τα αποθηκευω σκεφτηκα να παιρνω τα ονοματα με μια gets() και να φτιαχνω εναν πινακα πχ ονοματα[] οπου το καθε κελι θα περιεχει την διευθυνση μνημης στην οποια ειναι αποθηκευμενο το καθε ονομα.ετσι θα μπορω να αναφερθω ξανα στα ονοματα ειτε με την διευθυνση ειτε καλωντας την τιμη του pointer...πως ομως θα υλοποιησω κατι τετοιο? θα ηταν σωστο ετσι?


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 24, 2008, 01:30:24 am
και η κλάση γιατί υπάρχει?? Θα δημιουργήσεις 10 διαφορετικά αντικείμενα της ίδιας κλάσης (που θα ανήκουν σε πίνακα) καθένα από τα οποία θα έχει το δικιά του μεταβλητή για να αποθηκεύσεις το όνομα.


Title: Re: [C++] 1η εργασία
Post by: evageliav on October 24, 2008, 04:13:36 am
Να ρωτήσω,η δέσμευση μνήμης με malloc για την καταχώρηση του ονόματος σε πίνακα,θα γίνει τη στιγμή που διαβάζουμε το όνομα ή δεν έχει σημασία;Ή μήπως δεν είναι κάν απαραίτητη;


Title: Re: [C++] 1η εργασία
Post by: Anyparktos on October 24, 2008, 15:56:14 pm
Μπορεί να μου πει κανείς μέχρι που χρειάζεται να διαβάσω από τις σημειώσεις για να μπορώ να κάνω την άσκηση?


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 24, 2008, 16:02:19 pm
Μπορεί να μου πει κανείς μέχρι που χρειάζεται να διαβάσω από τις σημειώσεις για να μπορώ να κάνω την άσκηση?
Αν διαβάσεις μέχρι και τις συναρτήσεις αρχικών συνθηκών φτάνει πιστεύω.

edit: και το 2.11 που λέει για πίνακες από αντικείμενα


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 24, 2008, 17:01:04 pm
Να ρωτήσω,η δέσμευση μνήμης με malloc για την καταχώρηση του ονόματος σε πίνακα,θα γίνει τη στιγμή που διαβάζουμε το όνομα ή δεν έχει σημασία;Ή μήπως δεν είναι κάν απαραίτητη;
Βασικά παρατηρώ κάτι πολύ σημαντικό στην εκφώνηση της εργασίας σας.

Δεν λέει πουθενά να δημιουργηθεί πίνακας στον οποίο θα καταχωρούνται τα ονόματα. Ο λογαριασμός (σαν object) θα καταχωρείται.

"""""
Για την εφαρμογή του λογισμικού να γραφεί η συνάρτηση main η οποία να δημιουργεί έναν πίνακα από 10 λογαριασμούς και στη συνέχεια να ζητά τον αριθμό ενός από αυτούς και να καταθέτει σε αυτόν ένα ποσό 1000 ευρώ εκτυπώνοντας και το νέο υπόλοιπο του λογαριασμού.  """""""""


Άρα απλά δημιουργείται ένας πίνακα 10 θεσέων τύπου object. Δλδ αν η κλάσση λέγεται pelatis, ο πίνακας δηλώνεται ως:

pelatis a[10];


Μετά που λογικά θα ζητάει ένα λογαριασμό π.χ.

Code:
int logariasmos;
cout<<"Dose arithmo logariasmou gia prosthesi xrimatwn\n";
cin>>logariasmos;

i=0;
while(1>0) {
  if(logariasmos==a[i].sinartisi_logariasmou()) {
    a[i].ananeosi_logariasmou(1000);
    break;
  }
}

cout<<"Neo upoloipo logariasmou "<<a[i].sinartisi_onoma()<<" einai "<<a[i].sinartisi_logariasmou();

getch();
..............................................

Με κάθε επιφύλαξη. Κάποιος περισσότερο έμπειρος ας πει και αυτός τη γνώμη του.


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 24, 2008, 17:05:18 pm
Ωχ άστο βλακεία μου, δεν κατάλαβα τί ρώτησες! :P ό,τι να'ναι...

Μπορείς να κάνεις το όνομα τύπου string έτσι να μη χρειαστεί να χρησιμοποιήσεις malloc (δες τα προηγούμενα ποστς του τόπικ).

edit:

Δηλαδή, string name;  cout<<"Give name";  cin>>name;



Title: Re: [C++] 1η εργασία
Post by: Grecs on October 24, 2008, 17:55:02 pm
την εργασια με τι ονομα την αποθηκευουμε και την στελνουμε?

Ξερει κανεις?


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 24, 2008, 18:02:04 pm
Γράμμα εργασίας+ΑΕΜ.cpp το λέει και στο ethmmy

"Ως παράδειγμα για την εργασία A και για το φοιτητή με ΑΕΜ 3456 το αντίστοιχο αρχείο θα είναι το Α3456.cpp"


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 24, 2008, 18:15:42 pm
Άρα απλά δημιουργείται ένας πίνακα 10 θεσέων τύπου object. Δλδ αν η κλάσση λέγεται pelatis, ο πίνακας δηλώνεται ως:

pelatis a[10];

Το πρόβλημα είναι ότι έτσι δεν εκκινά η συνάρτηση αρχικών συνθηκών για κάθε object-στοιχείο του πίνακα, το οποίο πρόβλημα λύνεται με τον παρακάτω κώδικα:

Code:
for(i=0;i<10;i++) {
  pelatis temp;
  a[i]=temp;
}
έτσι κάθε φορά η temp που σε κάθε loop καταστρέφεται, θα εκτελέσει τη συνάρτηση αρχικών συνθηκών για κάθε στοιχείο του πίνακα.

Σε μένα στον Dev έγραψα μόνο (πχ) pelatis a[10];  και τίποτα άλλο, παρόλα αυτά ,όταν εκτελώ το πρόγραμμα εκτελείται 10 φορές διαδοχικά η συνάρτηση αρχικών συνθηκών!  :???:


Title: Re: [C++] 1η εργασία
Post by: stefos on October 24, 2008, 18:20:57 pm
Μα αυτό δεν θέλουμε να γίνεται?


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 24, 2008, 18:22:38 pm
Μα αυτό δεν θέλουμε να γίνεται?

Αυτό θέλουμε να γίνεται ,αλλά παραπάνω ο Wanderer λέει ότι αν κάποιος γράψει απλά pelatis a[10]; αυτό δεν αρκεί, όμως στον Dev που το έκανα αρκεί.


Title: Re: [C++] 1η εργασία
Post by: stefos on October 24, 2008, 18:23:54 pm
Όντως αρκεί αυτό...
Σορρυ αλλά δεν παρακολουθούσα τα προηγούμενα ποστς!


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 24, 2008, 18:45:57 pm
Σωστός, δίκιο έχεις :)

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

το διορθώνω και στο παραπάνω ποστ για να μη μπερδέψω κανένα


Title: deleted
Post by: BOBoMASTORAS on October 24, 2008, 20:17:04 pm
deleted


Title: Re: [C++] 1η εργασία
Post by: kafeini on October 25, 2008, 02:27:24 am
Μάλλον χρειάζομαι βοήθεια! Έχω δηλώση την κλάση μ ως class log{...};
όταν όμως δηλώνω στη main τον πίνακα ως log A[10]; μου  βγάζει error: 'log' undeclared (first use thiw fuction)
Καμιά ιδέα βρε παιδιά πριν πυροβολήσω τον υπολογιστή μ?


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 25, 2008, 11:10:57 am
Μάλλον χρειάζομαι βοήθεια! Έχω δηλώση την κλάση μ ως class log{...};
όταν όμως δηλώνω στη main τον πίνακα ως log A[10]; μου  βγάζει error: 'log' undeclared (first use thiw fuction)
Καμιά ιδέα βρε παιδιά πριν πυροβολήσω τον υπολογιστή μ?
Μήπως έχεις βάλει καμιά συνάρτηση αρχικών τιμών με ορίσματα? Πόσταρε όλη την κλάση σου.


Title: Re: [C++] 1η εργασία
Post by: st0up on October 25, 2008, 12:51:37 pm
Να ρωτησω λιγο κατι... Γιατι να καλειται 10 φορες η συναρτηση? Νομιζα οτι απλα θελει να δημιουργησουμε εναν πινακα που τα 10 στοιχεια του να ειναι κλασεις και στη συνεχεια θα καλειται ενα απο τα 10 στοιχεια του πινακα (αφου στην εκφωνηση  μας λεει οτι ζητα εναν απο αυτους τους 10 λογαριασμους.) Και επιπλεον, κατι μαλλον ασχετο αλλα που δεν εχω καταλαβει... καθε φορα που δηλωνω εναν πινακα πρεπει να κανω και malloc? Δηλαδη δε γινεται απλα για το ονομα του πελατη να ορισω ενα string χωρις να δεσμευσω δυναμικα μνημη? Απλα μολις δινεται το ονομα να δεσμευει το προγραμμα την απαιτουμενη μνημη... Δεν ξερω, μπορει να λεω και βλακειες γιατι δεν το'χω και πολυ το θεμα της C++...


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 25, 2008, 13:02:14 pm
Να ρωτησω λιγο κατι... Γιατι να καλειται 10 φορες η συναρτηση? Νομιζα οτι απλα θελει να δημιουργησουμε εναν πινακα που τα 10 στοιχεια του να ειναι κλασεις και στη συνεχεια θα καλειται ενα απο τα 10 στοιχεια του πινακα (αφου στην εκφωνηση  μας λεει οτι ζητα εναν απο αυτους τους 10 λογαριασμους.)

Και επιπλεον, κατι μαλλον ασχετο αλλα που δεν εχω καταλαβει... καθε φορα που δηλωνω εναν πινακα πρεπει να κανω και malloc? Δηλαδη δε γινεται απλα για το ονομα του πελατη να ορισω ενα string χωρις να δεσμευσω δυναμικα μνημη? Απλα μολις δινεται το ονομα να δεσμευει το προγραμμα την απαιτουμενη μνημη... Δεν ξερω, μπορει να λεω και βλακειες γιατι δεν το'χω και πολυ το θεμα της C++...

Τι σχέση έχει πόσες φορές θα κληθεί η συνάρτηση αρχικών τιμών με το πόσους λογαριασμούς ζητάει ? Αναγκαστικά όταν γράψεις log a[10]; θα κληθεί 10 φορές η συνάρτηση αρχ. τιμών(μια φορά για κάθε αντικείμενο)  η οποία θα ζητάει να εισάγεις τα στοιχεία.  Μετά αφού καταχωρηθούν τα στοιχεία θα ζητάς έναν αριθμό λογαριασμού από τους 10 για να γίνει η καταχώρηση των 1000 ευρώ.

Η δεύτερη ερώτηση σου έχει συζητηθεί αρκετά ,πιο πριν.


Title: Re: [C++] 1η εργασία
Post by: st0up on October 25, 2008, 13:13:57 pm
Νομιζω οτι καταλαβα :) ΤΗΝΧ!!!


Title: Re: [C++] 1η εργασία
Post by: Time_Tripper on October 25, 2008, 15:10:34 pm
Να ρωτησω μια μικρη λεπτομερεια:

Θελω να χρησιμοποιησω την boolean για να κανει ελεγχο αν βρεθηκε ο λογαριασμος που ζηταει ο χρηστης, ομως δε μας την εχει διδαξει ακομα ο Κορτεσης. Μπορω να τη χρησιμοποιησω ή θα με βρισει - πει οτι δεν επρεπε - οτι την αντεγραψα κλπ? ^idiot^
Μπορω βεβαια να κανω τον ελεγχο και με μεταβλητη που να παιρνει τιμες 0 και 1 αντι για true και false, αλλα δεν μου φαινεται και πολυ σωστος προγραμματισμος... :P


Title: Re: [C++] 1η εργασία
Post by: radio on October 25, 2008, 15:41:29 pm
Σιγουρα θελει συναρτηση αρχικων συνθηκων? Γιατι λεει να γινει συμφωνα με την αρχη της ενσωματωσης δηλαδη οι μεταβλητες της κλασης να τροποποιουνται μονο απο συναρτησεις
μελη της κλασης? :???:


Title: Re: [C++] 1η εργασία
Post by: Time_Tripper on October 25, 2008, 16:02:16 pm
Ε και η συναρτηση αρχικων συνθηκων μελος της κλασης ειναι... ::)
Ασε που το τονισε πολυ στο μαθημα οποτε λογικα τη θελει


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 25, 2008, 17:35:03 pm
Να σε κατηγορήσει ότι την αντέγραψες αποκλείεται!!


Title: Re: [C++] 1η εργασία
Post by: Time_Tripper on October 25, 2008, 19:42:36 pm
Κοιτα Κορτεσης ειναι αυτος, ολα να τα περιμενεις!!! :D :D :D


Title: Re: [C++] 1η εργασία
Post by: evageliav on October 25, 2008, 22:30:14 pm
Να ρωτησω μια μικρη λεπτομερεια:

Θελω να χρησιμοποιησω την boolean για να κανει ελεγχο αν βρεθηκε ο λογαριασμος που ζηταει ο χρηστης, ομως δε μας την εχει διδαξει ακομα ο Κορτεσης. Μπορω να τη χρησιμοποιησω ή θα με βρισει - πει οτι δεν επρεπε - οτι την αντεγραψα κλπ? ^idiot^
Μπορω βεβαια να κανω τον ελεγχο και με μεταβλητη που να παιρνει τιμες 0 και 1 αντι για true και false, αλλα δεν μου φαινεται και πολυ σωστος προγραμματισμος... :P

Εγώ νομίζω οτι δεν υπάρχει τέτοιο πρόβλημα,μπορείς να το χρησιμοποιήσεις,άλλωστε αν έβλεπες πέρυσι τις λύσεις των προγράμματων που ανέβαζαν στο ετημμυ υπήρχαν και εντολές που δεν έιχαν διδαχθεί.Αλλά μπορείς εναλλακτικά να κάνεις το ίδιο πράγμα όπως λές αντί των μεταβλητών αληθείας(boolean) με 0,1.


Title: Re: [C++] 1η εργασία
Post by: evageliav on October 25, 2008, 23:50:23 pm
Να ρωτήσω κάτι σχετικά με τη συνάρτησση αρχικών τιμών:
Εχω υλοποιήσει την συνάρτησση αρχικών τιμών,έτσι ώστε να δημιουργεί τους 10 λογαριασμούς,και να διαβάζει τα στοιχεία τους.Όταν λοιπόν στην main την καλώ με αυτο τον τρόπο: clientData::clientData(void);  δεν εκτελείται,μήπως είναι απαραίτητο να της βάλω ορίσματα,τις μεταβλητές που επεξεργάζεται στο σώμα της;

Μου βγάζει το λάθος:
expected-primary expression before "void".


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 26, 2008, 00:37:03 am
Όταν λες ότι τη δημιούργησες έτσι ώστε να δημιουργεί 10 λογαριασμούς τί εννοείς; :???: Για κάθε λογαριασμό (δλδ για κάθε object που συμβολίζει ένα λογαριασμό) θα τρέξει και η δική του συνάρτηση αρχικών συνθηκών.

Αυτό που βάζεις στη main νομίζω ότι είναι λάθος, δεν στέκει. Εσύ δημιουργείς έναν πίνακα 10 θέσεων, για να αποθηκεύσεις 10 object τύπου clientData. Η συνάρτηση αρχικών συνθηκών εκτελείται αυτόματα με τη δημιουργία του object. Δεν την τρέχεις εσύ από τη main.

Πιστεύω ότι κάπως έτσι πρέπει να το κάνεις (προφανώς υπάρχουν και άλλες συναρτήσεις/μεταβλητές, ενδεικτικά το γράφω):
Code:
class clientData {
  int a;
  string b;
 
  public:
    clientData() {
      cout<<"a\n";
      cin>>a;
      cout<<"b\n";
      cin>>b;
      }
};

int main() {
  clientData a[10];
}

Φυσικά όπως γράφουν και οι σημειώσεις, μπορείς τον κώδικα του τί κάνει ο constructor να τον γράψεις και έξω από την κλάση, με το τρόπο που περιγράφουν.

Τώρα που δημιούργησες τα αντικείμενα στον πίνακα, θα τρέξουν με τη σειρά οι συναρτήσεις αρχικών συνθηκών τους.
...

Κάτι έλεγε ο Bob προηγουμένως για το ότι δεν πρέπει να υπάρχουν συναρτήσεις εισόδου/εξόδου στον constructor (κάτι τέτοιο κατάλαβα), στην περίπτωση που θες τα cout και cin να τα δίνεις από τη main μπορείς να βάλεις ορίσματα στον constructor ( clientData(string n, int l, e.t.c. );  ) Στις σημειώσεις περιγράφει αυτή τη διαδικασία.


Title: Re: [C++] 1η εργασία
Post by: Itachi on October 26, 2008, 15:23:57 pm
I have a problem...
Για μια απο τις public συναρτησεις μου βγαζει το εξης error:

'acc::neo(char *, char *, int)' is not a member of 'acc'

can anybody help?



Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 26, 2008, 15:28:17 pm
I have a problem...
Για μια απο τις public συναρτησεις μου βγαζει το εξης error:

'acc::neo(char *, char *, int)' is not a member of 'acc'

can anybody help?


Γράψε λίγο ακριβώς πως όρισες τη συνάρτηση στην κλάση και στη συνέχεια τον κώδικα


Title: Re: [C++] 1η εργασία
Post by: vasso on October 26, 2008, 15:32:34 pm
I have a problem...
Για μια απο τις public συναρτησεις μου βγαζει το εξης error:

'acc::neo(char *, char *, int)' is not a member of 'acc'

can anybody help?



δώσε μια μεταβλητή για το κάθε όρισμα δίπλα στον τύπο τους... πχ
neo(char * x, char * y, int a)


Title: Re: [C++] 1η εργασία
Post by: Itachi on October 26, 2008, 15:41:25 pm
Code:
class acc{
  char num[11];
  char name[100];
  int pin;
  float money;
 public:
  void neo(char *num, char *name, int pin);
  void deposit(float dep);
  void withdraw(float with);
  void rest();
  void find();
}

void acc::neo(char *num, char *name, int pin);
{
  cout << "ar log";
  gets(num);
  cout << "name";
  gets(name);
  cout << "pin";
  cin >> pin;
  money=0;
}


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 26, 2008, 15:45:40 pm
void acc::neo(char *num, char *name, int pin);   <- βγάλε το ερωτηματικό
{
  cout << "ar log";
  gets(num);
  cout << "name";
  gets(name);
  cout << "pin";
  cin >> pin;
  money=0;
}

edit : και νομίζω θέλει και στο τέλος της κλάσης δηλαδή έτσι :

class acc{

} ;  <- εδώ


Title: Re: [C++] 1η εργασία
Post by: Itachi on October 26, 2008, 15:51:14 pm
Τελικα δεν υπαρχει το ερωτηματικο απλα εκανα λαθος στην αντιγραφη απο το λαπτοπ στο σταθερο... :D
Τα εχω παιξει λιγακι...κατι αλλο κατα νου;;; Να σου στειλω ολο τον κωδικα σε πμ να τον δεις ολοκληρωμενο;;;


Title: Re: [C++] 1η εργασία
Post by: Itachi on October 26, 2008, 15:53:19 pm
edit : και νομίζω θέλει και στο τέλος της κλάσης δηλαδή έτσι :

class acc{

} ;  <- εδώ

Θεος δουλεψε το edit.... thnx....


Title: Re: [C++] 1η εργασία
Post by: Matzika on October 26, 2008, 18:38:11 pm
Να ρωτήσω και εγώ κάτι που έχω απορία ??? ::)
στη main θα ζητάμε αφου έχουμε δημιουργησει τον πίνακα των δεκα αντικειμένων τον αριθμό του λογαριασμου για να δουμε που θα καταθέσουμε το ποσο...αυτό πως το κάνουμε???γιατι η μεταβλητή για τον αριθμό λογαριασμού είναι private αρα δεν μπορεί να χρησιμοποιηθεί ετσι στη main...βοήθεια??εχω κολλήσει... :-[


Title: deleted
Post by: BOBoMASTORAS on October 26, 2008, 18:52:38 pm
deleted


Title: Re: [C++] 1η εργασία
Post by: Matzika on October 26, 2008, 18:57:05 pm
πω ναι!σωστό!
τι χαζή που είμαι... :P


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 26, 2008, 19:03:23 pm
Έχω ένα πρόβλημα σχετικά με το θέμα της "ασφάλειας"

Πάνω κάτω βγήκαν 10 συναρτήσεις. Οι 8 έχουν απαιτούν να έχεις κάνει login πρώτα στο λογαριασμό. Η 1 σε κάνει login ενώ η τελευταία logout.
Και ιδού το πρόβλημα. Αν δεν κληθεί η logout ο λογαριασμός παραμένει ανοιχτός, άρα μπορείς να κάνεις κατάθεση ανάληψη τροποποίηση κτλ. Μία λύση θα ήταν να ζητείται το pin κάθε φορά που θέλεις να κάνεις κατάθεση, ανάληψη αλλά κάτι τέτοιο δεν είναι σωστή λύση.

Καμιά ιδέα?


Title: Re: [C++] 1η εργασία
Post by: Matzika on October 26, 2008, 19:06:25 pm
συγνώμη...ζητάει κατι τέτοιο?


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 26, 2008, 19:09:15 pm
Σε συζήτηση που έγινε με τον Κορτέση αναφέρθηκε πολλάκις το θέμα του pin
αμα δώσεις pin δεν πρέπει να κάνεις και logout?


Title: Re: [C++] 1η εργασία
Post by: Matzika on October 26, 2008, 19:12:55 pm
Ναι το pin καποιο ρόλο πρεπει να παίζει αλλα νομίζω ότι θα έλεγε κατι σχετικο στην εκφωνηση....


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 26, 2008, 19:26:46 pm
Επειδή η εκφώνηση είναι πολύ φλου ο καθένας κάνει ότι θέλει. Το πιν παίζει οπωσδήποτε ρόλο στην ανάληψη, δλδ αν δε το δώσει ο χρήστης να μη μπορεί με τπτ να κάνει ανάληψη. Στην κατάθεση νομίζω δεν είναι απαραίτητο γιατί πολλές φορές γίνονται καταθέσεις σε άλλους λογαριασμούς.


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 26, 2008, 19:32:59 pm
Σωστό, να και κάτι που ξέφυγε.

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

Γιατί μιλάει π.χ. για ανάληψη αλλά δε λέει πουθενά ότι θα το εμπεριέχει η main. Να υπάρχει η συνάρτηση κλάσης εύκαιρη αλλά να μην χρησιμοποιείται...


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 26, 2008, 19:48:48 pm
Ναι πράγματι. Και επειδή η main δε ζητάει και πολλά πράγματα , δυσκολεύεται κανείς στο πως θα υλοποιήσει το πρόγραμμα του ολοκληρωμένα


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 26, 2008, 19:57:19 pm
Παιδιά έχω μια απορία.Μου βγάζει αυτό το σφάλμα όταν χρησιμοποιώ την εντολή cout.
14 C:\Users\Administrator\Desktop\Untitled1.cpp `cout' undeclared (first use this function)
Γιατί?
Τι πρέπει να κάνω include;

edit:Χαζομάρα μου.Δεν είχα γράψει το using namespace std...


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 26, 2008, 20:01:52 pm
την iostream.h


Title: Re: [C++] 1η εργασία
Post by: evageliav on October 26, 2008, 20:56:43 pm
Quote
Προφανώς όλες οι κλάσεις μπορούν να διαθέτουν μεθόδους για I/O από την κονσόλα αλλά αυτό δε πρέπει να θεωρείται ως η νορμάλ λειτουργία. Οπότε το να διαβάζονται οι τιμές από τον constructor δεν είναι και το καλυτερο
Αν δε διαβάζουμε τα στοιχεία που θέλουμε από τον constructor τότε τι θα κάνει ο constructor,θα τον ορίσουμε και θα έχει στο σώμα του καμία εντολή;


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 26, 2008, 21:00:17 pm
Θα ορίζει το ποσό του λογαριασμού στο 0 (μηδέν)
Αν χρησιμοποιείς login και pin θα ορίζει το pin στο 0 και τη flag του login στο off (ή στο on ανάλογα αν θες την 1η φορά να έχεις πρόσβαση με την δημιουργία του λογαριασμού)


Title: Re: [C++] 1η εργασία
Post by: Anyparktos on October 26, 2008, 21:05:49 pm
Βασικά  δε βρίσκω πουθενά στις σημειώσεις ή το βιβλίο την αρχή της ενσωμάτωσης μπορεί καποιος να μου πει τι είναι αυτή?Ή εστω που την έχει στο βιβλίο?


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 26, 2008, 21:08:16 pm
Βασικά  δε βρίσκω πουθενά στις σημειώσεις ή το βιβλίο την αρχή της ενσωμάτωσης μπορεί καποιος να μου πει τι είναι αυτή?Ή εστω που την έχει στο βιβλίο?

http://alexander.ee.auth.gr:8083/eTHMMY/archive%5C146%5CdownloadFile%5C2044%5Carxh-enswmatwsis.ppt


Title: Re: [C++] 1η εργασία
Post by: Anyparktos on October 26, 2008, 21:13:15 pm
Έλεος...Δλδ ό,τι ακριβώς λέει στις σημειώσεις για τις κλάσεις ε?
Thanx emfa...


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 26, 2008, 21:22:29 pm
gia na bgoume apo ena loop xrisimopoioume to continue etsi???


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 26, 2008, 21:35:11 pm
Αν γράψουμε την συνάρτηση αρχικών συνθηκών μέσα στην κλάση πώς μπορούμε να δείχνουμε στον χρήστη για ποιον λογαριασμό εισάγει στοιχεία εφόσον δεν μπορούμε να βάλουμε μετρητή?

Για παράδειγμα να γράφει:
1os logariasmos:
.
.
.
2os logariasmos:
.
.
.
 klp klp


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 26, 2008, 21:58:59 pm
Αν γράψουμε την συνάρτηση αρχικών συνθηκών μέσα στην κλάση πώς μπορούμε να δείχνουμε στον χρήστη για ποιον λογαριασμό εισάγει στοιχεία εφόσον δεν μπορούμε να βάλουμε μετρητή?

Για παράδειγμα να γράφει:
1os logariasmos:
.
.
.
2os logariasmos:
.
.
.
 klp klp

και εγώ είχα αυτό το πρόβλημα ,αλλά έβαλα καθολική μεταβλητή counter=0 και στη συναρτηση αρχ τιμών βάζεις counter++


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 26, 2008, 22:10:47 pm
^peace^ thanks a lot....


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 26, 2008, 22:11:48 pm
exoume to continue to opoio se bgazei apo kapoio loop kai to end to opoio se bgazei apo to  programma etsi????


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 26, 2008, 22:20:39 pm
exoume to continue to opoio se bgazei apo kapoio loop kai to end to opoio se bgazei apo to  programma etsi????

continue και exit μήπως εννοείς?


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 26, 2008, 22:21:43 pm
aaa to exit(0); einai etsi????


kai se poio include???


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 26, 2008, 22:29:11 pm
stdlib.h


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 26, 2008, 22:32:33 pm
Το υπόλοιπο το ορίζουμε εξ'αρχής μηδέν για τον κάθε λογαριασμό ή ζητάμε από τον χρήστη να βάλει ότι υπόλοιπο θέλει?


Title: Re: [C++] 1η εργασία
Post by: pitsa on October 26, 2008, 22:43:37 pm
έβαλα μια συνθήκη if (option!=4 && option=2)

και μου έβγαλε error non-lvalue in assignment

τι θα πει αυτό???????


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 26, 2008, 22:45:18 pm
έβαλα μια συνθήκη if (option!=4 && option=2)

και μου έβγαλε error non-lvalue in assignment

τι θα πει αυτό???????

δοκίμασε option == 2


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 26, 2008, 22:52:03 pm
όχι option=2 αλλά option==2

με το ένα = έδωσες στη μεταβλητή option την τιμή 2 οπότε η συνθήκη δεν είχε νόημα


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 26, 2008, 22:54:55 pm
Το υπόλοιπο το ορίζουμε εξ'αρχής μηδέν για τον κάθε λογαριασμό ή ζητάμε από τον χρήστη να βάλει ότι υπόλοιπο θέλει?

Για αυτό καμιά απάντηση;;;;;;


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 26, 2008, 22:56:36 pm
Ότι κάνεις κέφι (πραγματικά δλδ αφού δεν προσδιορίζεται)


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 26, 2008, 23:01:35 pm
Για να κάνουμε έλεγχο του pin που δίνει ο χρήστης στην main πρέπει να το έχουμε ορίσει στο public μέρος της κλάσσης.Σωστά;Έτσι όμως δεν παρέχουμε "ασφάλεια στο λογαριασμό από μη εξουσιοδοτημένους χρήστες.Κάνω λάθος; :-\

Για να το κάνουμε πιο λιανά τι βάζουμε private και τι public;Οέο;;; :o


Title: Re: [C++] 1η εργασία
Post by: pitsa on October 26, 2008, 23:05:48 pm
έβαλα μια συνθήκη if (option!=4 && option=2)

και μου έβγαλε error non-lvalue in assignment

τι θα πει αυτό???????

δοκίμασε option == 2
όχι option=2 αλλά option==2

με το ένα = έδωσες στη μεταβλητή option την τιμή 2 οπότε η συνθήκη δεν είχε νόημα

ναι ναι σωστά!!!
θενξ ε λοτ!!! :)


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 26, 2008, 23:07:46 pm
Για να κάνουμε έλεγχο του pin που δίνει ο χρήστης στην main πρέπει να το έχουμε ορίσει στο public μέρος της κλάσσης.Σωστά;Έτσι όμως δεν παρέχουμε "ασφάλεια στο λογαριασμό από μη εξουσιοδοτημένους χρήστες.Κάνω λάθος; :-\

Για να το κάνουμε πιο λιανά τι βάζουμε private και τι public;Οέο;;; :o

Όλες οι μεταβλητές private .Αν θες πρόσβαση σε αυτές κάνε public συναρτήσεις που να τις αλλάζουν, να τις επιστρέφουν απλά κτλ


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 26, 2008, 23:26:46 pm
Έστω ότι κάνω μια συνάρτηση long kwdikos() για να μου επιστρέφει το pin.Εφόσον έχω ορίσει τον πίνακα αντικειμένων μέσα στην main πώς γίνεται να διευκρινίσω στην συνάρτηση ποιανού λογαριασμού το pin της ζητάω;Δεν ξέρω αν γίνομαι κατανοητός.... :-\


Title: Re: [C++] 1η εργασία
Post by: pitsa on October 26, 2008, 23:37:29 pm
έχω ένα πρόβλημα μεγάλο!!!
όταν τρέχω το πρόγραμμα,εκεί που δημιουργεί τα αντικείμενα μου ζητάει πιν και όνομα!μόλις βάζω το όνομα μου βγάζει άπειρες φορές ένα cout που έχω βάλει αρκετά αργότερα στο πρόγραμμα!!!
δεν ξέρω αν κατάλαβε κανείς,αλλά μάλλον ή προσπερνάει κάποιες εντολές ή παίρνει το όνομα σαν τη μεταβλητή στην οποία κάνω τον έλεγχο αργότερα.... :(
έχει κανείς καμμιά ιδεά??


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 26, 2008, 23:49:29 pm
Έστω ότι κάνω μια συνάρτηση long kwdikos() για να μου επιστρέφει το pin.Εφόσον έχω ορίσει τον πίνακα αντικειμένων μέσα στην main πώς γίνεται να διευκρινίσω στην συνάρτηση ποιανού λογαριασμού το pin της ζητάω;Δεν ξέρω αν γίνομαι κατανοητός.... :-\
Μπορείς να κάνεις το εξής
Εφόσον φτιάξεις τον πίνακα μπορείς να ενσωματώσεις 1 συνάρτηση οι οποία θα σου επιστρέφει όλους τους αριθμούς λογαριασμών, χωρίς να ζητάει κάποιο pin
Όταν θα βρεις αυτόν τον αριθμό θα σταματάει η επανάληψη και θα ζητάει το pin ο compiler ξέρει ότι ο κωδικός που εισάγεις αφορά το αντικείμενο στη θέση π.χ. 5 του πίνακα αντικειμένων.


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 26, 2008, 23:58:17 pm
έχω ένα πρόβλημα μεγάλο!!!
όταν τρέχω το πρόγραμμα,εκεί που δημιουργεί τα αντικείμενα μου ζητάει πιν και όνομα!μόλις βάζω το όνομα μου βγάζει άπειρες φορές ένα cout που έχω βάλει αρκετά αργότερα στο πρόγραμμα!!!
δεν ξέρω αν κατάλαβε κανείς,αλλά μάλλον ή προσπερνάει κάποιες εντολές ή παίρνει το όνομα σαν τη μεταβλητή στην οποία κάνω τον έλεγχο αργότερα.... :(
έχει κανείς καμμιά ιδεά??
Το πρώτο που προσωπικά μου έρχεται με αυτά τα δεδομένα είναι ότι ίσως στο όνομα χρησιμοποίησες το χαρακτήρα "κενού" spacebar, αν το κάνεις αυτό κάποιοι compilers π.χ. DevC++ πηδούν γραμμές, δεν ξέρω θυμάμαι ακριβώς γιατί συμβαίνει :-\ δοκίμασε να το εισάγεις κάπως έτσι--> "Kostas_Papadopoulos".


Title: Re: [C++] 1η εργασία
Post by: pitsa on October 27, 2008, 00:00:19 am
έχω ένα πρόβλημα μεγάλο!!!
όταν τρέχω το πρόγραμμα,εκεί που δημιουργεί τα αντικείμενα μου ζητάει πιν και όνομα!μόλις βάζω το όνομα μου βγάζει άπειρες φορές ένα cout που έχω βάλει αρκετά αργότερα στο πρόγραμμα!!!
δεν ξέρω αν κατάλαβε κανείς,αλλά μάλλον ή προσπερνάει κάποιες εντολές ή παίρνει το όνομα σαν τη μεταβλητή στην οποία κάνω τον έλεγχο αργότερα.... :(
έχει κανείς καμμιά ιδεά??
Το πρώτο που προσωπικά μου έρχεται με αυτά τα δεδομένα είναι ότι ίσως στο όνομα χρησιμοποίησες το χαρακτήρα "κενού" spacebar, αν το κάνεις αυτό κάποιοι compilers π.χ. DevC++ πηδούν γραμμές, δεν ξέρω θυμάμαι ακριβώς γιατί συμβαίνει :-\ δοκίμασε να το εισάγεις κάπως έτσι--> "Kostas_Papadopoulos".
όχι έβαλα ένα μόνο όνομα γιατί έτσι κι αλλιώς το έκανα δοκιμαστικά!!!! :(


Title: Re: [C++] 1η εργασία
Post by: crystal on October 27, 2008, 00:00:47 am
Kαι με gets() εχει προβλημα με το κενο??  :???:


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 27, 2008, 00:10:34 am
Αυτός ο κώδικας αν δώσεις στην a την τιμή "s a" στον DevC++ που έχω μου βγάζει κατευθείαν το μήνυμα "a+b" "πηδώντας" στην εντολή cin>>b;
Code:
#include <iostream>
using namespace std;
#include <conio.h>

int main() {
  char *c, *d;
  string a,b;
 
  cout<<"Give a and b\n";
  cin>>a;
 
  cin>>b;
 
  cout<<"a+b";
 
  getch();
}

Για gets() όχι από ό,τι βλέπω δεν μου βγάζει σφάλμα χρησιμοποιώντας spacebar.


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 27, 2008, 00:12:43 am
Pitsa μήπως θα έπρεπε να δώσεις ένα τμήμα του κώδικά σου;


Title: Re: [C++] 1η εργασία
Post by: pitsa on October 27, 2008, 00:23:46 am
οκ απλά πρέπει να έχω κάνει και πολύ κουλά πράγματα.......

Code:
logariasmos::logariasmos() {

    cout<<"Parakalw dwste to pin sas!\n";

    cin>>PIN;

    cout<<"Parakalw dwste to omoma sas!\n";

    cin>>ONOMA;

    ypoloipo=0;

}   




και μετά μου εμφανίζει έξοδο από τη μαιν!!


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 27, 2008, 00:27:58 am
Μήπως να έδινες και το τμήμα που δημιουργείς το object στην main; :P


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 27, 2008, 00:29:47 am
Έστω ότι κάνω μια συνάρτηση long kwdikos() για να μου επιστρέφει το pin.Εφόσον έχω ορίσει τον πίνακα αντικειμένων μέσα στην main πώς γίνεται να διευκρινίσω στην συνάρτηση ποιανού λογαριασμού το pin της ζητάω;Δεν ξέρω αν γίνομαι κατανοητός.... :-\
Μπορείς να κάνεις το εξής
Εφόσον φτιάξεις τον πίνακα μπορείς να ενσωματώσεις 1 συνάρτηση οι οποία θα σου επιστρέφει όλους τους αριθμούς λογαριασμών, χωρίς να ζητάει κάποιο pin
Όταν θα βρεις αυτόν τον αριθμό θα σταματάει η επανάληψη και θα ζητάει το pin ο compiler ξέρει ότι ο κωδικός που εισάγεις αφορά το αντικείμενο στη θέση π.χ. 5 του πίνακα αντικειμένων.

Την βρήκα την λύση τελικά αλλά με άλλο τρόπο...Με βοήθησε η σελίδα 307 του βιβλίου.


Title: Re: [C++] 1η εργασία
Post by: pitsa on October 27, 2008, 00:30:23 am
Μήπως να έδινες και το τμήμα που δημιουργείς το object στην main; :P
βασικά απλά το δηλώνω..... :-[ :-[

Code:
    logariasmos PINAKAS[10];

λογαριασμός είναι η κλάση και πινακας ο πίνακας με τους 10 λογαριασμους!!! :P


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 27, 2008, 00:33:33 am
Τί να πω δε σε θέλει :P Δεν τον ποστάρεις μεγαλύτερο τμήμα του κώδικα; :D Αν θες στείλε τόν μου σε pm να τον τρέξω στον DevC++.


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 27, 2008, 00:59:07 am
Για να μην κλείνει καταευθείαν το παράθυρο εκτέλεσης του προγράμματος πια εντολή γράφαμε στον dev?Κάτι με System και pause είχε να κάνει αλλάδεν θυμλαμαι ακριβώς...Please help


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 27, 2008, 01:01:17 am
Εγώ χρησιμοποιώ την εντολή getch(); αφού κάνω include τη βιβλιοθήκη <conio.h>

Νομίζω αυτή που λες είναι η εντολή system("pause");


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 27, 2008, 01:13:30 am
Εγώ χρησιμοποιώ την εντολή getch(); αφού κάνω include τη βιβλιοθήκη <conio.h>

Νομίζω αυτή που λες είναι η εντολή system("pause");

Α μπράβο.Σ'ευχαριστώ.Ουφφφφφφφφ τελείωσε η πρώτη!!!! :D


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 27, 2008, 10:57:40 am
16 C:\Documents and Settings\dimiu\ÅðéöÜíåéá åñãáóßáò\Ergasia 1.cpp new types may not be defined in a return type
16 C:\Documents and Settings\dimiu\ÅðéöÜíåéá åñãáóßáò\Ergasia 1.cpp return type specification for constructor invalid

Μου βγάζει αυτά τα δύο errors.Τι ακριβώς εννοεί???


Title: Re: [C++] 1η εργασία
Post by: Καμένος on October 27, 2008, 11:04:23 am
Για postare τον κώδικα εκεί που σου πετάει το error


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 27, 2008, 11:06:44 am
class Logariasmos{
      int number,pin;
      float ypoloipo;
      char name[14];
      public:
              Logariasmos(void);
              void ypiresies(float x,int f);
              int get_number(void);
              void out(void);
}


Logariasmos::Logariasmos(void){
                           cout<<"Dose arithmo logariasmou";
                           cout<<"\n";
                           cin>>number;
                           cout<<"Dose arithmo pin";
                           cout<<"\n";
                           cin>>pin;
                           cout<<"DOse onoma katoxou logariasmou";
                           cout<<"\n";
                           cin>>name;
                           ypoloipo=0;
}


Title: Re: [C++] 1η εργασία
Post by: Καμένος on October 27, 2008, 11:22:35 am
class Logariasmos{
      int number,pin;
      float ypoloipo;
      char name[14];
      public:
              Logariasmos(void);
              void ypiresies(float x,int f);
              int get_number(void);
              void out(void);
};

Έχεις ξεχάσει ερωτηματικό στο τέλος της κλάσης. Δές δύο σειρές πιο πάνω στο }.


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 27, 2008, 11:24:28 am
Είμαι<-> ^banned^ ^tomato^ ^tomato^  ^aytoxeir^

Ευχαριστώ ρε!!!!


Title: Re: [C++] 1η εργασία
Post by: saddodancererer on October 27, 2008, 12:13:27 pm
παιδια ελεος εχω διαβασει  τα απιστευτα εδω.. πρωτη ασκηση ειναι εισαγωγη στις κλασεις και δεν μπορει να ειναι τοσο δυσκολη πια... εγω εκανα απλα βηματα και τρεχει.. μονο μια ερωτηση αν και ξαναειπωθηκε και δεν καταλαβα την απαντηση.. πως θα γινεται ο ελεγχος για το αν το πιν ειναι σωστο στον χρηστη για καταθεση χρηματων? και επισης επειδη οντως ειναι πολυ φλου, θα υπαρχει ειδικη συναρτηση οπου θα προστιθεται το ποσο των 1000 ευρω στον λογαριασμο?


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 27, 2008, 12:18:15 pm
fisika tha iparxei sinartisi allios pos???


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 27, 2008, 12:20:41 pm
1)πως θα γινεται ο ελεγχος για το αν το πιν ειναι σωστο στον χρηστη για καταθεση χρηματων?
2)και επισης επειδη οντως ειναι πολυ φλου, θα υπαρχει ειδικη συναρτηση οπου θα προστιθεται το ποσο των 1000 ευρω στον λογαριασμο?

1)Θα έχεις μία ξεχωριστή συνάρτηση κλάσης η οποία θα δέχεται σαν όρισμα το pin (από τη main, όταν θα κληθεί δλδ μέσω αυτής) και θα το συγκρίνει με μια ιδιωτική μεταβλητή της κλάση που θα περιέχει τον πραγματικό κωδικό. Αν είναι ο σωστός, θα αλλάζει κάποιο flag το οποίο θα ελέγχεται ως προς την τιμή του όταν θα καλείται κάποια συνάρτηση κατάθεσης κτλ

2)Δε χρειάζεται ειδική συνάρτηση. Απλώς η main θα καλεί τη συνάρτηση κλάσης για κατάθεση με όρισμα 1000 ευρώ (χωρίς pin όπως σημείωσε ο συν. Emfa)


Title: Re: [C++] 1η εργασία
Post by: saddodancererer on October 27, 2008, 12:24:23 pm
ανετα.. ;) απλα εχεις τη συναρτηση καταθεσης

 float queue::katathesi(float poso)
{
    ipoloipo=ipoloipo+poso;
}

και (παντα επειδη ειναι φλου η ασκηση) και απλα στην main λες:

  cout<<"dwste ton arithmo tou logariasmou ston opoio tha prostethun 1000 eyrw:\n";
    cin>>m;
    queue log[3];


    for (i=0;i<3;i++){

      if (i==m){
          log.katathesi(1000);
          log.ektyposi();
οποτε στην συναρτηση προστιθενται 1000 ευρω αν ειναι η επιλεγμενη ;)    απλα ας μου πει κανεις πως κανω ελεγχο για pin μεσα στην συναρτηση καταθεσης και αναληψης παρακαλω...


Title: Re: [C++] 1η εργασία
Post by: saddodancererer on October 27, 2008, 12:26:42 pm
μηπως φιλε μου μπορεις να μου το δειξεις σε κωδικα? αν δεν ειναι κοπος γιατι δεν το καταλαβαινω αλλιως.... :-[


Title: Re: [C++] 1η εργασία
Post by: saddodancererer on October 27, 2008, 12:27:27 pm
1)πως θα γινεται ο ελεγχος για το αν το πιν ειναι σωστο στον χρηστη για καταθεση χρηματων?
2)και επισης επειδη οντως ειναι πολυ φλου, θα υπαρχει ειδικη συναρτηση οπου θα προστιθεται το ποσο των 1000 ευρω στον λογαριασμο?

1)Θα έχεις μία ξεχωριστή συνάρτηση κλάσης η οποία θα δέχεται σαν όρισμα το pin (από τη main, όταν θα κληθεί δλδ μέσω αυτής) και θα το συγκρίνει με μια ιδιωτική μεταβλητή της κλάση που θα περιέχει τον πραγματικό κωδικό. Αν είναι ο σωστός, θα αλλάζει κάποιο flag το οποίο θα ελέγχεται ως προς την τιμή του όταν θα καλείται κάποια συνάρτηση κατάθεσης κτλ

2)Δε χρειάζεται ειδική συνάρτηση. Απλώς η main θα καλεί τη συνάρτηση κλάσης για κατάθεση με όρισμα 1000 ευρώ (χωρίς pin όπως σημείωσε ο συν. Emfa)
για το 1ο μιλαω :)


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 27, 2008, 12:32:23 pm
class log{
.
.
int pin, flag, total;
.
.
public:
log(void);
void katathesi (int);
void getpin(int);
.
.
};

log::log(void){
flag=0;
total=o;
pin=0;
}

void log::katathesi(int sum){
if (flag==1)total=total+sum;
}

void log::getpin(int entry){
if (pin==entry) flag=1;
}

int main(){
log A;
A.getpin(1234);
A.katathesi(1000);
.
.
}

Εγώ κάπως έτσι το υλοποίησα


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 27, 2008, 12:36:58 pm

1)Θα έχεις μία ξεχωριστή συνάρτηση κλάσης η οποία θα δέχεται σαν όρισμα το pin (από τη main, όταν θα κληθεί δλδ μέσω αυτής) και θα το συγκρίνει με μια ιδιωτική μεταβλητή της κλάση που θα περιέχει τον πραγματικό κωδικό. Αν είναι ο σωστός, θα αλλάζει κάποιο flag το οποίο θα ελέγχεται ως προς την τιμή του όταν θα καλείται κάποια συνάρτηση κατάθεσης κτλ

2)Δε χρειάζεται ειδική συνάρτηση. Απλώς η main θα καλεί τη συνάρτηση κλάσης για κατάθεση με όρισμα 1000 ευρώ (χωρίς pin όπως σημείωσε ο συν. Emfa)

1.Den xreiazetai na kaneis ksexoristi sinartisi!!!Ypethese pos mia trapeza exei xilliades logariasmous kai oxi mono 10.Fantasou posos xronos tha feugei.
Mporeis na kaneis ton elegxo mesa stin sinartisi pou tha exeis gia tin epeksergasia ton xrimaton ston logariasmo kai an den einai sostos na bgainei apo to programma(gia logous asfaleias).
Etsi kerdiseis xrono...


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 27, 2008, 12:44:10 pm
1.Den xreiazetai na kaneis ksexoristi sinartisi!!!Ypethese pos mia trapeza exei xilliades logariasmous kai oxi mono 10.Fantasou posos xronos tha feugei.
Mporeis na kaneis ton elegxo mesa stin sinartisi pou tha exeis gia tin epeksergasia ton xrimaton ston logariasmo kai an den einai sostos na bgainei apo to programma(gia logous asfaleias).
Etsi kerdiseis xrono...

Χρόνο γιατί χάνεις; Η αναζήτηση γίνεται με βάση τον αριθμό λογαριασμού και όταν βρεθεί σταματάει στο σωστό αντικείμενο. Από κει και πέρα καλείς συνάρτηση για τον κωδικό. Πόσο χάνεις από αυτό; (εκτός αν τα βάζεις προσθετικά για όλους τους πελάτες που θα περάσουν σε μια μέρα)
Αν κάνεις έλεγχο στη συνάρτηση ανάληψης και υπολοίπου π.χ. θα πρέπει είτε να ζητάς συνέχεια pin (όχι πολύ λογικό διότι μπορείς να κάνεις επάλληλες αναλήψεις) είτε θα χρησιμοποιήσεις συνάρτηση logout στο τέλος της συναλλαγής (οπότε έχεις και πρόβλημα ασφάλειας)


Title: Re: [C++] 1η εργασία
Post by: saddodancererer on October 27, 2008, 12:48:26 pm
class log{
.
.
int pin, flag, total;
.
.
public:
log(void);
void katathesi (int);
void getpin(int);
.
.
};

log::log(void){
flag=0;
total=o;
pin=0;
}

void log::katathesi(int sum){
if (flag==1)total=total+sum;
}

void log::getpin(int entry){
if (pin==entry) flag=1;
}

int main(){
log A;
A.getpin(1234);
A.katathesi(1000);
.
.
}

Εγώ κάπως έτσι το υλοποίησα
καλο αλλα  στην main πρεπει να ειναι log A[10] και μετα πως θα βαλω το


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 27, 2008, 12:57:51 pm
Χρόνο γιατί χάνεις; Η αναζήτηση γίνεται με βάση τον αριθμό λογαριασμού και όταν βρεθεί σταματάει στο σωστό αντικείμενο. Από κει και πέρα καλείς συνάρτηση για τον κωδικό. Πόσο χάνεις από αυτό; (εκτός αν τα βάζεις προσθετικά για όλους τους πελάτες που θα περάσουν σε μια μέρα)

Πάντα να κοιτάς προσθετικά!!!Να φαντάζεσαι την λειτουργία του προγράμματός σου για ένα πολύ μεγάλο πλήθος αντικειμένων!!
Για να προσπελάσεις μια συνάρτηση πρέπει να την βρεθεί στην μνήμη να λειτουργήσει!!!Για να λειτουργήσει πρέπει να βρει τα ορίσματα να τα αντιγράψει και να εκτελέσει την συνάρτηση!!!


Αν κάνεις έλεγχο στη συνάρτηση ανάληψης και υπολοίπου π.χ. θα πρέπει είτε να ζητάς συνέχεια pin (όχι πολύ λογικό διότι μπορείς να κάνεις επάλληλες αναλήψεις) είτε θα χρησιμοποιήσεις συνάρτηση logout στο τέλος της συναλλαγής (οπότε έχεις και πρόβλημα ασφάλειας)
Εάν σκεφτείς οι επαναλήψεις σε θέματα πιν και κωδικών γίνονται τρεις φορές!!!Μετά σε πετάει από το πρόγραμμα!!!
Εγώ το έβαλα να σε πετά κατευθείαν από το πρόγραμμα!!!Άρα το ενδεχόμενο της μη ασφάλειας τελειώνει!!!


Title: Re: [C++] 1η εργασία
Post by: 4Dcube on October 27, 2008, 13:04:05 pm
Παιδιά, για είσοδο string να προτείνω την εντολή cin.getline(στρινγκ_pointer, μέγεθος), βάζωντας την cin.ignore() πρωτύτερα.
H getline παίρνει και τρίτο όρισμα, το οποίο δείχνει τον χαρακτήρα στον οποίο σταματά η ανάγνωση. Αν δεν υπάρχει, τότε σταματά στο έντερ.

Γενικά η cin ignore είναι χρήσιμη, δείτε την :)


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 27, 2008, 13:13:40 pm
καλο αλλα  στην main πρεπει να ειναι log A[10] και μετα πως θα βαλω το
Τι ένα αντικείμενο τι 10. Ψάχνεις στον πίνακα Α τον λογαριασμό υπαριθμόν 4015920 πχ (θα έχεις μία επανάληψη από την αρχή του πίνακα μέχρι το τέλος του η οποία θα καλεί συνάρτηση κλάσης που θα επιστρέφει τον αρ. λογαριασμού, ο αριθμός αυτός αλλάζει ανάλογα του αντικειμένου στο οποίο αναφέρεται η επανάληψη δλδ Α[1], k].getpin(1234) A[k].katathesi(1000) κοκ όπου k ο μετρητής της επανάληψης

Quote
Άρα το ενδεχόμενο της μη ασφάλειας τελειώνει!!!
Αναφερόμουν σε επιτυχή είσοδο. Όταν κάνεις login (και με την 1η δεν έχει σημασία) και κάνεις ανάληψη κατάθεση δεις υπόλοιπο πρέπει μετά να κάνεις απαραίτητα logout (εξτρα συνάρτηση η οποία θα αλλάζει ιδιωτική μεταβλητή κατάστασης flag). Αν δεν βάλεις την επιπλέον συνάρτηση θα πρέπει καθε φορά που κάνεις ανάληψη να βάζεις και pin (στα ΑΤΜ όμως μπορείς να κάνεις διαδοχικές αναλήψεις εφόσον έδωσες σωστό το pin σου 1 φορά και μεχρι να βγάλεις την κάρτα=logout)
Αν χρησιμοποιήσεις όμως συνάρτηση logout τίθεται θέμα ασφάλειας, διότι τι θα γίνει αν για κάποιο λόγο δεν κληθεί η συνάρτηση logout όταν ο πελάτης επιλέξει να τερματίσει τις συναλλαγές του; Ο λογαριασμός θα παραμείνει ενεργός και ο καθένας θα αλλάξει ότι θέλει πάνω του.

Είναι βασικά θέμα προτεραιοτήτων.

Παρόλ'αυτά, στο θέμα των συναρτήσεων έχεις δίκιο.


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 27, 2008, 13:39:03 pm
Μια ερώτηση!!!!
Πως θα ανεβάσω την εργασία????Εννοώ με τι όνομα!!!Στο e-thmmy


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 27, 2008, 13:54:50 pm
???


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 27, 2008, 13:56:40 pm
???

Λέει στο ethmmy , στην αρχική σελίδα του Προγραμματιστικές τεχνικές


Title: Re: [C++] 1η εργασία
Post by: Airmak_gr on October 27, 2008, 14:53:54 pm
apla den kserw ti na kanw.......eleos.....den mporw na katalavw pws tha arxisw tin askisi......prospathw na ftiaksw tin class alla den mporw opoios mporei na help estw gia tin arxi tou prog na me voithisei thx


Title: Re: [C++] 1η εργασία
Post by: mitsos_dlx on October 27, 2008, 18:49:53 pm
Το πεδεύω τόση ώρα και  δεν το καταφέρνω... Λοιπόν:

Για το pin έκανα ένα πινακά χαρακτήρων με 5 θέσεις, έτσι ώστε να μπορώ να δώσω πχ pin της μορφής 0021.
Γράφω gets(pin); για να το διαβάσω και αν πχ δώσω 123456 θέλω να αποθηκεύει μόνο το 1234.
Γίνεται αυτό με κάποιο τρόπο?
Γιατί τώρα αποθηκεύει 123456 και μετά στον έλεγχο το 1234 το παιρνει λάθος.
Δηλαδή θέλω να αποθηκεύει τα 4 πρώτα ψηφία ανεξάρτητα του τι θα δώσεις...
Λεπτομέριες βέβαια αλλά αν έχει κανεις καμια ιδέα....


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 27, 2008, 18:58:48 pm
Το πεδεύω τόση ώρα και  δεν το καταφέρνω... Λοιπόν:

Για το pin έκανα ένα πινακά χαρακτήρων με 5 θέσεις, έτσι ώστε να μπορώ να δώσω πχ pin της μορφής 0021.
Γράφω gets(pin); για να το διαβάσω και αν πχ δώσω 123456 θέλω να αποθηκεύει μόνο το 1234.
Γίνεται αυτό με κάποιο τρόπο?
Γιατί τώρα αποθηκεύει 123456 και μετά στον έλεγχο το 1234 το παιρνει λάθος.
Δηλαδή θέλω να αποθηκεύει τα 4 πρώτα ψηφία ανεξάρτητα του τι θα δώσεις...
Λεπτομέριες βέβαια αλλά αν έχει κανεις καμια ιδέα....

Βάλε έναν έλεγχο, αν το string length δεν είναι 4 να ζητάει συνέχεια να εισάγει ξανά το pin. Πχ
 strlen(name)==4


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 27, 2008, 19:04:59 pm
Η μπορείς αφού εισάγεις το όνομα να γράψεις name[4]='\0' για να τελειώνει εκεί το string ,αλλά δεν ξέρω αν είναι καλός τρόπος.


Title: Re: [C++] 1η εργασία
Post by: status_quo on October 27, 2008, 19:46:38 pm
τους αριθμούς λογαρ.,τα πιν και τα ονοματα(για όλα) θα τα εισάγει ο χρήστης στην αρχη ή να βάλω ότι να'ναι?


Title: Re: [C++] 1η εργασία
Post by: saddodancererer on October 27, 2008, 19:50:17 pm
γιατι κανεις την ζωη σου τοσο δυσκολη? απλα ζηταει να δινεται το pin ουτε μιλαει για πινακα ουτε για 4 αριθμους... ενα απλο cin>>pin; θελει ο αμοιρος!!!! ;)


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 27, 2008, 20:15:01 pm
O Βοb στα πρώτα ποστς έχει μια υλοποίηση αυτού που λες.

Εγώ θα το έγραφα κάπως έτσι (αν ήταν να το κάνω χωρίς κλάσσεις):
Code:
#include <iostream>
using namespace std;
#include <conio.h>

int main() {

char *pin;
pin=(char *)malloc(5*sizeof(char));

cout<<" Kataxorisi Pin\n";
cout<<"\n";

for(int i=0;i<4;i++) {
  pin[i]=getch();
  cout<<"*";
}
pin[4]='\0';
cout<<"\n";

cout<<"Press b to continue\n";
char b;
b=getch();
while(b!='b') {
  b=getch();
}

cout<<"Dose pin\n";
char *temp;
temp=(char *)malloc(5*sizeof(char));
for(int i=0;i<4;i++) {
  temp[i]=getch();
  cout<<"*";
}
temp[4]='\0';

cout<<"\n";

while(temp[0]!=pin[0]||temp[1]!=pin[1]||temp[2]!=pin[2]||temp[3]!=pin[3]) {
  cout<<"Wrong, ksanadose\n";
  for(int i=0;i<4;i++) {
  temp[i]=getch();
  cout<<"*";
}
temp[4]='\0';
}
cout<<"Press b to continue\n";
b=getch();
while(b!='b') {
  b=getch();
}
cout<<"Pin\n";
cout<<temp; 

getch();

}


Title: Re: [C++] 1η εργασία
Post by: Matzika on October 27, 2008, 21:03:46 pm
χρησιμοποιώ μια συναρτηση wrong ώστε αν ο χρήστης μου δώσει λάθος αριθμο λογαριασμου να του πω ότι δεν υπάρχει...παρόλα αυτά όμως όταν τρέχει το πρόγραμμα δε μ δουλεύει...
παραθέτω και τον κώδικα
void Logariasmos::wrong(){
    n++;
    if(n==K){
        cout<<"Autos o Logariasmos den uparxei\n";
    }
}       

void Logariasmos::katathesi(float xrimata,int kwdikos){
    float final;
    if(kwdikos==code){
        final=poso+xrimata;
        cout<<"To sinoliko poso poy exete twra sto logariasmo einai :"<<final<<"\n";
    }
    else{
        wrong();
    }   
       

}
το n το αρχικοποιώ στη συνάρτηση αρχικών συνθηκών...μπορεί να μ πει κάποιος που ειναι το λάθος?


Title: Re: [C++] 1η εργασία
Post by: Matzika on October 27, 2008, 21:58:56 pm
οκ nevermind..το εκανα με αλλο τρόπο ;)


Title: Re: [C++] 1η εργασία
Post by: evageliav on October 27, 2008, 22:14:44 pm
Στο παρακάτω κομμάτι κώδικα,θέλω να του βάλω να κάνει τον έλεγχο,όταν δέχεται έαν αριθμό λογαριασμού που έχει ήδη δημιουργηθείο να βγάζει μήνυμα να δώσει άλλο.Με ποιο τρόπο να κάνω την αναζήτηση κάθε φορά για να μπλέξω πολύ το πρόγραμμα,ποιός είναι ο πιο απλός τρόπος;
Code:
for(i=0;i<10;i++) {  
       cout<<i+1<<"os) pelaths:\n\n"  ;                     
       cout<<"ari8mo logariasmou:";
       cin>>account_array[i].account_numb; //ΝΑ ΕΛΕΓΧΕΙ ΑΝ ΥΠΑΡΧΕΙ ΗΔΗ ΑΥΤΟ ΠΟΥ ΕΙΣΑΓΕΙ Ο ΧΡΗΣΤΗΣ
       cout<<"pin:";
       cin>>account_array[i].pin;
       cout<<"onoma :\n";
       cin>>account_array[i].name;
       }



Title: Re: [C++] 1η εργασία
Post by: status_quo on October 27, 2008, 23:39:56 pm
για να κάνουμε ανάληψη δε θα πρέπει να τσεκάρουμε αν υπάρχουν λεφτά στο λογαριασμό?κι αν τα βάλουμε όλα αυθαίρετα 0 τότε fuck...μήπως να το κάνω του στιλ έχω πιστωτική τραβάω όσα θέλω? :D


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 27, 2008, 23:58:04 pm
Πολύ το ψειρίζετε  :D
Δε θα φτιάξουμε ΑΤΜ, ο άνθρωπος θέλει να δει αν ξέρουμε να φτιάχνουμε ένα πρόγραμμα με κλάσεις.


Title: Re: [C++] 1η εργασία
Post by: status_quo on October 28, 2008, 00:03:24 am
καλά ντε μια ερώτηκση έκανα...agent άμα δεις το πρόγραμμα δε παίζει να υπάρχει απλούστερο...ούτε έλεγχοι ούτε τπτ γι'αυτό είπα να το εμπλουτίσω λίγο... ^kaloe^


Title: Re: [C++] 1η εργασία
Post by: solli144 on October 28, 2008, 00:06:15 am
παιδιά έχω πρόβλημα με το ανέβασμα της εργασίας. Όταν πατάω να την κάνει upload μου λέει μη αποδεκτό όνομα αρχείου ενώ το όναμα του ερχείου είναι μια χαρά (όπως πρέπει). Τι να κάνω????


Title: Re: [C++] 1η εργασία
Post by: status_quo on October 28, 2008, 00:07:27 am
περίμενε λίγο μπορεί να έχει πρόβλημα ο σερβερ άμα πλακώσανε πολλοί τελευταία στιγμή... 8)


Title: Re: [C++] 1η εργασία
Post by: Wanderer on October 28, 2008, 00:16:00 am
evaggeliav@ Δεν έχεις κάνει συνάρτηση αρχικών συνθηκών, ή κάνω λάθος; Νομίζω ο Κορτέσης απαιτεί να υπάρχει συνάρτηση αρχικών συνθηκών. Δηλαδή να δίνονται μέσω constructor οι αρχικές τιμές των μεταβλητών της κλάσσης.

Αν ο constructor σου δεν έχει ορίσματα, τότε όπως έχει ειπωθεί σε προηγούμενα ποστς, φτιάχνοντας έναν πίνακα τύπου της κλάσσης σου 10 θέσεων, αυτόματα θα τρέξει η συνάρτηση αρχικών συνθηκών για κάθε μία από τις κλάσσεις. Εκτός και αν έχεις κάνει constructor με ορίσματα.

Με βάση τη λογική του constructor με ορίσματα (με τη λογική του constructor χωρίς ορίσματα δεν έχω κάποια εύκολη λύση για να ελέγχει αν υπάρχει ίδιος λογαριασμός σε κάθε εισαγωγή νέου από τους 10).
Θα ονομάσω την κλάσση σου pelatis.

Code:
pelatis pinakas[10];

int z;
int i;

for(i=0;i<10;i++) {

cout<<i+1<<"os pelatis\n";
int flag=0;

do {
cout<<"arithmos logariasmou\n ";
int arithmos;
cin>>arithmos;

for(z=0;z<i;z++) {
  if(pelatis[z].arithmos_logariasmou()==arithmos) {
      flag=1;
  }
}

if(flag==1) {
  cout<<"Idios arithmos me allon pelati!!! Ksanadose ton\n";
}

while(flag==1);

}

//Αν δεν βρει ίδιο τον αριθμό, συνεχίζει να δίνει ο χρήστης τιμές για το όνομα, το pin κ.λ.π. Έτσι δημιουργούμε μία τύπου pelatis μεταβλητή με ορίσματα τις μεταβλητές που χρησιμοποιήσαμε

pelatis temp(arithmos, onoma, pin);

//Και την εξισώνουμε με το i στοιχείο του πίνακα pinakas

pinakas[i]=temp;

Γιατί το κάνουμε αυτό:

Το κάνουμε αυτό επειδή όταν δημιουργούμε μεταβλητές σε πίνακα τύπου object, εκτελούνται σε όλα τα στοιχεία του οι default constructors χωρίς ορίσματα, που όμως υποτίθεται ότι δεν έχουμε γράψει κώδικα σε αυτούς, επειδή θέλουμε να δώσουμε τις αρχικές τιμές με ορίσματα. Έτσι μέσω της μεταβλητής ίδιου τύπου temp, μπορούμε πλέον να δώσουμε τις τιμές αυτές μέσω constructor με ορίσματα.

Ο constructor σου θα είναι κάπως έτσι:

Code:
pelatis(int arithmos, string onoma, long kodikos) {
  number_logariasmou=arithmos;
  name=onoma;
  pin=kodikos;
}  //Όπου number_logariasmou,name,pin οι private μεταβλητές της κλάσσης σου στις οποία θες να εκχωρηθούν οι ζητούμενες τιμές.


Title: Re: [C++] 1η εργασία
Post by: crystal on October 28, 2008, 00:23:00 am
Eχω προβλημα με την gets και την cin :(
Οταν χρησιμοποιω την gets δεχεται το string μονο στην πρωτη επαναληψη και στις επομενες αγνοει την εντολη και ξεκιναει απο την επομενη της gets.
Με την cin δινω μια φορα το string και μετα τερματιζει το προγραμμα.. :(

wtf??

A, οταν δεν εχω εντολη μετα την gets και στην επαναληψη ειναι η μονη εντολη για εισοδο δεδομενων ολα οκ..


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 28, 2008, 00:27:48 am
παιδιά έχω πρόβλημα με το ανέβασμα της εργασίας. Όταν πατάω να την κάνει upload μου λέει μη αποδεκτό όνομα αρχείου ενώ το όναμα του ερχείου είναι μια χαρά (όπως πρέπει). Τι να κάνω????

Σβήσε το όνομα του αρχείου σου και βεβαιώσου ότι το έγραψες στα ΑΓΓΛΙΚΑ

Μου το απέριψε και μένα επειδή το Α δεν ήταν αγγλικό αλλά ελληνικό


Title: Re: [C++] 1η εργασία
Post by: Emfanever on October 28, 2008, 01:10:03 am
Eχω προβλημα με την gets και την cin :(
Οταν χρησιμοποιω την gets δεχεται το string μονο στην πρωτη επαναληψη και στις επομενες αγνοει την εντολη και ξεκιναει απο την επομενη της gets.
Με την cin δινω μια φορα το string και μετα τερματιζει το προγραμμα.. :(

wtf??

A, οταν δεν εχω εντολη μετα την gets και στην επαναληψη ειναι η μονη εντολη για εισοδο δεδομενων ολα οκ..
Δοκίμασε πριν από κάθε cin που διαβάζει string ή gets να βάλεις την εντολή fflush(stdin);


Title: Re: [C++] 1η εργασία
Post by: crystal on October 28, 2008, 01:14:47 am
H οποια τι κανει???
Και σε ποια βιβλιοθηκη υπαρχει??


Title: Re: [C++] 1η εργασία
Post by: AgentCain on October 28, 2008, 01:23:50 am
H οποια τι κανει???
Και σε ποια βιβλιοθηκη υπαρχει??

καθαρίζει τα κανάλια επικοινωνίας stdin και stdout κοινώς τραβάει καζανάκι :P
πολλές φορές χαρακτήρες όπως το space ή το return επειδή παραμένουν στο κανάλι επιδρούν στις εντολές εισαγωγής από την κονσόλα αλλοιώνοντας το αποτέλεσμα



Title: Re: [C++] 1η εργασία
Post by: crystal on October 28, 2008, 01:25:46 am
οοοh nice

thnx :)


Title: Re: [C++] 1η εργασία
Post by: asousos on October 28, 2008, 23:00:14 pm
Είναι δυνατόν να μην μου βρίσκει το iostream.h?? Μου βγάζει μήνυμα λάθους, του στυλ

"
1 C:\Dev-Cpp\include\c++\3.4.2\backward\iostream.h:31,               from C:\Documents and Settings\Bonsai\My Documents\Dev_C++ workspace\BankAccount.cpp In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31,               from C:\Documents and Settings\Bonsai\My Documents\Dev_C++ workspace\BankAccount.cpp
"

Δεν καταλαβαίνω...


Title: Re: [C++] 1η εργασία
Post by: Matzika on October 28, 2008, 23:05:38 pm
τι compiler εχεις?
αν έχεις dev πρεπει να γράψεις <iostream>


Title: Re: [C++] 1η εργασία
Post by: asousos on October 28, 2008, 23:31:38 pm
dev εχω.... και έχω δει μέσα στα libraries ότι το iostream δεν ειναι .h αλλά ούτε το

#include <iostream>

λειτουργεί(δεν καταλαβαίνει τα cin και τα cout)...

Ιδέα κανείς?


Title: Re: [C++] 1η εργασία
Post by: asousos on October 28, 2008, 23:35:52 pm
Να το στείλω σε κανέναν να δει αν δουλεύει στο pc (ή στο mac :-) )του?


Title: Re: [C++] 1η εργασία
Post by: Καμένος on October 28, 2008, 23:37:51 pm
Γράψε

#include <iostream>

και κάτω από τα includes:

using namespace std;

ή διαφορετικά όταν χρησιμοποιείς cin ή cout βάζε std::cin , std::cout


Title: Re: [C++] 1η εργασία
Post by: asousos on October 28, 2008, 23:53:44 pm
Thnx... αλλά από ότι φαίνεται υπάρχει και άλλο πρόβλημα... Θεωρητικά θα έπρεπε να τρέξει η constructor function 10 φορές για τα 10 στοιχεία του πίνακα μου.(έτσι δεν είναι?) Ωστόσο, τρέχει μία φορά, ζητάει μόνο το πρώτο στοιχείο που για μένα είναι το account id και μόλις πατάω π.χ. 1 και enter το πρόγραμμα τερματιζεται απροσδόκητα... ιδού:

Code:
#include <iostream>
using namespace std;

class Account{
      char name[100];
      int id,pin;
      float balance, b, e;
public:
       void Get_Data(void);
       void Print_Data(void);
       void Add_Money(float);
       void Extract_Money(float);
       int Get_Id(void);
};
      
void Account::Get_Data()
{
      cout<<"Give the account's id-number";
      cin>> id;
      cout<<"Give the name of the owner of the account(below 100 characters without gaps)";
      cin>> name;
      cout<<"Give pin for this account";
      cin>> pin;
      balance = 0;
}      

void Account::Print_Data()
{  
    cout<<"The account balance is"<<balance<<"\n";
}

void Account::Add_Money(float b)
{
     balance+=b;
}
 
void Account::Extract_Money(float e)
{
     balance-=e;
}

int Account::Get_Id()
{
    return id;
}

int main()
{
    int flag=0,idnum,i;
    //float bal;
    Account A[10];
    cout<<"Give account's id\n";
    cin>>idnum;
    for (i=0;i<10;i++);
        if (idnum!=A[i].Get_Id());
           flag=1;
    if (flag==1);
       exit(0);
    A[i].Add_Money(1000);
    A[i].Print_Data();
}


Title: Re: [C++] 1η εργασία
Post by: Καμένος on October 28, 2008, 23:57:53 pm
Αφού δεν υπάρχει constructor.. Ο constructor δηλώνεται έτσι:

class blabla{

    blabla( ...);
};

blabla::blabla( ...){
...
...
}


Title: Re: [C++] 1η εργασία
Post by: Καμένος on October 28, 2008, 23:59:27 pm
Απλά θέλει μετονομασία η get_data σε Account για να είανι constructor και να καλείται όταν δημιουργέις τα αντικείμενα.


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 29, 2008, 00:00:52 am
Pote einai i liksi diloseon????Giati mou bgazei oti exei liksei


Title: Re: [C++] 1η εργασία
Post by: crystal on October 29, 2008, 00:03:34 am
ethmmy:

 Προθεσμία Υποβολής της Πρώτης Εργασίας...

21 Οκτ 2008 6:10 μμ
Συμεωνίδης

Η προθεσμία υποβολής της πρώτης εβδομαδιαίας εργασίας είναι την Τρίτη 28/10, 11:00 π.μ.


Title: Re: [C++] 1η εργασία
Post by: MARIOS on October 29, 2008, 00:08:10 am
Nai alla pote den ebale prothesmia na ligei stis 11:00 to proi


Title: Re: [C++] 1η εργασία
Post by: apostolos1986 on October 29, 2008, 00:09:06 am
ε λόγω μάλλον με τη λογική ότι 11 ξεκινούσε η παρέλαση :P :P


Title: Re: [C++] 1η εργασία
Post by: ILIAS on October 29, 2008, 00:26:42 am
Μάλλον 11 μμ εννούσε, αφού εγώ την ανέβασα κατά τις 10 και όλα μια χαρά :P


Title: Re: [C++] 1η εργασία
Post by: crystal on October 29, 2008, 00:29:41 am
Οτι να ναι και αυτοι


Title: Re: [C++] 1η εργασία
Post by: asousos on October 29, 2008, 00:35:32 am
 :-\ Μαλακία... τώρα τι γίνεται?? Δεν είχα δει την ανακοίνωση,.. Ότι να'ναι....  11 π.μ.?? και έλειξε στις 11μ.μ.??? Τέλος πάντων.... να ρωτήσω και κάτι ακόμα... Δεν φαίνεται να μου λειτουργεί το getch(); με την βοήθεια πάντα της conio.h για να μην κλείνει η κονσόλα πριν δω την εκτύπωση του λογαριασμού που ζητάω(πάλι κλείνει βίαια).... Έχει κανείς υπόψιν του κάποιον άλλο τρόπο που μπορώ να εμποδίσω τον βίαιο αυτό τερματισμό??


Title: Re: [C++] 1η εργασία
Post by: crystal on October 29, 2008, 00:37:11 am
Βαλε gets() που ειναι στην cstring

Α, και δες λιγο πιο πανω γιατι ειχε ενα προβληματακι στον dev και η gets


Title: Re: [C++] 1η εργασία
Post by: ILIAS on October 29, 2008, 00:39:55 am
Στείλε mail στον κύριο Συμεωνίδη ;). Μου έχει δώσει την εντύπωση ότι είναι πολύ συννενοήσιμος.


Title: Re: [C++] 1η εργασία
Post by: zeus90 on October 29, 2008, 13:43:39 pm
Δοκίμασε την  εντολή system("pause");