Определить функцию, которая для каждого элемента переданного ей массива вычисляет функцию - 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;
}

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

  1. Подключение необходимых библиотек

    include

    include

  2. Определение максимального количества элементов в массиве

    define MAX_ITEMS 100

  3. Объявление функции с именем calculate, которая принимает два указателя на массивы и их размер void calculate(int const a, double const y, const size_t N);
  4. Объявление функции с именем main, которая является точкой входа в программу int main(void);
  5. Инициализация массива a в функции main int a[MAX_ITEMS];
  6. Инициализация массива y в функции main double y[MAX_ITEMS];
  7. Инициализация переменной i в функции main size_t i = 0;
  8. Заполнение массива a значениями от 1 до MAX_ITEMS в функции main for (i = 0; i < MAX_ITEMS; i++) { a[i] = i + 1; }
  9. Вызов функции calculate в функции main, передавая ей указатели на начало массивов a и y, а также их размер calculate(&a[0], &y[0], sizeof(a) / sizeof(*a));
  10. Отображение значений массивов a и y в функции main for (i = 0; i < MAX_ITEMS; i++) { printf(a[%3lu] = %d , y[%3lu] = %.4f\n, i, a[i], i, y[i]); }
  11. В функции calculate инициализация переменной i size_t i = 0;
  12. В функции calculate цикл, который выполняется столько раз, сколько элементов в массиве a for (i = 0; i < N; i++) {
  13. Вычисление значения y[i] как разности квадратного корня из a[i] и значения a[i] y[i] = sqrt(a[i] * 50.0) - a[i];
  14. Возврат из функции calculate }
  15. Конец функции main return 0;
  16. Конец функции calculate }
  17. В функции main возврат из цикла отображения значений массивов }
  18. Конец функции main }
  19. Конец функции calculate }
  20. Конец программы

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


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

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

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