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

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

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

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

16.07.2014, 09:58. Просмотров 253. Ответов 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), чтобы при этом метод решения остался прежним - вычисление палиндрома путём сравнения чисел старшего и младшего разряда (а не переворачиванием)?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2014, 09:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Палиндром. Можно ли упростить программу (C++):

Как можно упростить программу?(или подкорректировать) - C++
(ссылка на задание) Вот мое решение : Код: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include...

Найти лексикографически минимальный палиндром, который можно получить из слова S - C++
У Максима есть слово S, и он очень хочет сделать из него палиндром, но не желает изменять слишлом большое количество символов. Помогите...

Выяснить, можно ли из из всех цифр заданного числа составить палиндром - C++
Палиндромом будем называть число, запись которого в десятичной системе счисления одинаково читается слева направо и справа налево....

Переделать программу (Палиндром. Указатели) - C++
Всем доброго времени суток. Написал программу на палиндром, но от меня тебуют её сделать не с помощью массива, а с помощью указателей. Т.е....

Можно ли упростить код? - C++
Есть последовательность тестов, можно ли сделать так, что бы каждый раз не писать if(бла бла бла) cout « &quot;бла бла бла&quot; « endl; и т.д void...

Как можно упростить условие? - C++
if ((student.exam == 3 &amp;&amp; sum == 14) || (student.exam == 4 &amp;&amp; sum / 4 == 19) || (student.exam == 5 &amp;&amp; sum == 24))

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ilot
Модератор
Эксперт С++
1811 / 1168 / 229
Регистрация: 16.05.2013
Сообщений: 3,082
Записей в блоге: 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;
}
0
yaStudent
2 / 2 / 0
Регистрация: 31.05.2014
Сообщений: 35
16.07.2014, 10:17  [ТС] #3
Ilot, нет, мне надо без использования строк и с циклом while.
0
Ilot
Модератор
Эксперт С++
1811 / 1168 / 229
Регистрация: 16.05.2013
Сообщений: 3,082
Записей в блоге: 5
Завершенные тесты: 1
16.07.2014, 10:20 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Да, но это единственный вариант существенно упростить вашу программу. Хотя как говориться хозяин-барин...
0
yaStudent
2 / 2 / 0
Регистрация: 31.05.2014
Сообщений: 35
16.07.2014, 10:27  [ТС] #5
Ilot, существенно необязательно, интересовало - возможно ли убрать, по крайней мере, измерение длины числа циклом for.
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,529
Завершенные тесты: 1
16.07.2014, 10:32 #6
Цитата Сообщение от yaStudent Посмотреть сообщение
мне надо без использования строк и с циклом while
Это называется не упростить, а переделать.
0
Ilot
Модератор
Эксперт С++
1811 / 1168 / 229
Регистрация: 16.05.2013
Сообщений: 3,082
Записей в блоге: 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();
1
yaStudent
2 / 2 / 0
Регистрация: 31.05.2014
Сообщений: 35
16.07.2014, 10:50  [ТС] #8
Ясно. Значит, действительно не упростить. =(
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2014, 10:50
Привет! Вот еще темы с ответами:

Написать программу которая по заданному n проверяет число на палиндром - C++
Привет! Поступил учиться на дистанционное высшее образование, получил по предмету основы программирования домашнюю работу! Вот описание: ...

Можно ли упростить шаблонную функцию сортровки - C++
Есть шаблонная функция, сортирующая пузырьком по возрастанию или убыванию в зависимости от полученного параметра. Но она выглядит громоздко...

Дан одномерный целочисленный массив. Определить, можно ли получить из данной последовательности симметричную (палиндром) путем перестановки в исходной - C++
Помогите написать код к данной задаче, пожалуйста Дан одномерный целочисленный массив. Определить, можно ли получить из данной...

Подскажите как можно упростить присвоение числе переменным?! - C++
// 400.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;conio.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.07.2014, 10:50
Ответ Создать тему
Опции темы

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