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

Из целого числа получить новое путем удаления из пары соседних цифр большей - C++

Восстановить пароль Регистрация
 
Lers
12 / 12 / 3
Регистрация: 27.05.2012
Сообщений: 202
23.10.2012, 16:24     Из целого числа получить новое путем удаления из пары соседних цифр большей #1
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
#include <values.h>
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main()
{
unsigned long a,b,r;
int max,c,k,c1,m;
c=0;
max=c;
m=1;
clrscr();
printf("Vvodi 4iclo");
scanf("%lu",&a);
r=a;
b=0;
while (r!=0)
{
       c=r%10;
       k++;
       m=m*pow(10,k);
       c1=r%m;
       if (c1>=max)
     {
       max=c1;
       b+=max*pow(10,k);
     }
r/=10;
}
printf("\n 4uclo = %lu",b);
getch();
}
Из целого числа с четным количеством цифр получить новое путем удаления из пары соседних цифр большей (675634 -> 653).
P.S. подскажите что не так. Отказывается работать моя программа.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2012, 16:24     Из целого числа получить новое путем удаления из пары соседних цифр большей
Посмотрите здесь:

Дано действитёльное число х. Получить целую часть *) числа х; затем — число х, округленное до ближайшего целого; затем — число х без дробных цифр. C++
C++ Для каждого числа последовательности вывести новое число, которое получится после записи цифр числа в обратном порядке
Вывести максимальный с каждой пары двух соседних елементов масива.Здесь выводит только с первой пары! C++
C++ Получить новое число M, которое образуется путем исключения средней цифры исходного числа
C++ Составить и проверить функцию, которая переставляет цифры заданного целого числа N1 в обратном порядке и получает новое число N2
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pure
 Аватар для Pure
228 / 49 / 2
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 7
23.10.2012, 16:56     Из целого числа получить новое путем удаления из пары соседних цифр большей #2
лови ВАРИАНТ накидал. Чем проще - тем лучше.
Рекурсию можно и в цикл переделать, но мне так понравилось просто
Lers
12 / 12 / 3
Регистрация: 27.05.2012
Сообщений: 202
23.10.2012, 19:42  [ТС]     Из целого числа получить новое путем удаления из пары соседних цифр большей #3
Пока ещё сложноват такой код, но спасибо, буду разбираться

Добавлено через 31 минуту
Подскажите что такое recalculate

Добавлено через 21 минуту
не могу разобраться и переписать его под Borland C++, так как универе требуют что писали на нем((
Если кто ещё помнит Borland C++, помогите пожалуйста.
P.S. Заранее благодарю.
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>
 
 
unsigned int recalculate(unsigned int num)
{
 
unsigned int temp = num;
 
if(num==0) return 0;
 
unsigned int ost = temp%10;
temp/=10;
unsigned int ost2 = temp%10;
temp/=10;
 
return  recalculate(temp)*10+((ost2>ost)?ost:ost2);
}
 
 
 
 
int main()
{
 
//std::cout<<"Введите нумерок\n";
//std::cin>>num;
 
unsigned int num = 675634;
 
std::cout<<recalculate(num);
}
Pure
 Аватар для Pure
228 / 49 / 2
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 7
23.10.2012, 19:47     Из целого числа получить новое путем удаления из пары соседних цифр большей #4
Lers, это название моей доморощенной функции. посмотри ее определение как раз над функцией main находится. Функция рекурсивна,т.е. внутри себя она вызывает саму себя.Это подход альтернативный циклам

Добавлено через 3 минуты
Lers, а что не работает в борланде? какие то ошибки есть? По идее вообще к среде не привязана функция. Должна отрабатывать везде.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.10.2012, 19:55     Из целого числа получить новое путем удаления из пары соседних цифр большей #5
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
#include<iostream>
 
unsigned long Del(unsigned long a)
{
   long b = 0, d1, d2, p = 1;
   if (a < 10)
      return a;
   do
   {
       d2 = a % 10;
       a /= 10;
       d1 = a % 10;
       a /= 10;
       b +=  p * (d1 < d2 ? d1 : d2);
       p *= 10;
   }while(a >= 10);
   return a ? (b + a*p) : b;
}
 
int main()
{
   std::cout << Del(123456);
   return 0;
}
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
23.10.2012, 20:45     Из целого числа получить новое путем удаления из пары соседних цифр большей #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
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long N;
cin >> N;
    
    int k=0,e=1,a,b;
    while (N)
        {
            a=N%10;
            N/=10;
            b=N%10;
            N/=10;
            k+=max(a,b)*e;
            e*=10;
        }
 
        cout << k << endl;
        system ("pause");
 
    return 0;
 }
Добавлено через 6 минут
а еще лучше так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long N;
cin >> N;
    
    int k=0,e=1;
    while (N)
    {
            k+=max(N%10,N/10%10)*e;
            e*=10;
            N/=100;
    }
 
        cout << k << endl;
        system ("pause");
 
    return 0;
 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2012, 21:46     Из целого числа получить новое путем удаления из пары соседних цифр большей
Еще ссылки по теме:

Алгоритм удаления цифр из числа C++
Получить массив путем удаления элементов из другого C++
Найти сколько различных трехзначных чисел можно получить из заданного числа n путем вычеркивания цифр C++

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

Или воспользуйтесь поиском по форуму:
Lers
12 / 12 / 3
Регистрация: 27.05.2012
Сообщений: 202
23.10.2012, 21:46  [ТС]     Из целого числа получить новое путем удаления из пары соседних цифр большей #7
Всем огромное спасибо, так пока что более привычно!
Yandex
Объявления
23.10.2012, 21:46     Из целого числа получить новое путем удаления из пары соседних цифр большей
Ответ Создать тему
Опции темы

Текущее время: 17:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru