Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ - ΕΦΑΡΜΟΓΗ 2

Поделиться
HTML-код
  • Опубликовано: 16 ноя 2024

Комментарии • 12

  • @Icekratier
    @Icekratier 5 лет назад +2

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

    • @psounis
      @psounis  5 лет назад +1

      Κάποια στοιχεία για Δομές Δεδομένων σε C μπορείς να βρεις εδώ:
      ruclips.net/channel/UCqhE1-FJDUVJ2jG44z0gMKA

  • @chrispapakwnstantinou3075
    @chrispapakwnstantinou3075 Год назад

    Καλησπερα και ευχαριστω το κ Δημητρη για τα μαθηματα C ,εχω μια απορεια ,ο παρακατω κωδικας ενω φαινετε σωστος δε δουλευει καθως η εξοδος ειναι η εξης (H μαιν ,η print_record και η struct ειναι ιδιες με τη μονη διαφορα οτι ο αριθμος ειναι σε int , χρησιμοποιω scanf και gets για πειραματισμο και απο οτι φαινετε εκει δημιουργείτε το προβλημα,αμα βαλω μονο scanf η μονο gets δουλευει κανονικα)
    Κωδικας :
    void read_record(record *p)
    {
    printf("
    Dwse onoma :");
    gets(p->onoma);
    printf("
    Dwse diefthinsi :");
    scanf("%s", p->diefthinsi);
    printf("
    Dwse arithmo katoikias :");
    scanf("%d", &p->arithmos);
    printf("
    Dwse nomo :");
    gets(p->nomos);
    }
    Εξοδος:
    Dwse onoma :XRISTOS
    Dwse diefthinsi :AGIU
    Dwse arithmo katoikias :8
    Dwse nomo :
    XRISTOS : AGIU 8

  • @Θεοφάνης33
    @Θεοφάνης33 2 года назад

    Καλησπέρα κύριε Δημήτρη . Η απορία μου έγκειται στο p->onoma μέσα στη scanf , και σε όλα της ίδιας κατάστασης . Γιατί βάζουμε scanf("%s", p->onoma) και δεν βάζουμε scanf("%s",&p->onoma) όπως είχαμε κάνει στο προηγούμενο παράδειγμα ; Εμένα όταν τα τρέχω και τα 2 σωστά μου τα βγάζει ( DEV C++ WINDOWS )

    • @psounis
      @psounis  2 года назад +1

      Γεια σου Θεοφάνη, θυμίσου από προηγούμενα μαθήματα ότι:
      όταν διαβάζουμε συνήθης τύπους (π.χ. ακέραιος, πραγματικός, χαρακτήρας, κ.λπ.)
      γράφουμε π.χ. scanf("%d", &x); [δηλαδή απαιτείται να βάλουμε τη διεύθυνση της μεταβλητής]
      όταν όμως διαβάζουμε συμβολοσειρές, γράφουμε π.χ. scanf("%d", x) όπου x είναι πίνακας χαρακτήρων και ξέρουμε ότι το όνομα του πίνακα είναι διεύθυνση.
      Γενικά θυμόμαστε λοιπον, ότι η scanf παίρνει ως 2ο όρισμα τη διεύθυνση (είναι μεταβλητή απαιτεί &, είναι πίνακας δεν πρέπει να βάλουμε &)
      Έτσι και σε αυτήν την άσκηση έχουμε ότι το s->onoma είναι πίνακας χαρακτήρων, άρα δεν πρέπει να βάλουμε &, ενώ στην προηγούμενη άσκηση διαβάζαμε πραγματικό και έπρεπε να βάλουμε &.
      ====
      Εντελώς τυχαίο ότι σου δούλεψε και εντελώς μη αναμενόμενο. Γράψε τον κώδικα εδώ που χρησιμοποιει το & να τον ελέγξω περαιτέρω, μήπως υπάρχει και κάποια άλλη αλλαγή στον κώδικα που το δικαιολογεί.

  • @mariap8425
    @mariap8425 Год назад

    καλησπερα, θα ηθελα να ρωτησω εστω ότι αφηνουμε εμεις το χρηστη να επιλεξει για πόσα ατομα θελει να τυπώσει τα στοιχεια,τι θα γραφαμε στην main? μου εμφανιζει προβλημα με τη μεταβλητη στην print record

    • @psounis
      @psounis  Год назад

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

  • @ShadowLordIKKS
    @ShadowLordIKKS 2 года назад

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

    • @psounis
      @psounis  2 года назад

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

  • @φαιδωνΠαπανικολαου
    @φαιδωνΠαπανικολαου 2 года назад +1

    Δάσκαλε όταν τρέχω το συγκεκριμένο πρόγραμμα μου βγάζει [error] Id returned 1 exit status
    #include
    #include
    #define N 80
    struct person{
    char onoma[N];
    char diefthinsi[N];
    char arithmos[N];
    char nomos[N];
    };
    typedef struct person RECORD;
    void read_record(RECORD *p);
    void print_record(RECORD k);
    main()
    {
    RECORD stratos;
    RECORD vaggos;
    printf("Stratos:
    ");
    read_record(&stratos);
    printf("Vaggos:
    ");
    read_record(&vaggos);
    print_record(stratos);
    print_record(vaggos);
    }
    void read_RECORD(RECORD *p)
    {
    printf("Dwse to onoma sou: ");
    scanf("%s",p->onoma);
    printf("Dwse tin diefthinsi sou: ");
    scanf("%s",p->diefthinsi);
    printf("Dwse ton arithmo tou spitious sou: ");
    scanf("%s",p->arithmos);
    printf("Dwse ton nomo pou meneis: ");
    scanf("%s",p->nomos);
    }
    void print_record(RECORD k)
    {
    printf("
    Onoma: %s",k.onoma);
    printf("
    Diefthinsi: %s",k.diefthinsi);
    printf("
    Arithmos: %s",k.arithmos);
    printf("
    Nomos: %s",k.nomos);
    }
    ΕΙΝΑΙ ΣΧΕΔΟΝ ΤΟ ΙΔΙΟ ΠΡΟΓΑΜΜΑ ΜΕ ΤΟ ΔΙΚΟ ΣΑΣ

    • @psounis
      @psounis  2 года назад +1

      εχεις το ονομα της συνάρτησης διαφορετικό στις δύο μεριές:
      print_record
      print_RECORD

    • @φαιδωνΠαπανικολαου
      @φαιδωνΠαπανικολαου 2 года назад

      @@psounis ποποποοοοο ευχαριστώ πολύ καλημέρα