Ασκήσεις

Δυναμική χρήση της μνήμης

  1. Να σχεδιάσετε και να γράψετε ένα πρόγραμμα το οποίο τυπώνει τους χαρακτήρες που διαβάζει με την ανάποδη σειρά. Δεν πρέπει να υπάρχει περιορισμός από το πρόγραμμα στον αριθμό των χαρακτήρων που να μπορεί να δεχτεί.
  2. Το παρακάτω πρόγραμμα προσθέτει διανύσματα ν διαστάσεων:
    /*
     * Add two vectors
     *
     * Diomidis Spinellis, December 1998
     */

    #include <stdio.h>

    /*
     * Print the contents of vector v consisting of n elements
     */
    void
    vector_print(double v[], int n)
    {
            int i;

            putchar('(');
            for (i = 0; i < n; i++) {
                    printf("%g", v[i]);
                    if (i < n - 1)
                            printf(", ");
            }
            putchar(')');
    }


    /*
     * Input a vector v consisting of n elements
     */
    void
    vector_input(double v[], int n)
    {
            int i;

            for (i = 0; i < n; i++) {
                    printf("\tEnter element %d: ", i);
                    scanf("%lg", &v[i]);
            }
    }


    /*
     * Sum vector a and vector b to vector c
     * All vectors consist of n elements
     */
    void
    vector_add(double a[], double b[], double c[], int n)
    {
            int i;

            for (i = 0; i < n; i++)
                    c[i] = a[i] + b[i];
    }

    main()
    {
            int nelem;
            double a[10], b[10], c[10];

            printf("Enter number of vector elements: ");
            scanf("%d", &nelem);
            if (nelem > sizeof(a) / sizeof(double)) {
                    printf("Vector size too large.  The maximum vector size is %d.\n",
                            sizeof(a) / sizeof(double));
                    return (1);
            }
            printf("Enter vector a\n");
            vector_input(a, nelem);
            printf("Enter vector b\n");
            vector_input(b, nelem);
            vector_add(a, b, c, nelem);
            vector_print(a, nelem);
            putchar('+');
            vector_print(b, nelem);
            putchar('=');
            vector_print(c, nelem);
    }
    1. Να το μεταγλωττίσετε και να το δοκιμάσετε στη μορφή που είναι.
    2. Να το αλλάξετε έτσι ώστε να μην έχει περιορισμό ως προς το μέγεθος των διανυσμάτων που μπορεί να δεχτεί.
    3. Να το αλλάξετε έτσι ώστε να μην εμφανίζονται καθόλου σε αυτό οι χαρακτήρες [ και ] (χρησιμοποιήστε δείκτες αντί για πίνακες).