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

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

11.04.2012, 17:02. Показов 1126. Ответов 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
3055 / 1455 / 264
Регистрация: 16.03.2008
Сообщений: 6,490
Записей в блоге: 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
3055 / 1455 / 264
Регистрация: 16.03.2008
Сообщений: 6,490
Записей в блоге: 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
3055 / 1455 / 264
Регистрация: 16.03.2008
Сообщений: 6,490
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru