Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
1

Преобразовать число в его строковое представление через switch

15.09.2010, 00:46. Показов 4733. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
диапазон -99...99
пример
32- тридцать два
я вот так делал.но выдаёт ошибки.можете указать в чем они заключаются?(не надо сетовать на алгоритм)

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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/****************************************************************************
 *                                                                          *
 * File    : main.c                                                         *
 *                                                                          *
 * Purpose : Console mode (command line) program.                           *
 *                                                                          *
 * History : Date      Reason                                               *
 *           00/00/00  Created                                              *
 *                                                                          *
 ****************************************************************************/
 
#include <stdio.h>
#include <string.h>
 
/****************************************************************************
 *                                                                          *
 * Function: main                                                           *
 *                                                                          *
 * Purpose : Main entry point.                                              *
 *                                                                          *
 * History : Date      Reason                                               *
 *           00/00/00  Created                                              *
 *                                                                          *
 ****************************************************************************/
 
int main(int argc, char *argv[])
{
    /* TODO: Enter code here */
    int chislo;
    char s1[15],s2[15],s[15],sf[50];
    printf("vvedite chislo\n");
    scanf("%d\n",&chislo);
    if (chislo<0)
    s="минус";
    else
    s="";
    if (chislo/10<0)
        goto odinar;
    else
    {
        if ((chislo/10==1) && (chislo%10!=0))
            goto last;
         else
        {
        if (chislo%10==0)
        {
             switch(chislo/10)
            {
              
                    case 1: s1="десять";
                    case 2: s1="двадцать";
                    case 3: s1="тридцать";
                    case 4: s1="сорок";
                    case 5: s1="пятьдесят";
                    case 6: s1="шестьдесят";
                    case 7: s1="семьдесят";
                    case 8: s1="восемьдесят";
                    case 9: s1="девяносто";
            }
          }
         else
             goto odinar1;
        }
    }
    odinar:
    switch(chislo)
    {
        case 1: s1="один";
        case 2: s1="два";
        case 3: s1="три";
        case 4: s1="четыре";
        case 5: s1="пять";
        case 6: s1="шесть";
        case 7: s1="семь";
        case 8: s1="восемь";
        case 9: s1="девять";
    }
    odinar1:
     switch(chislo%10)
    {
        case 1: s2="один";
        case 2: s2="два";
        case 3: s2="три";
        case 4: s2="четыре";
        case 5: s2="пять";
        case 6: s2="шесть";
        case 7: s2="семь";
        case 8: s2="восемь";
        case 9: s2="девять";
    }
    last:
       switch(chislo)
       {
         case 11: s1="одинадцать";
         case 12: s1="двенадцать";
         case 13: s1="тринадцать";
         case 14: s1="четырнадцать";
         case 15: s1="пятнадцать";
         case 16: s1="шестнадцать";
         case 17: s1="семнадцать";
         case 18: s1="восемнадцать";
         case 19: s1="девятнадцать";
        }
    sf=strcat(s,s1,s2);
    puts(" resultat", sf);    
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2010, 00:46
Ответы с готовыми решениями:

Преобразовать double в строковое представление в char
Есть ли метод который конвертирует double в сhar как число а не ASCII код? т.е. чтоб double i = 1...

Преобразовать строковое представление цифры в числовое
Всем добрый день! Я новичок. Как переписать нижеследующую программу, чтобы получить доступ к...

Дано натуральное число. Получить строковое представление этого числа
Дано натуральное число. Получить строковое представление этого числа в виде последовательности цифр...

десятичное число перевести в строковое представление двоичного числа из 8 бит
Функция принимает инт (0..255) и должна отдать строку из 8бит этого числа в двоичной системе....

8
Эксперт С++
 Аватар для Andrew_Lvov
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
15.09.2010, 01:30 2
Какие ошибки выдаёт ?
0
74 / 73 / 25
Регистрация: 05.10.2008
Сообщений: 233
15.09.2010, 04:49 3
C
1
scanf("%d\n",&chislo);
зачем - \n

C
1
case 1: s1="десять";
после каждого break;

C
1
char s1[15],s2[15],s[15],sf[50];
ругается, просит указатели (*s1 и т.д.)
(памяти под строки необходимо будет выделить)

Цитата Сообщение от Artishok Посмотреть сообщение
(не надо сетовать на алгоритм)
до 19 считает, потом только /10 без остатка
с минусом дело обстоит хуже, выводит только слово - минус

Добавлено через 6 минут
C
1
sf=strcat(s,s1,s2);
функция работает с 2 аргументами, результат в строке первого аргумента
0
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
15.09.2010, 23:04  [ТС] 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
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/****************************************************************************
 *                                                                          *
 * File    : main.c                                                         *
 *                                                                          *
 * Purpose : Console mode (command line) program.                           *
 *                                                                          *
 * History : Date      Reason                                               *
 *           00/00/00  Created                                              *
 *                                                                          *
 ****************************************************************************/
 
#include <stdio.h>
#include <string.h>
 
/****************************************************************************
 *                                                                          *
 * Function: main                                                           *
 *                                                                          *
 * Purpose : Main entry point.                                              *
 *                                                                          *
 * History : Date      Reason                                               *
 *           00/00/00  Created                                              *
 *                                                                          *
 ****************************************************************************/
 
int main(int argc, char *argv[])
{
    /* TODO: Enter code here */
    int chislo;
    char *s1,*s2,*s;
    printf("vvedite chislo\n");
    scanf("%d",&chislo);
    if (chislo<0)
    s="минус";
    else
    s="";
    if ((chislo/10)<0)
    {
        switch(chislo)
    {
        case 1: {s1="один"; break;}
        case 2: {s1="два"; break;}
        case 3: {s1="три"; break;}
        case 4: {s1="четыре"; break;}
        case 5: {s1="пять"; break;}
        case 6: {s1="шесть"; break;}
        case 7: {s1="семь"; break;}
        case 8: {s1="восемь"; break;}
        case 9: {s1="девять"; break;}
    }
    }
    else
    {
        if ((chislo/10)==1) && ((chislo%10)!=0))
            {
        switch(chislo)
         {
         case 11: {s1="одинадцать"; break;}
         case 12: {s1="двенадцать"; break;}
         case 13: {s1="тринадцать"; break;}
         case 14: {s1="четырнадцать"; break;}
         case 15: {s1="пятнадцать"; break;}
         case 16: {s1="шестнадцать"; break;}
         case 17: {s1="семнадцать"; break;}
         case 18: {s1="восемнадцать"; break;}
         case 19: {s1="девятнадцать"; break;}
         }
        }
            
         else
        {
        if ((chislo%10)==0)
        {
             switch((chislo/10))
            {
              
                    case 1: {s="десять"; break;}
                    case 2: {s="двадцать"; break;}
                    case 3: {s="тридцать"; break;}
                    case 4: {s="сорок"; break;}
                    case 5: {s="пятьдесят"; break;}
                    case 6: {s="шестьдесят"; break;}
                    case 7: {s="семьдесят"; break;}
                    case 8: {s="восемьдесят"; break;}
                    case 9: {s="девяносто"; break;}
            }
          }
         else
        {
         switch(chislo%10)
         {
        case 1: {s2="один"; break;}
        case 2: {s2="два"; break;}
        case 3: {s2="три"; break;}
        case 4: {s2="четыре"; break;}
        case 5: {s2="пять"; break;}
        case 6: {s2="шесть"; break;}
        case 7: {s2="семь"; break;}
        case 8: {s2="восемь"; break;}
        case 9: {s2="девять"; break;}
         }
        switch(chislo/10)
            {
             case 2: {s1="двадцать";break;}
             case 3: {s1="тридцать";break;}
             case 4: {s1="сорок";break;}
             case 5: {s1="пятьдесят";break;}
             case 6: {s1="шестьдесят";break;}
             case 7: {s1="семьдесять";break;}
             case 8: {s1="восемьдесят";break;}
             case 9: {s1="девяносто"; break;}
            }
        }
    }
    }
    strcat(s,s1);
    strcat(s,s2);
    printf("%s ",s);   
    return 0;
}
мне кажется или в 95... строках надо не break a continue?ведь break прерывает всё, а continue только эту часть switch и переходит на следующий switch
0
 Аватар для TheMachinist
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
16.09.2010, 00:53 5
У тебя лишняя скобка в

C++
1
if ((chislo/10)==1) && ((chislo%10)!=0))
0
74 / 73 / 25
Регистрация: 05.10.2008
Сообщений: 233
16.09.2010, 03:56 6

Цитата Сообщение от Artishok Посмотреть сообщение
strcat(s,s1);
мой тебе совет закомментируй их обе (удали, а то потом с ними будут проблемы). Выводи все через
C
1
printf("%s %s %s", s, s1 s2);
при объявлении s1, s2, s3 почисти их =""; чтобы не было непонятных символов при выводе
C
1
{s1="один"; break;}
ненужны {}
Цитата Сообщение от Artishok Посмотреть сообщение
надо не break a continue?
нужен break, если его не будет, программа пройдясь по всем позициям сохранит последнее значение в переменной.

Алгоритм работы положительных чисел уже рабочий . отрицательных - только минус выводит
1
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
16.09.2010, 09:43 7
Artishok, не велосипед:
C++
1
2
3
4
5
6
7
8
9
#include <string>
#include <boost/lexical_cast.hpp>
 
int main() {
  int         n = boost::lexical_cast<int>        ("123");  // n == 123
  std::string s = boost::lexical_cast<std::string>(n);      // s == "123"
 
  return 0;
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.09.2010, 14:00 8
CyBOSSeR, Ты немного не так понял задание как я понимаю. Из 123 должно получиться сто двадцать три, а не строка 123.
0
ЧакЭ одобряЭ
 Аватар для Artishok
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
16.09.2010, 20:00  [ТС] 9
все равно не работает даже с исправлениями
0
16.09.2010, 20:00
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2010, 20:00
Помогаю со студенческими работами здесь

Преобразовать введенное целое десятичное число в восьмеричное представление (через двоичное)
Преобразовать введенное целое десятичное число в восьмеричное представление (через двоичное) с...

Программа переводит строковое представление числа в числовое представление
Программа получает запись действительного числа в виде строки. Входная переменная, то есть, имеет...

Перевести строковое представление числа в числовое представление
Программа получает запись действительного числа в виде строки. Входная переменная, то есть, имеет...

Строковое представление
Напишите функцию itoa(int a, char *s), которая сохдает строковое представление a и возвращает его в...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Как клонировать определенную ветку в Git
bytestream 24.01.2025
Одной из ключевых функций Git является возможность клонирования веток, что позволяет создавать локальные копии удаленных репозиториев и работать с определенными версиями проекта. Этот механизм. . .
Как в цикле обойти строки DataFrame в Pandas Python
bytestream 24.01.2025
DataFrame представляет собой одну из основных структур данных в библиотеке Python Pandas, которая организует информацию в виде двумерной таблицы с строками и столбцами. Эта структура данных особенно. . .
Как получить имя текущей ветки в Git
bytestream 24.01.2025
При работе с Git часто возникает необходимость определить имя текущей ветки, в которой ведется разработка. Знание текущей ветки является критически важным аспектом для эффективного управления. . .
Как отсортировать массив объектов по значению поля объекта в JavaScript
bytestream 24.01.2025
При разработке веб-приложений на JavaScript разработчики часто сталкиваются с необходимостью работать с массивами объектов. Эти структуры данных представляют собой упорядоченные наборы элементов, где. . .
Ошибка "src refspec master does not match any" при пуше коммита в Git
bytestream 24.01.2025
При работе с системой контроля версий Git разработчики нередко сталкиваются с различными ошибками, одной из которых является сообщение "src refspec master does not match any". Эта ошибка возникает. . .
Как округлить не более двух цифр после запятой в JavaScript
bytestream 24.01.2025
При работе с числами в JavaScript разработчики часто сталкиваются с необходимостью округления десятичных значений до определенного количества знаков после запятой. Это особенно важно при работе с. . .
Как сделать UPDATE из SELECT в SQL Server
hw_wired 24.01.2025
В современных системах управления базами данных операции обновления и выборки данных являются фундаментальными инструментами для работы с информацией. SQL Server предоставляет мощные команды UPDATE и. . .
Как вставить элемент в массив на указанный индекс в JavaScript
hw_wired 24.01.2025
Массивы являются одной из фундаментальных структур данных в JavaScript, предоставляющей разработчикам мощный инструмент для хранения и управления упорядоченными наборами данных. Они позволяют хранить. . .
Чем отличаются HashMap и Hashtable в Java
hw_wired 24.01.2025
В мире разработки на Java существует множество инструментов для работы с коллекциями данных, и среди них особое место занимают структуры данных для хранения пар ключ-значение. HashMap и Hashtable. . .
Как конвертировать видео в GIF
hw_wired 24.01.2025
В современном мире анимированные изображения стали неотъемлемой частью цифровой коммуникации. Формат GIF (Graphics Interchange Format) представляет собой особый тип файлов, который позволяет. . .
Как скопировать текст в буфер обмена на JavaScript во всех браузерах
hw_wired 24.01.2025
Копирование текста в буфер обмена стало неотъемлемой частью современных веб-приложений, значительно улучшающей пользовательский опыт и упрощающей работу с контентом. В эпоху активного обмена. . .
Как скрыть клавиатуру на Android
hw_wired 24.01.2025
При разработке Android-приложений часто возникает необходимость управлять видимостью экранной клавиатуры для улучшения пользовательского опыта. Одним из наиболее эффективных способов контроля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru