C programozás help
  • Dj Faustus #213
    "Tetszőleges méretű tömböt"
    Tetszőleges méretű tömbbön dinamikus tömböt értesz? Mert ahhoz biz' kellenek a pointerek.

    Csináltam egy példakódot mind a két esetre (dinamikus és nem dinamikus tömb esetére):
    #include <stdio.h>
    #include <stdlib.h>

    #define LOW 0
    #define HIGH 100
    int *din_tomb; //A dinamikus, egészeket tároló tömb
    int nem_din_tomb[10]; //A nem dinamikus, egészeket tároló tömb

    //-----------------------------------------------------------------------------------------
    // Egy véletlenszerűen választott elem a dinamikus tömbből
    //-----------------------------------------------------------------------------------------
    int din_tomb_eleme (int *din_tomb_be, int elemszam_be) {
    return din_tomb_be[(rand() % (elemszam_be - 1))];
    }
    //-----------------------------------------------------------------------------------------
    // Egy véletlenszerűen választott elem a nem dinamikus tömbből
    //-----------------------------------------------------------------------------------------
    int nem_din_tomb_eleme (int nem_din_tomb_be[10], int elemszam_be) {
    return nem_din_tomb_be[(rand() % (elemszam_be - 1))];
    }

    void main() {
    //-----------------------------------------------------------------------------------------
    // A fő függvény változóinak deklarálása, véletlenszámgenerátor inicializálása
    //-----------------------------------------------------------------------------------------
    int i;
    int elemszam = rand() % (9) + 10; //A dinamikus tömbnek minimum 10, maximum 20 eleme lehet
    srand( time(NULL) );

    //-----------------------------------------------------------------------------------------
    // Dinamikus tömb inicializálása
    //-----------------------------------------------------------------------------------------
    din_tomb = (int *) calloc (elemszam, sizeof(int));
    if (!din_tomb) {
    printf ("Nem sikerült a tömb inicializálása!\n");
    }

    //-----------------------------------------------------------------------------------------
    // Dinamikus tömb feltötlése
    //-----------------------------------------------------------------------------------------
    printf("Dinamikus tömb:\n");
    printf("---------------\n");
    for (i = 0; i < elemszam; i++) {
    din_tomb[i] = rand() % (HIGH - LOW + 1) + LOW;
    printf ("%d %d\n",i,din_tomb[i]);
    }
    printf ("Véletlen elem a dinamikus tömbből: %d\n\n",din_tomb_eleme (din_tomb, elemszam));

    //-----------------------------------------------------------------------------------------
    // Nem dinamikus tömb feltötlése
    //-----------------------------------------------------------------------------------------
    printf("Nem dinamikus tömb:\n");
    printf("-------------------\n");
    for (i = 0; i < 10; i++) {
    nem_din_tomb[i] = rand() % (HIGH - LOW + 1) + LOW;
    printf ("%d %d\n",i,nem_din_tomb[i]);
    }
    printf ("Véletlen elem a nem dinamikus tömbből: %d\n",nem_din_tomb_eleme (nem_din_tomb, 10));

    free (din_tomb); //Dinamikus tömb felszabadítása
    }