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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
igor913
4 / 4 / 0
Регистрация: 03.11.2011
Сообщений: 103
14.11.2011, 23:30     задача с цифрами #1
a) Дано трёхзначное число. Определить, есть ли среди его цифр одинаковые?
b) Дано натуральное число с различными цифрами. Определить, максимальная цифра числа
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2011, 23:30     задача с цифрами
Посмотрите здесь:

C++ Работа с цифрами
C++ Уравнение с пропущенными цифрами
Работа с цифрами C++
Выбор цифрами и выход C++
задача с натуральными цифрами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bretba
 Аватар для bretba
63 / 58 / 5
Регистрация: 24.07.2011
Сообщений: 343
14.11.2011, 23:35     задача с цифрами #2
переводи int числа в символьное представление char,чтобы представить это как массив символов.Поэтому будет легко пройти по массиву и что-нибудь определить
Dar101
 Аватар для Dar101
40 / 40 / 1
Регистрация: 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) справишься сам?
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
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;
}
Dar101
 Аватар для Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
14.11.2011, 23:51     задача с цифрами #5
nonamez123, да, может быть.
Вот это, мне кажется, надо еще добавить в ваш код:
C++
1
...||(i / 100||i%10)
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
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;
}
igor913
4 / 4 / 0
Регистрация: 03.11.2011
Сообщений: 103
31.12.2011, 18:46  [ТС]     задача с цифрами #7
Дано натуральное число с различными цифрами. Определить, максимальная цифра числа расположена ближе к началу или концу числа.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2011, 19:58     задача с цифрами
Еще ссылки по теме:

Замена слов цифрами C++
C++ Заполнение массива 6*6 цифрами от 1 до 36
C++ Заполнение массива цифрами от 1 до 8

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
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)

метод пригоден не только для трехзначных а для любого розрядного числа(в пределах разумного)
если изменить анализ то можно решать задачи самое меньшее, каких чисел нет и многое другое
Yandex
Объявления
31.12.2011, 19:58     задача с цифрами
Ответ Создать тему
Опции темы

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