С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 27.09.2016
Сообщений: 24
1

Подсчитать количество натуральных чисел являющихся палиндромами

27.09.2016, 01:39. Показов 5299. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подсчитать количество натуральных чисел n (11 <= n <= 999), являющихся палиндромами, и распечатать их.

Я ничего не понимаю. Где вообще такому можно учится - мне тоже не ясно. Вроде логически понятно, что при n / 100 = n % 10 мы найдем нужное n, но как это вывести все? Как это оформить... Помогите пожалуйста. Компиляция все время не находит ошибку но выдает в окрне не верный ответ сколько таких числе. Их априори 99.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2016, 01:39
Ответы с готовыми решениями:

Написать программу, которая находит заданное количество чисел, являющихся квадратами натуральных чисел, и выводит их на экран. Проверку "квадрат – не
Написать программу, которая находит заданное количество чисел, являющихся квадратами натуральных...

Найти количество строк с заданными номерами в текстовом файле, являющихся палиндромами
Скопировать из одного файла в другой последовательность строк, заданных начальным и конечным...

Подсчитать количество строк заданной целочисленной матрицы n×n, являющихся перестановкой чисел 1, 2, ..., n
Подсчитать количество строк заданной целочисленной матрицы n × n, являющихся перестановкой...

Подсчитать количество натуральных чисел заканчивающихся нулем на заданном отрезке
Условие: Напишите эффективную программ, которая по двум данным натуральным числам х и у, не...

14
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
27.09.2016, 06:20 2
C++
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
26
27
28
#include <vector>
#include <iostream>
 
using std::vector;
 
int main()
{
    for (int n = 11; n <= 999; n++)
    {
        int n_val = n; 
        vector<int> digits;
        for (; n_val >= 1; n_val /= 10)
            digits.push_back(n_val % 10);
 
        bool f = false; 
        auto fwd = digits.begin(); auto rev = digits.rbegin();
        while (fwd != digits.begin() + (digits.size() / 2) + 1 && !f)
            f = (*fwd++ != *rev++) ? 1 : 0;
 
        if (f == false)
            std::cout << "n = " << n << std::endl;
    }
 
    std::cin.get();
    std::cin.get();
 
    return 0;
}
0
Объявлятель переменных
1220 / 406 / 320
Регистрация: 24.09.2011
Сообщений: 1,274
27.09.2016, 09:13 3
Векторы... Векторы эвривере.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
unsigned getReverse(unsigned n){
    unsigned r = n%10;
    while (n/=10) r = r*10 + n%10;
    return r;
}
 
bool isPalindrom(const unsigned n){
    return n == getReverse(n);
}
 
int main(){
    for (unsigned i = 11; i<1000; i++){
        if (isPalindrom(i)) std::cout << i << ' ';
    }
}
0
0 / 0 / 0
Регистрация: 27.09.2016
Сообщений: 24
01.10.2016, 11:47  [ТС] 4
А есть способ чтобы ответы не жевались, а выводились списком? И кол-во общее чтобы выводилось вместе с этим..
0
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
01.10.2016, 11:52 5
Вот пожалуйста, если Вас это устроит.
C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <vector>
#include <iostream>
 
using std::vector;
 
int main()
{
    std::vector<int> polindrom_v;
 
    int count  = 0;
    for (int n = 11; n <= 999; n++)
    {
        int n_val = n; 
        vector<int> digits;
        for (; n_val >= 1; n_val /= 10)
            digits.push_back(n_val % 10);
 
        bool f = false; 
        auto fwd = digits.begin(); auto rev = digits.rbegin();
        while (fwd != digits.begin() + (digits.size() / 2) + 1 && !f)
            f = (*fwd++ != *rev++) ? 1 : 0;
 
        if (f == false)
        {
            polindrom_v.push_back(n);
            count++;
        }
    }
 
    for (auto&& pn : polindrom_v)
          std::cout << "polindrom = " << pn << endl;
 
    std::cout << endl << "total = " << count << endl;
 
    std::cin.get();
    std::cin.get();
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 27.09.2016
Сообщений: 24
01.10.2016, 11:59  [ТС] 6
если у SpBerkut было ещё ясно что он делал, то в этих переменных я вообще ничего не понимаю и компилятор тоже меня посылает куда подальше.
0
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
01.10.2016, 12:13 7
Лучший ответ Сообщение было отмечено lightmoon как решение

Решение

Вот, последний вариант без STL. Так вроди понятнее. Если нужны коммент. как это работает, напишите.

C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <conio.h>
 
#include <iostream>
 
using namespace std;
 
int main()
{
    int* polindrom_v = new int[1000];
    memset((void*)polindrom_v, 0x00, sizeof(int) * 1000);
 
    int q = 0, count = 0;
    for (int n = 11; n <= 999; n++)
    {
        int n_val = n, t = 0;
        int* digits = new int[4];
        for (; n_val >= 1; n_val /= 10)
            digits[t++] = n_val % 10;
 
        bool is_polindrom = true;
        int fwd = 0, rev = t - 1;
        while (fwd <= (t / 2) && is_polindrom)
            is_polindrom = (digits[fwd++] != digits[rev--]) ? 0 : 1;
 
        if (is_polindrom == true)
        {
            polindrom_v[q++] = n;
            count++;
        }
    }
 
    for (int z = 0; z < q; z++)
        std::cout << polindrom_v[z] << endl;
 
    std::cout << endl << "total = " << count << endl;
 
    _getch();
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 27.09.2016
Сообщений: 24
01.10.2016, 12:35  [ТС] 8
это не работает >< Почему так сложно в такой простой задаче? Я уверенна, что там можно построить проще.
Ошибка. https://gyazo.com/94d33d10beef3175c1ff1a7d2c9b5462
компилятор не понимает что такое memset
0
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
01.10.2016, 12:41 9
это не работает >< Почему так сложно в такой простой задаче? Я уверенна, что там можно построить проще.
Ошибка. https://gyazo.com/94d33d10beef3175c1ff1a7d2c9b5462
компилятор не понимает что такое memset
Сегодня 12:13
Я прошу прощения: вот скриншот. код полностью работоспособный:


Для использования memset подключить #include <stdlib.h> #include <memory.h>
Миниатюры
Подсчитать количество натуральных чисел являющихся палиндромами  
0
0 / 0 / 0
Регистрация: 27.09.2016
Сообщений: 24
01.10.2016, 12:54  [ТС] 10
Теперь работает.. А вас не затруднит объяснить, что тут вообще делалось? примерно что не ясно (все не ясно)
https://gyazo.com/c5339a21cb5297e948d24bcfe3a71253
0
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
01.10.2016, 12:56 11
Не верите ? Вот exe-шник. Проверяйте:
Вложения
Тип файла: zip polindrom.zip (18.9 Кб, 1 просмотров)
0
0 / 0 / 0
Регистрация: 27.09.2016
Сообщений: 24
01.10.2016, 13:01  [ТС] 12
Вы меня понимаете? на русском?) Там все правильно. Но мне не понятно что там происходит.
0
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
01.10.2016, 13:21 13
Лучший ответ Сообщение было отмечено lightmoon как решение

Решение

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

Добавлено через 4 минуты
C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>
#include <conio.h>
 
#include <iostream>
 
using namespace std;
 
int main()
{
    // Выделяем динамический массив polindrom_v целых числе размерностью 1000
    int* polindrom_v = new int[1000];
    // Присваиваем каждому элементу массива значение 0 (заполняем массив нулями)
    memset((void*)polindrom_v, 0x00, sizeof(int) * 1000);
 
    int q = 0, count = 0; // q - индекс найденого полиндрома, 
    // count - количество полиндромов
 
    // В цикле изменяем значение переменной n E [11.999]
    for (int n = 11; n <= 999; n++)
    {
        // Для каждого числа n выполняем деление его на разряды.
        int n_val = n, t = 0;
        int* digits = new int[4];
        for (; n_val >= 1; n_val /= 10)
            // Значение каждого разряда записываем в массив digits
            digits[t++] = n_val % 10;
 
        bool is_polindrom = true;
        int fwd = 0, rev = t - 1; // Присваиваем переменным счетчикам fwd и rev
        // значения начального и кончного индекса в массиве разрядов digits
        while (fwd <= (t / 2) && is_polindrom)
            // Для каждой пары элементов digits[fwd] и digits[rev]
            // выполняем проверку: если пара значений элементов не
            // равны, число n палиндромом не является. Для проверки
            // каждой следующей пары значений выполняем инкремент
            // переменной счетчика fwd = fwd + 1, rev = rev - 1
            // соответсвенно.
            is_polindrom = (digits[fwd++] != digits[rev--]) ? 0 : 1;
 
        // Если значения переменной-флага is_polindrom не изменилось и 
        // равно true то данное число является палиндромом.
        if (is_polindrom == true)
        {
            // Записываем данное число в массив polindrom_v с индексом q
            polindrom_v[q++] = n;
            // Увеличиваем значение переменной счетчика палиндромов count = count + 1
            count++;
        }
    }
 
    for (int z = 0; z < q; z++)
        std::cout << polindrom_v[z] << endl;
 
    std::cout << endl << "total = " << count << endl;
 
    _getch();
 
    return 0;
}
Добавлено через 15 минут
ну как разобрались ??
0
0 / 0 / 0
Регистрация: 27.09.2016
Сообщений: 24
01.10.2016, 13:24  [ТС] 14
Спасибо большое.
0
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
01.10.2016, 13:24 15
пожалуйста.
0
01.10.2016, 13:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2016, 13:24
Помогаю со студенческими работами здесь

Определить, сколько чисел, являющихся квадратом целого числа, принадлежат заданному диапазону натуральных чисел
Определить, сколько чисел, являющихся квадратом целого числа, принадлежат заданному диапазону...

Подсчитать количество натуральных чисел в промежутке [a,b) старшая цифра которых кратна заданной
Подсчитать количество натуральных чисел в промежутке [a,b) старшая цифра которых кратная...

Подсчитать количество трехзначных натуральных чисел, в записи которых есть две одинаковые цифры
Подсчитать количество трехзначных натуральных чисел, в записи которых есть две одинаковые цифры.

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

Подсчитать количество натуральных чисел, являющихся палиндромами
Всем добрый день,не знаю как решить вот такую задачу,пожалуйста прошу вас помочь,дать советы при...

Подсчитать количество натуральных чисел, являющихся палиндромами
Подсчитать количество натуральных чисел n (11 &lt;= n &lt;= 999), являющихся палиндромами, и рас-...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru