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

задание

29.11.2020, 22:16. Показов 531. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
С клавиатуры вводятся действительные числа. Признак конца ввода - 0. Определить количество чисел, удовлетворяющих условию: a ∈ [100; 205]
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.11.2020, 22:16
Ответы с готовыми решениями:

Задание на массив и задание на матрицу.
1.Удалить из массива A(n) нулевые элементы, передвигая на их место следующие элементы, не нарушая порядка их следования. В результате...

Задание по C++
Задание для C++

Задание
Здравствуйте! Очень нужна помощь, не могу разобратся Заранее спасибо!

5
 Аватар для VLaDoS_2001a
319 / 216 / 114
Регистрация: 14.05.2020
Сообщений: 890
30.11.2020, 00:01
sakuravcvete35,
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main(void)
{
 
    int counter = 0;
    double num;
    do
    {
        if (cin >> num && (num >= 100 && num <= 205)) ++counter;
    } while (num != 0);
    cout << counter << endl;
    
    cin.get();
    return EXIT_SUCCESS;
}
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,517
30.11.2020, 00:24
Цитата Сообщение от VLaDoS_2001a Посмотреть сообщение
if (cin >> num && (num >= 100 && num <= 205))
Поведение вашей программы некорректно.
Сначала пользователь ввел число 0.
А затем ввел проивольный наборк букв: sdas
И ваша программа впала в бесконечный цикл.
Это - некорректное поведение.


Если вместо числа пользователь введет произвольный набор цифр, тогда:
Цитата Сообщение от VLaDoS_2001a Посмотреть сообщение
cin >> num
cin выставит флажок, что он сломался.
num останется без изменений.

И тогда:
Цитата Сообщение от VLaDoS_2001a Посмотреть сообщение
while (num != 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>
using namespace std;
 
int main()
{
    int counter = 0;
    double num;
    do
    {
        cin >> num;
        
        if (!cin)
        {
            cerr << "error: invalid input value\n";
            return EXIT_FAILURE;
        }
        if(num >= 100 && num <= 205)
            ++counter;
        
    } while (num != 0);
    
    cout << counter << endl;
    return EXIT_SUCCESS;
}
Если в программе присутствует ввод пользователя, нужно заранее подумать о том, что будет, если пользователь введет что нибудь не то.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
30.11.2020, 02:37
Цитата Сообщение от eva2326 Посмотреть сообщение
cin выставит флажок, что он сломался.
num останется без изменений.
Начиная с С++11 в num запишется 0.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
30.11.2020, 03:42
Цитата Сообщение от eva2326 Посмотреть сообщение
Если в программе присутствует ввод пользователя, нужно заранее подумать о том, что будет, если пользователь введет что нибудь не то.
eva2326, в учебных задачах проверка ввода на корректность не требуется
Цитата Сообщение от eva2326 Посмотреть сообщение
Если вместо числа пользователь введет произвольный набор цифр


Добавлено через 10 минут
вариант с while:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main()
{ 
    int count=0;
    double a;
    
    cout << "Enter numbers (0 - exit):\n";
    while(cin >> a && a)    
    {
        if (a>=100. && a<=205.) count++;
    }
    
    cout << "count=" << count << "\n";
    
system("pause");
return 0;
}
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,517
30.11.2020, 11:53
Цитата Сообщение от zayats80888 Посмотреть сообщение
Начиная с С++11 в num запишется 0.
Не "запишется", а "должно было бы записываться".
Если бы компиляторы следовали бы букве стандарта.
Visual Studio, например, не следует.

Хорошая новость в том, что есть надежный способ проверить: удалось ли успешно завершить операцию?

C++
1
2
3
4
if(std::cin)
    success();
else
    failed();
Этот способ поддерживают все компиляторы: и новые, и старые.
А сам оператор приведения к bool был специально создан именно для этой цели.

Просто используйте инструмент по его прямому назначению, и будет вам счастье.

А вот сравнение с нулем - это такой побочный костыль, который на практике может сработает, а может и нет.

Цитата Сообщение от Yetty Посмотреть сообщение
в учебных задачах проверка ввода на корректность не требуется
Знаете, как вообще появился озвученный выше костыль?

Возникли люди, которые решили, что учебные задачи не должны учить писать корретный код.
Эти люди заявили:
Цитата Сообщение от Yetty Посмотреть сообщение
корректность не требуется
В результате, после такого обучения, молодые люди не умеют писать корректный код.

Зато они научились писать код наподобие:

C++
1
2
3
double b;
cin >> b;
// переменная b потенциально не инициализированна (UB)
И вот, что бы избежать UB, решили: пусть istream обнуляет выходную переменную.
Качества кода это, конечно, не улучшит, но по крайней мере, поведение станет предсказуемым.

"Мы не можем заставить учителей учить корректности. Но мы можем заставить istream записывать ноль".

зы
Мне повезло. Меня учили писать грамотно, а не абы как.

Добавлено через 4 минуты
Цитата Сообщение от Yetty Посмотреть сообщение
while(cin >> a && a)
Создаётся впечатление, будто бы a - это булевая переменная.

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

Я бы записала так:
C++
1
while(cin >> a && a != 0.0)
Вроде бы тоже самое, но код более красноречивый.
Cразу видно, что переменная a совместима с double

Добавлено через 46 секунд
Цитата Сообщение от Yetty Посмотреть сообщение
count++;
Преффиксы/постфиксы путаем. Ну да ладно))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2020, 11:53
Помогаю со студенческими работами здесь

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

Задание по C++
1 задание. Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dX. (вложение 1 где...

задание
Привет Всем! помогите срочно плзз решить! Задача такая: Даны действительные числа a,b,c. Получить max(a,a+b)+max(a,b+c)) и всё это...

Задание for(;;)
Привет всем! Ребята, подскажите пожалуйста. Нужно написать программу: Условие понятное, а вот как записать.. Никак не...

Задание С++
Как создать прогу для подсчета количества заглавных букв в тексте и превращение их в маленькие.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru