Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
ай_чайник
1 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 19
1

Найти наибольшее и наименьшее значения функции

10.04.2012, 11:04. Просмотров 2264. Ответов 18
Метки нет (Все метки)

Доброго времени суток. Дана такая задача.

Найти наибольшее и наименьшее значения функции
y =(sin( x + 0.25)/х)+ 5 при изменении X от 0,1 до А с шагом H. Вывести результат на экран.

Я написал следующий ниже код. Как его исправить, что бы он выдавал корректную информацию?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <math.h>
int main(){
float x, y;
y=0;
printf("max X=...");
float a, h;
a=0; 
h=0;
scanf ("%f", &a);
printf("Шаг=...");
scanf("%f", &h);
for (x=0.1; x>=a; x=x+h);
{int i;
i=0;
y=((sin(x+0.25)/x)+5);
int array [100];
for (i=0; i>=a; i++);
array[i]=y;
} 
printf ("%f", &i);
float min, max;
for (i=0.1; i>=a; i++);
max=array[1];
for(i=0.1; i>=a; i++){ 
if (max<array[i])
max=array[i];
}
printf("%f", max)
pyts("\n");
for (i=0.1; i>=a; i++){
    min=array[2];
    if (min>array[i])
    min=array;
    }
    printf("%f", min);
return 0;
}
Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2012, 11:04
Ответы с готовыми решениями:

Найти наибольшее и наименьшее значения функции
привет всем!! почти год назад на этом сайте выскакивала эта задача, но она была грамоская и так не...

Найти наибольшее и наименьшее значения функции
Задача:Найти наибольшее и наименьшее значения функции y= (sin(x + 0.25))/x + 5 при изменении X от...

Найти и вывести наибольшее и наименьшее значения массива, а также разницу между ними
Вечер добрый, друзья. Буду благодарен, если поможете с заданием. Использовать одномерный массив...

В заданных двух векторах А и В одинаковой размерности N найти отдельно наибольшее и наименьшее значения сумм соответствующих элементов этих векторов
В максимально простом виде: В заданных двух векторах А и В одинаковой размерности N найти отдельно...

Найти наименьшее и наибольшее число из ряда введённых
Привет. Не могу никак понять одну вещь. Есть задание, написать программу которая находит наименьшее...

18
odip
Эксперт С++
7167 / 3225 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
10.04.2012, 13:21 2
А он вообще компилируется ?
pyts() - это что ?
0
ай_чайник
1 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 19
10.04.2012, 15:58  [ТС] 3
он вообще не компилируется. выдает ошибку в 21,24,30 строках.
0
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
11.04.2012, 17:00 4
Цитата Сообщение от ай_чайник Посмотреть сообщение
он вообще не компилируется. выдает ошибку в 21,24,30 строках.
21 - вы пытаетесь выдать на экран адрес несуществующей переменной:
а) Переменная i существует только в пределах блока от 14 до 20 строки
б) вам действительно надо ее адрес на экран вывести, а не значение?

24 - переменная array не существует на данном этапе выполнения программы

30 - нет такой ф-ии

Вывод вам явно стоит почитать про области видимости переменных

Добавлено через 4 минуты
Кстати есть и еще ошибки. Которые дадут скомпилировать, но не дадут правильно работать. Так для примера строку 13 можно смело выкидывать в данном коде (если не вы то это сделает компилятор) - при этом на результатах работы программы это ни как не скажется - беда всего лишь в одном лишнем символе.
0
11.04.2012, 17:00
ай_чайник
1 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 19
12.04.2012, 14:58  [ТС] 5
а как вывести значение переменноу I? (21 строка)
а тчо тогда описано в 17 строке, если в 24 array не существует?
про функцию puts я уже понял. (30 строка)
0
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
12.04.2012, 15:46 6
Цитата Сообщение от ай_чайник Посмотреть сообщение
а как вывести значение переменноу I? (21 строка)
Как это не странно:
C++
1
printf ("%f", i);
"&" - это не просто значечек, а унарная операция получения адреса переменной следующей после &.

Цитата Сообщение от ай_чайник Посмотреть сообщение
а тчо тогда описано в 17 строке, если в 24 array не существует?
В 17 строке вы объявляете локальную переменную внтури блока ограниченного фигурными скобками. На 20ой строке переменная перестает существовать.
Пример
Здесь ошибка.
C
1
2
3
4
{
    int i;
}
i = 10;
Здесь ее нет:
C
1
2
3
4
{
    int i;
    i = 10;
}
Не ленитесь - расставляйте отступы они помогают
0
ай_чайник
1 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 19
12.04.2012, 18:42  [ТС] 7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <math.h>
int main()
{
float x, y;
y=0;
printf("max X=...");
float a, h;
a=0; 
h=0;
scanf ("%f", &a);
printf("Шаг=...");
scanf("%f", &h);
for (x=0.1; x>=a; x=x+h);
int i;
i=0;
y=((sin(x+0.25)/x)+5);
int array [100];
for (i=0; i>=a; i++);
array[i]=y;
printf ("%f", i);
float min, max;
for (i=0.1; i>=a; i++);
max=array[1];
for(i=0.1; i>=a; i++)
{ 
if (max<array[i])
max=array[i];
}
printf("%f", max)
pгts("\n");
for (i=0.1; i>=a; i++)
{
    min=array[2];
    if (min>array[i])
    min=array;
    }
    printf("%f", min);
return 0;
}

так должно быть?
0
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
12.04.2012, 18:49 8
Ну, можно и так.... Только врят ли вас результат работы устроит. Вот не поленился за вас отступы расставил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <math.h>
int main()
{
    float x, y;
    y=0;
    printf("max X=...");
    float a, h;
    a=0; 
    h=0;
    scanf ("%f", &a);
    printf("Шаг=...");
    scanf("%f", &h);
    for (x=0.1; x>=a; x=x+h);
    int i;
    i=0;
    y=((sin(x+0.25)/x)+5);
    int array [100];
    for (i=0; i>=a; i++);
    array[i]=y;
    printf ("%f", i);
    float min, max;
    for (i=0.1; i>=a; i++);
    max=array[1];
    for(i=0.1; i>=a; i++)
    { 
        if (max<array[i]) max=array[i];
    }
    printf("%f", max)
    pгts("\n");
    for (i=0.1; i>=a; i++)
    {
        min=array[2];
        if (min>array[i]) min=array;
    }
    printf("%f", min);
    return 0;
}
Вы можете словами описать, что происхоит, например, в строках 19 и 20?

Добавлено через 50 секунд
и, да. "prts" - я такой ф-ии не знаю. А Вы?
0
ай_чайник
1 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 19
12.04.2012, 18:52  [ТС] 9
В 19 строке объявляется целочисленный массив из 100 элементов.
В 20- начинается цикл от 0 до i=a

функции puts опять досталось от меня.
0
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
12.04.2012, 18:55 10
Ой. Промахнулся: опишите, что, по вашему, должно происходить в строках 20 и 21.

Добавлено через 50 секунд
Цитата Сообщение от ай_чайник Посмотреть сообщение
В 20- начинается цикл от 0 до i=a
А в какой строке, по вашему, заканчивается код выполняющийся внутри цикла?
0
ай_чайник
1 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 19
12.04.2012, 18:55  [ТС] 11
массив должен заполняться всеми получаемыми значениями У из строки 18.
0
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
12.04.2012, 19:01 12
Должен. Но заканчивается он в той же строке, где и начался.т.е. в 20. ";" сообщает компилятору что блок цикла здесь закончился.
И на 21 строке вы пытаетесь работать за нужными вам пределами, т.к. i в этот момент равен а+1
и присваиваете ему значение y, которое не правильно посчитано. Т.к. в конечном итоге в формуле расчета x больше чем a
0
ай_чайник
1 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 19
12.04.2012, 19:07  [ТС] 13
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <math.h>
int main(){
float x, y;
y=0;
printf("max X=...");
float a, h;
a=0; 
h=0;
scanf ("%f", &a);
printf("Шаг=...");
scanf("%f", &h);
for (x=0.1; x<=a; x=x+h);
int i;
i=0;
y=((sin(x+0.25)/x)+5);
int array [100];
for (i=0; i<=a; i++)
{
array[i]=y;
printf ("%f", i);
}
float min, max;
for (i=0.1; i<=a; i++);
max=array[1];
for(i=0.1; i<=a; i++){ 
if (max<array[i])
max=array[i];
}
printf("%f", max)
puts("\n");
for (i=0.1; i<=a; i++)
{
    min=array[2];
    if (min>array[i])
    min=array;
    }
    printf("%f", min);
return 0;
}

если правильно вас понял, то как-то так
0
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
12.04.2012, 19:15 14
Отступы проставляйте же!
В этом куске уже лучше. Хотя при выводе i лучше использовать %d. Но y у вас вычисляется только один раз и не правильно т.к. x в момент вычисления больше чем a. что, как я понимаю, нарушает условияя
0
ай_чайник
1 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 19
12.04.2012, 19:21  [ТС] 15
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <math.h>
int main()
 
{
 
float x, y;
y=0;
printf("max X=...");
float a, h;
a=0; 
h=0;
scanf ("%f", &a);
printf("Шаг=...");
scanf("%f", &h);
for (x=0.1; x<=a; x=x+h) 
i=0;
y=((sin(x+0.25)/x)+5);
int i;
int array [100];
for (i=0; i<=a; i++)
 
{
 
array[i]=y;
printf ("%d", i);
 
}
 
float min, max;
for (i=0.1; i<=a; i++);
max=array[1];
for(i=0.1; i<=a; i++)
 
{ 
 
if (max<array[i])
max=array[i];
 
}
 
printf("%f", max)
puts("\n");
for (i=0.1; i<=a; i++)
 
{
    min=array[2];
    if (min>array[i])
    min=array;
 
    }
 
    printf("%f", min);
return 0;
}
почему x в момент вычисления больше чем a? for (x=0.1; x<=a; x=x+h)
1
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
12.04.2012, 19:33 16
Потому, что блоком цикла на 16 строке является только строка 17. На последней итерации к x прибавляется h и становится больше a. Выходит из цикла и переходит на строку 18ю Где и происходит вычисление y
1
ай_чайник
1 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 19
12.04.2012, 19:37  [ТС] 17
по условию задачи а- максимальное значение Х, а h- это период Х(на сколько увеличивается Х за 1 времени). рассуждая логически а>h
0
e73t4ph_2
3 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 441
12.03.2013, 02:14 18
почему 25 строчку
C
1
array[i]=y
не компилирует и выдает ошибку
0
misterkotopes
1 / 1 / 0
Регистрация: 03.04.2014
Сообщений: 21
03.04.2014, 20:26 19
извиняюсь, но зачем так все сложно,
если мы пропишем через:
float min, max
for ( i = 0.1 ; i < A ; i = i + H) {
так это должно сократить программу в несколько раз
0
03.04.2014, 20:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2014, 20:26

Найти сумму, среднее значение, произведение, наименьшее и наибольшее из заданных чисел
Напишите программу которая принимает три целых числа с клавиатуры, печатает сумму, среднее...

Найти наименьшее и наибольшее и переставить их - больше записывает на место наименьшего и наоборот
Одномерный массив заполнить произвольными числами. Найти наименьшее и наибольшее и переставить их -...

Найти и вывести наибольшее и наименьшее значение массива, а также разницу между ними
Люди помогите написать программу!!!! использовать одномерный массы чисел, заполнить произвольными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru