Úloha 7.3
Napíšte program, zdrojový kód, v jazyku C použitím štandardu C17, ktorý nadväzuje na úlohu 7.1. Do alokovanej program postupne vyžiada od používateľa jednotlivé čísla, ako prvky dynamického poľa.
Následne program vypíše na štandardný výstup adresu alokovanej pamäte a zároveň jednotlivé zapísané hodnoty aj s ich adresou.
Príklady vstupov / výstupov programu
Priebeh programu môže byť nasledovný:
Zadajte počet prvkov: 3
Zadanie 1. prvok: 85
Zadanie 2. prvok: 41
Zadanie 3. prvok: -2
Adresa alokovanej pamäte: 0x000784b111
0. položka: adresa = 0x000784b111 ; hodnota = 85
1. položka: adresa = 0x000784b112 ; hodnota = 41
2. položka: adresa = 0x000784b113 ; hodnota = -2Rozbaľ pre ukážku riešenia
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
// Požiadanie používateľa o počet prvkov
printf("Zadajte počet prvkov: ");
scanf("%d", &n);
if (n <= 0) {
printf("Počet prvkov musí byť kladné číslo.\n");
return 1;
}
// Dynamická alokácia pamäte pre n prvkov typu int
int *array = (int *)malloc(n * sizeof(int));
if (array == NULL) {
printf("Nepodarilo sa alokovať pamäť.\n");
return 1;
}
// Zadanie hodnôt od používateľa
for (int i = 0; i < n; i++) {
printf("Zadanie %d. prvok: ", i + 1);
scanf("%d", &array[i]);
}
// Výpis adresy alokovanej pamäte
printf("Adresa alokovanej pamäte: %p\n", array);
// Výpis hodnôt a ich adries
for (int i = 0; i < n; i++) {
printf("%d. položka: adresa = %p ; hodnota = %d\n", i, &array[i], array[i]);
}
// Uvoľnenie alokovanej pamäte
free(array);
return 0;
}Vysvetlenie
Vstup od používateľa:
- Používateľ zadá počet prvkov (n).
- Kontrola zabezpečí, že zadané číslo je kladné.
Dynamická alokácia pamäte:
- Pomocou malloc sa alokuje pamäť pre n prvkov typu int.
Zadanie hodnôt:
- Cyklus požaduje od používateľa hodnoty pre jednotlivé prvky dynamického poľa.
Výpis hodnôt a ich adries:
- Pre každý prvok sa vypíše jeho index, adresa a hodnota.
Uvoľnenie pamäte:
- Dynamicky alokovaná pamäť sa uvoľní pomocou free na konci programu.