Определить функцию, которая для каждого элемента переданного ей массива вычисляет функцию - C (СИ) (71811)

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

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

Необходимо определить функцию, которая для каждого переданного ей элемента массива вычисляет функцию и записывает в другой массив. Должна работать для равных массивов любого размера . Вот что написал, но работает с массивами не всех размеров, к примеру со 100 работает, а с 50 - нет. Если не трудно, помогите пожалуйста)
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. void record(int *a, float *y)
  4. {
  5.  
  6. int *p=&a[0];
  7. for (int i=0; *p !=EOF; i++,p++)
  8. y[i] = sqrt(a[i]*50.0) - a[i];
  9. }
  10. int main()
  11. {
  12. int a[100];
  13. float y[100];
  14. int i;
  15. for (i=0; i<100; i++)
  16. {
  17. a[i]=i+1;
  18. record(&a[i],&y[i]);
  19. printf("a[%i]=%f \n",i, y[i]);
  20. }
  21. }

Решение задачи: «Определить функцию, которая для каждого элемента переданного ей массива вычисляет функцию»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define MAX_ITEMS 100
  5.  
  6. void calculate(int* const a, double* const y, const size_t N)
  7. {
  8.   size_t i = 0;
  9.  
  10.   for (i = 0; i < N; i++)
  11.   {
  12.     y[i] = sqrt(a[i] * 50.0) - a[i];
  13.   }
  14. }
  15.  
  16. int main(void)
  17. {
  18.   int a[MAX_ITEMS];
  19.  
  20.   double y[MAX_ITEMS];
  21.  
  22.   size_t i = 0;
  23.  
  24.   for (i = 0; i < MAX_ITEMS; i++)
  25.   {
  26.     a[i] = i + 1;    
  27.   }
  28.  
  29.   calculate(&a[0], &y[0], sizeof(a) / sizeof(*a));
  30.  
  31.   for (i = 0; i < MAX_ITEMS; i++)
  32.   {    
  33.     printf("a[%3lu] = %d , y[%3lu] = %.4f\n", i, a[i], i, y[i]);
  34.   }
  35.  
  36.   return 0;
  37. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы