Динамическое распределение памяти - C (СИ) (154648)
Формулировка задачи:
Дан массив действительных случайных чисел а размером n=100. Выве-сти на экран те элементы массива, индексы которых являются степеня-ми двойки 2, 4, 8, 16
Изменить программу так, чтобы память под массивы выделялась динамически в ходе выполнения программы. При этом размеры массивов следует запрашивать у пользователя.
Пытался изменить, но прога работает не правильно. Подскажите плиз в чем ошибка
#include <stdio.h> #include <stdlib.h> int main() { int const n=20; int A[n]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; int i=2; while(i<n) {i++; printf("%d ",A[i]); i*=2; } return 0; }
#include <stdio.h> #include <stdlib.h> int main() { int n; int i=2; int *ttt; printf("Vvedite kolichestvo elementov massiva\n"); scanf("%d",&n); ttt=(int*)malloc(n*sizeof(int)); while(i<n) {ttt[n]=rand()%100; i++; printf("%d ",ttt[n]); i*=2; } return 0; }
Решение задачи: «Динамическое распределение памяти»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main() { int n; int i; int *mas; printf("Vvedite kolichestvo elementov massiva\n"); scanf("%d",&n); mas=(int*)malloc(n*sizeof(int)); for (i = 1; i < n; i*=2) { mas[i]=rand()%50+50; printf("%d ",mas[i]); } return 0; }
Объяснение кода листинга программы
- Объявление переменных:
- n - количество элементов массива;
- i - счётчик для цикла;
- mas - указатель на начало блока памяти для массива.
- Запрос на ввод количества элементов массива с помощью функции scanf.
- Выделение памяти под массив с помощью функции malloc. Значение n умножается на размер int, так как мы выделяем память под массив целых чисел.
- Установка значений элементов массива с помощью цикла for.
- i изменяется от 1 до n с шагом 2 (поскольку при каждом проходе цикла значение i умножается на 2).
- В каждой итерации цикла в массив записывается случайное число от 50 до 100 с помощью функции rand.
- При каждой итерации цикла выводится на экран значение элемента массива с помощью функции printf.
- Конец программы (возврат 0).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д