Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
#1

Найти ошибку - C++

13.06.2012, 17:18. Просмотров 449. Ответов 11
Метки нет (Все метки)

Пусть х1=0.3; х2=-0.3; хi=i+sin(xi-2), i=3, 4, … Среди х1, …, х100 найти бли-
жайшее к какому-нибудь целому.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double nums[100];
nums[0] = 0.3;
nums[1] = -0.3;
double k = 1;
 
double max = nums[0];
for (int i = 3; i <= 100; i++) {
    nums[i - 1] = i + sin(nums[i - 3]);
    if (nums[i - 1] % k > max % k)
    max = nums[i - 1];
}
cout<<max;
}
Почему не работает код?
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2012, 17:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти ошибку (C++):

Найти ошибку в программе: в visual studio выдает ошибку - C++
#include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int main() { double x, E, ypred, y, S; ...

Найти слова, повторяющиеся более одного раза, не могу найти ошибку - C++
#include &lt;iostream&gt; using namespace std; void obr1(char **s, char **mas, int n, int m) { int i; int k; char *tm; for(i...

Помогите найти ошибку: По двум сторонам и углу найти все остальное - C++
Доброго времени суток. В универе дали задание написать программу &quot;По двум сторонам и углу между ними в треугольнике АВС найти два остальных...

Найти сумму первых n-четных натуральных чисел (найти ошибку) - C++
Нужно найти сумму первых n-четных натуральных чисел. Ошибка вылетает на 13 строке, должно быть я не правильно код составил, алгоритм не тот...

Найти сумму целых отрицательных чисел удовлетворяющих условию (найти и исправить ошибку в коде) - C++
#include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; int main() { int y = 0; for(int i = -21; i &lt; -99; i+=3) ...

Массивы. Найти среднее арифметическое элементов массива, расположенных до максимального элемента (найти ошибку в задании) - C++
Препод говорит что тут есть ошибка, но где не говорит, прошу если кото-нибуть заметит сообщите. Ввести одномерный статический массив...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cactus09
Чайник
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
13.06.2012, 17:29 #2
вот рабочий
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double nums[100];
nums[0] = 0.3;
nums[1] = -0.3;
double k = 1;
 
double max = nums[0];
for (int i = 3; i <= 100; i++) {
    nums[i - 1] = i + sin(nums[i - 3]);
    if (int(nums[i-1])%int(k) > int(max)%int(k))
    max = nums[i - 1];
}
cout<<max<<endl;
system("PAUSE");
}
А неработает потому что % нужны int, а ты им даеш double
1
kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
13.06.2012, 17:34  [ТС] #3
само решение задачи правильное?
ответ выдает 0,3
0
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
13.06.2012, 17:48 #4
использовать остаток от деления дробного числа не имеет смысла, используйте библиотечные функции для округления дробных чисел ( ceil(), floor() ), ищите разницу между целым и дробным числами, и выводите то, у которого эта разница наименьшаяя
0
kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
13.06.2012, 17:51  [ТС] #5
Цитата Сообщение от edward_jonson Посмотреть сообщение
используйте библиотечные функции для округления
какие?
1
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
13.06.2012, 17:55 #6
Цитата Сообщение от kinoman471 Посмотреть сообщение
какие?
ceil() и floor()
0
kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
13.06.2012, 17:55  [ТС] #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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
 const int n = 100;
 int i,c;
 int b = 0.1;
 int k = 0;
 double x[n];
 x[0] = 0.3;
 x[1] = -0.3;
 for (int i = 2; i <= 100; i++)
 {
  x[i] = i + sin(x[i - 2]) ;
 }
 for (i = 0; i<n; i++)
 int c = x[i];
 if (c-x[i-1] < x[i+1]-c)
 cout<<x[i-1];
 else
 cout<<x[i+1];
 return 0;
}
вот так пробовал. не работает
1
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
13.06.2012, 18:13 #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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double nums[100];
    nums[0] = 0.3;
    nums[1] = -0.3;
 
    unsigned nearest_i = 0;
 
    double nearest_e = ceil(nums[0]) - nums[0] > nums[0] - floor(nums[0]) ? nums[0] - floor(nums[0]) : ceil(nums[0]) - nums[0];
 
    for (int i = 2; i < 100; i++)
    {
        nums[i] = i + sin(nums[i - 2]);
        double temp_e = ceil(nums[i]) - nums[i] > nums[i] - floor(nums[i]) ? nums[i] - floor(nums[i]) : ceil(nums[i]) - nums[i];
        if ( temp_e < nearest_e )
        {
            nearest_e = temp_e;
            nearest_i = i;
        }
    }
 
    cout << nums[nearest_i];
 
}
Добавлено через 4 минуты
Т.к. в последовательности имеется целое число, что по условию и будет ближайшим к целому, то будет выведено первое целое число в последовательности.
1
kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
13.06.2012, 18:18  [ТС] #9
что такое unsigned, это тип int?
0
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
13.06.2012, 18:36 #10
Цитата Сообщение от kinoman471 Посмотреть сообщение
что такое unsigned, это тип int?
беззнаковый целый тип. Однако, хочу заметить, что не факт, что выведенное число является целым, т.к. cout выводит 5 знаков после запятой, а отклонение от целого числа может быть меньше чем 0.00001, но это число всё равно будет выведено, как целое

Добавлено через 7 минут
проще говоря, для чистоты эксперимента, нужно добавить #include <iomanip>, и 26-ю строку, где вывод наиболее близкого к целому, изменить на
C++
1
cout << setprecision(20) << nums[nearest_i];
Поправлю себя: целых чисел в последовательности нет, просто некоторые из них выводятся как целые.
1
kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
13.06.2012, 19:03  [ТС] #11
слишком сложные фунцкии. нам их еще не объясняли, возможно ли решить задачу, используя простые?
0
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
13.06.2012, 19:27 #12
Цитата Сообщение от kinoman471 Посмотреть сообщение
слишком сложные фунцкии. нам их еще не объясняли, возможно ли решить задачу, используя простые?
функции ceil() и floor() не сложнее в использовании, чем sin()
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2012, 19:27
Привет! Вот еще темы с ответами:

Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку) - C++
// Заданы матрицы X(8;4),Y(5;5),Z(6;9). // Для каждой из матриц определить строку, в которой находится наименьшее // количество...

В строках матрицы с отрицательным элементом на главной диагонали найти наибольший из всех элементов (найти ошибку в коде) - C++
Помогите найти ошибку! Дана действительная квадратная матрица порядка 10. В строках с отрицательным элементом на главной диагонали найти...

Задача из Златопольского: "Найти числа с известным количеством делителей". Не могу найти ошибку - C++
Здравствуйте. Задача следующая: Найти все целые числа из промежутка от a до b, у которых количество делителей равно k. К примеру я взял...

Найти ошибку - C++
Добрый вечер, видал на форуме дня 3-4 назад пост с этим кодом и дело в том что перевод слов делается только en-&gt;ru, а на оборот никак не...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.06.2012, 19:27
Ответ Создать тему
Опции темы

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