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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.73
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
#1

Задача "Натуральный ряд чисел" - C++

26.07.2013, 16:54. Просмотров 3561. Ответов 70
Метки нет (Все метки)

(Время: 1 сек. Память: 16 Мб)
Натуральные числа записаны в строку без каких-либо разделителей. Начало этой строки имеет вид 123456789101112131415161718192021… .

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

Входные данные

Входной файл INPUT.TXT содержит заданное число N (1 <= N <= 104).

Выходные данные

Выходной файл OUTPUT.TXT должен содержать одно число – позицию, начиная с которой в строке записано первое вхождение заданного числа. Нумерация позиций начинается с единицы.

Предложите свои идеи по решению задачи.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2013, 16:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача "Натуральный ряд чисел" (C++):

Даны три слова - "мама", "мыла", "раму". Задача - напечатать всевозможные варианты построения слов - C++
Я записал код, однако эту часть надо автоматизировать, поможете? КОД: } #include &lt;iostream&gt; using namespace std; int main()...

Необработанное исключение в "0x76f015de" в "контрольная 1 задача 2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x334e2c64" - C++
доброго времени суток. Необработанное исключение в &quot;0x76f015de&quot; в &quot;контрольная 1 задача 2.exe&quot;: 0xC0000005: Нарушение прав доступа при...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Существует ряд чисел. Вместо "?" вставить символы - C++
Пожалуйста помогите дали задачу по циклам решить не могу. вот условие : существует ряд чисел ((((1?2)?3)?4)?5)?6 который равен 35 ; ...

Создать класс комплексных чисел и ввести операции: "+", "-", "*", "/". - C++
пожалуйста-помогите написатьпрограмму!!! сижу на экзамене!!! вот само задание: создать класс комплексных чисел и ввести операции: &quot;+&quot;,...

Вывести на экран с точностью два знака число "е" (натуральный логарифм) - C++
Всем привет! Нужно написать программку на вывод на экран с точностью два знака число &quot;е&quot; (натуральный логарифм), но не знаю с чего начать и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
26.07.2013, 17:00 #2
1) Сгенерируй строку со всей последовательностью этих чисел.
2) Найди нужное число в этой строке.
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
26.07.2013, 17:33  [ТС] #3
Цитата Сообщение от Dani Посмотреть сообщение
Сгенерируй строку со всей последовательностью этих чисел.
Сколько нужно генерировать чисел и приблизительно какой нужен размер массива?
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
26.07.2013, 17:41 #4
Добавляй лучше в string последовательные числа, пока длина не станет больше 10^4 (как в условии - максимальное кол-во цифр). Найдешь, какое-то число, вот до него и добавляй, либо подсчитай на листике до какого числа нужно добавлять.
Вот ты узнал число, до которого нужно добавлять последовательные числа, чтобы длина получилась больше либо равна 10^4. Потом просто генеришь хоть куда последовательность.
fan_stud
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 5
26.07.2013, 18:06 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <fstream>
#include <string>
#include <iostream>
 
using namespace std;
 
int main()
{
    string str;
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    fin >> str;
    char value('8');
    size_t first_value_in_str(str.find_first_of(value) + 1);
    fout << first_value_in_str;
    return 0;
}
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
26.07.2013, 18:27  [ТС] #6
fan_stud можете объяснить код?
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
26.07.2013, 22:30 #7
Цитата Сообщение от Dani Посмотреть сообщение
Сгенерируй строку со всей последовательностью этих чисел.
Цитата Сообщение от ALEXKIRNAS Посмотреть сообщение
Сколько нужно генерировать чисел и приблизительно какой нужен размер массива?
9 + 2*90 + 3*900 + 4

Добавлено через 1 минуту
Цитата Сообщение от ALEXKIRNAS Посмотреть сообщение
можете объяснить код?
ищется подстрока в строке, осталось сгенирировать саму строку
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
26.07.2013, 22:32 #8
ALEXKIRNAS, fan_stud не понял условия задачи по ходу.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
27.07.2013, 12:31 #9
fan_stud, ерунда какая-то. Во-первых, в файле INPUT.TXT этой строки нету, а ты решил просто взять и сделать "fin >> str;"
Во-вторых, эту задачу не надо решать в лоб.
Число N четырёхзначное.
Так надо проанализировать, в каких случаях это число может стать подстрокой.
Ну, например: если цифры идут по порядку - число из первого десятка. (6789) =6,7,8,9
далее проверять случаи, когда это два двузначных числа (1011) = 10, 11
одно двузначное и начальные цифры от следующего за и перед ним (6373) =36, 37,38
аналогично - трёхзначные (5645) = 564, 565
аналогично - соседние четырёхзначные (9992)= 1999, 2000
Ну и, наконец, это самостоятеельное четырёхзначное число 1991
(возможно пропустил какой-то случай, например на границе двузначных и трёхзначных и.т.п.)

Вот и построй условия для каждого из этих случаев. А потом, найди, какой из них раньше встречается.
nonedark2008
904 / 643 / 131
Регистрация: 28.07.2012
Сообщений: 1,737
27.07.2013, 13:31 #10
Kuzia domovenok, число N может быть и однозначным и двухзначным и трехзначным. Слишком много условий выходит. А так подход верный, только слишком много вариантов нужно разобрать, можно что-то и упустить.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.07.2013, 15:27 #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Так надо проанализировать, в каких случаях это число может стать подстрокой
По-моему, в любом случае, при достаточной длине исходной строки. Вот об этом ничего не сказано.

Добавлено через 6 минут
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
#include <cstdlib>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
 
int main()
{    
    string str;
    string number = "28";
    string temp;
    stringstream s;
    int i = 1;
    do
    {
      s << i;
      temp = s.str();
      s.str("");
      str += temp;
      cout << str << endl;
      ++i;
    } while (temp != number);
    int ind = str.size() - temp.size() + 1;
    cout << ind << endl;
 
    system("pause");
    return(0);
}
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
27.07.2013, 15:36 #12
Цитата Сообщение от alsav22 Посмотреть сообщение
По-моему, в любом случае, при достаточной длине исходной строки.
Суть не в том, что появится число в строке или нет! Ясно, что появится.
А суть в том, что рассматривать надо не всю строку, а генерировать те подстроки, в которых может появиться это число!
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.07.2013, 16:15 #13
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А суть в том, что рассматривать надо не всю строку
А какая она вся? Она, вообще, задаётся как-то?

Добавлено через 6 минут
Как вариант, вывести формулу длины строки с заданной последовательностью, по заданному числу. Например, число 28, длина строки, с заданной последавательностью, 47. Дальше просто.
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
27.07.2013, 17:26 #14
вот что получилось
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
#include <iostream>
#include <fstream>
#include <cmath>
 
int main()
{
    std::ifstream file("input.txt");
    std::ofstream out("output.txt");
    int x; file >> x;
    int rank = std::log10(x) + 1;
    int result = 1;
    switch (rank) {
        case 1:
            result = x;
            break;
        case 2:
            result = 9 + 2 * (x - 10) + 1;
            break;
        case 3:
            result = 9 + 180 + 3 * (x - 100) + 1;
            break;
        case 4:
            result = 9 + 180 + 2700 + 4 * (x - 1000) + 1;
            break;
        case 5:
            result = 9 + 180 + 2700 + 36000 + 1 - 5;
            break;
    }
    out << result;
    return 0;
}
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.07.2013, 17:34 #15
Цитата Сообщение от Olivеr Посмотреть сообщение
вот что получилось
не все так просто, протестируйте, например, на 101
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2013, 17:34
Привет! Вот еще темы с ответами:

В этой программе создается "матрица" из секунд.Как мне первый ряд чисел (секунд) присвоить масиву? - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...


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

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

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