39 / 2 / 0
Регистрация: 26.07.2016
Сообщений: 36
1

Неожиданное поведение программы: найти ошибку в коде

18.09.2016, 17:13. Показов 2780. Ответов 7
Метки нет (Все метки)

Программа запрашивает у пользователя «Сколько Вам лет?» . Вы вводите положительное число до 100. Программа должна выдать пол-ный ответ « Вам Х (или лет или года или год).

Каждый раз пишет "Вам 1 год". Найдите ошибку в коде.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2016, 17:13
Ответы с готовыми решениями:

Вычислить и вывести значение суперпозиции функций (неожиданное поведение программы: найти ошибку в коде)
Вот смотрите, есть условие задачи: ввести произвольные значения х, i (номер варианта 20), a, b, c,...

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

Неожиданное поведение программы: лишний виток цикла (найти и исправить ошибки в коде)
#include <iostream> using namespace std; int main() { int c =0; int ma; cout <<...

Неожиданное поведение программы: std::getline считывает строку только раз и на этом программа завершается (найти ошибку)
Строку считывает только раз и на этом программа завершается Code::blocks 17.12 #include...

7
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
18.09.2016, 17:24 2
ctrl+a, ctrl+c, ctrl+v ни как?
дайте код, а не картинку.

Добавлено через 2 минуты
11 строчка if(a=1) ошибка надо a == 1
1
39 / 2 / 0
Регистрация: 26.07.2016
Сообщений: 36
18.09.2016, 17:27  [ТС] 3
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(){
    setlocale(LC_ALL, "RUSSIAN");
    int a;
    cout << "Сколько вам лет? ";
    cin >> a;
    if ((a < 1) && (a >= 4) || (a < 21) && (a >= 24) || (a < 31) && (a >= 34) || (a < 41) && (a >= 44) || (a < 51) && (a >= 54) || (a < 61) && (a >= 64) || (a < 71) && (a >= 74) || (a < 81) && (a >= 84) || (a < 91) && (a >= 94))
        cout << "Вам " << a << " года"<< endl;
    else
    if ((a = 1) || (a = 21) || (a = 31) || (a = 41) || (a = 51) || (a = 61) || (a = 71) || (a = 81) || (a = 91))
        cout << "Вам " << a << " год" << endl;
    else
    if ((a > 5) && (a < 9) || (a > 15) && (a < 29) || (a > 35) && (a < 39) || (a > 45) && (a < 49) || (a > 55) && (a < 59) || (a > 65) && (a < 69) || (a > 75) && (a < 79) || (a > 85) && (a < 89) || (a > 95) && (a < 99))
        cout << "Вам " << a << " лет" << endl;
    else
        cout << "Ошибка вам не может быть больше 100 лет!" << endl;
    system("pause");
    return 0;
Добавлено через 1 минуту
Исправил, но теперь всегда пишет "Ошибка вам не может быть больше 100 лет!"
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
18.09.2016, 17:33 4
Лучший ответ Сообщение было отмечено TheHound как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main(){
    setlocale(LC_ALL, "RUSSIAN");
    int a;
    cout << "Сколько вам лет? ";
    cin >> a;
    if (a < 0 || a > 99){
        cout << "Ошибка вам не может быть столько лет!" << endl;
        return 0;    
     }
    if (a % 10 >= 2 && a % 10 <= 4)
        cout << "Вам " << a << " года"<< endl;
    else
    if (a % 10 == 1)
        cout << "Вам " << a << " год" << endl;
    else
        cout << "Вам " << a << " лет" << endl;
    return 0;
}
Добавлено через 38 секунд
такие длинные и бесполезные условия
1
39 / 2 / 0
Регистрация: 26.07.2016
Сообщений: 36
18.09.2016, 17:36  [ТС] 5
if (a % 10 >= 2 && a % 10 <= 4) - это условие обозначает а делим на 10 и остаток должен быть больше или равен 2 и меньше или равен 4?
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
18.09.2016, 17:38 6
Цитата Сообщение от TheHound Посмотреть сообщение
if (a % 10 >= 2 && a % 10 <= 4) - это условие обозначает а делим на 10 и остаток должен быть больше или равен 2 и меньше или равен 4?
верно
1
39 / 2 / 0
Регистрация: 26.07.2016
Сообщений: 36
18.09.2016, 17:43  [ТС] 7
Я все равно не понимаю как это работает

Добавлено через 2 минуты
Можешь объяснить, где и как можно использовать такой прием?

Добавлено через 3 минуты
Спасибо, я уже сам понял %10 позволяет работать с вторым элементом двузначного числа.
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
18.09.2016, 17:48 8
Давайте немного подумаем.
1 год, 2 года, 3 года, 4 года, 5 лет, 6 лет, ... , 20 лет,
21год, 22 года .. 24 года 25 лет ,,, 30 лет
31 год 32 года .. 34 года 35 лет ... 40 лет и тд
год у нас повторяется каждые 10 лет начиная с 1 года, делим наш возраст на 10 и смотрим остаток если 1 пишем год.
х года у нас повторяется если остаток от 2 до 4
ко всему остальному приписываем х лет
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2016, 17:48
Помогаю со студенческими работами здесь

Циклы: неожиданное поведение программы (найти и исправить ошибки)
При попытке возобновления программы после использования рандомных чисел программа идет дальше, а не...

Прохождение лабиринта: неожиданное поведение программы (найти и исправить ошибки)
Всем доброго времени суток. В общем написал я программу для генерации лабиринта и программу для его...

Найти минимальный и максимальный элементы (неожиданное поведение программы: массив не передаётся в функцию)
Ребята,помогите,пожалуйста,разобраться с функциями. Программа не хочет передавать значение массива...

Неожиданное поведение программы: почему не работает цикл while?
Проблема: Цикл While при != является бесконечным ,а при == не выполняется ни разу Ожидаемое...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru