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

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

Войти
Регистрация
Восстановить пароль
 
Михаил121212
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 8
#1

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

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

дано вещественное число в котором все цифры различны.определить порядковый номер его первой максимальной цифры
1)от конца числа
2)от начала числа
помогите ,пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2012, 00:41     Дано вещественное число в котором все цифры различны
Посмотрите здесь:

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

Среди всех четырехзначных цифр определить число тех, у которых все цифры различны - C++
Среди всех четырехзначных цифр определить число тех, у которых все цифры различны.

Дано вещественное число B>0. Последовательность чисел образуется по правилу: a0=1, ai+1=ai2+1. Распечатать все числа ai такие , что ai<B - C++
Дано вещественное число B&gt;0. Последовательность чисел образуется по правилу: a0=1, ai+1=ai^2+1. Распечатать все числа ai такие , что...

Дано натуральное число n. Проверить будут ли все цифры числа разными - C++
Буду очень благодарен)

Дано трехзначное целое число N. Найти все цифры этого числа - C++
Дано трехзначное целое число N. Найти все цифры этого числа. (Помогите)

Дано вещественное число A и целое число N. Вывести A в степени N (код внутри) - C++
Дано вещественное число A и целое число N (N больше 0). Вывести A в степени N: AN =A•A•...•A (числа A перемножаются N раз). Использовать...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
25.06.2012, 11:57     Дано вещественное число в котором все цифры различны #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
#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/d7c4ef...8616932b7108fc
-=ЮрА=-
Заблокирован
Автор FAQ
25.06.2012, 14:50     Дано вещественное число в котором все цифры различны #3
Цитата Сообщение от Михаил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;
}
Миниатюры
Дано вещественное число в котором все цифры различны  
-=ЮрА=-
Заблокирован
Автор FAQ
25.06.2012, 17:12     Дано вещественное число в котором все цифры различны #4
Вариант 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;
}
Миниатюры
Дано вещественное число в котором все цифры различны  
-=ЮрА=-
25.06.2012, 17:17
  #5

Не по теме:

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

MrGluck
Модератор
Эксперт CЭксперт С++
7162 / 4328 / 631
Регистрация: 29.11.2010
Сообщений: 11,750
25.06.2012, 17:29     Дано вещественное число в котором все цифры различны #6
Если интересно с 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/d9f3fb...45316181150057

Добавлено через 6 минут
-=ЮрА=-, а если загнать в std::istringstream с std::fixed и std::setprecision? Мб это решит проблему.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2012, 21:35     Дано вещественное число в котором все цифры различны
Еще ссылки по теме:

Дано n-значное число longint. Заменить нулями все четные цифры в нём - C++
Дано n-значное число longint. Заменить нулями все четные цифры в нём и составить программу на С++.

Дано число. Отбросить в нем все цифры, стоящие левее самой правой единицы. - C++
вообщем такое задание, &quot;Дано число. Отбросить в нем все цифры, стоящие левее самой правой единицы.&quot; вроде легко, но я даже не знаю с чего...

Дано вещественное число а - C++
Дано вещественное число а. Для функции y=f(x), график которой приведен ниже вычислить f(а).

Дано вещественное число и натуральное число. Вычисления. - C++
Дано вещественное число x и натуральное число n. Вычислить: (x-2)(x-4)...(x-2n)/(x-1)(x-3)...(x-2n-1) ищу решение этой задачи. кто...


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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
25.06.2012, 21:35     Дано вещественное число в котором все цифры различны #7
MrGluck, я хотел показать именно безстроковое решение задачи,со строкой вариант1 он ничем не хуже варианта со стрингпотоком.
Yandex
Объявления
25.06.2012, 21:35     Дано вещественное число в котором все цифры различны
Ответ Создать тему
Опции темы

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