Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 7

Найти все целые неотрицательные корни уравнения

07.04.2012, 16:53. Показов 1326. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Делая очередную лабу столкнулся с такой проблемой, преподаватель объяснить не хочет, говорит мол делай сам.
Задача такова, найти все целые неотрицательные корни уравнения x^3 + y^3 = 729. Ниже мой код, компилятор Visual Studio 2010.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include "math.h"
#include "locale.h"
double k,x;
int y;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"russian");
    k = pow (729,1.0/3);
    int z = (double)k+1;
    puts("Целыми неотрицательными корнями уравнения x^3+y^3=729 являются числа:");
    for (y=0; y<=z; y++)
    {
        x = pow((729-y*y*y),1.0/3);
        if (int(x) == x)
        {
        printf(" x=%d  y=%d  \n",int(x),y);
        }   
    }
    return 0;
}
Итак, меня интересует вопрос, почему программа выдаёт мне только решение x = 0 y = 9, но не выдаёт так-же x = 9 y = 0. Пробовал, к примеру, поменять формулу на x^3 + y^3 = 8, всё прекрасно работает, выдаёт корни 0 2 и 2 0. Объясните пожалуйста почему такая вот штука происходит.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2012, 16:53
Ответы с готовыми решениями:

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

Найти все целые корни уравнения
Найти все целые корни уравнения ах^3 + bх^2 + сх + d = 0, где а, b, с и d — заданные целые числа, причем A и d не ровно 0. Замечание: ...

Найти все целые корни уравнения
Найти все целые корни уравнения ax3 + bx2 + сх + d = 0, где а, b, с и d — заданные целые числа, причем а ≠0 и d ≠ 0. Замечание:...

12
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.04.2012, 17:53
Погрешность приведения double к int и погрешность при вычислении корня
0
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 7
07.04.2012, 19:14  [ТС]
Собственно я это уже понял. Выводил таблицы значений до и после смены типа, так компилятор из double 9,00000 делает int 8, отсюда и не печатает это решение. Не подскажите как нужно переделать или дописать программу, что бы ответ был корректным?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
07.04.2012, 19:33
C
1
2
3
4
5
6
7
8
9
10
11
12
int main( ) {
   int x, y;
 
   int lim = ceil( pow( 729, 1. / 3. ));
   
   for (  x = 0; x <= lim; x++ )
      for ( y = 0; y <= lim; y++ )
         if ( x * x * x + y * y * y == 729 )
            printf( "%i^3 + %i^3 = 729\n", x, y );
 
   return ( 0 );
}
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.04.2012, 19:54
Так конечно точный результат, но дополнительный цикл.
А с одним циклом можно вместо равенства проверять разницу и сверять с допустимой погрешностью.
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
07.04.2012, 20:00
Так это будет делаться на каждой итерации, так что не думаю что этот вариант будет быстрее.
0
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 7
07.04.2012, 22:45  [ТС]
Вообще я изначально делал с двойным циклом, но мне сразу сказали, что нужно уложиться в один прогон массива. А насчёт сравнения с погрешностью..чёт я не очень понял.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.04.2012, 00:56
C++
1
2
3
4
//...
x = pow((729-y*y*y),1.0/3);
if( x-ceil(x) < e )   printf(" x=%d  y=%d  \n",ceil(x),y);
//...
где е это погрешность
0
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 7
08.04.2012, 12:32  [ТС]
Так тоже не работает правильно, т.к. при Y = 1,2,3,4,5,6 значения X лежат в пределах от 9 до 8, поэтому если округлять через ceil он выведет корни 8 0, 8 1, 8 2, 8 3, 8 4, 8 5, 8 6.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.04.2012, 16:34
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
//---------------------------------------------------------------------------
#include <iostream>
#include <cmath>
using namespace std;
const double e= 10e-12;
double k,x;
int y=0;
//---------------------------------------------------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
    double d=729;
    k = pow (d,1.0/3);
    int z = (double)k+1;
    cout<<"Целыми неотрицательными корнями уравнения x^3+y^3= "<<d<<" являются числа:"<<endl;
    for (y=0; y<=z; y++)
    {
     x = pow((d-y*y*y),1.0/3.0);
         if( fabs(ceil(x)-x) < e )
                 cout<<"x= "<<ceil(x)<<"   "<<"y= "<<y<<endl;
    }
system("pause");
return 0;
}
//---------------------------------------------------------------------------
0
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 7
08.04.2012, 16:48  [ТС]
Большое спасибо, теперь работает ) А почему было взять именно такое значение погрешности?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.04.2012, 17:16
Ну, я для начала запустил без условия и посмотрел насколько отличаются pow (729,1.0/3) от реального значения и приблизительно выбрал значение. Можно более точно подобрать, а вообще было бы неплохо почитать о погрешностях, возможно есть способ ее вычислить.
0
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 7
08.04.2012, 17:54  [ТС]
Ясно. Сейчас построил табличку со значениями x, ceil(x), fabs(ceil(x)-x) и окончательно разобрался. Ещё раз спасибо. Тема закрыта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.04.2012, 17:54
Помогаю со студенческими работами здесь

Найти все целые корни уравнения
Найти все целые корни уравнения ax^3 + bx^2 + cx + d, где a, b, c, d заданные целые числа, причем a != 0 и d != 0.(Целыми корнями могут...

Найти все целые корни уравнения
Найти все целые корни уравнения ax^3 + bx^2 + cx + d, где a, b, c, d заданные целые числа, причем a != 0 и d != 0.(Целыми корнями могут...

Найти все целые корни кубического уравнения
Найти все целые корни уравнения ах3 + bх2 + сх + d = 0, где а, b, с и d — заданные целые числа, причем a не равно 0 и d не равно 0....

Найти все целые корни уравнения ax3+bx2+cx+d=0
Здравствуйте! Помогите, пожалуйста, решить задачу: &quot;Вводятся целые значения для a, b, c, d. Найти все целые корни уравнения...

Найти все целые корни кубического уравнения
Добрый вечер. Есть задача : Вводятся целые числа a,b,c,d.Найти все целые корни уравнения ax3+bx2+cx+d=0 (корни искать среди делителей...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru