Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α10.24 · Η συνάρτηση paws

Εξέταση Ιουνίου 2026, Θέμα 2 · Δυσκολία ★★☆ · debug · Κεφάλαια: 10, 2

Η συνάρτηση paws (15 Μονάδες)

Ζητήσαμε από τον Κλαύδιο να προγραμματίσει κάτι στα γρήγορα και συμπεριέλαβε την ακόλουθη συνάρτηση paws στον κώδικά του:

void paws(char *a, size_t len) {
    int lo = 0, hi = len;
    while(lo < hi) {
      char tmp = a[lo];
      a[lo++] = a[hi];
      a[hi--] = tmp;
    }
    return;
}
  1. Τι κάνει η συνάρτηση paws (μέχρι 15 λέξεις εξήγηση);
  2. Τι θα τυπωθεί στην πρότυπη έξοδο μετά την εκτέλεση της παρακάτω ακολουθίας εντολών;

    char buffer[] = { 33, 0x43, 'B', 0x41, '!', 0 };
    paws(buffer, 3);
    printf("Result: %s\n", buffer);
    
  3. Μπορεί να προκύψει κάποιο σφάλμα στην συνάρτηση paws όπως είναι γραμμένη; Αν ναι, εξηγήστε γιατί και πως θα το διορθώνατε. Αν όχι, εξηγήστε γιατί αυτή η υλοποίηση είναι ορθή.

Υπόδειξη

Μετατρέψτε πρώτα τα στοιχεία του buffer σε χαρακτήρες με τον πίνακα ASCII (33 και 0x43, 0x41 σε δεκαδικό). Στη συνέχεια εκτελέστε τον βρόχο με το χέρι, γράφοντας τα lo, hi και τα περιεχόμενα του πίνακα σε κάθε βήμα. Για το σφάλμα, αναρωτηθείτε ποιος είναι ο δείκτης (index) του τελευταίου έγκυρου στοιχείου ενός πίνακα μήκους len, τι γίνεται όταν len είναι 0, και τι σημαίνει η μετατροπή size_t σε int.

Αριθμός στον οδηγό: Α10.24 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: exam-2026-jun-q2 · Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2026-jun-q2.html · Markdown (GitHub)