58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 850
1

Максимальные цифры

08.06.2021, 08:44. Показов 401. Ответов 10
Метки нет (Все метки)

Без использования массивов и всяких операторов break, continue нужно найти две максимальные цифры в числе. А если цифры одинаковы то вывести NO. Например для 634 вывод 6, 3. Для 222 вывод NO
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main()
{
    int n, m, max, max_2;
    cin>>n;
    max = max_2 = (n % 10);
    while(n)
    {
        m = n % 10;
        if (m > max)
        {
            max = m;
        }
        if()
        {
            
        }
        n = n / 10;
    }
 
    cout<<max<<" "<<max_2;
    return 0;
}
Я уже по всякому пробовал писать второе условие но так и не допер
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2021, 08:44
Ответы с готовыми решениями:

В строке найти максимальные цифры и их индексы
Просьба перевести с Pascal program Task_4_2; uses crt; var s,s1:String; ...

Замена последней цифры на значение наименьшей цифры в записи числа N
Ошибка в задании Условие:Дано натуральное число N. Получить новое число М, которое образуется из...

Даны цифры двух двузначных чисел. Получить цифры суммы
Даны цифры двух двузначных чисел, записываемых в виде а2а1 и b2 b1, где а1 и b1— число единиц, а2 и...

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

10
Just Do It!
3375 / 1841 / 618
Регистрация: 23.09.2014
Сообщений: 5,831
08.06.2021, 09:37 2
Цитата Сообщение от Senarist Посмотреть сообщение
Максимальные цифры
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
///----------------------------------------------------------------------------|
/// ...
///----------------------------------------------------------------------------:
#include <iostream>
 
///----------------------------------------------------------------------------|
/// Тест.
///----------------------------------------------------------------------------:
int main()
{
    int n, max = 0; std::cin >> n;
 
    for(int x = n; x; x /= 10)
    {   if (max < x % 10) max = x % 10;
    }
 
    std::cout << "max = " << max;
    return 0;
}
0
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 850
08.06.2021, 09:39  [ТС] 3
XLAT, это хорошо, а вторую максимальную?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
32420 / 17964 / 3763
Регистрация: 12.02.2012
Сообщений: 30,156
Записей в блоге: 5
08.06.2021, 09:49 4
Цитата Сообщение от Senarist Посмотреть сообщение
Без использования массивов и всяких операторов break, continue
- и даже без циклов!

Цитата Сообщение от Senarist Посмотреть сообщение
Например для 634 вывод 6, 3
- неужели? А не 6 4

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
#include <iostream>
#include <cmath>
 
using namespace std;
 
void max_2_digs(int n,int *maxd)
{
    int k;
    if (n==0) return;
    k=n%10;
    if (k>maxd[0])
    {
        maxd[1]=maxd[0];
        maxd[0]=k;
    }
    else
        if (k>=maxd[1]) maxd[1]=k;
    return max_2_digs(n/10,maxd);    
}
 
int main(int argc, const char * argv[])
{
    int md[2]={-1,-1};
    int k;
    cout << "k=";
    cin >> k;
    
    max_2_digs(k,md);
    
    if (md[0] != md[1])
       cout << md[0] << " " << md[1] << endl;
    else
       cout << "NO" << endl;
    
}
0
Just Do It!
3375 / 1841 / 618
Регистрация: 23.09.2014
Сообщений: 5,831
08.06.2021, 09:52 5
Цитата Сообщение от Senarist Посмотреть сообщение
а вторую максимальную?
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
///----------------------------------------------------------------------------|
/// ...
///----------------------------------------------------------------------------:
#include <iostream>
 
///----------------------------------------------------------------------------|
/// Тест.
///----------------------------------------------------------------------------:
int main()
{
    int n, max1 = 0,
           max2 = 0; std::cin >> n;
 
    for(int x = n; x; x /= 10)
    {   if (max1 < x % 10) max1 = x % 10;
    }
 
    for(int x = n; x; x /= 10)
    {   const int t = x % 10;
        if (max2 < t && t != max1) max2 = t;
    }
 
    std::cout <<   "max1 = " << max1
              << "\nmax2 = " << max2 << '\n';
    return 0;
}
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
32420 / 17964 / 3763
Регистрация: 12.02.2012
Сообщений: 30,156
Записей в блоге: 5
08.06.2021, 09:53 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
25
26
27
28
29
30
31
32
#include <iostream>
 
using namespace std;
 
void max_2_digs(int n,int *m1, int *m2)
{
    int k;
    if (n==0) return;
    k=n%10;
    if (k> *m1)
    {
        *m2=*m1;
        *m1=k;
    }
    else
        if (k>=*m2) *m2=k;
    return max_2_digs(n/10,m1,m2);    
}
 
int main(int argc, const char * argv[])
{
    int k,m1=-1,m2=-1;
    cout << "k=";
    cin >> k;
    
    max_2_digs(k,&m1,&m2);
    
    if (m1 != m2)
       cout << m1 << " " << m2 << endl;
    else
       cout << "NO" << endl;
}
1
Just Do It!
3375 / 1841 / 618
Регистрация: 23.09.2014
Сообщений: 5,831
08.06.2021, 10:05 7
Цитата Сообщение от Senarist Посмотреть сообщение
А если цифры одинаковы то вывести NO
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>
 
///----------------------------------------------------------------------------|
/// Тест.
///----------------------------------------------------------------------------:
int main()
{
    int n, max1 = 0,
           max2 = 0; std::cin >> n;
 
    for(int x = n; x; x /= 10)
    {   if(max1 < x % 10) max1 = x % 10;
    }
 
    int cnt = 0;
    for(int x = n; x; x /= 10)
    {   const int t = x % 10;
 
        if(max1 == t) ++cnt;
        if(max2  < t && t != max1) max2 = t;
    }
 
    if(1 < cnt) std::cout << "NO\n";
    else
    std::cout <<   "max1 = " << max1
              << "\nmax2 = " << max2 << '\n';
    return 0;
}
1
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 850
08.06.2021, 10:37  [ТС] 8
Цитата Сообщение от Catstail Посмотреть сообщение
- неужели? А не 6 4
Да, опечатка

Добавлено через 2 минуты
XLAT, 101 дает ответ NO

Добавлено через 1 минуту
Catstail, И ваш тоже)
0
703 / 525 / 301
Регистрация: 24.02.2017
Сообщений: 1,876
08.06.2021, 11:43 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
int n,s=0;
 
   cin>>n;
   for(int i=0;i<10;i++){
       int a=n;
       while(a){
         if(a%10==i)
             s=s*10+a%10;
        a/=10;
       }
     }
       cout<<s%10<<"   "<<s/10%10;
0
Just Do It!
3375 / 1841 / 618
Регистрация: 23.09.2014
Сообщений: 5,831
08.06.2021, 15:46 10
Цитата Сообщение от Senarist Посмотреть сообщение
101 дает ответ N
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
///----------------------------------------------------------------------------|
/// ...
///----------------------------------------------------------------------------:
#include <iostream>
 
///----------------------------------------------------------------------------|
/// Тест.
///----------------------------------------------------------------------------:
int main()
{
    int n, max1 = -1,
           max2 = -1; std::cin >> n;
 
    for(int x = n; x; x /= 10)
    {   if(max1 < x % 10) max1 = x % 10;
    }
 
    for(int x = n; x; x /= 10)
    {   const int t = x % 10;
        if(max2  < t && t != max1) max2 = t;
    }
 
    if(-1 == max2) std::cout << "NO\n";
    else
    std::cout <<   "max1 = " << max1
              << "\nmax2 = " << max2 << '\n';
    return 0;
}
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
32420 / 17964 / 3763
Регистрация: 12.02.2012
Сообщений: 30,156
Записей в блоге: 5
08.06.2021, 21:53 11
Senarist, и правильно. Там две единицы

Добавлено через 5 часов 55 минут
Формулировки должны быть четкими.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
void max_2_digs(int n,int *m1, int *m2)
{
    int k;
    if (n==0) return;
    k=n%10;
    if ((k != *m1) && (k != *m2))
    {
       if (k> *m1)
       {
           *m2=*m1;
           *m1=k;
       }
       else
           if (k>=*m2) *m2=k;
    }
    return max_2_digs(n/10,m1,m2);    
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2021, 21:53
Помогаю со студенческими работами здесь

Преобразовать строку, содержащую цифры и буквы, удалив из нее все четные цифры
Преобразовать строку, содержащую цифры и буквы, удалив из нее все четные цифры.

Определить позицию первой цифры числа, которая меньше цифры заданной пользователем
Добрый вечер! Прошу помощи. Есть задача - Дано пятизначное число, введенное пользователем и...

Циклы: найти произведение последней цифры и минимальной цифры числа с произведением всех остальных
Помогите, я даже не знаю о чем речь(((( Дано натуральное число n. Найти произведение последней...

Массив строк в с++. Вывести строки, в которых есть цифры. В каждой строке удалить все цифры
Помогите пожалуйста с задачей ! срочно!! Необходимо написать программу, в которой с клавиатуры...

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

Получить число М, которое образуется из числа N путем замены последней цифры на значение наибольшей цифры
Помогите составить программу, пожалуйста! Вот условие: Дано натуральное число N. Получить новое...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru