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

Операции с числом - C++

Восстановить пароль Регистрация
 
Найк
0 / 0 / 0
Регистрация: 16.12.2010
Сообщений: 32
04.10.2011, 21:23     Операции с числом #1
Пожалуйсто помогите решить задачу:

Дано целое число. Проверить: является ли данное число положительным пятизначным числом кратным десяти. Результат выводится на экран в виде значения "1" - если истина и значения "0" - если ложь.

Вот что сам написал:

C++
1
2
3
4
5
6
7
8
9
10
int main(int argc, char *argv[])
{
     int x,y;
    printf("Vvedite  znachenie X: ")
        scanf("%d", &x);
    if (x>0) &  (x<100000)  y=1;
    else y=0;
    printf("1 (true), 0 (false): d\n", &y);
    return 0;
}
Остальное не понимаю.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
04.10.2011, 22:02     Операции с числом #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
#include <stdio.h>
#include <conio.h>
 
unsigned long nDigits(unsigned long val)//Подсчёт числа разрядов целого
{
    unsigned long ret = 1;//Один раряд в любом числе найдется
    if(1 < val)
        ret += nDigits((val /= 10));//Рекурсия - очень удобно для решения подобных задач
    return ret;
}
 
int main()
{
    long val,n;
    do
    {
        n = 0;
        printf("Enter number : ");scanf("%u",&val);
        if(val < 0)
            printf("Input value negative!\r\n");
        else
        {
            if((n = nDigits(val)) != 5)//Проверим содержит ли число 5 разрядов
                printf("Input value contain not from 5 digits\r\n");
            else
            {
                if(val % 10 != 0)//Проверяем является ли число кратным 10-ти
                    printf("Input value not equal 10\r\n");
                else
                    printf("Input value contains from 5 digits and equal 10!\r\n");
            }
        }
        printf("Press \'y\' for new input\r\n");
    }
    while(getch() == 'y');
    return 0;
}
Миниатюры
Операции с числом  
Найк
0 / 0 / 0
Регистрация: 16.12.2010
Сообщений: 32
04.10.2011, 22:16  [ТС]     Операции с числом #3
спасибо) тут многое что даже не проходили но буду пробовать разобраться)
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
05.10.2011, 02:24     Операции с числом #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
#include <iostream>
using namespace std;
    
int main()
{
    setlocale(LC_ALL, "rus");
    
    int k,l;
    cout << "Ââåäèòå ÷èñëî\n";
    cin>> k;
    if(k<100000&&k>9999){
    l=k%10;
    if(l==0)
    cout << "1";
    else
    cout << "0";
    }
    else
    cout << "0";
    
    
    cout << "\n\n\n";
    system("PAUSE");
    return 0;
}
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
05.10.2011, 04:30     Операции с числом #5
код на выбор ))
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
 
int main(){
    unsigned char  x = 0;
    int y;
 
    printf("\nчисло y = ");
    scanf("%d", &y);
 
    if (y > 0)
        if ((y > 9999) && (y < 100000))
            if ( ! (y % 10) )   x = 1;
 
    printf("%d \n\n", x);
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
 
int main(){
    unsigned char  x = 0;
    int y;
 
    printf("\nчисло y = ");
    scanf("%d", &y);
 
    x = (y > 0);
    if (x) x = ((y > 9999) && (y < 100000)) ? 1 : 0;
    if (x) x = (!(y % 10)) ? 1 : 0;
 
    printf("%d \n\n", x);
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
 
int main(){
    unsigned char x;
    int y;
 
    printf("\nчисло х = ");
    scanf("%d", &y);
 
    if (y < 0) x = 0;    //проверка на положительность
    else if ( (y > 9999) && (y < 100000) ){     //проверка на разрядность
        if (! (y % 10) ) x = 1;      //проверка не делимость на 10
        else x = 0;
    }
    else x = 0;
 
    printf("%d \n\n", x);
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
 
int main(){
    unsigned char  x = 0;
    int y;
 
    printf("\nчисло y = ");
    scanf("%d", &y);
 
    x = (y > 0) ? (((y > 9999) && (y < 100000)) ? ((!(y % 10)) ? 1 : 0): 0) : 0;
 
    printf("%d \n\n", x);
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
#define func(a) ( (a > 0) ? (((a > 9999) && (a < 100000)) ? ((!(a % 10)) ? 1 : 0 ) : 0 ) : 0 )
int main(){
    int y;
    printf("\nчисло y = ");
    scanf("%d", &y);
    printf("%d \n\n", func(y));
    return 0;
}
odip
Эксперт C++
 Аватар для odip
7224 / 3286 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
05.10.2011, 11:45     Операции с числом #6
x = (y > 0) ? (((y > 9999) && (y < 100000)) ? ((!(y % 10)) ? 1 : 0): 0) : 0
Во всех примерах много лишней фигни
C
1
x= (10000<=y && y<=99999) && (y%10==0);
Если мы и так проверяем что число от 10000 до 99999, то очевидно что оно положительное
и нет смысла еще раз проверяет на это

Кроме этого логическая операция y%10==0 и так вернет 1 или 0

Добавлено через 2 минуты
if (y < 0) x = 0; //проверка на положительность
Вообще-то должно быть так
if ( y<=0 ) x= 0;
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
05.10.2011, 17:04     Операции с числом #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cmath>
 
using namespace std;
 
int check(int val)
{
   return val > 0 && int(log10(val) + 1) == 5;
}
 
int main()
{
   int n = 12340;
   cout << check(n) <<endl;
}
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
05.10.2011, 17:44     Операции с числом #8
Цитата Сообщение от odip Посмотреть сообщение
Во всех примерах много лишней фигни
я не волшебник, я только учусь
Найк
0 / 0 / 0
Регистрация: 16.12.2010
Сообщений: 32
05.10.2011, 18:58  [ТС]     Операции с числом #9
спасибо всем , а то с первым решением не разобрался, теперь понятно))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2011, 19:29     Операции с числом
Еще ссылки по теме:

C++ Определить разность между наибольшим числом и наименьшим числом последовательности
C++ С++ Операции без вычитания с числом X
Проверка является ли строка числом полностью числом или нет? C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
05.10.2011, 19:29     Операции с числом #10
Цитата Сообщение от Найк Посмотреть сообщение
а то с первым решением не разобрался,
- я понял рекурсия наверное сбила, посмотри эту функциию (в ней убрал рекурсию - функционал тотже)
C++
1
2
3
4
5
6
7
8
9
10
unsigned long nDigits(unsigned long val)//Подсчёт числа разрядов целого
{
    unsigned long ret = 1;//Один раряд в любом числе найдется
    while(1 < val)
    {
        ret ++; 
        val /= 10;
    }
    return ret;
}
Yandex
Объявления
05.10.2011, 19:29     Операции с числом
Ответ Создать тему
Опции темы

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