Αντικειμενοστρεφής Προγραμματισμός [2012-2013]

Διδάσκοντες: Α. Αραμπατζής, Λέκτορας

Αντικειμενοστρεφής Προγραμματισμός [2012-2013]

Δημοσίευσηαπό alehunter » 08 Νοέμ 2012, 15:15

θελω λιγη βοηθεια εφτιαξα ενα προγρμα στο οποιο βαζεις διαφορα στοιχεια για ενα αμαξι και μετα βρισκει την τελικη τιμη και σου παρουσιαζει τα δεδομενα που εχεις εισαγει.Για ενα παραξενο λογο ομως δεν μου ΔΙΑΒΑΖΕΙ τα στοιχεια(στην if (flag==0) δεν με αφηνει να εισαγω τιμες),τις πταει?? ???
Κώδικας: Επιλογή όλων
#include <iostream.h>
#include <stdio.h>
#include <iomanip.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#include <process.h>
using namespace std;
struct
{
      char etairia,tipo_car,nomisma;
      float teliko_poso;
      int kibismos,timi,fpa;
}amaxa1;
int main()
{
    int flag;
    flag=0;
   cout<<"dwse onoma autokinitou,gia telos programatos dwse *\n";
   cin>>amaxa1.etairia;
   if (amaxa1.etairia=='*')
   {
                         cout<<"\nTelos programmatos\n";
                         flag=1;
   }
    if (flag==0)
    {
            cout<<"dwse tipo amaxiou\n";
            cin>>amaxa1.tipo_car;
            cout<<"dwse nomisma\n";
            cin>>amaxa1.nomisma;
            cout<<"dwse fpa(th t kanw egw epi tis 100 esi apla numero)\n";
            cin>>amaxa1.fpa;
            cout<<"dwse kivismo\n";
            cin>>amaxa1.kibismos;
            cout<<"dwse timi autokinitou\n";
            cin>>amaxa1.timi;
            amaxa1.teliko_poso=(amaxa1.timi+amaxa1.fpa*amaxa1.timi/100);//FPA prepei n ginei %
            cout<<"Onoma autokonitou:"<<amaxa1.etairia<<"\ntipos:"<<amaxa1.tipo_car;
            cout<<"\nKibismos:"<<amaxa1.kibismos<<"\n Fpa:"<<amaxa1.fpa<<"\n Teliki timi:"<<amaxa1.timi;
     }


      system("pause");
     
}
Άβαταρ μέλους
alehunter
Hero Member
 
Δημοσιεύσεις: 1527
Εγγραφή: 24 Δεκ 2011, 01:33
Τοποθεσία: ακριβώς εκεί που θες να 'μαι
Φοιτητής ΗΜΜΥ: Ναι

Re: Που "χτυπάει" το πρόγραμμά μου?

Δημοσίευσηαπό SA1210 » 09 Νοέμ 2012, 00:19

Δοκίμασε να βάλεις πριν από κάθε εντολή cin και μια
Κώδικας: Επιλογή όλων
fflush(stdin);
SA1210
Newbie
 
Δημοσιεύσεις: 1
Εγγραφή: 14 Ιαν 2011, 21:22
Φοιτητής ΗΜΜΥ: Ναι

Re: Που "χτυπάει" το πρόγραμμά μου?

Δημοσίευσηαπό James » 09 Νοέμ 2012, 01:01

Σε Windows αυτό που έγραψες κάνει compile και λειτουργεί. Πρόσεξε λίγο ότι τυπώνεις Teliki timi:"<<amaxa1.timi, το οποίο ουσιαστικά τυπώνει την τιμή που έχει δώσει ο χρήστης (μήπως ήθελες να τυπώσεις το teliko_poso;). Επίσης πρόσεξε ότι τα etairia,tipo_car,nomisma είναι char, δηλαδή *ένας* χαρακτήρας. Αν, όταν ζητηθεί, δώσεις περισσότερους από έναν χαρακτήρες η cin θα διαβάσει έναν χαρακτήρα από τον buffer του in stream και την επόμενη φορά χωρίς καν να γράψεις εσύ κάτι θα διαβάσει τον επόμενο. Μήπως ήθελες ο τύπος των παραπάνω πεδίων να είναι std::string; Τέλος, παρατηρώ ότι χρησιμοποιείς iostream.h και iomanip.h. Αυτά είναι deprecated προς τα iostream iomanip αντίστοιχα (τι σόι compiler χρησιμοποιείς; άλλαξέ τον!). Η iomanip δε σου χρειάζεται καν εξάλλου.
(Μόνο) James
Άβαταρ μέλους
James
Διαχειριστής
 
Δημοσιεύσεις: 1740
Εγγραφή: 08 Ιαν 2008, 22:29
Φοιτητής ΗΜΜΥ: Όχι

Re: Που "χτυπάει" το πρόγραμμά μου?

Δημοσίευσηαπό alehunter » 09 Νοέμ 2012, 18:00

fflush(stdin);
εβαλα δεν μπορω ν απω οτι αλλαξε κατι.Απο οτι θυμαμαι αδειαζει την μνημη η εντολη αυτη αρα γιατι τη χρησιμοποιησαμε???


Σε Windows αυτό που έγραψες κάνει compile και λειτουργεί.
ναι αλλα δεν με αφηνει να βαλω τιμες μετα την if δλδ να εισαγω τιμες για π.χ. amaxa1.nomisma; ή amaxa1.fpa;
γιατι??/

Πρόσεξε λίγο ότι τυπώνεις Teliki timi:"<<amaxa1.timi, το οποίο ουσιαστικά τυπώνει την τιμή που έχει δώσει ο χρήστης (μήπως ήθελες να τυπώσεις το teliko_poso;)
ναι εχεις δικιο το τελικο ποσο ηθελα αλλα οκ δεν ειναι αυτο το θεμα :)
Επίσης πρόσεξε ότι τα etairia,tipo_car,nomisma είναι char, δηλαδή *ένας* χαρακτήρας.
δεν το καταλαβα αυτο.Ποιο ειναι το προβλημα(παντως γενικα χρησιμοποιω πινακα 80 θεσεων για να ειμαι σιγουρος)
Αν, όταν ζητηθεί, δώσεις περισσότερους από έναν χαρακτήρες η cin θα διαβάσει έναν χαρακτήρα από τον buffer του in stream και την επόμενη φορά χωρίς καν να γράψεις εσύ κάτι θα διαβάσει τον επόμενο. Μήπως ήθελες ο τύπος των παραπάνω πεδίων να είναι std::string;
no comprende ??? λιγο με λιγουτερο επιστημονικους ορους παρακαλω...
Τέλος, παρατηρώ ότι χρησιμοποιείς iostream.h και iomanip.h. Αυτά είναι deprecated προς τα iostream iomanip αντίστοιχα (τι σόι compiler χρησιμοποιείς; άλλαξέ τον!). Η iomanip δε σου χρειάζεται καν εξάλλου.
χρησιμοποιω dvcppp απλα βαζω ολες τις βιβλιοθηκες που μπορει να χριεαστουν στο προγραμμα για να μην ψαχνομαι καθε φορα ποια πρεπει να βαλω.Ποιο το προβλημα να εχεις πολλες????



α και thanx ολους για την απαντηση ;D
Άβαταρ μέλους
alehunter
Hero Member
 
Δημοσιεύσεις: 1527
Εγγραφή: 24 Δεκ 2011, 01:33
Τοποθεσία: ακριβώς εκεί που θες να 'μαι
Φοιτητής ΗΜΜΥ: Ναι

Re: Που "χτυπάει" το πρόγραμμά μου?

Δημοσίευσηαπό James » 09 Νοέμ 2012, 18:56

alehunter έγραψε:δεν το καταλαβα αυτο.Ποιο ειναι το προβλημα(παντως γενικα χρησιμοποιω πινακα 80 θεσεων για να ειμαι σιγουρος)

Οι 80 αυτές θέσεις που φαίνονται; char σημαίνει *ένας* χαρακτήρας, όχι 80. Δεν υπάρχει κανένας πίνακας στο πρόγραμμά σου. Η σωστή χρήση των αλφαριθμητικών στη C++ γίνεται μέσω του std::string.

alehunter έγραψε:no comprende ??? λιγο με λιγουτερο επιστημονικους ορους παρακαλω...

Όπως είπα και πριν οι μεταβλητές σου έχουν τύπο char οπότε και αν γράψεις πολλαπλούς χαρακτήρες πριν πατήσεις enter, είναι λογικό η επόμενη cin να διαβάσει τους επόμενους χωρίς να σε ρωτήσει.

alehunter έγραψε:χρησιμοποιω dvcppp απλα βαζω ολες τις βιβλιοθηκες που μπορει να χριεαστουν στο προγραμμα για να μην ψαχνομαι καθε φορα ποια πρεπει να βαλω.Ποιο το προβλημα να εχεις πολλες????

Δεν υπάρχει κανένα πρόβλημα αλλά ή iostream.h είναι deprecated. Θα πρέπει να χρησιμοποιείς την iostream (χωρίς κατάληξη). Το αυτό και για την iomanip.

ΠΡΟΣΘΗΚΗ:
alehunter έγραψε:εβαλα δεν μπορω ν απω οτι αλλαξε κατι.Απο οτι θυμαμαι αδειαζει την μνημη η εντολη αυτη αρα γιατι τη χρησιμοποιησαμε???

[Πολύ χοντρικά] Σε ορισμένα λειτουργικά συστήματα η είσοδος από το πληκτρολόγιο δε γίνεται submit αν δε δοθεί το enter. Η fflush εξασφαλίζει ότι η είσοδος θα γίνει submit ακόμα και αν δεν πατηθεί αυτό. Είναι χρήσιμη στις getc() και παράγωγες στα λειτουργικά που δεν κάνουν αυτόματο flush και περιμένουν το enter (που μάλλον δε θα έρθει και ποτέ όταν απλά περιμένεις έναν χαρακτήρα). Στην περίπτωσή σου δεν τίθεται τέτοιο θέμα διότι τα windows κάνουν αυτόματα flush και επειδή πάντα πατάς enter έτσι όπως έχει δομήσει τις εισόδους.
(Μόνο) James
Άβαταρ μέλους
James
Διαχειριστής
 
Δημοσιεύσεις: 1740
Εγγραφή: 08 Ιαν 2008, 22:29
Φοιτητής ΗΜΜΥ: Όχι

Re: Που "χτυπάει" το πρόγραμμά μου?

Δημοσίευσηαπό alehunter » 10 Νοέμ 2012, 22:11

Οι 80 αυτές θέσεις που φαίνονται; char σημαίνει *ένας* χαρακτήρας, όχι 80. Δεν υπάρχει κανένας πίνακας στο πρόγραμμά σου. Η σωστή χρήση των αλφαριθμητικών στη C++ γίνεται μέσω του std::string.
ναι γενικα λεω οταν δεν λεει βαζω πινακα.>Τεσπα δεν ειναι εκει το θεμα move on


Όπως είπα και πριν οι μεταβλητές σου έχουν τύπο char οπότε και αν γράψεις πολλαπλούς χαρακτήρες πριν πατήσεις enter, είναι λογικό η επόμενη cin να διαβάσει τους επόμενους χωρίς να σε ρωτήσει.
αρα η cin μου διαβαζει συγκεκριμενο πληθος χαρακτηρων??νομιζα διαβαζει μια οποιαδηποτε λεξη/string μεχρι να πατησω space ή enter ???


Δεν υπάρχει κανένα πρόβλημα αλλά ή iostream.h είναι deprecated. Θα πρέπει να χρησιμοποιείς την iostream (χωρίς κατάληξη). Το αυτό και για την iomanip.
ok


[Πολύ χοντρικά] Σε ορισμένα λειτουργικά συστήματα η είσοδος από το πληκτρολόγιο δε γίνεται submit αν δε δοθεί το enter. Η fflush εξασφαλίζει ότι η είσοδος θα γίνει submit ακόμα και αν δεν πατηθεί αυτό. Είναι χρήσιμη στις getc() και παράγωγες στα λειτουργικά που δεν κάνουν αυτόματο flush και περιμένουν το enter (που μάλλον δε θα έρθει και ποτέ όταν απλά περιμένεις έναν χαρακτήρα). Στην περίπτωσή σου δεν τίθεται τέτοιο θέμα διότι τα windows κάνουν αυτόματα flush και επειδή πάντα πατάς enter έτσι όπως έχει δομήσει τις εισόδους.
thanx για τις γενικεσ γνωσεις ;D
Άβαταρ μέλους
alehunter
Hero Member
 
Δημοσιεύσεις: 1527
Εγγραφή: 24 Δεκ 2011, 01:33
Τοποθεσία: ακριβώς εκεί που θες να 'μαι
Φοιτητής ΗΜΜΥ: Ναι

Re: Που "χτυπάει" το πρόγραμμά μου?

Δημοσίευσηαπό James » 10 Νοέμ 2012, 22:46

alehunter έγραψε:αρα η cin μου διαβαζει συγκεκριμενο πληθος χαρακτηρων??

Η cin θα διαβάσει ό,τι της πεις να διαβάσει (για την ακρίβεια το cin είναι stream αλλά ας συνεχίσουμε με τη "δική" μας ορολογία). Όταν γράφεις
cin >> c; και το c είναι δηλωμένο char, δηλαδή ένας χαρακτήρας, η cin θα διαβάσει έναν χαρακτήρα και θα τον αποθηκεύσει στο c.
Όταν γράψεις cin >> s; και το s είναι δηλωμένο string τότε θα διαβάσει μέχρι το τέλος του stream και θα αποθηκεύσει στο s.

Στο δικό σου παράδειγμα αν έχεις
cin >> a; cin >> b; και τα a και b είναι δηλωμένα char (και τα δύο) ...
Αν δώσεις σαν είσοδο από το πληκτρολόγιο "james" και μετά πατήσεις το enter, το πρόγραμμα θα αποθηκεύσει τον χαρακτήρα 'j' στο a και χωρίς να σε ξαναρωτήσει θα αποθηκεύσει στο b τον χαρακτήρα 'a'. Το ίδιο θα συμβεί αν έχεις άλλες 3 cin που διαβάζουν χαρακτήρα (μέχρι να τελειώσουν τα γράμματα). Το πρόγραμμά σου θα τρέξει αν δίνεις μόνο έναν χαρακτήρα όταν σου ζητάει είσοδο (πράγμα που ανέφερα και στο πρώτο μου post), διαφορετικά θα πρέπει να μετατρέψεις τις μεταβλητές σε std::string.

alehunter έγραψε:νομιζα διαβαζει μια οποιαδηποτε λεξη/string μεχρι να πατησω space ή enter ???

Το space δε διαφέρει σε κάτι από τους υπόλοιπους χαρακτήρες οπότε όχι, δε σταματάει εκεί. Επίσης ο υπολογιστής δεν καταλαβαίνει τι εννοείς εσύ 'λέξη'. Υπάρχουν πάρα πολλοί χαρακτήρες στους οποίους σπάει μια λέξη και αυτό από μόνο του είναι σίγουρα ένα τεράστιο κεφάλαιο lexical analysis για το οποίο έχουν γραφτεί και βιβλία. Θα μπορούσε να είναι και το tab ή η παύλα ή το underscore. Το space δεν είναι κάτι ορόσημο, είναι απλώς ένας χαρακτήρας (που δε φαίνεται) ή αλλιώς glyph. Το enter δε διαφέρει επίσης από το space, είναι και αυτός ένας χαρακτήρας που επίσης δε φαίνεται. Απλά χρησιμοποιείται σαν μια μέθοδος EOF triggering, δηλαδή σαν ένα τρόπο για να πεις στη cin (ή στο underlying framework) να σταματήσει να διαβάζει από την είσοδο. Για την ακρίβεια η σωστή έκφραση είναι να σταματήσει να ... γράφει(!) στην είσοδο αλλά ας μην το ανοίξουμε αυτό το θέμα.
(Μόνο) James
Άβαταρ μέλους
James
Διαχειριστής
 
Δημοσιεύσεις: 1740
Εγγραφή: 08 Ιαν 2008, 22:29
Φοιτητής ΗΜΜΥ: Όχι

Re: Που "χτυπάει" το πρόγραμμά μου?

Δημοσίευσηαπό alehunter » 12 Νοέμ 2012, 12:03

Οκ να 'σαι καλα καταλαβα πληρως το προβλημα + διευκρινησα καποιες αποριουλες σχετικα με την cin
thanx!!! ;D ;D ;D
Άβαταρ μέλους
alehunter
Hero Member
 
Δημοσιεύσεις: 1527
Εγγραφή: 24 Δεκ 2011, 01:33
Τοποθεσία: ακριβώς εκεί που θες να 'μαι
Φοιτητής ΗΜΜΥ: Ναι

Re: Αντικειμενοστρεφής Προγραμματισμός [2012-2013]

Δημοσίευσηαπό Κωνσταντίνα » 20 Νοέμ 2012, 23:05

Έχω κολλήσει εδώ και ώρα στο εξής:
Ορίστε μια κλάση Point που αναπαριστά ένα σημείο στον 2D καρτεσιανό χώρο με
πραγματικές συντεταγμένες. Υλοποιήστε inline έναν ή περισσότερους constructors
(όσους χρειάζονται) για αρχικοποίηση σημείων, ώστε πχ να δουλεύει η δήλωση:
Point a( 0.3, 1.2 ), b;
Το σημείο b να αρχικοποιηθεί στο προεπιλεγμένο σημείο (0,0), δλδ στην αρχή των
αξόνων.

έχω δοκιμάσει το: Point(double z, double w){x=(z,w); b=0.0;} αλλά προφανώς δεν ειν σωστό.
αν έχει κάποιος ευχαρίστηση, ας ρίξει τα φώτα του.
ευχαριστώ!
Κωνσταντίνα
Full Member
 
Δημοσιεύσεις: 105
Εγγραφή: 17 Φεβ 2012, 16:31
Φοιτητής ΗΜΜΥ: Ναι

Re: Αντικειμενοστρεφής Προγραμματισμός [2012-2013]

Δημοσίευσηαπό James » 21 Νοέμ 2012, 00:02

Κωνσταντίνα έγραψε:Έχω κολλήσει εδώ και ώρα στο εξής:
Ορίστε μια κλάση Point που αναπαριστά ένα σημείο στον 2D καρτεσιανό χώρο με
πραγματικές συντεταγμένες. Υλοποιήστε inline έναν ή περισσότερους constructors
(όσους χρειάζονται) για αρχικοποίηση σημείων, ώστε πχ να δουλεύει η δήλωση:
Point a( 0.3, 1.2 ), b;
Το σημείο b να αρχικοποιηθεί στο προεπιλεγμένο σημείο (0,0), δλδ στην αρχή των
αξόνων.

έχω δοκιμάσει το: Point(double z, double w){x=(z,w); b=0.0;} αλλά προφανώς δεν ειν σωστό.
αν έχει κάποιος ευχαρίστηση, ας ρίξει τα φώτα του.
ευχαριστώ!

Για να δουλέψει η δήλωση Point a( 0.3, 1.2 ), b; θα πρέπει να δημιουργηθούν δύο constructors. Ένας με δύο ορίσματα και ένας χωρίς ορίσματα. Ο πρώτος εξυπηρετεί το a και ο δεύτερος το b.

Ο constructor με ορίσματα θα έχει τη μορφή Point(double x, double y){this->x = x; this->y = y;} ενώ αυτός χωρίς ορίσματα θα είναι Point(){this->x = 0.0; this->y = 0.0;}, όπου x και y πεδία δηλωμένα στο class Point.

Το νόημα του constructor είναι να αρχικοποιήσει τα πεδία ενός αντικειμένου. Το b=0.0 που είχες γράψει, όπως πολύ σωστά παρατήρησες, προφανώς δε δουλεύει διότι το b δεν έχει καμία σχέση με το class, είναι απλά το όνομα ενός αντικειμένου τύπου Point. Το x=(z,w) είναι σαφώς συντακτικά λάθος (δεν υπάρχει τέτοια δήλωση στη C++ εκτός κι αν ξεφύγουμε μιλώντας για υπερφόρτωση τελεστών).

Τέλος, ο constructor αρχικοποιεί ένα αντικείμενο. Στο ξεκαθαρίζω επειδή φαίνεται να προσπαθείς να αρχικοποιήσεις τόσο το a όσο και το b στον ίδιο constructor.
(Μόνο) James
Άβαταρ μέλους
James
Διαχειριστής
 
Δημοσιεύσεις: 1740
Εγγραφή: 08 Ιαν 2008, 22:29
Φοιτητής ΗΜΜΥ: Όχι

Re: Αντικειμενοστρεφής Προγραμματισμός [2012-2013]

Δημοσίευσηαπό Κωνσταντίνα » 21 Νοέμ 2012, 12:44

οκει σε ευχαριστώ φίλε τζέιμς, όντως είχα παρανοήσει ότι αρχικοποιείται μόνο ένα αντικείμενο. Βοήθησες πολύ, να σαι καλά!
Κωνσταντίνα
Full Member
 
Δημοσιεύσεις: 105
Εγγραφή: 17 Φεβ 2012, 16:31
Φοιτητής ΗΜΜΥ: Ναι

Re: Αντικειμενοστρεφής Προγραμματισμός [2012-2013]

Δημοσίευσηαπό Κωνσταντίνα » 24 Νοέμ 2012, 16:30

ζητείται σε μια άσκηση να δημιουργηθεί συνάρτηση-μέλος σε μια κλάση χωρίς παραμέτρους (δηλαδή class::function(void)), η οποία θα τυπώνει έναν πίνακα. πώς είναι δυνατό να γίνει κάτι τέτοιο αφού η συνάρτηση δε μπορεί να πάρει τη παράμετρο (στην προκειμένη περίπτωση τον πίνακα) που πρέπει να τυπωθεί;
Κωνσταντίνα
Full Member
 
Δημοσιεύσεις: 105
Εγγραφή: 17 Φεβ 2012, 16:31
Φοιτητής ΗΜΜΥ: Ναι

Re: Αντικειμενοστρεφής Προγραμματισμός [2012-2013]

Δημοσίευσηαπό James » 25 Νοέμ 2012, 04:38

Κωνσταντίνα έγραψε:ζητείται σε μια άσκηση να δημιουργηθεί συνάρτηση-μέλος σε μια κλάση χωρίς παραμέτρους (δηλαδή class::function(void)), η οποία θα τυπώνει έναν πίνακα. πώς είναι δυνατό να γίνει κάτι τέτοιο αφού η συνάρτηση δε μπορεί να πάρει τη παράμετρο (στην προκειμένη περίπτωση τον πίνακα) που πρέπει να τυπωθεί;

Κώδικας: Επιλογή όλων
class Book {
    int pages;

    ...

    void PrintPages(void) {
        cout << pages;
    }
}

Η PrintPages τυπώνει την pages χωρίς να τη δέχεται σαν παράμετρο. Δε μου αρέσει να το λέω αλλά μάλλον ήρθε η ώρα να διαβάσεις και λίγο τη θεωρία :-(
(Μόνο) James
Άβαταρ μέλους
James
Διαχειριστής
 
Δημοσιεύσεις: 1740
Εγγραφή: 08 Ιαν 2008, 22:29
Φοιτητής ΗΜΜΥ: Όχι

Re: Αντικειμενοστρεφής Προγραμματισμός [2012-2013]

Δημοσίευσηαπό Κωνσταντίνα » 25 Νοέμ 2012, 19:09

ναι τελικά το βρήκα :) θέλω να διαβάσω θεωρία, αλλά πήρα απ τον εύδοξο ένα βιβλίο για πολύ προχωρημένους προγραμματιστές.. :-\
Κωνσταντίνα
Full Member
 
Δημοσιεύσεις: 105
Εγγραφή: 17 Φεβ 2012, 16:31
Φοιτητής ΗΜΜΥ: Ναι

Παλιά Θέματα Εξετάσεων C++

Δημοσίευσηαπό alehunter » 29 Ιαν 2013, 19:37

Παρακαλω πολυ οποιος εχει:
καποιο παλιο θεμα
ξερει τιποτα sos(ασκηση θεωρια)
ή γενικα εχει κατι χρησιμο

να μου πει να μου στειλει pm...
Τελευταία επεξεργασία από Seitjo90 και 31 Ιαν 2013, 20:26, έχει επεξεργασθεί 1 φορά/ες συνολικά
Αιτία: Συγχώνευση Σχετικών Θεμάτων
Άβαταρ μέλους
alehunter
Hero Member
 
Δημοσιεύσεις: 1527
Εγγραφή: 24 Δεκ 2011, 01:33
Τοποθεσία: ακριβώς εκεί που θες να 'μαι
Φοιτητής ΗΜΜΥ: Ναι

Επόμενο

Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 8 επισκέπτες

cron