Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
igor913
4 / 4 / 2
Регистрация: 03.11.2011
Сообщений: 103
#1

задача с цифрами - C++

14.11.2011, 23:30. Просмотров 1589. Ответов 8
Метки нет (Все метки)

a) Дано трёхзначное число. Определить, есть ли среди его цифр одинаковые?
b) Дано натуральное число с различными цифрами. Определить, максимальная цифра числа
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2011, 23:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос задача с цифрами (C++):

задача с натуральными цифрами
int n, count = 0; cin >> n; // вводим натуральное число, меньше которого...

Работа с цифрами
Не могу понять, что в программе не так. Алгоритм правильный, но расчет не идет....

Работа с цифрами
Привет всем, помогите пожалуйста решить задачу. Заменить в натуральном числе...

Работа с цифрами в числе
Доброго времени суток, гуглил и ненашёл, как если у меня есть например int...

Замена слов цифрами
Пользователь вводит текст, программа проверяет текст на наличие цифр записанных...

Выбор цифрами и выход
Кто может поделиться кодом как сделать чтоб отображение пункта было не только...

8
bretba
63 / 58 / 14
Регистрация: 24.07.2011
Сообщений: 343
14.11.2011, 23:35 #2
переводи int числа в символьное представление char,чтобы представить это как массив символов.Поэтому будет легко пройти по массиву и что-нибудь определить
1
Dar101
40 / 40 / 7
Регистрация: 12.05.2011
Сообщений: 109
14.11.2011, 23:38 #3
a)
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
int main()
{
    char str[4];
    std::cin >> str;
    if (str[0]==str[1]||str[0]==str[2]||str[1]==str[2]) std::cout << "same numbers exist" << std::endl;
    else std::cout << "same numbers doesn't exist" << std::endl;
    system("pause");
    return 0;
}
С b) справишься сам?
1
nonamez123
186 / 182 / 54
Регистрация: 23.10.2010
Сообщений: 1,329
14.11.2011, 23:45 #4
я думаю вся соль задания в том, что str типа int, а не char

Добавлено через 58 секунд
Цитата Сообщение от bretba Посмотреть сообщение
переводи int числа в символьное представление char,чтобы представить это как массив символов.Поэтому будет легко пройти по массиву и что-нибудь определить
по мне так самое простое это поделить на 10,100 и т.д.

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
int main (int argc, char * const argv[]) {
    
    int i;
    
    cin >>i;
    
    if(((i / 100)==((i / 10) % 10)) || (((i / 10) % 10)==(i % 10)))
        cout << "числа одинаковые";
    return 0;
}
1
Dar101
40 / 40 / 7
Регистрация: 12.05.2011
Сообщений: 109
14.11.2011, 23:51 #5
nonamez123, да, может быть.
Вот это, мне кажется, надо еще добавить в ваш код:
C++
1
...||(i / 100||i%10)
1
nonamez123
186 / 182 / 54
Регистрация: 23.10.2010
Сообщений: 1,329
15.11.2011, 03:22 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
int main (int argc, char * const argv[]) {
    
    int i,a,b,c;
    
    cin >>i;
    
    a=i / 100;
    b=(i / 10) % 10;
    c=i % 10;
    
    
    if(a==b || b==c || a==c )
        cout << "числа одинаковые";
    return 0;
}
так правильнее и понятнее

Добавлено через 40 секунд
Цитата Сообщение от Dar101 Посмотреть сообщение
nonamez123, да, может быть.
Вот это, мне кажется, надо еще добавить в ваш код:
C++
1
...||(i / 100||i%10)
да, это было выдрано с прошлого курса с паскаля. Там заданице немного другое было.

Добавлено через 41 минуту
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
#include <iostream>
 
using namespace std;
 
const int size=100;
 
int main (int argc, char * const argv[]) {
    
    unsigned long x=0;
    int mas[size];
    int inc=0;
        
    cin >>x;
    
    while (x>0) {
        mas[inc]=x%10;
        x/=10;
        inc++;      
    }   
    
    int max=0;
    for (int i=0; i<inc; i++) {
        if (mas[i]>max) {
            max=mas[i];
        }
    }
    cout << max;
    
    return 0;
}
первое

Добавлено через 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
#include <iostream>
 
using namespace std;
 
const int size=100;
 
int main (int argc, char * const argv[]) {
    
    unsigned long x=0;
    int mas[size];
    int inc=0;
    int max=0;
        
    cin >>x;
    
    while (x>0) {
        mas[inc]=x%10;
        x/=10;
        if (mas[inc]>max) {
            max=mas[inc];
        }
        inc++;      
    }   
    
    
    cout << max;
    
    return 0;
}
1
igor913
4 / 4 / 2
Регистрация: 03.11.2011
Сообщений: 103
31.12.2011, 18:46  [ТС] #7
Дано натуральное число с различными цифрами. Определить, максимальная цифра числа расположена ближе к началу или концу числа.
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
31.12.2011, 19:47 #8
Цитата Сообщение от igor913 Посмотреть сообщение
Дано натуральное число с различными цифрами. Определить, максимальная цифра числа расположена ближе к началу или концу числа.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <sstream>
#include <string>
 
typedef std::ostringstream Oss;
typedef std::string::iterator StrItr;
 
int main()
{
    int num;
    std::cin >> num;
    Oss str;
    str << num;
    StrItr max = str.str().begin();
    for(StrItr it = str.str().begin(); it != str.str().end(); ++it)
        if(*it > *max)
            max = it;
    std::cout << ((static_cast<unsigned>(max - str.str().begin()) < str.str().length() / 2) ? ("begin") : ("end")) << std::endl;
    return 0;
}
1
ValeryS
Модератор
7134 / 5401 / 669
Регистрация: 14.02.2011
Сообщений: 18,227
31.12.2011, 19:58 #9
для обоих задач возможен один и тот же подход
заполнения массива
создаем массив 10 элементов(количество цифр)записываем в него 0ли
потом заполняем массив таким образом
если остаток отделения на 10 равен 1 в первый элемент массива добавляем 1 если 2 то во второй элемент
потом делим число на 10 если не 0 повторяем цикл
примерно так
C
1
2
3
4
5
  do
  {
    arrayB[n%10]++;
    n/=10;
  }while(n);
потом анализируем массив
для первой задачи ищем элементы со значением больше 1(значение количество, номер элемента цифра)
для второй ишем максимальный элемент не равный 0
123 =(0,1,1,1,0,0,0,0,0,0)
232 =(0,0,2,1,0,0,0,0,0,0)
333 =(0,0,0,3,0,0,0,0,0,0)

метод пригоден не только для трехзначных а для любого розрядного числа(в пределах разумного)
если изменить анализ то можно решать задачи самое меньшее, каких чисел нет и многое другое
1
31.12.2011, 19:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2011, 19:58
Привет! Вот еще темы с решениями:

Уравнение с пропущенными цифрами
Нужна программа на Си Помогите пожалуйста Добавлено через 33 минуты...

Заполнение массива 6*6 цифрами от 1 до 36
Заполнить массив 6*6 цифрами от 1 до 36 по следующей схеме 1 36 35 33 30 26...

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

Заполнение массива четными цифрами
Всем привет) Подскажите пожалуйста. Задача: Заполнение массива из 10 элементов...


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

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

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