@Annie96

Что не так с моим кодом?

Здравствуй, меня зовут Аня. Являюсь студентом-первокурсником. Для себя выбрала не самый простой путь: стать программистом. Работаю ( если это можно так назвать) в среде MSVS2013. Программирование даётся не так легко, как хотелось бы [здесь пичальный смайлик]. К сожалению, многого на лекции так и не улавливаю [о-о-о-очень пичальный смайлик] Так что, если буду нубить, обещайте не бросать камнем, а ещё лучше объясните так, как будто мне лет 5 что ли) Первая лабораторная обеспечила бессонной ночью. Что из этого вышло, вы можете лицезреть ниже. Итак, непосредственно условие задачи:
В программу мы вводим день и месяц рождения, а она нам выдаёт ближайший удачный год, удачным считается такой, остаток от деления суммы цифр которого на 10, совпадает таким же остатком для дня или месяца.
Вот, что я написала, но, так сказать, не робить. Помогите, пожалуйста, чтоб работало, заранее благодарю и , уверена, что на этом моё знакомство с форумом не закончится, ведь нас ждёт впереди ещё не одна лабораторная работа)
#include "stdafx.h"
#include <iostream>
#include <clocale>


using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int remDay = 0;
    int remMonth = 0;
    int day = 0;
    int month = 0;
    int nowYear = 2014;
    int lyear = 0;
    int remYear = 0;
    cout << "Введите день и месяц: ";
    cin >> day;
    cin >> month;
    while (day != 0)// пока day не равно 0
    {
        remDay += day % 10;//  sum = sum + n%10 берём последнюю цифру
        day /= 10;// добавить точку, чтобы в след. раз взять на разряд меньше
    }
    while (month != 0)
    {
    remMonth += month % 10;
    month /= 10;
    }
    while (lyear != 0)
    {
        nowYear = lyear;// чтобы вывести не 0
        remYear += lyear % 10;
        lyear /= 10;
        if (remYear == remDay || remYear == remMonth)
        {
            cout << nowYear;
        }
        else
        {
            nowYear++;
        }
    }
    system("pause");
    return 0;
}
  • Вопрос задан
  • 2283 просмотра
Пригласить эксперта
Ответы на вопрос 3
EndUser
@EndUser
Всё-таки немного не ясно, что такое "удачный год"...
Ответ написан
ManWithBear
@ManWithBear
Swift Adept, Prague
Ошибка в логике третьего цикла, в нем должен быть ещё один цикл, который считает сумму цифр году, и уже после этого идет проверка на одинаковый остаток, в случае её фейла, год увеличивается на единицу и большой цикл продолжает, в случае совпадения, цикл останавливается.
Ответ написан
@Xano
int lyear = 0;
while ( lyear != 0 )... - Как это должно работать?
И у Вас явно путаница в вычислении остатка от деления на 10 суммы цифр (при вычислении для года). Стоит вынести это в отдельную функцию, и тогда сами всё поймёте.

И да, не стал сразу вчитываться в реализацию подсчета остатка... "остаток от деления суммы цифр которого на 10" - сумму цифр то Вы посчитали, но на этом и остановились.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы