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

Идущие подряд числа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сложение и умножение матриц http://www.cyberforum.ru/cpp-beginners/thread223920.html
Даны матрицы A,B,C порядка n. Найти матрицу D=(A+B)C
C++ Пожалуйста найдите ошибку На форуме нашел такую задачу: Гражданин 1 марта открыл счет в банке, вложив 1000 рублей. Через каждый месяц размер вклада увеличивается на 2 % от имеющейся суммы. Определить за какой месяц величина ежемесячного увеличения вклада превысит 30 рублей. Решил ее обобщить и сделать так чтобы можно было указать сумму вклада, процент и предел. Задача довольна простая, но я в этом деле новичок. У... http://www.cyberforum.ru/cpp-beginners/thread223916.html
C++ Написать функцию, которая в заданном массиве определяет количество элементов, находящихся в диапазоне двух введённых чисел.
помогите пожалуйста решить задачки:): 1)Написать функцию, которая в заданном массиве определяет количество элементов, находящихся в диапазоне двух введённых чисел. 2)Написать функцию для поиска максимального элемента, встречающегося в заданной матрице более одного раза. Заранее спасибо)))
C++ Компановка модулей
Здравствуйте. Разделил программу на модули. При связывании компиль пишет: In function `main': undefined reference to `sumSequece(std::ostream&, std::istream&)' ld returned 1 exit status Можете подсказать как правильно скомпановать модули? я пользую DevC++ 4.9.9.2 // SeparateModule - äåìîíñòðèðóåò, êàê ìîæíî ðàçáèòü // ïðîãðàììó íà íåñêîëüêî îòäåëüíûõ ìîäóëåé....
C++ Насчет класса вектор http://www.cyberforum.ru/cpp-beginners/thread223898.html
Помогите в состовлении: создать класс вектор. Члены данные класса - 3 прямоугольные декартовые координаты. Члены функции класса - конструктор,метод вывода вектора. Перегруженные операторы класса - сложение (+),скалярное (%) и векторное (*)произведение векторов, вычесление угла (/) между двумя векторами. Обьекты создаваемые в основной процедуре - a={Ax,Ay,Az};b={Bx,By,Bz} Вычеслить...
C++ Решить систему алгебраических уравнений методом Гаусса Решить систему алгебраических уравнений методом Гаусса: 6X1-X2-X3=11,33, -X1+6X2-X3=32, -X1-X2+6X3=42; подробнее

Показать сообщение отдельно
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
05.01.2011, 13:31  [ТС]     Идущие подряд числа
Задача странная, но сложная.
Покапавшись на форуме, нашел такую задачу, можете объяснить метод, как Вы анализировали число-результат (34248767247882463) на предмет повторяющихся цифр-пар (11, 22...) в своем коде? Вот вывела программа (ниже) в конце число, что дальше?

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <stdio.h>
#include <stdlib.h>
 
/* длинная арифметика 3^100
   равно 515377520732011331036461129765621272702107522001 */
int main(void) /* C89 ANSI */
{
    int n[100] = { 1 };
    /* число храним в достаточно длинном массиве
       первый элемент станет основанием,
       с которого число будет расти
       в сторону старших разрядов */
    
    int base = 10;
    /* полученное число будет в десятичной системе
       можно устанавливать степени десятки
       100, 1000, 10000 и так далее,
       это повысит скорость вычисления,
       результат будет выглядет одинаково;
       нужно учесть размер одного числа в массиве
       если int, то не более 10000 */
    
    int i, j, flag;
    /* i - внешние счётчики
       j - внутренние счётчики первого уровня
       flag - флажок, который при выводе числа
              помогает пропустить начальные нули в числе
              начальные нули - это разряды, до которых
              число не доросло */
    
    for (i = 0; i < 100; i++) {
        
        for (j = 0; j < 100; j++)
            n[j] *= 3;
        /* умножаем всё число на три,
           как будто в столбик на бумаге,
           для каждого разряда */
            
        for (j = 0; j < 100-1; j++)
            if (n[j] >= base) {
                n[j+1] += n[j] / base;
                n[j] %= base;
            }
        /* для всех разрядов, исключая самый старший,
           выполнить проверку на переполнение;
           
           если переполнение в каком-то из разрядов есть,
           то переполнившую часть перенести
           в соседний, более старший, разряд,
           а в самом разряде оставить остаток,
           который не переполняет разряд;
           
           при переносе переполнившей части
           в более старший соседний разряд,
           она прибавляется к тому, что уже там хранится */
        
    }
    /* умножает число на три сто раз,
       проводя проверки на переполнение его разрядов
       и переносы, в случаях переполнения */
    
    flag = 1;
    /* флаг пропуска начальных нулей
       устанавливается в положение "пропустить" */
    
    for (i = 99; i >= 0; i--) {
        
        if (flag == 1)
            if (n[i] == 0)
                continue;
            else
                flag = 0;
        /* если флаг пропуска начальных нулей
           установлен в положение "пропустить",
           то проверить не началось ли число;
           
           если число началось,
           то есть встречен первый ненулевой разряд,
           то переключить флаг в положение "вывести";
           если число не началось,
           сразу перейти к следующему разряду,
           не выводя ничего */
          
        printf("%d", n[i]);
        /* выводит очередной разряд числа,
           начиная слева */
    }
    /* выводит получившееся число слева направо,
       поразрядно, начиная с первого ненулевого разряда */
    
    putchar('\n');
    /* после числа переводит строку */
    
    exit(EXIT_SUCCESS);
    /* возвращает статус успешного завершения
       в операционную среду */
}
 
Текущее время: 03:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru