Нужна помощь в решении проблемы с массивом - PullRequest
0 голосов
/ 18 ноября 2018

Задача: Рассчитать 25 значений функции y = ax'2 + bx + c на интервале [e, f], сохранить их в массиве Y и найти минимальное и максимальное значения в этот массив.

#include <stdio.h>
#include <math.h>

int main() 
{
    float Y[25];
    int i;
    int x=3,a,b,c;
    double y = a*pow(x,2)+b*x+c;

        printf("a = ", b);
        scanf("%d", &a);

        printf("b = ", a);
        scanf("%d", &b);

        printf("c = ", c);
        scanf("%d", &c);



    for(i=0;i<25;i++)
    {
     printf("%f",y); //output results, not needed
     x++;
    }


    system("pause");
}

Проблемы:

  • Не могу понять, как я могу использовать здесь «интервал [e, f]»
  • Не могу понять, как сохранить значения в массив, используя библиотеки C
  • Не могу понять, как написать / сделать цикл, который найдет минимальное и максимальное значения
  • Наконец, не знаю, что именно мне нужно сделать, чтобы решить задачу

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

Проблемы:

  • Не могу понять, как я могу использовать здесь «интервал [e, f]»

(fe) / 25 (шаг интервала)

  • Не могу понять, как сохранять значения в массив с использованием библиотек C

Вам необходимо использовать некоторую форму цикла для обхода массива и сохранения результата ваших вычислений на каждом шаге интервала.Примерно так:

for(int i = 0; i < SIZE; i++) 
// SIZE in this case 25, so you traverse from 0-24 since arrays start 0
  • Не могу понять, как написать / сделать цикл, который найдет минимальное и максимальное значения

Для обоих случаев:

пройти массив с какой-то формой цикла и проверить каждый элемент, например (снова) что-то вроде этого: for(int i = 0; i < SIZE; i++)

Для мин:

  1. Инициализировать двойное значение (ключ) с первым элементом вашего массива
  2. Циклически перебирайте в вашем массиве элементы меньше , чем ваше первоначальное значение ключа.
  3. , если ваш массив в позиции i меньше ключа, save key = array[i];

Для макс .:

  1. Инициализировать двойное значение (ключ) с 0;
  2. Циклически перебирая массив для поиска элементов больше , чем ваше начальное значение ключа.
  3. если ваш массив в позиции i больше, чем ключ, сохраните key = array[i];

Наконец, не знаете, что именномне нужно сделать, чтобы решить задачу

  1. Инициализировать ваши переменные (самостоятельно или с помощью ввода пользователя)
  2. Создайте функцию, которая вычисляет a*x^2 + b*x + c n раз для каждого шага вашего интервала.
  3. Создайте функцию для min & max, которая проходит по вашему массиву и возвращает наименьшее / наибольшее значение.

Вот и все.Я воздержусь от публикации кода (пока), поскольку это выглядит как задание для меня, и я уверен, что вы можете написать код с информацией, которую @Paul Ogilvie & I предоставил самостоятельно.Удачи

0 голосов
/ 18 ноября 2018
#include<stdio.h>
#include<math.h>
int main()
{
double y[25];
double x,a,b,c,e,f;
int i,j=0;
printf("Enter a:",&a);
scanf("%lf",&a);
printf("Enter b:",&b);
scanf("%lf",&b);
printf("Enter c:",&c);
scanf("%lf",&c);
printf("Starting Range:",&e);
scanf("%lf",&e);
printf("Ending Range:",&f);
scanf("%lf",&f);
for(i=e;i<=f;i++)
{
    y[j++]=(a*pow(i,2))+(b*i)+c;
}
printf("\nThe Maximum element in the given interval is %lf",y[j-1]);
printf("\nThe Minimum element in the given interval is %lf",y[0]);
}

УДАЧИ!

0 голосов
/ 18 ноября 2018

Сначала вы должны запросить у пользователя значения a, b, c или инициализировать эти переменные, а также запросить значения интервала e, f или инициализировать эти переменные.

Теперь вы должны вычислить double interval= (f - e)/25.0таким образом, у вас есть интервал.

Тогда вы должны иметь цикл for (int i=0, double x=e; i<25; i++, x += interval) и вычислять каждое значение функции.Вы можете сохранить результат в массиве (объявить его сверху) или распечатать напрямую.

...