Προς το περιεχόμενο

Εργασία στην C


rafail1994

Προτεινόμενες αναρτήσεις

  • Απαντ. 130
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

Δημοσ. (επεξεργασμένο)

Το διάβασμα το θέλει πάντα για να τα κατανοήσουμε καλά ;P .Στην άσκηση μας ζηταει για καταχώριση ,επεξεργασία, διαγραφή κτλ να τα κάνουμε σε διαφορετικές συναρτήσεις όχι δηλαδή όπως το έκανες εσύ όλα μαζί αλλά δεν νομίζω να είναι πρόβλημα να τα «ξεχωρίσω» ,δείτε και την εκφώνηση μήπως και δεν κατάλαβες τι εννοώ.

 

 

 

Μια εταιρία, που έχει ως αντικείμενο το χονδρεμπόριο, διατηρεί ένα αρχείο με τις παραγγελίες των πελατών της και ένα αρχείο με τα αποθέματα των προϊόντων που διακινεί. Στο αρχείο των πελατών, σε κάθε εγγραφή, καταχωρείται το όνομα του πελάτη ως ένα string με το πολύ 20 χαρακτήρες, ένας κωδικός για τον πελάτη με τη μορφή ενός ακεραίου τύπου int, ένας κωδικός για το προϊόν που θέλει ο πελάτης με τη μορφή ενός ακεραίου τύπου int και η ποσότητα της παραγγελίας του ως ένας αριθμός τύπου float. Στο αρχείο των προϊόντων που διακινεί η εταιρία, σε κάθε εγγραφή, καταχωρείται ως ένας ακέραιος τύπου int ένας κωδικός που δηλώνει τον τύπο του προϊόντος και ένας αριθμός τύπου float που δηλώνει την ποσότητα που υπάρχει ως απόθεμα στην αποθήκη.

Να γραφεί το πρόγραμμα το οποίο να διαχειρίζεται τη διακίνηση των προϊόντων της εταιρίας.

Στο πρόγραμμα να οριστεί ένα μενού με τις εξής επιλογές:

Επιλογή 1: Καταχώρηση νέου πελάτη στο αρχείο των πελατών.

Επιλογή 2: Διαγραφεί ενός πελάτη από το αρχείο των πελατών.

Επιλογή 3: Καταχώρηση νέου προϊόντος στο αρχείο των προϊόντων.

Επιλογή 4: Διαγραφή ενός προϊόντος από το αρχείο των προϊόντων.

Επιλογή 5: Καταχώρηση νέων παραγγελιών στο αρχείο των πελατών.

Επιλογή 6: Καταχώρηση νέων παραλαβών στο αρχείο των προϊόντων.

Επιλογή 7: Εκτέλεση των παραλιών.

Επιλογή 8: Έξοδος από το πρόγραμμα.

Για κάθε επιλογή να οριστεί και μια ξεχωριστή συνάρτηση.

Οι συναρτήσεις των επιλογών 1 και 3 να καταχωρούν μια μόνο εγγραφή σε κάθε κλήση τους χωρίς να καταχωρούν αντίστοιχες ποσότητες για το προϊόν.

Οι συναρτήσεις των επιλογών 2 και 4 να διαγράφουν μια μόνο εγγραφή σε κάθε κλήση τους.

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

Η συνάρτηση της επιλογής 6 να αναζητά των κωδικό του προϊόντος στο αρχείο των προϊόντων και να καταχωρεί τη νέα ποσότητα στην αντίστοιχη θέση. Η συνάρτηση, σε κάθε κλήση της, να μπορεί να καταχωρεί περισσότερες από μια παραλαβές.

Η συνάρτηση της επιλογής 7 να ελέγχει όλο το αρχείο των πελατών και εφόσον υπάρχει σε εκκρεμότητα παραγγελία (η ποσότητα του προϊόντος που υπάρχει καταχωρημένη στην αντίστοιχη θέση είναι μεγαλύτερη από το 0) να τυπώνει το όνομα του πελάτη και την ποσότητα του προϊόντος που θα του αποσταλεί. Στην περίπτωση πού το απόθεμα του προϊόντος δεν επαρκεί να τυπώνεται η μέγιστη ποσότητα που μπορεί να αποσταλεί και η υπόλοιπη ποσότητα να παραμένει σε εκκρεμότητα. Σε κάθε περίπτωση να ενημερώνεται το αρχείο των προϊόντων με τις ποσότητες των προϊόντων που απέμειναν στην αποθήκη και το αρχείο των πελατών με τις ποσότητες των προϊόντων που παραμένουν σε εκκρεμότητα μετά την εκτέλεση των παραγγελιών.

Οι συναρτήσεις που υλοποιούν τις επιλογές να ανοίγουν τα αντίστοιχα αρχεία τα οποία και να κλίνουν με την έξοδο από τη συνάρτηση.

Ως περιορισμός στο πρόγραμμα να γίνει η παραδοχή ότι ο κάθε πελάτης μπορεί να αγοράσει μόνο έναν τύπο προϊόντος.

Να μη γίνεται έλεγχος αν υπάρχει πελάτης με τον ίδιο κωδικό ή προϊόν με τον ίδιο κωδικό όταν γίνονται καταχωρίσεις πελατών ή προϊόντων στα αρχεία.

Δεν υπάρχει προτεραιότητα στην εκτέλεση των παραγγελιών. Οι παραγγελίες εκτελούνται με τη σειρά που υπάρχουν οι αντίστοιχες εγγραφές στο αρχείο των πελατών. 

 

Βοηθητικές παρατηρήσεις

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

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

 

 

 

Εγώ μέχρι στιγμής βρίσκομαι σε αυτό το σημείο  

 

 

 

 

 

Επεξ/σία από rafail1994
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όταν δημιουργώ ένα αρχείο κειμένου(txt) μέσα από την main() μετά μέσα απο μια συνάρτηση μπορώ να αποθηκεύσω σε αυτό το αρχείο τα στοιχειά που έχει μέσα μια struct ;

 

Όσο το έχω προσπαθήσει δεν μπορώ να το κάνω όταν είναι όλα στην main() δεν έχω πρόβλημα

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όταν δημιουργώ ένα αρχείο κειμένου(txt) μέσα από την main() μετά μέσα απο μια συνάρτηση μπορώ να αποθηκεύσω σε αυτό το αρχείο τα στοιχειά που έχει μέσα μια struct ;

 

Όσο το έχω προσπαθήσει δεν μπορώ να το κάνω όταν είναι όλα στην main() δεν έχω πρόβλημα

  Φυσικά, υποψιάζομαι ότι κάτι δεν θα επιστρέφεις σωστά απο τη συνάρτηση γι'αυτό θα έχεις το πρόβλημα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  Φυσικά, υποψιάζομαι ότι κάτι δεν θα επιστρέφεις σωστά απο τη συνάρτηση γι'αυτό θα έχεις το πρόβλημα.

 

Όντως αυτό είναι το πρόβλημα και με έχει ταλαιπωρήσει αρκετά .

 

Έχω αυτήν την δομή

struct recordcustomer
{
       char  CustomerName[20];                            //¼íïìá ðåëÜôç 
       int   CustomerCode;                                //Êùäéêüò ðåëÜôç
       int   ProductCode;                                 //Êùäéêüò ðñïúüíôïò
       float OrderQuantity;                               //Ðïóüôçôá ðáñáããåëßáò 
};

Μέσα από την main θα καλέσω την συνάρτηση void regcust η όποια μέσα από αυτήν θα μπουν τα δεδομένα στην δομή και μετά θα αποθηκευτούν και στο αρχείο που έχω δημιουργήσει μέσα από την main .

 

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

 

Εάν μπορεί ας δώσει μια βοήθεια κάποιος πάνω σε αυτό γιατί έχω αρχίσει και εκνευρίζομαι :P

 

 

 

edit:

 

Επίσης έχω και ένα άλλο προβληματάκι που δεν έχω καταλάβει κιόλας γιατί γίνεται έχω αυτήν την swich και όταν καλέσω την συνάρτηση και μετά από την συνάντηση ξανά επιστρέφω στην main μου γίνεται μια συνεχόμενη επανάληψη χωρίς σταματημό τι τρέχει ;


for { ;; }
switch(menu)
          {
              case 1:
                  regcust(arxeio);                              //ÊÜëåóìá óõíÜñôçóçò êáôá÷þñçóçò ðåëÜôç
                  break;
              case 2:
                  delcust();                              //ÊÜëåóìá óõíÜñôçóçò äéáãñáöÞò ðåëÜôç
                  break;  
              case 3:
                  regprod();                              //ÊÜëåóìá óõíÜñôçóçò êáôá÷þñçóç íÝïõ ðñïúüíôïò
                  break;
              case 4:
                  delprod();                              //ÊÜëåóìá óõíÜñôçóçò äéáãñáöÞò ðñïúüíôïò
                  break;
              case 5:
                  regquan();                              //ÊÜëåóìá óõíÜñôçóçò êáôá÷þñçóç íÝùí ðáñáããåëéþí
                  break;
              case 6:
                  regresi();                              //ÊÜëåóìá óõíÜñôçóçò êáôá÷þñçóçò íÝùí ðáñáëáâþí
                  break;
              case 7:
                  implqua();                              //ÊÜëåóìá óõíÜñôçóçò åêôÝëåóçò ôùí ðáñáããåëéþí
                  break;
              case 8:
                  printf("Åõ÷áñéóôïýìå!\n");              //¸îïäïò áðï ôï ðñüãñáììá
                  exit(1);
              default: 
                  printf("ËÜèïò åðéëïãÞ îáíÜ äïêßìáóå!\n");
                  continue;
          }
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το recordcustomer ειναι structure tag που μέσω αυτου μπορεις να δηλώσεις μια μεταβλητή δομής αυτου του τύπου και μετά να την περάσεις στην συνάρτηση οταν την καλείς.

  struct recordcustomer customer1;

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

 

Κατι που εμενα προσωπικα δεν μ αρεσει στην οργανωση του πανεπιστημιου ειναι οτι σε βάζει να λυσεις μια εργασια χωρις πρωτα να έχεις τριφτει με τις βασικές έννοιες... δηλαδη εσυ ψαχνεις τωρα να λυσεις μια καλη ασκηση που περιέχει και δομές μεσα αλλα χωρις να έχεις καταλαβει τα βασικα για τις δομές. Αυτο δεν ξερω κατα ποσο ειναι αποτελεσματικο σαν μεθοδος διδασκαλιας. Εσυ νιωθεις οτι ολο αυτο σε βοηθάει να μάθεις να προγραμματιζεις ή οτι απλα αντε γρηγορα γρηγορα να βγαλουμε την ασκηση να περασουμε το μαθημα? Απλη απορια.ΣΤο λεω διοτι οι καθηγητες στα ππαρια τους δεν εχουν καποια μεριμνα να σε παρουσιασουν μετα στην αγορα εργασιας ή σε καποια επιχειρηση μονος σου θα εισαι στην ανηφορα.Και αν δεν εχεις φτιαξει σταθερες βασεις με χρονο και κοπο την ανηφορα δεν θα την ανεβεις.

 

Μπορουν το πρωτο εξαμηνο να διδασκουν C αλλα βαζοντας βατές ασκησεις. Δεν μπορει πχ να ζηταει απο τον πρωτοετη που μολις μπηκε στην σχολη και μολις ειναι 1 μηνας που έχει δει καποια βασικα να στησει ολοκληρο προγραμμα πχ ποκερ ή οτι άλλο με την λογικη οτι θα σκιστει στο google ή σε βιβλια και θα τα μαθει μεσα σε μια νυχτα ή σαν μάγος θα τα συνθέσει ολα και οριστε το προγραμμα.Σε μια νυχτα μεσα δεν εμαθε κανεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για την for switch θα φτιαξεις ενα flag και οταν ειναι να σπαει σε καποιο case θα βαζεις το flag false ξερω γω, αλλιως δεν γινεται να σπασεις loop μεσα απο switch (γινεται μονο με return)

πχ

int flag = 1;

for(;flag;)

{

switch(x)

{

case 21312:

flag = 0;

break;

..
}
}

 

 

 

Για το αλλο που λες, δεν εχω καταλαβαει τι θες να κανεις.... Πχ εχεις ενα struct foo στη main και εσυ θες να τον γεμισεις απο μια αλλη συναρτηση;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι. Άν έχεις ένα switch μέσα σε ενα infinite for τοτε το break δεν σε βγαζει απο το loop αλλα απο το switch μονο.

 
#include<stdio.h>

int main(void)
{
    
int code=1;

for(; {
    switch( code ) {
        case 1:
        break;
        
        // ...
        default: printf("Never");
    }
    printf("Infinite");
}

return 0;
}
 
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το recordcustomer ειναι structure tag που μέσω αυτου μπορεις να δηλώσεις μια μεταβλητή δομής αυτου του τύπου και μετά να την περάσεις στην συνάρτηση οταν την καλείς.

  struct recordcustomer customer1;

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

 

Κατι που εμενα προσωπικα δεν μ αρεσει στην οργανωση του πανεπιστημιου ειναι οτι σε βάζει να λυσεις μια εργασια χωρις πρωτα να έχεις τριφτει με τις βασικές έννοιες... δηλαδη εσυ ψαχνεις τωρα να λυσεις μια καλη ασκηση που περιέχει και δομές μεσα αλλα χωρις να έχεις καταλαβει τα βασικα για τις δομές. Αυτο δεν ξερω κατα ποσο ειναι αποτελεσματικο σαν μεθοδος διδασκαλιας. Εσυ νιωθεις οτι ολο αυτο σε βοηθάει να μάθεις να προγραμματιζεις ή οτι απλα αντε γρηγορα γρηγορα να βγαλουμε την ασκηση να περασουμε το μαθημα? Απλη απορια.ΣΤο λεω διοτι οι καθηγητες στα ππαρια τους δεν εχουν καποια μεριμνα να σε παρουσιασουν μετα στην αγορα εργασιας ή σε καποια επιχειρηση μονος σου θα εισαι στην ανηφορα.Και αν δεν εχεις φτιαξει σταθερες βασεις με χρονο και κοπο την ανηφορα δεν θα την ανεβεις.

 

Μπορουν το πρωτο εξαμηνο να διδασκουν C αλλα βαζοντας βατές ασκησεις. Δεν μπορει πχ να ζηταει απο τον πρωτοετη που μολις μπηκε στην σχολη και μολις ειναι 1 μηνας που έχει δει καποια βασικα να στησει ολοκληρο προγραμμα πχ ποκερ ή οτι άλλο με την λογικη οτι θα σκιστει στο google ή σε βιβλια και θα τα μαθει μεσα σε μια νυχτα ή σαν μάγος θα τα συνθέσει ολα και οριστε το προγραμμα.Σε μια νυχτα μεσα δεν εμαθε κανεις.

 

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

Συμφωνώ μαζί σου δομές έχουμε κάνει σε ένα μάθημα και σε μια απλή εργασία την προηγουμένη εβδομάδα εγω προσωπικά δεν κατάλαβα ακριβώς πως μπορείς να της χρησιμοποιήσεις και έτσι σε αυτήν δυσκολεύομαι και έχω φάει  πόσες ακόμη ωρες στο google ψάχνοντας, διαβάζοντας για να ξεκαθαρίσω τα πράγματα .Που να δεις και στο επόμενο εξάμηνο που μπαίνουμε κατευθείαν στα βαθιά με c++ .Ωραία το λύσαμε και με την switch το πρόβλημα

 

Ευχαριστώ !!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Συμφωνώ μαζί σου δομές έχουμε κάνει σε ένα μάθημα και σε μια απλή εργασία την προηγουμένη εβδομάδα εγω προσωπικά δεν κατάλαβα ακριβώς πως μπορείς να της χρησιμοποιήσεις και έτσι σε αυτήν δυσκολεύομαι και έχω φάει  πόσες ακόμη ωρες στο google ψάχνοντας, διαβάζοντας για να ξεκαθαρίσω τα πράγματα .Που να δεις και στο επόμενο εξάμηνο που μπαίνουμε κατευθείαν στα βαθιά με c++ .Ωραία το λύσαμε και με την switch το πρόβλημα

 

Ευχαριστώ !!

 

Το πρωτο γραμμα κεφαλαιο μπαινει οταν θες να υπακουσεις σε μια σύμβαση που έχει υιοθετηθεί απο κάποιους προγραμματιστες. Για αυτο σε ρωτησα αμα την έχεις δει κάπου γιατι μπορει να υπάρχει οντως .Δεν ειναι υποχρεωση της γλωσσας οποτε ως προς αυτο δεν υπάρχει προβλημα. Για παραδειγμα οταν δημιουργεις ενα συνωνυμο για εναν τυπο δεδομενων με το typedef

typedef int Integers;
 
Integers x , y , z;  // Ισοδυναμο με int x , y , z ;

Μια δομή μπορείς να την χρησιμοποιήσεις για να ορισεις μεταβλητές τέτοιου τύπου πιο κατω στον κώδικα εφοσον την έχεις ονοματίσει... έχεις δηλαδη μια ετικέτα δομής.

 
struct student {
    int grade;
    char name[NAME_LEN+1];
} student1 , student2 ;  // global variables.
 

Τώρα οι student1 , student2 ειναι δομές τύπου student. Το student ειναι η ετικετα που μπορεις να χρησιμοποιήσεις για να δηλώσεις οσες μεταβλητες τέτοιου τύπου θέλεις.

 

Μέσα στην main για παράδειγμα μπορεις να έχεις κάτι τέτοιο :

  struct student other_student;
  ή  struct student studentN;

Oι μεταβλητές ομως αυτες δεν ειναι αρχικοποιημένες. Για την αρχικοποιήση εμενα προσωπικα με βολευει με Designated Initializers (C99) .

 
struct student {
    int grade;
    char name[NAME_LEN+1];
} student1 = { .grade = 18 , .name="Nikos" } , student2 ;  /* Ο συνδυασμός του τελεστή 
τελειας και του ονοματος του μέλους ειναι ένας designator ενω ο αρχικοποιητής 
για το πρώτο μέλος ειναι η σταθερά 18. */
 

Η student2 ειναι αρχικοποιημενη? τι πιστευεις?

 

υγ Το NAME_LEN ειναι σταθερά. Πριν την χρησιμοποιήσεις θα πρέπει να την έχεις ορισει.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Με τα κεφαλαια που λες, ειναι θεμα αναγνωσης του κωδικα και απο την  εμπειρια μου δεν εχω δει οτι υπαρχει κατι το στανταρ. Πχ στην std τα παντα ειναι με μικρα, τυποι/συναρτησεις απο την αλλη στο winiapi οι τυποι γραφονται με full caps και οι συνρατησεις με καθε λεξη να εχει το πρωτο κεφαλαιο και τα ονοματα ειναι περιγραφικα  (πχ τυπος WNDCLASS, συναρτηση GetWindowTextLength), στο directx ειναι σα το winapi μονο που εχει ενα perfix σε καθε τι, πχ struct D3D11_BUFFER_DESC συναρτηση D3DX11CreateDeviceAndSwapChain, στο opengl εχεις τους τυπους να αρχιζουν με perfix GL (caps) πχ GLuint και τις συναρτησεις με perfix gl (οχι caps) πχ glVertex3f, στη python εχεις τυπους να αρχιζουν με Py (πχ PyObject) και τις συνρατησεις το αν αρχιζουν με Py + τυπους του object + _ ονομα συναρτησης πχ PySys_GetObject ή PyString_GetString 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

 

Και τα προβλήματα δεν τέλειωσαν :P, όλα μια χαρά δημιουργεί το αρχείο ,κάνω την καταχώριση μου αλλά όταν ανοίγω το αρχείο δεν έχει π.χ το όνομα αλλά εναν αριθμό 2686660 τι λάθος έκανα πάλι ;

 

 

@Star_Light

Το student2 νομίζω δεν είναι αρχικοποιημένη αλλά μπορείς να το κανείς μετέπιπτα μεσα στον κώδικα σου

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...