freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

Δείκτες - γενικά


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 2 από 2 [26 Μηνύματα]      Bookmarks Tags: γενικα Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
Σελίδα:  Προηγούμενο  1, 2
ΑποστολέαςΜήνυμα
bxenos


Μέλος από: 18 Αυγ 2008
Μηνύματα: 53

View users profile
ΜήνυμαΣτις: 27 Οκτ 2008 18:07    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

chief ανέφερε:
κώδικας:

int main (int argc, char *argv[]){
   FILE *file_1, *file_2;

   char c[120];
***το c[] δεν χρειαζεται να δηλωθει στο μπλοκ αυτο (που είναι πολυ γενικο), αλλα σε εκεινο που χρειάζεται να χρησιμοποιηθεί.
   if(argc<0 || argc>6){
***το argc ειναι πάντα >0 (εκτός αν έχεις bit arithmetic overflow, π.χ. 32768 arguments με ακεραίους 16bitους)
      printf("Usage: fcompare [options] file1 file2, options: /nc, /s, /ln.\n")
   }
   else if {
      if ((file_1 = fopen(argv[1],"r"))!=NULL){
         if((file_2 = fopen(argv[2], "r"))!=NULL)
[color=darkred]
                                             ***πολυ ωραία, αλλα΄δεν έχεις βάλει κωδικα
                                             να ελέγχει για τις παραμέτρους...
                                             ***οπως πάντως σωστα εχεις καταλαβει, ειναι
                                             ενα τμημα κωδικα η ανάγνωριση των παραμέττρων
                                             που θα δωσει ο χρηστης και θα έρθουν στα ragc,argv
                                             και αλλο η συγκριση των αρχειων.
                                             ***εδω θα χρειαζοταν το c[] να δηλωθει και μετα
                                             να αρχισει η συγκριση των αρχειων
[/color]
      }
   }


fclose(file_1);
fclose(file_2);
[color=darkred]
***δεν επιτρεπετε να κλεισεις αρχειο που δεν έχει ανοίξει, αν δηλαδή
π.χ. το file_2 είναι NULL και πας να το κλείσεις, το πρόγραμμα μπορεί να
έχει ανεξέλενκτη συμπεριφορά.
Αρα πρέπει να ελένξεις πρώτα αν δεν είναι NULL και μετά να το κλείσεις
[/color]
return 0;


Μια ιδέα για την αναγνώριση των παραμέτρων θα ήταν να έχεις μια δομή με
τα σημαιάκια (flags) και να τα ενημερώνεις.
π.χ.
κώδικας:

struct {
        char nc;
        char ln;
        char s;
        char *fname1;
        char *fname2;
} params;

void get_params(struct params *p,int argc,char **argv){
      int i;
       //βαλε αρχικες τιμες
       memset(p,0,sizeof(struct params));//μηδενίζει όλα τα περιεχόμενα της δομης p τυπου params
       for(i=1;i<argc;i++){
             if(argv[i][0] == '/'){
                  //είναι παράμετρος...
                  κάνε κάτι...
             } else {
                   //είναι όνομα αρχείου...
                   κάνε κάτι
             }
       }
}

int fcompare(struct param *p){
       //άνοιξε τα αρχεία και κάνε συγκρίσεις
       ...
       //επέστρεψε 0 αν όλα πήγαν καλά (άνοιξαν τα αρχεία και έγινε σύγκριση) ή -1
      //αν υπάρχει σφάλμα παραμέτρων ή δεν υπάρχουν αρχεία ή ...
}

int main(int argc,char **argv){
        struct params p;
        get_params(&p,argc,argv);
        if(fcompare(&p)<0)
            return 1;//σφάλμα κατα την εκτέλεση
        return 0;//όλα καλά, όλα ανθηρά
}



όπως είπα έχουμε δυο ανεξάρτητες εργασίες να κάνουμε, άρα ας ξεκινήσουμε με δυο κύριες συναρτήσεις (fcompare,get_params).

Last edited by bxenos on 05 Νοε 2008 01:02, edited 1 time in total
chief


Μέλος από: 14 Οκτ 2008
Μηνύματα: 49

View users profile Visit posters website
ΜήνυμαΣτις: 30 Οκτ 2008 16:35    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

ΘΑ σου ήταν εύκολο να μου πεις δυο πράγματα παραπάνω για το παρακάτω(να μου εξηγήσεις τι ακριβός κάνει);
παράθεση:
if(argv[i][0] == '/'));

μήπως εννοείς ;
παράθεση:
if(argv[i][0] == '/n').


Επίσης μου λες

παράθεση:
//βαλε αρχικες τιμες


Αφού από κάτω μηδενίζεις την δομή....
chief


Μέλος από: 14 Οκτ 2008
Μηνύματα: 49

View users profile Visit posters website
ΜήνυμαΣτις: 30 Οκτ 2008 23:30    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Προχώρησα λίγο ακόμα, πες μου εάν έχω λάθη.


κώδικας:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct {
        char nc;
        char ln;
        char s;
        char *fname1;
        char *fname2;
} params;

void get_params(struct params *p,int argc,char **argv){
      int i;
       //βαλε αρχικες τιμες
       memset(p,0,sizeof(struct params));//μηδενίζει όλα τα περιεχόμενα της δομης p τυπου params
       /* Start at i = 1 to skip the command name. */
       for(i=1;i<argc;i++){
             if(argv[i][0] == '/'){
                switch (argv[i][1]) {

                      case 'a':   nc = argv[++i];
                            break;

                      case 'b':   ln = argv[++i];
                            break;

                      case 'c':    s = argv[++i];
                            break;
                 //είναι παράμετρος...
                  //κάνε κάτι...
             } else {
                   //είναι όνομα αρχείου...
                   //κάνε κάτι
             }
       }
}
       //άνοιξε τα αρχεία και κάνε συγκρίσεις
int fcompare(struct param *p){
   if((fname1 = fopen(argv[1],"r"))!=NULL){
      fscanf((FILE *fname1)!=EOF);
          }

   if((fname2 = fopen(argv[2], "r"))!=NULL){
               fscanf((FILE *fname2)!=EOF);
            }


       return 1;

   }//επέστρεψε 0 αν όλα πήγαν καλά (άνοιξαν τα αρχεία και έγινε σύγκριση) ή -1
            else {
               return -1;
            }
      //αν υπάρχει σφάλμα παραμέτρων ή δεν υπάρχουν αρχεία ή ...
}

int main(int argc,char **argv){
        struct params p;
        get_params(&p,argc,argv);
        if(fcompare(&p)<0)
            return 1;//σφάλμα κατα την εκτέλεση
        return 0;//όλα καλά, όλα ανθηρά
}


Την σύγκριση θα την κάνω με την strcmp; ή strncmp
Π.χ. fprintf(%s %s, strcmp (fnam1-fname2));
bxenos


Μέλος από: 18 Αυγ 2008
Μηνύματα: 53

View users profile
ΜήνυμαΣτις: 31 Οκτ 2008 01:17    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

chief ανέφερε:
ΘΑ σου ήταν εύκολο να μου πεις δυο πράγματα παραπάνω για το παρακάτω(να μου εξηγήσεις τι ακριβός κάνει);
παράθεση:
if(argv[i][0] == '/'));

το argv[i] είναι ένας πίνακας χαρακτήρων με την παράμετρο i.
το argv[i][0] είναι ο πρώτος χαρακτηρας από την παράμετρο.
Αν π.χ. ο χρήστης έδωσε fcompare /xxx yyy
η παράμετρος argv[1] είναι "/xxx" και
o χαρακτηρας argv[1][0] είναι '/'


Επίσης μου λες

παράθεση:
//βαλε αρχικες τιμες


Αφού από κάτω μηδενίζεις την δομή....

το //βαλε αρχικες τιμες εξηγεί τι κάνει η παρακάτω γραμμή (βάζει αρχικές μηδενικές τιμές)
bxenos


Μέλος από: 18 Αυγ 2008
Μηνύματα: 53

View users profile
ΜήνυμαΣτις: 31 Οκτ 2008 01:30    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

fprintf(%s %s, strcmp (fnam1-fname2)); <<< αυτό δεν σημαίνει τίποτα

θα πρέπει να διαβάσεις μια γραμμή απο το ενα αρχείο και μια γραμμή απο το άλλο
Μπορείς να διαβάσεις με fscanf, fgets ή να φτιάξεις δικιά σου συνάρτηση.
Τους πίνακες χαρακτηρων που θα έχεις διαβάσει (μια γραμμή απο το ένα και μία απο το άλλο) θα τις συγκρίνεις με strcmp.

//ακολουθεί συμαζεμένος ο κώδικας σου με τις διορθωσεις

κώδικας:

void get_params(struct params *p,int argc,char **argv)
 {
       int i;
          //βαλε αρχικες τιμες
          memset(p,0,sizeof(struct params));//μηδενίζει όλα τα περιεχόμενα της δομης p τυπου params
          for(i=1;i<argc;i++) /* Start at i = 1 to skip the command name. */
          {
         if(argv[i][0] == '/')
         {
         if(!stricmp(argv[i],"/nc"))//το string argv[i] είναι παράμετρος
                                p->nc = TRUE;//ο χρηστης έδωσε /nc
                     if(!stricmp(argv[i],"/ln"))
            p->ln = TRUE;//έδωσε /ln
                     if(!stricmp(argv[i],"s"))
                               p->s = TRUE;//έδωσε /s
             } else {
                            //είναι όνομα αρχείου...
                         //αν είναι το πρώτο όνομα είναι το πρώτο αρχείο,
                         //αλλιώς είναι το δεύτερο αρχειο
                              if(p->fname1 == NULL)
                                   p->fname1 = argv[i];
                            else if(p->fname2 == NULL)
                                   p->fname2 = argv[i];
                                     //else: ο χρήστης έδωσε περισσότερα απο δύο αρχεία.
                                    //να του το πούμε, η να κρατήσουμε μυστικό;
                      }
             }
}
 
 int fcompare(struct params *p)
{
   printf("κανε συγκριση των αρχείων %s και %s\n",p->fname1,p->fname2);
   return 0;
}


Last edited by bxenos on 05 Νοε 2008 01:08, edited 3 times in total
chief


Μέλος από: 14 Οκτ 2008
Μηνύματα: 49

View users profile Visit posters website
ΜήνυμαΣτις: 01 Νοε 2008 22:24    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Λοιπόν μετά από κάμποση προσπάθεια κατάφερα να κάνω το παρακάτω, φυσικά και έχει errors αλλά πιστεύω ότι είμαι κοντά στο τέλος…


κώδικας:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLINE 1000

typedef  struct {
        char nc;
        char ln;
        char s;
        char *fname1;
        char *fname2;
} params;

void get_params(struct params *p,int argc,char **argv){
      int i;
       //βαλε αρχικες τιμες
       memset(p,0,sizeof(struct params));//μηδενίζει όλα τα περιεχόμενα της δομης p τυπου params
       /* Start at i = 1 to skip the command name. */
       for(i=1;i<argc;i++){
   if(argv[i][0] == '/'){
      //το string argv[i] είναι παράμετρος
               if(!stricmp(argv[i],"/nc"))
                    p->nc = TRUE;//ο χρηστης έδωσε /nc
               if(!stricmp(argv[i],"/ln"))
                      p->ln = TRUE;//έδωσε /ln
               if(!stricmp(argv[i],"s"))
                      p->s = TRUE;//έδωσε /s
   }else {
                         //είναι όνομα αρχείου...
      //αν είναι το πρώτο όνομα είναι το πρώτο αρχείο,
               //αλλιώς είναι το δεύτερο αρχειο
                      if(p->fname1[0] == '\0')
                             p->fname1 = argv[i];
                      else if(p->fname2[0] == '\0')
                             p->fname2 = argv[i];
                      //else: ο χρήστης έδωσε περισσότερα απο δύο αρχεία.
                      //να του το πούμε, η να κρατήσουμε μυστικό;
             }
       }

          void diff_line( char *lineone, char *linetwo, int linenumber )
          {
         if(strcmp (lineone, linetwo) < 0 || strcmp (lineone, linetwo) > 0)
           printf( "%d<%s\n%d>%s\n", linenumber, lineone, linenumber, linetwo);
       }

       int main(int argc, char *argv[] )
       {
         FILE *fname1, *fname2;
         char fname1_line[MAXLINE], fname2_line[MAXLINE];
         int i;

         if ( argc != 3 )
           {
             printf("differ fileone filetwo\n");
             exit(0);
           }

         fname1 = fopen( argv[1], "r" );
         if ( ! fname1 )
           {
             printf("Error opening file %s\n", argv[1]);
           }

         fname2 = fopen( argv[2], "r" );
         if ( ! fname2 )
           {
             printf("Error opening file %s\n", argv[2]);
           }
         i = 0;
         while ( (fgets(fname1_line, MAXLINE, fname1) != NULL)
            && (fgets(fname2_line, MAXLINE, fname2) != NULL))
         {
           diff_line( fname1_line, fname2_line, i );
           i++;
         }

         return 0;
       }
}

bxenos


Μέλος από: 18 Αυγ 2008
Μηνύματα: 53

View users profile
ΜήνυμαΣτις: 01 Νοε 2008 23:25    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Δεν θα γράψω κώδικα αυτή τη φορά, διότι δεν προσπαθείς να τον καταλάβεις, αρα τζάμπα τον γράφω.
Θα ξαναπώ ότι δεν θα ασχοληθείς πουθενα με τα argv/argc εκτος απο την
get_params(...). Τα ονοματα αρχειων εχει φροντισει να στα δωσει η get_params(...) αρκεί να της τα ζητησεις!

περιμένω απάντησεις στα παρακάτω:
1) Τι αλλο έχει φροντισει να κάνει η get_params(...);
2) Πού βρίσκονται τα ονόματα αρχείων αποθηκευμένα;
3) πώς θα καλέσεις την get_params() απο την main();
4) τι νομίζεις σημαίνει αυτο που γράφεις:
κώδικας:
 if(strcmp (lineone, linetwo) < 0 || strcmp (lineone, linetwo) > 0)

5) τι νομίζεις θα τυπώνει αυτό:
κώδικας:
           printf( "%d<%s\n%d>%s\n", linenumber, lineone, linenumber, linetwo);

6) σε πόσο καιρό θα ήθελες να παραδώσεις την εργασία;
7) έχεις δοκιμάσει να "τρέξεις" τον κώδικα που γράφεις στον υπολογιστη σου;
chief


Μέλος από: 14 Οκτ 2008
Μηνύματα: 49

View users profile Visit posters website
ΜήνυμαΣτις: 03 Νοε 2008 00:33    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Καταρχάς όντος κάποια σημεία του κώδικα δεν τα κατάλαβα, έλλειψη χρόνου ….και γενικά κατανοούνται δύσκολα κάποια πράγματα και μου παίρνει πολύ χρόνο.
Από την άλλη βρήκα ένα παράδειγμα στο δίκτυο και προσπάθησα, μάλλον λίγο κουτουρού, να το προσαρμόσω στην άσκησή.
Πραγματικά μπορεί να πιέζομαι από χρόνο αλλά συμφωνώ ότι χρειάζεται να κατανοήσω των κώδικα.
Η παρούσα εργασία είναι το 1/3 της παραδιδόμενης εργασίας το υπόλοιπο 2/3 είναι να φτιάξω κάτι σαν το Pagerank του Googleκαι όλα αυτά τα παραδίδω την άλλη Δευτέρα το πρωί.
Τώρα όσο αφορά τον κώδικα έχω κάποιες απορίες μια βασική και ίσως γελοία είναι η main () δεν χρειάζεται η αντικαταστάθηκε με την void get_params(struct params *p,int argc,char **argv)
Επίσης δεν καταλαβαίνω αυτών τον συμβολισμό σου p->nc. Είναι αντί του p.nc;
τώρα για τα ερωτήματα που μου έθεσες
1.έχω την εντύπωση ότι δηλώνεις και την δομή σαν pointer.
2.Τα ονόματα αρχείων char *fname1; char *fname2;
3) πώς θα καλέσεις την get_params() απο την main(); <--- αυτό θα του ρίξω μια ματιά αύριο
bxenos


Μέλος από: 18 Αυγ 2008
Μηνύματα: 53

View users profile
ΜήνυμαΣτις: 03 Νοε 2008 02:36    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

η main() δεν αντικαθίστατε ποτέ απο άλλες συναρτήσεις.
Οταν έχεις ένα πρόγραμμα, για λόγους απλότητας-κατανόησης-ευκολίας σπας τις λειτουργίες σε συναρτήσεις (μπορούμε να τα πούμε υποπρογράμματα, αν σε δυσκολεύει ο όρος).
Οπότε αντί να βάλεις κώδικα να ψάξει να βρεί τι είναι το κάθε argv στην main το εβάλα σε μια άλλη συνάρτηση (που γούσταρα να την ονομάσω get_params). Θα μπορούσα να την πω και asximos() αλλά με βόλευε το όνομα.
Αρκεί στην main να την καλέσω για να κάνει τη δουλεία.

Τώρα απο ότι βλέπω δεν ξέρεις τι είναι συναρτησεις, τι είναι pointers και σε τι διαφέρουν απο τις struct. Έχεις μείνει πολύ πίσω στην C. Και δυστυχώς δεν είναι απλή ασκηση αυτή (με εφαρμογή ενός απλού βρόγχου...).
Προτείνω να διαβάσεις συναρτήσεις άμεσα... και όχι να κόβεις ράβεις άσχετα κομάτια που βρίσκεις στο google και χάνεις τον χρόνο σου.

Στην main() δήλωσα τη δομή σαν τοπική μεταβλητή (ορατή μόνο στην main). Οποιοδήποτε μέλος το βρίσκω με p.ονομα (π.χ. p.fname1).
Αν την περάσω στην get_params() δεν θα είναι πια δομή, αλλά θα είναι pointer σε δομή, αρα πρόσβαση σε μέλος με p->ονομα (π.χ. p->fname).
Αν είχες προσέξει την main στην έχω δώσει έτοιμη http://www.freestuff.gr/forums/viewtopic.php?p=374556#374556 απο την αρχή - βασικά όλο το σκελετό σου είχα δώσει και έπρεπε να συμπληρώσεις τις fcompare και get_params. Παρ'ολα αυτά βλέπω οτι με την main παίζεις ακόμα (χωρίς λόγο), διότι δεν ξέρεις τι είναι συνάρτηση ακόμα αλλά και ούτε αλγοριθμικά ξέρεις τι πρέπει να κάνεις.
Την get_params() την έχεις εδώ http://www.freestuff.gr/forums/viewtopic.php?p=375003#375003, άρα προσπάθησε να τις καταλάβεις και όχι να πετάς άχρηστες γραμμές με ανούσιο κώδικα χωρίς λόγο, τον οποίο δεν τον καταλαβαίνεις και δεν τον έχεις τρέξει να δείς τι κάνει και χάνεις τζάμπα τον χρόνο σου.
chief


Μέλος από: 14 Οκτ 2008
Μηνύματα: 49

View users profile Visit posters website
ΜήνυμαΣτις: 03 Νοε 2008 11:39    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Λοιπών, μάλλον σου έδωσα λάθος εντύπωση, για το θέμα θεωρίας έχω ρίψει αρκετό διάβασμα και γενικά στην C αφιερώνω 15-20 ώρες την εβδομάδα, αλλά επειδή στη βράση κολλάει το σίδερο η θεωρία με την πράξη σε κάποια σημεία έχουν χαοτική διαφορά, το τι είναι pointer τι είναι structure (και πως συντάσσεται) και τι είναι συνάρτηση μου είναι γνωστά, αλλά στην εφαρμογή η σκέψη μου είναι πολύ πιο απλή από τον κώδικα που γράφεις σε σημείο που μπερδεύομαι, με την main παρανόησα νομίζοντας ότι την έβγαλες από έξω βάση κάποιας συνθήκης την οποία δεν ήξερα......
Τέλος πάντων, θα προσπαθήσω να κάνω μια σούμα όλα αυτά που μου είπες και που έγραψες, θα προσπαθήσω να ξανά αναλύσω τον κώδικα και εδώ είμαστε.
Προσωρινά σε ευχαριστώ για τον χρόνο σου.

Υ.Γ. Πάντως αυτό το βελάκι στο p πραγματικά με μπέρδεψε.....
Υ.Γ. Η πρόσβαση σε μέλος δομής γίνεται με το p.x το βελάκι δεν το έχω δει πουθενά στην θεωρία.
bxenos


Μέλος από: 18 Αυγ 2008
Μηνύματα: 53

View users profile
ΜήνυμαΣτις: 03 Νοε 2008 13:46    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

κώδικας:
struct kati {
     int a;
     char b;
     char *s;
}; //τωρα δηλωσα οτι μπορω να έχω μια δομη που περιεχει 3 στοιχεια.
//δεν εχω δεσμευσει χωρο στην μνημη γι'αυτη.
//εχω ορίσει επίσεις με την struct ποσο χωρο χρειαζεται στη μνημη.

struct kati aa;//τωρα δεσμευσα χωρο στην μνημη για τα 3 στοιχεια.

struct kati *ptr;//τωρα δεσμευσα χωρο στην μνημη για εναν ΔΕΙΚΤΗ για 3 στοιχεια.
//προσοχη:δεν δεσμευσα χωρο για την δομη (με τα 3 στοιχεια) αλλα μονο για (ασ πουμε) εναν ακέραιο που έχει τη θεση μνημης στην RAM που ξεκιναει μια δομη kati.
//αν δηλαδή μια δομή kati ξεκινά απο τη θέση μνήμης 10320 και βάλω το δείκτη
//να δείχνει στην δομή αυτη, η τιμή του δείκτη θα είναι 10320.
//Προσοχη αυτος ο δεικτης που έφτιαξα μόλις τώρα δεν δειχνει σε πραγματικη
//θεση μνημης τωρα διοτι δεν του
//εχω δωσει αρχικη τιμή (έχει λοιπον τυχαια (σχεδον) περιεχομενα τωρα μεσα του).

int main(void){
         aa.a = 3;
         aa.b =  'x';
         aa.s = "μπλα μπλα";

         ptr->a = 4;                     //η εντολή αριστερά ειναι συντακτικα σωστη.
                    // έχει όμως λογικό λάθος, διοτι δεν
                                              //εχω βαλει τιμη στην ptr. To ποιο πιθανο είναι να βγαλει
                                             //protection fault και το λειτουργικο συστημα να κλεισει
                                             //το προγραμμα μου

         ptr = &aa;                     //θελω η ptr να δειχνει στην δεσμευμενη μνημη aa
         ptr->b = 'p';                    //τι τιμή έχει τωρα το ptr->b;
                                             //τι τιμη έχει τωρα το aa.b;

        //τι τιμή έχει το ptr->s;
}


Ελπίζω το σύντομο μάθημα με τους δείκτες να βοήθησε λίγο.
Δες και το πρώτο μηνυμα στο θέμα αυτό που έχω γράψει για την χρήση των δεικτών.
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 2 από 2 [26 Μηνύματα] Σελίδα:  Προηγούμενο  1, 2
Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Τώρα είναι 03 Δεκ 2016 00:15 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos