Возврат функции из массива: Невозможно преобразовать аргумент 1 из "float" в "float []" - C (СИ)
Формулировка задачи:
В общем выдаёт следующую ошибку.
(невозможно преобразовать аргумент 1 из "float" в "float []")
#include <stdio.h>
#include <conio.h>
#define n 9
float mass1(float a[n], int i) // функция ввода массива
{
for (i = 0; i < n; i++)
{
printf("vvedite element massiva A[%d]:\n", i);
scanf_s("%f", a[i]);
return a[n];
}
return a[n];
}
int main()
{
int i;
float a[n], max;
mass1 ( a[n], i ); // Строка с ошибкой
max = a[0];
for (i = 1; i < n; i++)
{
if (a[i] > a[i - 1])
max = a[i];
else printf("posledovatel'nost' ne vozrastayuschaya");
}
_getch();
}Решение задачи: «Возврат функции из массива: Невозможно преобразовать аргумент 1 из "float" в "float []"»
textual
Листинг программы
int fill_array(float * array, size_t count) {
size_t i;
for ( i = 0; i < count; ++i ) {
printf("ARRAY[%u] = ", i);
if ( scanf("%f", &array[i]) != 1 )
return -1;
}
return 0;
}
Объяснение кода листинга программы
В данном коде представлена функция fill_array, которая принимает два аргумента:
- float * array — указатель на массив типа float, в который будут записываться значения
- size_t count — размер массива, т.е. количество элементов, которые необходимо заполнить Код выполняет следующие действия:
- Создает переменную i типа size_t и инициализирует ее значением 0
- Запускает цикл for, который будет выполняться, пока значение i меньше count
- Внутри цикла выводит на экран индекс текущего элемента массива с помощью printf
- С помощью scanf считывает значение с консоли и записывает его в соответствующий элемент массива, используя указатель array и индекс i
- Если scanf не смог считать значение (возвращает 0), то функция возвращает -1
- После завершения цикла возвращает 0 Таким образом, данный код заполняет массив типа float значениями, которые пользователь вводит с клавиатуры