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

Переключение - C++

Восстановить пароль Регистрация
 
Yordl
Заблокирован
05.06.2013, 16:55     Переключение #1
Вводится с клавы число К. К принадлежит [-9;9]. Вывести значение числа и знак СЛОВАМИ. Писал , использую свитч. Вышел код большой. Мне сказали, что надо упростить и свитч не рационален..Надо написать более короткий вариант. Я понятия не имею как. Помогите пожалуйста.
Вот первоначальный мой код:
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <stdio.h> 
#include <conio.h> 
#include <locale.h>
 
void main()
{
setlocale( 0, "Russian" );
int S;
printf("Введите число от -9 до 9 включительно\n");
scanf("%i", &S);
switch(x)
{
case -9:
    puts("минус девять");
break;
case -8:
    puts("минус восемь");
break;
case -7:
    puts("минус семь");
break;
case -6:
    puts("минус шесть");
break;
case -5:
    puts("минус пять");
break;
case -4:
    puts("минус четыре");
break;
case -3:
    puts("минус три");
break;
case -2:
    puts("минус два");
break;
case -1:
    puts("минус один");
break;
case 0:
    puts("ноль");
break;
case 9:
    puts("девять");
break;
case 8:
    puts("восемь");
break;
case 7:
    puts(" семь");
break;
case 6:
    puts(" шесть");
break;
case 5:
    puts("пять");
break;
case 4:
    puts(" четыре");
break;
case 3:
    puts("три");
break;
case 2:
    puts(" два");
break;
case 1:
    puts("один");
break;
default :
printf("Вы ввели число, которое нe входит в заданное множество\n");
 
 
 
}
getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
05.06.2013, 17:08     Переключение #2
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
void main()
{
   int n;
   char texts[19][13]={"минус девять", "минус восемь", ...., "девять"};
   cin>>n;
   if(n<-9)n=-9;
   else if(n>9)n=9;
   cout>>texts[n+9];
}
Yordl
Заблокирован
05.06.2013, 18:47  [ТС]     Переключение #3
Переключение
Как это можно исправить подскажите пожалуйста.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.06.2013, 19:04     Переключение #4
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main()
 {
    setlocale( 0, "Russian" );
    char digit[10][13] = {"ноль", "один", "два", "три", "черыре", 
                        "пять", "шесть", "семь", "восемь", "девять"};
    char minus[12] = "минус ";
    int S;
    
    cout << "Введите число от -9 до 9 включительно\n";
    cin >> S;
    
    if (S <= 9 && S >= -9)
    {
        if (S < 0) cout << minus << digit[abs(S)] << endl;
        if (S >= 0) cout << digit[S] << endl;
    }
    else cout << "Вы ввели число, которое нe входит в заданное множество\n";
    
    system ("pause");
    return 0;
 }
Yordl
Заблокирован
05.06.2013, 19:26  [ТС]     Переключение #5
Спасибо, все работает отлично.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.06.2013, 19:44     Переключение #6
На здоровье!
Yandex
Объявления
05.06.2013, 19:44     Переключение
Ответ Создать тему
Опции темы

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