Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
yaStudent
2 / 2 / 0
Регистрация: 31.05.2014
Сообщений: 35
#1

Палиндром. Можно ли упростить программу - C++

16.07.2014, 09:58. Просмотров 243. Ответов 7
Метки нет (Все метки)

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
using namespace std;
 
int main()
{
    int        a, d, m, n, f = 0;
 
 
cin >> d;
 
    for ( a = d, m = n = 1; a /= 10; m *= 10, n++ );
 
    a = d;
    n /= 2;
    while ( n-- ) {
        f |= ((d / m) % 10) ^ (a % 10);
        m /= 10;
        a /= 10;
    }
 
    cout << (!f ? "Yes" : "No") << endl;
 
    return 0;
}
Возможно ли упростить программу (не измерять число циклом for), чтобы при этом метод решения остался прежним - вычисление палиндрома путём сравнения чисел старшего и младшего разряда (а не переворачиванием)?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2014, 09:58     Палиндром. Можно ли упростить программу
Посмотрите здесь:
Как можно упростить программу?(или подкорректировать) C++
C++ Найти лексикографически минимальный палиндром, который можно получить из слова S
Выяснить, можно ли из из всех цифр заданного числа составить палиндром C++
Переделать программу (Палиндром. Указатели) C++
C++ Как можно упростить условие?
Написать программу которая по заданному n проверяет число на палиндром C++
C++ Можно ли упростить шаблонную функцию сортровки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1789 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
16.07.2014, 10:09     Палиндром. Можно ли упростить программу #2
Понимаю, что вы не хотите менять текст програмы, но все же может быть так проще?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstdlib>
#include <iostream>
#include <string>
int main() {
    system("chcp 1251");
    std::string str;
    std::cin >> str;
    std::string::size_type len = str.size();
    for(std::string::size_type idx = 0; idx < len / 2; ++idx)
        if(str[idx] != str[len - idx - 1]) {
            std::cout << "The number is not a palindrome" << std::endl;
            return EXIT_SUCCESS;
        }
    std::cout << "The number is a palindrome" << std::endl;
    return EXIT_SUCCESS;
}
yaStudent
2 / 2 / 0
Регистрация: 31.05.2014
Сообщений: 35
16.07.2014, 10:17  [ТС]     Палиндром. Можно ли упростить программу #3
Ilot, нет, мне надо без использования строк и с циклом while.
Ilot
Модератор
Эксперт С++
1789 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
16.07.2014, 10:20     Палиндром. Можно ли упростить программу #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Да, но это единственный вариант существенно упростить вашу программу. Хотя как говориться хозяин-барин...
yaStudent
2 / 2 / 0
Регистрация: 31.05.2014
Сообщений: 35
16.07.2014, 10:27  [ТС]     Палиндром. Можно ли упростить программу #5
Ilot, существенно необязательно, интересовало - возможно ли убрать, по крайней мере, измерение длины числа циклом for.
SatanaXIII
Супер-модератор
Эксперт С++
5594 / 2628 / 240
Регистрация: 01.11.2011
Сообщений: 6,472
Завершенные тесты: 1
16.07.2014, 10:32     Палиндром. Можно ли упростить программу #6
Цитата Сообщение от yaStudent Посмотреть сообщение
мне надо без использования строк и с циклом while
Это называется не упростить, а переделать.
Ilot
Модератор
Эксперт С++
1789 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
16.07.2014, 10:43     Палиндром. Можно ли упростить программу #7
Замена цикла:
C++
1
for ( a = d, m = n = 1; a /= 10; m *= 10, n++ );
C++
1
n = std::to_string(d).size();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2014, 10:50     Палиндром. Можно ли упростить программу
Еще ссылки по теме:
Дан одномерный целочисленный массив. Определить, можно ли получить из данной последовательности симметричную (палиндром) путем перестановки в исходной C++
C++ Как можно упростить exp^CA (если вводимые числа 5 и 4)
C++ Подскажите как можно упростить присвоение числе переменным?!
C++ Записать целое число буквами (можно ли упростить код?)
C++ Прямоугольник из символов, которые ввел пользователь. Можно ли упростить условие?

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

Или воспользуйтесь поиском по форуму:
yaStudent
2 / 2 / 0
Регистрация: 31.05.2014
Сообщений: 35
16.07.2014, 10:50  [ТС]     Палиндром. Можно ли упростить программу #8
Ясно. Значит, действительно не упростить. =(
Yandex
Объявления
16.07.2014, 10:50     Палиндром. Можно ли упростить программу
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru