С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34

Задачка.Нужно найти ошибку

16.12.2013, 09:03. Показов 757. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Изначальное условие задачи:
Составить программу поисков всех чисел палиндромов до n(n вводится с клавиатуры), которые при возведение в квадрат также дает палиндром.(Без массивов и функций)
Я решил сделать пока только поиск палиндромов и вывод их.
Вот что у меня получилось:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    unsigned long int n, p = 0, o, v, i = 10;
    cout << "Введите число" << endl;
    cin >> n;
    for ( ;i <= n;i++){
        o = i;
        v = i;
        while (o > 0){
            p = p * 10 + o % 10;
            o = o / 10;
            if (v == p)
            {
                cout << i << endl;
            }
        }
    }
 
    return 0;
}
Вот что оно мне отвечает:
Где я ошибся? Помогите пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2013, 09:03
Ответы с готовыми решениями:

Найти ошибку и задачка
Добрый день, есть задачки, связанные с С++ Требуется удостовериться в их правильном решении. 1. Найдите ошибки в фрагменте кода....

Простая задачка, но туплю, помогите найти ошибку с new.
Написано в C++ Builder 6, для решения конкретного уравнения. Вводить число 0.3. Выдаёт ошибку в строке: float *temp=new float; //Тут...

Нужно найти ошибку
Вот код программы: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; int main(void) { ...

14
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2223 / 1425 / 420
Регистрация: 16.05.2013
Сообщений: 3,642
Записей в блоге: 6
16.12.2013, 09:27
Может быть не совсем то, что вы хотите однако я бы рекомендовал вам использовать для хранения информации строку, а не число.
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
#include <iostream>
#include<string>
using namespace std;
bool IsPolidrom(string);
int main()
{
    string number;
    cin >> number;
 
    std::cout << IsPolidrom(number) << std::endl;
 
    return 0;
}
bool IsPolidrom(string str)
{
    std::string::iterator beg = str.begin();
    std::string::iterator end = str.end() - 1;
    do {
        if (*beg != *end)
            return false;
    }
    while(++beg < --end);
    return true;
}
0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
16.12.2013, 10:08
У меня вот что получилось, без использования функций и строк
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
60
61
62
63
64
65
#include <iostream>
 
int main()
{
    unsigned int n,tmp;
    std::cout <<"N = ";
    std::cin >> n;
    unsigned int c,k,l;
    bool f1,f2;
    for (unsigned int i=1; i<=n; i++)
    {
        c = 0;
        tmp = i;
        while (tmp!=0)
        {
            ++c;
            tmp/=10;
        }
        f1 = true;
        k = 1;
        l = 1;
        for (int j=1; j<c; j++)
            k*=10;
        for (int j=1; j<=c/2; j++)
        {
            if ((i/k)%10!=(i/l)%10)
            {
                f1 = false;
                break;
            }
            k/=10;
            l*=10;
        }
        if (f1)
        {
            tmp=i*i;
            c = 0;
            while (tmp!=0)
            {
                ++c;
                tmp/=10;
            }
            f2 = true;
            k = 1;
            l = 1;
            for (int j=1; j<c; j++)
                k*=10;
            tmp=i*i;
            for (int j=1; j<=c/2; j++)
            {
                if ((tmp/k)%10!=(tmp/l)%10)
                {
                    f2 = false;
                    break;
                }
                k/=10;
                l*=10;
            }
            if (f2)
                std::cout <<i <<' ';
        }
    }
    std::cout <<std::endl;
    return 0;
}
1
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
16.12.2013, 10:25  [ТС]
MicM, Кажется чего-то не хватает
Да и я просил указать мне на мои ошибки. Почему у меня выводит только один палиндром 11, а не все до 121 как на выше указанной прикрепленной картинке. Но в любом случае спасибо
0
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
16.12.2013, 10:29  [ТС]
Ilot, Нет, это нельзя использовать. Однако спасибо за вашу помочь
0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
16.12.2013, 10:32
Цитата Сообщение от NikiKoyot Посмотреть сообщение
MicM, Кажется чего-то не хватает
вы про что?
0
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
16.12.2013, 10:40  [ТС]
MicM,единственное число палиндром до 121, которое в преобразовании её в квадрат дает тоже палиндром, это 11->121, но если говорить о всех числах палиндромах до 121, то не хватает 33, 44,55,66,88,99.
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2223 / 1425 / 420
Регистрация: 16.05.2013
Сообщений: 3,642
Записей в блоге: 6
16.12.2013, 10:42
Цитата Сообщение от NikiKoyot Посмотреть сообщение
Ilot, Нет, это нельзя использовать. Однако спасибо за вашу помочь
А в чем проблема? Если вам нужно число то преобразовать его в строку и наоборот проще простого. А еще лучше создать свой класс с перегруженными операциями +, - и прочие (см. Лафоре).
0
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
16.12.2013, 10:47  [ТС]
Ilot, По условию задачи нельзя ничего использовать кроме циклов и условных операций.
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2223 / 1425 / 420
Регистрация: 16.05.2013
Сообщений: 3,642
Записей в блоге: 6
16.12.2013, 10:54
На самом то деле никто не мешает вам использовать для хранения числа массив. Алгоритм от этого ничуть не изменится.
0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
16.12.2013, 10:57
Цитата Сообщение от NikiKoyot Посмотреть сообщение
MicM,единственное число палиндром до 121, которое в преобразовании её в квадрат дает тоже палиндром, это 11->121
1^2=1
2^2=4
3^2=9
22^2=484
101^2=10201
111^2=12321
121^2=14641
Как видишь - палиндромы.
Цитата Сообщение от NikiKoyot Посмотреть сообщение
Составить программу поисков всех чисел палиндромов до n(n вводится с клавиатуры), которые при возведение в квадрат также дает палиндром.(Без массивов и функций)
Её я и написал
0
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
16.12.2013, 11:13  [ТС]
Ilot, Проблема в том, что массивы мы еще не изучали и по этой причине я не могу больше ничего кроме циклов и условий использовать.

Добавлено через 13 минут
MicM, Ой, извините, что-то я тупанул.Подумал, что нужно было уже палиндром в квадрате выводить.
Но все таки, не подскажите в чем моя(в моем коде) ошибка?(В моем коде искало только числа палиндромы до n)
0
 Аватар для MicM
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
16.12.2013, 11:21
Надо каждый раз переменную p обнулять, иначе в p будут записываться значения поверх старых
После цикла while добавьте: p = 0;
1
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
16.12.2013, 11:25  [ТС]
Цитата Сообщение от MicM Посмотреть сообщение
Надо каждый раз переменную p обнулять, иначе в p будут записываться значения поверх старых
После цикла while добавьте: p = 0;
Огромное спасибо!
0
 Аватар для NikiKoyot
2 / 2 / 0
Регистрация: 08.12.2013
Сообщений: 34
16.12.2013, 11:43  [ТС]
MicM, вот моя версия кода:
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
    unsigned long int n, p = 0, o, v, i = 1,m,l;
    cout << "Введите число" << endl;
    cin >> n;
    for ( ;i <= n;i++){
        o = i;
        v = i;
        while (o > 0){
            p = p * 10 + o % 10;
            o = o / 10;
            if (v == p)
            {   
                p = 0;
                m = i*i;
                o = m;
                            
                while (o > 0)
                {
                    p = p * 10 + o % 10;
                    o = o / 10;
                    if (m == p){ cout << i << endl; }
                }
                    
                }
            }
        p = 0;
        }
        
 
    return 0;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2013, 11:43
Помогаю со студенческими работами здесь

Нужно найти ошибку {
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { int a, p; int S, Sr, n; p =...

Нужно найти ошибку
Мой код #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; double ugol(int a, int n, double s) { s = (n*a*a) / (4 *...

Нужно найти ошибку
10 строка: #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;cstdlib&gt; const double PI=22/7; void main () { double r,s,l; ...

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

Нужно найти ошибку
Помогите найти ошибку, не запускается( Тексты программ переписывайте в сообщение!


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru