Составить динамический список из произвольного числа элементов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Только начали изучать Си, весь обматерился с ним ((. Ничего не получается. Вот сижу, не могу понять в чем у меня ошибка! Подскажите плиз....
void INDin(int x)
{
float *mas;
mas=(float*)malloc(sizeof(float));
 
float input_=0;
int i=0;
while (input_!='1234')
{
scanf("%f",input_);
 
mas[i]=input_;
i++;
realloc(mas,sizeof(float)*(i+1));
}     
Vivod(mas,i);
}
Подпрограмма должна составлять динамический список из произвольного числа элементов

Решение задачи: «Составить динамический список из произвольного числа элементов»

textual
Листинг программы
void INDin(int x/*что это за цифра?*/)
{//исходя из предпосылки о том что вы только начали, примем что это массив память под который выделяется динамически.
    float *mas;//всё верно, так и надо.
    mas=(float*)malloc(sizeof(float));//так не надо. Это работает, но обычно выделяют память под
    //достаточно большое число элементов, или под ровно столько сколько необходимо.
 
    float input_ = 0;//его занулять при объявлении не обязательно
    int i=0;
    while (input_ != 1234)/*тут явная ошибка. в одинарных кавычках записываются константные символы,
    типа 'a' или 'W' или '%' или '\n', в последнем случае это символ переноса строки.*.
    Если цикл исполняется до тех пор пока input_ не станет равным 1234 то нужно написать input != 1234*/
    {
        scanf("%f", &input_);//необкодимо высылать не input_ а его адрес, т. е. &input, именно по этому прога вылетала.
 
        mas = (float*) realloc(mas, sizeof(float) * (i + 1));/*если память будет выделена в другом месте нужно зафиксировать это, записав в ссылку на масив. . .*/
        mas[i] = input_;
        i++;
    }
    Vivod(mas,i);
}

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

  1. Ввод данных в программу осуществляется с помощью функции scanf.
  2. В данной программе создается динамический массив с помощью функций malloc и realloc.
  3. Размер массива определяется с помощью цикла while и увеличивается на единицу при каждом шаге.
  4. В качестве индекса используется переменная i, которая итерируется от 0 до n-1, где n - количество элементов в массиве.
  5. Функция Vivod выводит элементы массива на экран.

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


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

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

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