Определить функцию, которая для каждого элемента переданного ей массива вычисляет функцию - C (СИ) (71811)
Формулировка задачи:
Необходимо определить функцию, которая для каждого переданного ей элемента массива вычисляет функцию и записывает в другой массив. Должна работать для равных массивов любого размера .
Вот что написал, но работает с массивами не всех размеров, к примеру со 100 работает, а с 50 - нет.
Если не трудно, помогите пожалуйста)
Листинг программы
- #include <stdio.h>
- #include <math.h>
- void record(int *a, float *y)
- {
- int *p=&a[0];
- for (int i=0; *p !=EOF; i++,p++)
- y[i] = sqrt(a[i]*50.0) - a[i];
- }
- int main()
- {
- int a[100];
- float y[100];
- int i;
- for (i=0; i<100; i++)
- {
- a[i]=i+1;
- record(&a[i],&y[i]);
- printf("a[%i]=%f \n",i, y[i]);
- }
- }
Решение задачи: «Определить функцию, которая для каждого элемента переданного ей массива вычисляет функцию»
textual
Листинг программы
- #include <stdio.h>
- #include <math.h>
- #define MAX_ITEMS 100
- void calculate(int* const a, double* const y, const size_t N)
- {
- size_t i = 0;
- for (i = 0; i < N; i++)
- {
- y[i] = sqrt(a[i] * 50.0) - a[i];
- }
- }
- int main(void)
- {
- int a[MAX_ITEMS];
- double y[MAX_ITEMS];
- size_t i = 0;
- for (i = 0; i < MAX_ITEMS; i++)
- {
- a[i] = i + 1;
- }
- calculate(&a[0], &y[0], sizeof(a) / sizeof(*a));
- for (i = 0; i < MAX_ITEMS; i++)
- {
- printf("a[%3lu] = %d , y[%3lu] = %.4f\n", i, a[i], i, y[i]);
- }
- return 0;
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек
include
include
- Определение максимального количества элементов в массиве
define MAX_ITEMS 100
- Объявление функции с именем calculate, которая принимает два указателя на массивы и их размер void calculate(int const a, double const y, const size_t N);
- Объявление функции с именем main, которая является точкой входа в программу int main(void);
- Инициализация массива a в функции main int a[MAX_ITEMS];
- Инициализация массива y в функции main double y[MAX_ITEMS];
- Инициализация переменной i в функции main size_t i = 0;
- Заполнение массива a значениями от 1 до MAX_ITEMS в функции main for (i = 0; i < MAX_ITEMS; i++) { a[i] = i + 1; }
- Вызов функции calculate в функции main, передавая ей указатели на начало массивов a и y, а также их размер calculate(&a[0], &y[0], sizeof(a) / sizeof(*a));
- Отображение значений массивов a и y в функции main
for (i = 0; i < MAX_ITEMS; i++)
{
printf(
a[%3lu] = %d , y[%3lu] = %.4f\n
, i, a[i], i, y[i]); } - В функции calculate инициализация переменной i size_t i = 0;
- В функции calculate цикл, который выполняется столько раз, сколько элементов в массиве a for (i = 0; i < N; i++) {
- Вычисление значения y[i] как разности квадратного корня из a[i] и значения a[i] y[i] = sqrt(a[i] * 50.0) - a[i];
- Возврат из функции calculate }
- Конец функции main return 0;
- Конец функции calculate }
- В функции main возврат из цикла отображения значений массивов }
- Конец функции main }
- Конец функции calculate }
- Конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д