Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 36

Как дорешать задачу?

11.04.2012, 17:02. Показов 1061. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
«Найди серединку»
Вводятся натуральные числа - А и В (А<В), которые не превышают 100000000. Найти число Х – середину ряда, состоящего из всех цифр из чисел от А до В записанных подряд, для этого нужно: записать подряд все числа от А до В (включительно), найти в полученном ряду цифру или число из двух цифр (это зависит от четности или нечетности количества цифр в ряду), стоящие ровно посредине ряда. (Пример: для А=98, В=103, в ряду от 98 до 103 будет записано 16 цифр, средними (8-й и 9-й) цифрами будут 10 ).
Ввод: число К.
Вывод: ответ.
Пример:
Ввод: 98

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

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
//---------------------------------------------------------------------------
 
#pragma hdrstop
 
#include <tchar.h>
#include <math.h>
#include <windows.h>
#include <iostream.h>
//---------------------------------------------------------------------------
 
int Raz(int Chislo2){//колличество цифр в числе
int k=0;
        while(Chislo2!=0){
            Chislo2=Chislo2/10;
            k++;
        }
return k;
}
int Kol(int Chislo){//количество цифр до введённого
 
 int kol=0;
 int Chislo1=Chislo;
 int k = Raz(Chislo1);
 
 int s = 1;
 for(int i=1;i<k;i++)
 {
   kol+=9*s*i;
   s*=10;
 }
 Chislo1 = Chislo-s+1;
 kol+=Chislo1*k;
    // 9899100101102103104
     //9+89*2 = 187
     //9+90*2+3*4 = 201
     //100101102103
 return kol;
}
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
SetConsoleOutputCP(1251);
int a,b,SearchChislo;
cin>>a;
cin>>b;
    if(a==b || a>b){
        cout<<"Не правильный ввод (Долно быть a,b>0; a<b; a!=b)!!!\n";
    }else{
int rez = (Kol(b)-Kol(a))+Raz(a);
        int S = Raz(a);
        for(long i = a;i<b;i++){
            S = S + Raz(i);             \
            if(S>=rez/2){                | 
             SearchChislo = i+1;       | поиск нужного числа.
             break; }                     /
        }
            if(rez%2 == 0){
        cout<<"чётное\n";
        cout<<"Search = "<<SearchChislo<<endl;
        cout<<"S = "<<S<<endl;
    }else{
        cout<<"не чётное\n";
        cout<<"Search = "<<SearchChislo<<endl;
        cout<<"S = "<<S<<endl;
    }
cout<<rez<<endl;
cout<<Kol(a)<<endl;
cout<<Kol(b)<<endl;
}
    system("pause");
    return 0;
}
//---------------------------------------------------------------------------
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2012, 17:02
Ответы с готовыми решениями:

как изобразить декартову систему координат ?немогу дорешать задачку
Задана окружность, с помощью координат центра и радиуса. Вывести в декартовой системе координат (x и y от -1000 до 1000) как задать...

указатели с++, дорешать)
Пожалуйста, помогите дорешать задачку: SuperSum функция, найденная из: • SuperSum(0 , n) = n, для положительных n. • SuperSum(k ,...

Задачка на динамический список. Помогите дорешать
Создать список, заполнив его n числами вида: 5, 10, 15, 20, 25, ... С помощью функции вывести список на экран. Вставить значение x,...

6
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,447
Записей в блоге: 2
11.04.2012, 17:39
Примерный алгоритм:
1. создаем массив char* line;
2. В него заносим цифры от А до Б
т.е. для вашего пример line[0]='9'; line[1]='8'; ..... line[n-2]='1';line[n-1]='0';line[n]-'3';
3. Работаем с индексами и размерностями. Делим размер полчившегося массиыва пополам. И в зависимости от четности / нечетности выдаем два или один элемент по индексу.
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 36
12.04.2012, 09:08  [ТС]
А мне нужно чтобы без массивов как то и я из-за этого и незнаю как(
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,447
Записей в блоге: 2
12.04.2012, 09:32
хм.
вчера чего то не подумал - с массивом тоже будет не красиво: памяти сожрет если задать 1 и 100000000.

А так может даст толчок:
1.
Цитата Сообщение от Mcray Посмотреть сообщение
я нахожу число в котором и будет искомая моя серединка ,
их может быть два
2.
Выделяем каждую цифру из числа
C
1
2
    int i = 153;
    printf("%d %d %d", (i % 1000 ) / 100, (i % 100 ) / 10, (i % 10 ) / 1);
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 36
12.04.2012, 10:13  [ТС]
Да их может быть 2 если числа одной размерности и четные.
И вот эта середина по числам качет когда разные варианты и не могу определить закономерность или как там можно сделать вообще нет идей(.
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,447
Записей в блоге: 2
12.04.2012, 11:10
Тогда так. Начинаем с нулевых значений:

1. Добавляем очередное число (от А до Б включительно) (пример: 96)
1.1. Узнаем его длинну (2). Прибавляем к общей (0). (= 2)
1.2 Делим общую длинну пополам и выясняем что надо хранить два числа.
1.3 Делим длинну слова пополам и выясняем на сколько сдвигаются индексы (положение нужной цифры в сохранном числе)
1.4. Если оба индекса больше длинны сохранного ранее числа то увеличиваем сохранное число на 1 (если это первая итерация просто сохранеям А) и пересчитываем индексы
1.5. Запоминаем первое число содержащее искомые цифры(96)

И так повторяем для каждого числа.
После всего этого.
Берем по сохраненым индексам из сохраненного числа цифры. Если второй индекс больше длинны числа то к сохранному числу прибавляем единицу и берем из него первую цифру

Добавлено через 7 минут
Кстати, в общем то вам можно запоминать только первый индекс и первой число. А необходимость вывода второй цифры и ее расположение вычислять уже в самом конце:

C
1
2
3
4
5
6
если четное(общая длинна / 2) то 
      ++индекс;
      если индекс больше длинны сохраненого числа то
             ++сохраненое число
             индекс=1
      вывод цифры с индесом Индекс из Сохранного Числа
1
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 36
12.04.2012, 11:23  [ТС]
Честно сказать немогу понять как это использовать в коде (
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2012, 11:23
Помогаю со студенческими работами здесь

Вычислить функцию f(x), используя ее разложение в степенной ряд (дорешать)
Для х изменяющегося от a до b с шагом (b-a)/k, где (k=10), вычислить функцию f(x), используя ее разложение в степенной ряд в трех случаях: ...

наткнулся на сложную задачу из книги бьёрна страуструпа кто-то знает ответ на эту задачу - C++
задача из книги бьерна страуструпа.(та самая сложная задача) 6. Теперь измените тело цикла так. чтобы он считывал только по одному ...

как написать задачу в си
как написать задачу в си

Как выполнить задачу с++
Для данного вещественного x найти значение следующей функции f, принимающей вещественные значения -x, если x &lt;= 0, f...

Как решить задачу?
Вводим 8 городов, количество жителей, статус (мегаполис больше 25 тыс., город меньше 25 тыс., поселок городского типа до 5000). Вывести...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru