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

Дано вещественное число в котором все цифры различны

25.06.2012, 00:41. Показов 1446. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
дано вещественное число в котором все цифры различны.определить порядковый номер его первой максимальной цифры
1)от конца числа
2)от начала числа
помогите ,пожалуйста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.06.2012, 00:41
Ответы с готовыми решениями:

Дано трехзначное число, в котором все числа различны. Получить 6 чисел, образованных при перестановке числа
Добрый вечер! Помогите пожалуйста написать задачу на языке С++.. Н Цель: Дано трехзначное число, в котором все числа различны....

Дано натуральное число, в котором все цифры различны. Определить порядковый номер его максимальной цифры
Дано натуральное число, в котором все цифры различны. Определить порядковый номер его максимальной цифры, считая номера от начала числа с...

Дано натуральное число, в котором все цифры различны. Определить:
порядковый номер его максимальной цифры, считая номера: от конца числа; от начала числа;

6
 Аватар для zitxbit
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
25.06.2012, 11:57
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <memory.h>
 
#define _size 32
 
int main()
{
    int N = 235412353; int q = 0; 
    printf("N = %d ",N);
    int* digits = new int[_size]; 
    for (int q = 0; N > 0; N/=10)
        digits[q++] = N % 10;
 
    int d = _size-1;
    while (digits[d] < 0) d--;
 
    int max_i = d;
    for (int i = d-1; i >= 0; i--)
        max_i = (digits[i] > digits[max_i]) ? i : max_i;
 
    printf("\'%d\' pos = %d ",digits[max_i],max_i+1);
    
    int max_s = 0;
    for (int s = 0; s <= d; s++)
        max_s = (digits[s] > digits[max_s]) ? s : max_s;
 
    printf("\'%d\' pos = %d\n",digits[max_s],max_s+1);
 
    _getch();
 
    return 0;
}
http://liveworkspace.org/code/... 932b7108fc
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.06.2012, 14:50
Цитата Сообщение от Михаил121212 Посмотреть сообщение
дано вещественное число в котором все цифры различны.определить порядковый номер его первой максимальной цифры
1)от конца числа
2)от начала числа
помогите ,пожалуйста
Вариант 1, работаем со строковым представлением числа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
int main()
{
    //Ïðåäïîëàãàåì ÷òî ìàêñèìàëüíà 1-àÿ öèôðà ÷èñëà
    int maxPos = 0;
    char str[1024] = {0};
    cout<<"Enter double : ";
    cin.getline(str,1023);
    for(int i = 0; str[i] != '\0'; i++)
    {
        if(isdigit(str[i]))
        if(str[maxPos] < str[i])
            maxPos = i;
    }
    cout<<"Max digit in number : "<<str[maxPos]<<endl;
    cout<<"Index of max digit from the begin : "<<maxPos<<endl;
    cout<<"Index of max digit from the end   : "<<i - maxPos<<endl;
    system("pause");
    return 0;
}
Миниатюры
Дано вещественное число в котором все цифры различны  
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.06.2012, 17:12
Вариант 2, работаем именно с вещественным числом
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
#include <cmath>
#include <iostream>
using namespace std;
 
//Ôóíêöèÿ âîçâðàùàåò ìàññèâ ðàçðÿäîâ ÷èñëà ipart
//Âîçâðàùàåìîå çíà÷åíèå - ìàññèâ ðàçðÿäîâ 
//nDigits áóäåò ñîäåðæàòü ÷èñëî ðàçðÿäîâ
int * splitIntPartInDigits(int ipart, int &nDigits);
//Ôóíêöèÿ âîçâðàùàåò ìàññèâ ðàçðÿäîâ ÷èñëà fpart
//fpart - (äðîáíàÿ)äåñÿòè÷íàÿ ÷àñòü âåùåñòâåííîãî ÷èñëà
//Âîçâðàùàåìîå çíà÷åíèå - ìàññèâ ðàçðÿäîâ 
//nDigits áóäåò ñîäåðæàòü ÷èñëî ðàçðÿäîâ
int * splitFractPartInDigits(double fpart, int &nDigits);
//Ôóíêöèÿ âîçâðàùàåò èíäåêñ ìàñ ýëåìåíòà â ìàññèâå arr
int getMaxDigInArr(int * arr, int n);
 
int main()
{
    //Ïðåäïîëàãàåì ÷òî ìàêñèìàëüíà 1-àÿ öèôðà ÷èñëà
    double value;
    double ipart, fpart;
    cout<<"Enter double : ";cin>>value;
    int nIpart = 0;//×èñëî öèôð â öåëîé ÷àñòè
    int nFpart = 0;//×èñëî öèôð â äðîáíîé ÷àñòè
    fpart = modf(value,&ipart);//Ðàçáèâàåì ÷èñëî íà öåëóþ è äðîáíóþ ÷àñòè
    int * iArr = splitIntPartInDigits  (ipart, nIpart);
    int * fArr = splitFractPartInDigits(fpart, nFpart);
    
    int maxPos = getMaxDigInArr(iArr, nIpart);
    int arrPos = getMaxDigInArr(fArr, nFpart);
    int maxNum = iArr[maxPos];
    if(maxNum < fArr[arrPos])
    {
        maxNum = fArr[arrPos];
        maxPos = nIpart + arrPos;
    }
    cout<<"Max digit in number : "<<maxNum<<endl;
    cout<<"Index of max digit from the begin : "<<maxPos<<endl;
    cout<<"Index of max digit from the end   : "<<nIpart + nFpart - maxPos<<endl;
    system("pause");
    return 0;
}
 
int * splitIntPartInDigits(int ipart, int &nDigits)
{
    int bufer = ipart;
    nDigits = 1;
    //Ïîäñ÷¸ò ðàçðÿäîâ ÷èñëà
    while(0 < (bufer = bufer / 10))
        nDigits++;
    //Âûäåëåíèå ïàìÿòè ïîä ìàññèâ ñ ðàçðÿäàìè
    int * iArr = new int[nDigits];
    for(nDigits = 0; 0 < ipart; nDigits++)
    {
        iArr[nDigits] = ipart % 10;
        ipart = ipart / 10;
    }
    return iArr;
}
 
int * splitFractPartInDigits(double fpart, int &nDigits)
{
    double bufer = fpart;
    double ipart = 0;
    nDigits = 1;
    //Ïîäñ÷¸ò ðàçðÿäîâ ïîñëå çàïÿòîé
    while((bufer = modf(bufer*10,&ipart)))
        nDigits= nDigits + 1;
    //Âûäåëåíèå ïàìÿòè ïîä ìàññèâ ñ ðàçðÿäàìè
    int * fArr = new int[nDigits];
    bufer = fpart;
    for(nDigits = 0; (bufer = modf(bufer*10,&ipart)); nDigits++)
        fArr[nDigits] = ipart;
    return fArr;
}
 
int getMaxDigInArr(int * arr, int n)
{
    int imax = 0;//Ïîëàãàåì ÷òî 1-é ºëåìåíò èìååò ìàêñ çíà÷åíèå
    for(int i = 1; i < n; i++)
    {
        if(arr[imax] < arr[i])
            imax = i;
    }
    return imax;
}
Миниатюры
Дано вещественное число в котором все цифры различны  
0
25.06.2012, 17:17

Не по теме:

Вариант 2 мне нравится конечно больше, однако он даёт не совсем приемлимые результате в плане позиции числа от конца, дело в том что большее число десятичных разрядов числа после запятой обусловлено машинным представлением самого вещественного числа, поясню
допустим есть 0,5086044
Мы проделываем следующий трюк 5,086044 и затем отбрасываем 5-ку казалось бы отлично всё должно получатсья, рано или поздно число превратиться в ноль, но в машинном представлении 0,5086044 будет скажем 0,50860440000001 (т.е фактически после 10-го 12-го разрядов будет накапливаться погрешность представления числа с плавающей точкой). Надеюсь я доступно изложил этот омент

0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
25.06.2012, 17:29
Если интересно с STL:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
    std::string str;
    std::cin>> str;
    auto max = std::max_element(str.begin(), str.end());
    std::cout<< *max<< " in positioan at "<< std::distance(str.begin(), max) + 1<< " from begin and "
             << std::distance(max, str.end())<< " from the end.";
    return 0;
}
http://liveworkspace.org/code/... 6181150057

Добавлено через 6 минут
-=ЮрА=-, а если загнать в std::istringstream с std::fixed и std::setprecision? Мб это решит проблему.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.06.2012, 21:35
MrGluck, я хотел показать именно безстроковое решение задачи,со строкой вариант1 он ничем не хуже варианта со стрингпотоком.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.06.2012, 21:35
Помогаю со студенческими работами здесь

Дано натуральное число, в котором все цифры различны. Определить порядковый номер его максимальной цифры, считая номера:
Дано натуральное число, в котором все цифры различны. Определить порядковый номер его максимальной цифры, считая номера: от конца числа; от...

Дано натуральное число, в котором все цифры различны. Определить, какая цифра расположена в нем левее: максимальная или минимальная
помогите решить эту задачку.на вижуал бейсик 2008. Дано натуральное число, в котором все цифры различны. Определить, какая цифра...

Дано число.Проверить все ли цифры в нем различны
Дано число.Проверить все ли цифры в нем различны

Компьютер генерирует целое четырехзначное число, в котором все цифры различны
1) Условия игры: компьютер генерирует целое четырехзначное число, в котором все цифры различны. Играющий пытается угадать это число,...

Дано натуральное число n. Проверить, все ли цифры числа различны
Дано натуральное число n. Проверить, будут ли все цифры числа различными.


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

Или воспользуйтесь поиском по форуму:
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