Динамическое распределение памяти - 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;
}

Объяснение кода листинга программы

  1. Объявление переменных:
    • n - количество элементов массива;
    • i - счётчик для цикла;
    • mas - указатель на начало блока памяти для массива.
  2. Запрос на ввод количества элементов массива с помощью функции scanf.
  3. Выделение памяти под массив с помощью функции malloc. Значение n умножается на размер int, так как мы выделяем память под массив целых чисел.
  4. Установка значений элементов массива с помощью цикла for.
    • i изменяется от 1 до n с шагом 2 (поскольку при каждом проходе цикла значение i умножается на 2).
    • В каждой итерации цикла в массив записывается случайное число от 50 до 100 с помощью функции rand.
    • При каждой итерации цикла выводится на экран значение элемента массива с помощью функции printf.
  5. Конец программы (возврат 0).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы