Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оператор цикла.Задача. Верно ли я написал программу? 
V
    Опции темы
max29
Дата 28.4.2016, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 16.4.2016

Репутация: нет
Всего: нет



Вот задача: Дано натуральное число n. Выяснить входит ли цифра 3 в запись числа n, и поменять порядок цифр на обратный.
1) Выводило на печать слово "Ошибка" по else-у только 1 раз.
2) Печатало число в обратном порядке полностью а не только до искомого числа.
Вот программа:

Код

setlocale(LC_ALL, "Russian");

    int n,k;
    cin>>n;

    for(int i=0; n!=0; i++, n/=10)
    {
        if(n % 10 == 3)
        {
        while(n!=0)
        {
            k = n%10;   
            n = n/10; 
            cout << k;
        }
        }
        else
            cout<<"Ошибка";
    }
    system("pause");
    return 0;
 

Буду очень благодарен.
PM MAIL   Вверх
rudolfninja
Дата 28.4.2016, 16:23 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: 1
Всего: 6



Цитата(max29 @  28.4.2016,  16:02 Найти цитируемый пост)
1) Выводило на печать слово "Ошибка" по else-у только 1 раз.

Делаете какую-нибудь bool перменную,  которая сигнализирует о том, была ли найдена цифра 3 в числе. Изначально считаем, что цифры 3 в записи числа нет (т.е. значение переменной == false). Как только находим, меняем значение этой переменной на true. После завершения цикла смотрим значение этой переменной и в случае если оно == false, выводим ошибку.

Цитата(max29 @  28.4.2016,  16:02 Найти цитируемый пост)
Печатало число в обратном порядке полностью а не только до искомого числа.

Во-первых, в условии задачи нужно всегда менять порядок цифр, а не только если в записи числа есть цифра 3. Во-вторых, вам нужно поменять порядок цифр числа, а не напечатать число в обратно порядке (или все же, напечатать число в обратном порядке?)
Если вывести число на экран в обратном порядке, то вам нужно использовать только внутренний цикл, т.к. во внешнем цикле вы "обрезаете" число и выводите не все цифры.
PM MAIL Skype   Вверх
max29
Дата 28.4.2016, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 16.4.2016

Репутация: нет
Всего: нет



Вот прога НО как сделать так чтоб прога  печатала в обратном порядке только если в записи числа есть цифра 3.
Код

int n,k;
    cin>>n;
 
    bool fl = false;
 
    for(int i=0; n!=0; i++, n/=10)
    {
        if(n % 10 == 3) fl = true;
            cout << n%10 ;
    }
 
    if (!fl) cout << "\nОшибка" << endl;
    system("pause");
    return 0;


Это сообщение отредактировал(а) max29 - 28.4.2016, 18:33
PM MAIL   Вверх
max29
Дата 28.4.2016, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 16.4.2016

Репутация: нет
Всего: нет



 smile 
PM MAIL   Вверх
baldman88
Дата 28.4.2016, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Задания я так и не понял (учитесь лучше формулировать вопросы), но может как-то так?
Код

int n;
cin >> n;
int normal = n;
int reverse = 0;
bool flag = false;
while (n != 0)
{
    if(n % 10 == 3)
    {
        flag = true;
    }
    reverse = (reverse * 10) + (n % 10);
    n /= 10;
}
if (flag == true)
{
    cout << reverse << endl;
}
else
{
    cout << normal << " (Ошибка!)" << endl;
}
system("pause");
return 0;

PM MAIL   Вверх
max29
Дата 28.4.2016, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 16.4.2016

Репутация: нет
Всего: нет



Как сделать чтобы эта прога печатала введённое число в обратном порядке только если в него входит цифра 3 т.е. не печатало в обратном порядке всегда а только при соответствии условию  if(n % 10 == 3) А в случае не соответствия условию печатало только "Ошибка".
Код

int n,k;
    cin>>n;
 
    bool fl = false;
    
    for(int i=0; n!=0; i++, n/=10)
    {
        if(n % 10 == 3) fl = true;
            cout << n % 10 ;
    }
 
    if (!fl) cout << "\nОшибка" << endl;
    cout<<endl;
    system("pause");
    return 0;


Это сообщение отредактировал(а) max29 - 28.4.2016, 23:14
PM MAIL   Вверх
baldman88
Дата 28.4.2016, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



А Вы пробовали запускать приведенный мной вариант? Он печатает число в обратном порядке только если в него входит цифра "3". Если она не входит в введенное число, то оно печатается так, как есть + (Ошибка!).
А вот если Вы не понимаете, как убрать вывод числа и оставить только вывод сообщения об ошибке, то это печально.

Это сообщение отредактировал(а) baldman88 - 28.4.2016, 23:24
PM MAIL   Вверх
max29
Дата 28.4.2016, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 16.4.2016

Репутация: нет
Всего: нет



А можно как нибудь по проще написать прогу просто я только начал изучать С++.

Вроде бы разобрался как ваша прога работает.
Такой вопрос а reverse это как я понимаю только имя переменной так ведь?
Я могу назвать её как нибудь иначе? Или это какая та действующая функция?

Это сообщение отредактировал(а) max29 - 28.4.2016, 23:41
PM MAIL   Вверх
baldman88
Дата 28.4.2016, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Конечно можно. В чем проблема? Нужно просто посидеть и подумать  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.