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

Программа, которая генерирует квадратные уравнения

23.09.2014, 15:25. Показов 2999. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем, ребята, вопрос отчисления из универа. Нужна программа, которая сама генерирует уравнения и выдает к каждому уравнению ответ. Нужно что бы a,b,c в уравнении всегда были разными, и высчитывались по формуле дискриминанта. Пользователь же ничего вводить и задавать не должен, программа сама должна сгенерировать 20 различных уравнений с ответами. Очень надеюсь на вашу помощь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2014, 15:25
Ответы с готовыми решениями:

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

Квадратные уравнения
#include <iostream> #include <math.h> using namespace std; int main() { float a,b,c,d,di,x1,x2; cout<<"a=";cin>>a; ...

Написать программу, позволяющую решать квадратные уравнения
Помогите девушке решить индивидуальные задачи по С++ ........help me please!!!! 6. Написать программу, позволяющую решать квадратные...

9
 Аватар для Velikiy_Knjaz
1 / 1 / 3
Регистрация: 22.09.2014
Сообщений: 20
23.09.2014, 15:30
Цитата Сообщение от kause Посмотреть сообщение
Нужно что бы a,b,c в уравнении всегда были разными, и высчитывались по формуле дискриминанта.
может быть ответ высчитывался по формуле дискриминанта, а не коэфициенты?
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
23.09.2014, 15:33
kause, лучше поздно,чем никогда.
1.Генерируйте 20 чисел,x1 и x2,делаете их уникальными.
2.Подставляйте в формулу,получайте коэффициенты:
https://www.cyberforum.ru/cgi-bin/latex.cgi?{P}_{2}(x)=(x-{x}_{1})(x-{x}_{2})={x}^{2}-({x}_{1}+{x}_{2})x+{x}_{1}{x}_{2}
3.Решайте по формуле дискриминанта и получайте эти-же x1,x2 ;-)
4.Делаете вывод,что формулу закодили верно.

А можете сразу генерировать неповторяющуюся тройку чисел и переходить к формуле дискриминанта.
В общем приступайте,показывайте наработки,задавайте конкретные вопросы.
1
0 / 0 / 0
Регистрация: 23.09.2014
Сообщений: 4
23.09.2014, 15:42  [ТС]
понимаете, я студент из разряда " не буду ходить, а там как нибудь сдам". Поэтому даже элементарной теорией по програмированию в с++ я не владею, о чем очень жалею. Не вовремя одумался, к сожалению. Ну я думаю Вы уже догадались, что ни начала программы, и никаких доработок я внести не смогу по причине не знания программирования. Но задание дано, и мне как то надо выкручиваться. а этот форум единственное, что может помочь)
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
23.09.2014, 15:51
Цитата Сообщение от kause Посмотреть сообщение
понимаете, я студент из разряда " не буду ходить, а там как нибудь сдам".
Но и вы поймите,что если я сразу выложу готовый код,то очень скоро появится новая тема вашего авторства и вы будете ждать очередного желающего попрактиковаться в элементарных задачах.
Так что формулируйте корректную задачу,выбирайте алгоритм и ищите материал,для реализации на C++.
В крайнем случае,пишите,что-то вроде:
"Где мне скомпилировать свой набросок?"
Вам отвечают:
1)Бесплатные среды (IDE) для программирования на С/С++
2)http://ideone.com/
И так за шагом,до вечера сделаете свою программу.Если уже вечер значит до ночи,если ночь значит придется посидеть.
Цитата Сообщение от kause Посмотреть сообщение
Но задание дано, и мне как то надо выкручиваться. а этот форум единственное, что может помочь)
Поможем ;-)
0
0 / 0 / 0
Регистрация: 23.09.2014
Сообщений: 4
23.09.2014, 16:18  [ТС]
Вот что пока получилось. Только не уверен в правильности сделанного. Что добавить, что убрать?


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
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include<iostream.h>
using namespace std;
 
void main(void)
{
  
  int count;
   
 for(count=1; count<=50; count++)cout << count <<' '; 
int main()
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double b, c, d;
    
    int x, x1, x2;
    x1 = rand() % 5-2;
    x2 = rand() % 5-2;
    int a = rand() % 3+1;
    b = a * (-x1 -x2);
    c = a * x1 * x2;
    
    d = (b * b) - 4 * a * c; 
    if (d > 0) {
        x1 = (-b + sqrt(d)) / (2 * a);
        x2 = (-b - sqrt(d)) / (2 * a);
        cout << "\nУравнение имеет два различных вещественных корня.\n";
        cout << "x1= " << x1 << endl;
        cout << "x2= " << x2 << endl;
    }
    if ( d == 0){
        x = (-b) / (2 * a);
        cout << "\nВ уравнении оба корня вещественны и равны.\n";
        cout << " x= " << x << endl;
    }
    else{
        cout << "\nВ уравнении оба корня комплексные!\n";
        cout << " x1 = (" << -b << "+i" << sqrt(fabs(d)) << ")/" << 2 * a << endl;
        cout << " x1 = (" << -b << "-i" << sqrt(fabs(d)) << ")/" << 2 * a << endl;
    }
    return 0;
}
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
23.09.2014, 16:39
kause, для начала определитесь с библиотеками,вам понадобятся:
C++
1
2
iostream //для ввода/вывода
cmath //для sqrt
Теперь с основной функцией.
Лучше всего воспользоваться шаблоном с идеоне:
C++
1
2
3
4
int main() {
    // your code goes here
    return 0;
}
Формулу для нахождения дискриминанта,вы скопировали верно.
Теперь вернемся к условию задачи.
Ограничение на различность подразумевает уникальность тройки коэффициентов? или на то,чтобы a!=b!=c?
0
0 / 0 / 0
Регистрация: 23.09.2014
Сообщений: 4
23.09.2014, 16:42  [ТС]
Совершенно верно, нужна уникальность.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
23.09.2014, 16:56
kause, тогда ставим задачу сгенерировать 50 уникальных троек чисел.
Самый очевидный вариант,это простой перебор.
Первые 2 коэффициента по схеме 2 не трогаем,будем проверять,чтобы не совпадал только 3 параметр(может и не совсем удачный вариант,но условию задачи он будет соответствовать).
Если действовать по 1 предложенной мной схеме,то там коэффициент a всегда единичный.На второй ограничения не налагаем,а 3 будем проверять на уникальность.
Теперь определимся со структурой данных,где будем хранить наши тройки.
Можно в массиве,можно в векторах,можно извратится и взять кортеж или вариант с ассоциативным контейнером там.
Какой вариант нравится больше,тот и выбирайте.
0
68 / 68 / 37
Регистрация: 26.10.2013
Сообщений: 198
23.09.2014, 17:49
Мой вариант.
Упор сделал на то, чтобы хорошо считался дискриминант(там только квадраты) и коэфициенты были целыми числами.
Проверки на уникальность коэфов нет, но из-за наличия трех рандомов вероятность их повторения невысока - у меня, по крайней мере, за пару запусков одинаковых не попадалось. К тому же уменьшить подобную вероятность можно увеличением значений в массиве квадратов и диапазона значений для коэфициента В.
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include<iostream>
#include<time.h>
#include<math.h>
#include<vector>
using namespace std;
 
int getB(int iD, int range);
vector<int> getSubDivVec(int temp);
 
void main()
{
    //массив квадратов для D
    const int iMasDSize=11;
    const int masD[iMasDSize]={0,1,4,9,16,25,36,49,64,81,100};
    //диапазон значений для В
    const int iRangeB=40;
    //количество уравнений
    const int iNum=20;
 
    srand(time(NULL));
 
    int iA,iB,iC,iD,temp;
    double x1,x2;
    for(int i=0;i<iNum;i++)
    {
    //случайное значение из массива квадратов для D
    iD=masD[rand()%iMasDSize];
    //получаем значение В
    iB=getB(iD,iRangeB);
    temp=(pow(iB,2)-iD)/4;
    //массив делителей значения temp для получения целых значений А и С
    vector<int> SubDivVec=getSubDivVec(temp);
    //Получаем А и С
    iA=SubDivVec[rand()%SubDivVec.size()];
    iC=temp/iA;
    
    //Вывод уравнения
    cout<<i+1<<".\t"<<iA<<"x2";
    if(iB>0)cout<<"+";
    cout<<iB<<"x";
    if(iC>0)cout<<"+";
    cout<<iC<<"=0\n";
 
    //Вывод решения
    x1=(-iB+sqrt(iD))/(2*iA);
    if(iD!=0)
    {
        x2=(-iB-sqrt(iD))/(2*iA);
        cout<<"\tx1="<<x1<<"\n\tx2="<<x2<<endl<<endl;
    }
    else cout<<"\tx="<<x1<<endl<<endl;
    }
}
 
int getB(int iD, int range)
{
    int temp,iB;
    do
    {
        iB=rand()%range-range/2;
        temp=pow(iB,2)-iD;
    }
    while((temp<=0)||(temp%4!=0));
    return iB;
};
 
vector<int> getSubDivVec(int temp)
{
    vector <int> SubDivMas;
    SubDivMas.push_back(-temp);
    SubDivMas.push_back(temp);
    for(int i=1;i<temp/2+1;i++) 
        if(temp%i==0) 
        {
            SubDivMas.push_back(i);
            SubDivMas.push_back(-i);
        }
    return SubDivMas;
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2014, 17:49
Помогаю со студенческими работами здесь

Дайте функцию, которая генерирует случайные несуществующие слова
Только внимательней, мне не нужен рандомный набор букв типа: &quot;Bketmqfjbpa&quot; Скорее что-то вроде: &quot;Shearmuncry&quot;

Написать функцию, которая генерирует случайное число в диапазоне от 0 до A
Я самое наглое , ленивое и бессовестное чудовище)) но тем не менее Напишите функцию, которая генерирует случайное число в диапазоне от...

Написать программу, которая генерирует и выводит на экран простые числа
Написать программу, которая генерирует и выводит на экран простые числа, в основу генератора простых чисел положить формулу:...

Rand, которая генерирует как целые, так и дробные числа
Доброго времени суток, форумчане. подскажите, пожалуйста, как нужно прописать функцию rand(), чтобы я получил и целые, и дробные элементы....

Функция, которая генерирует число в диапазоне от 0 до числа, которое передается ей в качестве параметра
Написать функцию, которая генерирует одно случайное число в диапазоне от 0 до числа, которое передается ей в качестве параметра. Вызвать...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru