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

Почему программа не хочет выполнять цикл?

25.09.2015, 06:40. Показов 1572. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны вещественные числа а, b, с(а <> 0) (которые задает пользователь с клавиатуры).
Выяснить, имеет ли уравнение аx^2+ bх + с= 0 вещественные корни.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
void main() {
    setlocale(LC_ALL, "rus");
    float a!=0, b=0, c=0, d;
    while (a != 0) {
        cout << "Введите a b c для уравнения аx^2+bх+с=0\n";
        cin >> a; cin >> b; cin >> c;
        d = b*b - 4 * a*c;
        if (d < 0) { cout << "Вещественных корней нет\n"; }
        else if (d = 0) { cout << "Один вещественный корень\n"; }
        else { cout << "Два вещественных корня\n"; }
    }
    cout << "a не должно быть равно 0\n";
    system("pause");
 
}
Программирую самые первые дни, пытаюсь сделать так, чтобы при a=0 программа писала текст и закрывалась, но при любом вводимом значении a тело цикла выполняется, пишет количество корней, ставится на паузу и при нажатии любой клавиши закрывается.

В чем моя ошибка?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2015, 06:40
Ответы с готовыми решениями:

Почему не хочет выполнять команду?
Не хочет закрашивать full_box на строке 38. full_antr закрашивает, а бокс не хочет. выводит окно загрузки приложения, убираю кавычки в...

Почему программа не хочет повторять новый ввод?
Первый раз считает отлично. Прошу повторить - пишет везде 0 и не спрашивает о вводе нового string? #include &lt;iostream&gt; ...

Почему программа не хочет считать? Ошибок не выдает
function f(x:real):real; begin f:=(3*x-123)/(x+1)+5*Abs(x-4) end; const a=0; const b=5; const d=0.1; const n=22; var xP,...

4
 Аватар для Storm Screamer
4840 / 1407 / 115
Регистрация: 21.04.2013
Сообщений: 8,572
25.09.2015, 06:47
Цитата Сообщение от jirtreck Посмотреть сообщение
чтобы при a=0 программа писала текст и закрывалась
До цикла поставить условие?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (a == 0) { count << "a равно нулю \n" }
else
{
 
 while (a != 0) {
        cout << "Введите a b c для уравнения аx^2+bх+с=0\n";
        cin >> a; cin >> b; cin >> c;
        d = b*b - 4 * a*c;
        if (d < 0) { cout << "Вещественных корней нет\n"; }
        else if (d = 0) { cout << "Один вещественный корень\n"; }
        else { cout << "Два вещественных корня\n"; }
    }
 
}
0
1 / 1 / 0
Регистрация: 25.09.2015
Сообщений: 44
25.09.2015, 06:53  [ТС]
Storm Screamer, вставил код, - ничего не изменилось.
Да и мне нужно сделать так, что если пользователь введет a=0, программа будет выдавать текст о том, что a не должен быть равен 0.

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 <stdlib.h>
#include <stdio.h>
using namespace std;
void main() {
    setlocale(LC_ALL, "rus");
    float a!=0, b=0, c=0, d;
    if (a == 0) { cout << "a не должно быть равным нулю \n" }
    else
    {
 
        while (a != 0) {
            cout << "Введите a b c для уравнения аx^2+bх+с=0\n";
            cin >> a; cin >> b; cin >> c;
            d = b*b - 4 * a*c;
            if (d < 0) { cout << "Вещественных корней нет\n"; }
            else if (d = 0) { cout << "Один вещественный корень\n"; }
            else { cout << "Два вещественных корня\n"; }
        }
 
    }
    system("pause");
 
}
0
 Аватар для Storm Screamer
4840 / 1407 / 115
Регистрация: 21.04.2013
Сообщений: 8,572
25.09.2015, 07:01
Лучший ответ Сообщение было отмечено jirtreck как решение

Решение

Цитата Сообщение от jirtreck Посмотреть сообщение
программа будет выдавать текст о том, что a не должен быть равен 0.
Виноват, не туда поставил условие.

C++
1
2
3
4
5
6
7
8
9
  while (a != 0) {
            cout << "Введите a b c для уравнения аx^2+bх+с=0\n";
            cin >> a; cin >> b; cin >> c;
            if (a == 0) { count << "a не должно быть равным нулю \n"; break; } // выход из цикла, если a=0
            d = b*b - 4 * a*c;
            if (d < 0) { cout << "Вещественных корней нет\n"; }
            else if (d = 0) { cout << "Один вещественный корень\n"; }
            else { cout << "Два вещественных корня\n"; }
        }
1
1 / 1 / 0
Регистрация: 25.09.2015
Сообщений: 44
25.09.2015, 07:16  [ТС]
Как код не меняю, - все время пишет только количество корней.
Уже прямо интересно, что не так у меня

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
void main() {
    setlocale(LC_ALL, "rus");
    float a!=0, b=0, c=0, d;
    while (a != 0) {
        cout << "Введите a b c для уравнения аx^2+bх+с=0\n";
        cin >> a; cin >> b; cin >> c;
        if (a == 0) { count << "a не должно быть равным нулю \n"; break; } // выход из цикла, если a=0
        d = b*b - 4 * a*c;
        if (d < 0) { cout << "Вещественных корней нет\n"; }
        else if (d = 0) { cout << "Один вещественный корень\n"; }
        else { cout << "Два вещественных корня\n"; }
    }
    system("pause");
 
}
Не выходит

У меня сейчас не выдает предупреждение о том, что что-то там устарело, может я нажал на галочку и мне теперь постоянно предлагает прошлый успешный вариант.
Если это так, то прошу указать как это исправить

Добавлено через 1 минуту
Если у вас код работает без проблем, то прошу об этом отметиться, мне нужно распечатать его как можно быстрее для универа

Добавлено через 4 минуты
Создал новый проект, - показало ошибки в коде, раньше их не видело
Исправил все, большое спасибо за помощь!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
void main() {
    setlocale(LC_ALL, "rus");
    float a=1, b = 0, c = 0, d;
    while (a != 0) {
        cout << "Введите a b c для уравнения аx^2+bх+с=0\n";
        cin >> a; cin >> b; cin >> c;
        if (a == 0) { cout << "a не должно быть равным нулю \n"; break; } // выход из цикла, если a=0
        d = b*b - 4 * a*c;
        if (d < 0) { cout << "Вещественных корней нет\n"; }
        else if (d = 0) { cout << "Один вещественный корень\n"; }
        else { cout << "Два вещественных корня\n"; }
    }
    system("pause");
 
}
Добавлено через 5 минут
Теперь будет наука, что при инициализации можно ставить только =, а не !=
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.09.2015, 07:16
Помогаю со студенческими работами здесь

Почему программа не хочет выводить динамический массив 3х3?
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;time.h&gt; #include &lt;random&gt; using namespace std; int main() ...

не хочет выполнять условие
я хочу что б не выходило за границы формы, но не хочет var Form1: TForm1; x,y:integer; implementation {$R *.dfm}

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

Ремонт ПММ Siemens SR64M001RU/17 FD9402, Ничего не хочет выполнять.
Здравствуйте.Прошу помочь инфой как работать в сервисном режиме.Со слов хозяйки машина была установлена чуть больше года назад.Установщики...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru