Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 23
1

Сколько чисел между n и m (n<m) состоит только из нечетных цифр

14.11.2014, 19:05. Показов 4093. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем.я всё не могу додумать как правлиьно написать программу со вложенными циклами.
Условие:
Сколько чисел между n и m (n<m) состоит только из нечетных цифр. Выведите на экран эти числа.

Решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
 
void main ()
{
    setlocale(0, "Russian");
    int n,m,s=0;
    printf("\nЧисла n и m равны: ");
    scanf_s("%d%d",&n,&m);
    for (int i=n;i<=m;i++)
    {   
    if(i%2!=0) s++;
    }
    printf("\nЧисло нечетных чисел: %d%",s);
    _getch();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2014, 19:05
Ответы с готовыми решениями:

Определить, состоит ли число из четных и нечетных цифр
В диалоговом режиме задается длинное целое число A Определить, состоит ли число из четных и...

Выяснить, сколько существует n-значных чисел, которые состоят только из нечётных цифр
&quot;Хорошим&quot; будем считать число, которое состоит только из нечетных цифр. Например число 157953...

Сколько чисел между 1000 и 10000 состоит из нечетных цифр, сколько из разных цифр?
Сколько чисел между 1000 и 10000 состоит из нечетных цифр, сколько из разных цифр?

Определить, сколько чисел между m и n (m<n) состоит из нечетных цифр
Собственно задача звучит так: К сожалению лекцию по &quot;Функциям&quot; я проболел и то, что мог...

37
11 / 11 / 10
Регистрация: 16.12.2013
Сообщений: 66
14.11.2014, 20:01 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
#include <iostream>
 
 
using namespace std;
 
 
int main()
{
 
    setlocale (LC_ALL, "Russian");
 
    int left;
    int nLeft;
    int right;
    int count;
    cin >> left;
    cin >> right;
    
    if (++left!=right)
    {
    left++;
    right--;
    }
 
    int size = right-left;
    int *arr = new int [ size ];
    int i;
 
 
    while ( left!=right )
            for ( i=0; i<size; i++ )
    {
         nLeft = left; 
         for ( ; nLeft; nLeft/=10 )
         {
              if ( nLeft%2==0 )
                  arr[i] = 0;
         }
 
         if ( arr[i]!=0 )
             arr[i] = left;
         left++;
    }
 
    for ( i=0; i<size; i++ )
        if ( arr[i]!=0 )
            cout << arr[i] << " ";
 
    system("pause");
    return 0;
}
Как-то мудрено получилось, но работает. Если нужно объяснить код - пишите
0
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
14.11.2014, 20:23 3
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(){
    int N, M, k=0;
    scanf("%d %d",&N,&M);
    if (N%2==0)
        for (int i=N+1;i<M;i+=2)k++;
    else
        for (int i=N;i<M;i+=2)k++;
    printf("%d",k);
}
0
11 / 11 / 10
Регистрация: 16.12.2013
Сообщений: 66
14.11.2014, 20:41 4
ReinDeer, что-то Вы совсем не то написали -)
0
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
14.11.2014, 20:50 5
Blagodetel, что именно "не то"?
Я посмотрел код. Увидел просьбу вложенности. Написал короткий и рабочий код.
0
11 / 11 / 10
Регистрация: 16.12.2013
Сообщений: 66
14.11.2014, 21:02 6
ReinDeer, он не совсем рабочий. Скажем, если вбить числа 33 и 34 - программа выдаст "1".
По условии задачи нужно было найти числа между n и m. Между 33 и 34 вообще нет чисел.
Но, даже если учесть, что интервал включенный, если в Вашу программу вбить числа 12 и 13 - программа выдаст "0".

Добавлено через 5 минут
ReinDeer,
И еще, у Вас алгоритм основан на том, что если текущее число не четное, значит следующее будет четное и исходя из этого увеличиваем счетчик, пока не дойдем до правой границы. Но задание не на чётность/нечетность числа, а: сколько чисел состоит только из нечетных цифр. Т.е. если ввести интервал 200 - 299, таких чисел не будет вообще, (т.е. первая цифра четная) а у Вас в программе выдаст 49 таких цифр. Вообщем, вы опираетесь на четость/нечетность числа, а не цифер.
0
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
14.11.2014, 21:08 7
Blagodetel, извиняюсь, его решение меня дезориентировало и тз придумывал с него.
0
11 / 11 / 10
Регистрация: 16.12.2013
Сообщений: 66
14.11.2014, 21:11 8
ReinDeer, Бывает))
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
14.11.2014, 21:20 9
Fore, Blagodetel,
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>
 
int main()
{
    int n, m, count = 0;
    std::cin >> n >> m;
    for (int i = n+1; i < m; ++i)
    {
        int figure, number = i;
        bool isOdd = true;
        while (number) 
        {
            figure = number % 10;
            if(figure % 2 == 0)
            {
                isOdd = false;
                break;
            }
            number /= 10;
        }
        if (isOdd)
        {
            std::cout << i << ' ';
            count++;
        }
    }
    std::cout << "\nVsego chisel: " << count << std::endl;
    
    return 0;
}
1
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
14.11.2014, 21:28 10
Попытался исправить и мой IDE написал какую-то ошибку и закрылся)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int f(int x){
    while(x!=0){
        if(x%2==0)return 0;
        x/=10;
    }
    if(x==0)return 1;
}
void main(){
    int N,M,k=0;
    scanf("%d %d",&N,&M);
    if(N%2==0)
        for(int i=N+1;i<M;i+=2)k+=f(i);
    else
        for(int i=N;i<M-2;i+=2)k+=f(i);
    printf("%d",k);
}
Добавлено через 21 секунду
Blagodetel, проверяй.
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
14.11.2014, 21:31 11
Цитата Сообщение от ReinDeer Посмотреть сообщение
C++
1
2
3
4
5
6
7
int f(int x){
  while(x!=0){
    if(x%2==0)return 0;
     x/=10;
  }
  if(x==0)return 1;
}
Проверять нужно не число, а цифры числа.
0
1405 / 647 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
14.11.2014, 21:34 12
Вроде бы можно без циклов перебора числа.
Сейчас попробую написать.
0
11 / 11 / 10
Регистрация: 16.12.2013
Сообщений: 66
14.11.2014, 21:35 13
Kerry_Jr, да, массив у меня лишний)
0
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
14.11.2014, 21:38 14
Kerry_Jr, ну так все правильно, водка внутри, снаружи бутылка.
Можешь проверить функцию.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int f(int x){
    while(x!=0){
        if(x%2==0)return 0;
        x/=10;
    }
    if(x==0)return 1;
}
void main(){
    int x;
    scanf("%d",&x);
    printf("%d",f(x));
}
0
11 / 11 / 10
Регистрация: 16.12.2013
Сообщений: 66
14.11.2014, 21:42 15
ReinDeer, а если в качестве числа ввести 0?) Он перейдет к строчке
C++
1
if(x==0)return 1;
, а то не верно)
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
14.11.2014, 21:45 16
ReinDeer,
Цитата Сообщение от Fore Посмотреть сообщение
Выведите на экран эти числа.
Добавлено через 1 минуту
ReinDeer, но все равно спасибо, ты навел на мысль, что четные числа изначально можно не проверять.
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, m, count = 0;
    std::cin >> n >> m;
    if (++n % 2 == 0) n++;
    for (int i = n; i < m; i += 2)
    {
        int figure, number = i;
        bool isOdd = true;
        while (number) 
        {
            figure = number % 10;
            if(figure % 2 == 0)
            {
                isOdd = false;
                break;
            }
            number /= 10;
        }
        if (isOdd)
        {
            std::cout << i << ' ';
            count++;
        }
    }
    std::cout << "\nVsego chisel: " << count << std::endl;
    
    return 0;
}
0
11 / 11 / 10
Регистрация: 16.12.2013
Сообщений: 66
14.11.2014, 21:47 17
Kerry_Jr,
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Проверять нужно не число, а цифры числа.
Ну, не обязательно. Если число чётное, то в нем в любом случае есть чётная цифра, а если оно нечётная, то функция ReinDeer-а почленно делит число на 10, обрабатывая каждую цифру, так что способ определения по чётности числа, а не каждой цифры имеет место быть.
0
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
14.11.2014, 21:47 18
Blagodetel, тут уже отдельно прописать условие на 0 надо. Лень.
Kerry_Jr, дописать printf под циклами не сложно. Функция все таки правильная была.
p.s мы тут втроем пишем свои варианты, совершенствуем, исправляем, а тс просто скопирует. как-то.
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
14.11.2014, 21:50 19
Цитата Сообщение от ReinDeer Посмотреть сообщение
а тс просто скопирует.
Ну, может хоть попробует сам разобраться...
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
14.11.2014, 21:52 20
Цитата Сообщение от ReinDeer Посмотреть сообщение
C++
1
2
3
4
5
6
7
int f(int x){
    while(x!=0){
        if(x%2==0)return 0;
        x/=10;
    }
    if(x==0)return 1;
}
x после цикла будет всегда 0
из этого while(x!=0)
следовательно if(x==0) лишнее
и проверить число на 0 вначале
примерно так

C++
1
2
3
4
5
6
7
8
int f(int x){
  if(x==0) return 0;  
  while(x!=0){
        if(x%2==0)return 0;
        x/=10;
    }
    return 1;
}
1
14.11.2014, 21:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2014, 21:52
Помогаю со студенческими работами здесь

Сколько чисел между 1000 и 100000 состоят из нечетных цифр, а сколько из различных цифр?
Написала программу, но где-то есть ошибочка... не могу понять где, может кто-нибудь...

Выяснить, сколько натуральных чисел состоит из нечётных цифр и сколько из различных цифр
Выяснить, сколько натуральных чисел между n и m&gt;n состоит из нечётных цифр и сколько из различных...

Сколько существует четырехзначных десятичных чисел, в каждом из которых четных цифр столько же, сколько и нечетных
2) Сколько существует четырехзначных десятичных чисел, в каждом из которых четных цифр столько же,...

Найти сумму нечетных цифр числа Определить состоит ли число из одинаковых цифр
Помогите написать прогу. Найти сумму нечетных цифр числа Определить состоит ли число из...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru