Определить функцию, которая для каждого элемента переданного ей массива вычисляет функцию - 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 }
- Конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д