17 / 17 / 5
Регистрация: 27.11.2011
Сообщений: 141
1

Программа пишет прописью числа, помогите доделать ввод числа с клавиатуры

22.12.2011, 15:53. Показов 2709. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа пишет прописью числа, помогите доделать ввод числа с клавиатуры.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication19
{
    class Program : NumByWords
    {
        public static void Main(string[] args)
        {
            Console.WriteLine(NumPhrase(12345, false));
            Console.ReadKey();
        }
    }
}
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
 
namespace ConsoleApplication19
{
    public class NumByWords
    {
        private static string EndDek1(byte Dek, bool IsMale)
        {
            if ((Dek > 2) || (Dek == 0)) return "";
            else if (Dek == 1)
            {
                if (IsMale) return "ин"; else return "ин";
            }
            else
            {
                if (IsMale) return "а"; else return "а";
            }
        }
 
        public static string NumPhrase(ulong Value, bool IsMale)
        {
            if (Value == 0UL) return "Ноль";
            string[] Dek1 = { "", " од", " дв", " три", " четыре", " пять", " шесть", " семь", " восемь", " девять", " десять", " одиннадцать", " двенадцать", " тринадцать", " четырнадцать", " пятнадцать", " шестнадцать", " семнадцать", " восемнадцать", " девятнадцать" };
            string[] Dek2 = { "", "", " двадцать", " тридцать", " сорок", " пятьдесят", " шестьдесят", " семьдесят", " восемьдесят", " девяносто" };
            string[] Dek3 = { "", " сто", " двести", " триста", " четыреста", " пятьсот", " шестьсот", " семьсот", " восемьсот", " девятьсот" };
            string[] Th = { "", "", " тысяч", " миллион", " миллиард", " триллион", " квадрилион", " квинтилион" };
            string str = "";
            for (byte th = 1; Value > 0; th++)
            {
                ushort gr = (ushort)(Value % 1000);
                Value = (Value - gr) / 1000; if (gr > 0)
                {
                    byte d3 = (byte)((gr - gr % 100) / 100); byte d1 = (byte)(gr % 10); byte d2 = (byte)((gr - d3 * 100 - d1) / 10);
                    if (d2 == 1)
                        d1 += (byte)10; bool ismale = (th > 2) || ((th == 1) && IsMale); str = Dek3[d3] + Dek2[d2] + Dek1[d1] + EndDek1(d1, ismale) + Th[th] + EndTh(th, d1) + str;
                }
            }
            str = str.Substring(1, 1).ToUpper() + str.Substring(2); return str;
        }
        private static string EndTh(byte ThNum, byte Dek)
        {
            bool In234 = ((Dek >= 2) && (Dek <= 4));
            bool More4 = ((Dek > 4) || (Dek == 0));
            if (((ThNum > 2) && In234) || ((ThNum == 2) && (Dek == 1))) return "а";
            else if ((ThNum > 2) && More4) return "ов";
            else if ((ThNum == 2) && In234) return "и";
            else return "";
        }
    }
}
Добавлено через 16 часов 56 минут
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication19
{
    class vvod
    {
        Int64 res;
        public double Insert(string name_k)
        {
            bool ok = false;
            Console.WriteLine("Введите, пожалуйста, число " + name_k);
            do
            {
                string vvodimoe = Console.ReadLine();
                ok = Int64.TryParse(vvodimoe, out res);
                if (!ok)
                {
                    Console.WriteLine("Введенные Вами данные не являются числом; повторите ввод числа " + name_k);
                }
                else
                {
                    ok = true;
                }
            } while (!ok);
 
            return res;
        }
 
    }
}
это класс для ввода, начинаю его прикрычивать
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication19
{
    class Program : NumByWords
    {
        public static void Main(string[] args)
        {
            int number = vvod.Insert("Введите число");
            Console.WriteLine(NumPhrase(12345, false));
            Console.ReadKey();
        }
    }
}
вылетает ошибка :Для нестатического поля, метода или свойства требуется ссылка на объект

не пойму где и в чём проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2011, 15:53
Ответы с готовыми решениями:

Ввод числа прописью до 1000000
Нашел тут программу с прописью чисел до 3000, как её дополнить до 1000000? uses Crt; type nazw...

Программа пишет все числа до числа n, а надо n чисел положительных и нечетных
Дано имя файла и целое число N (&gt; 1). Создать файл целых чисел с данным именем и записать в него N...

Доделать программу "числа прописью" - расширить диапазон чисел
Вот у меня есть программа для написания чисел прописью,но она работает только с числами до 1000 не...

Пользователь вводит с клавиатуры целые числа. Чтобы закончить ввод – необходимо ввести 0. Вывести негативные числа.
Пользователь вводит с клавиатуры целые числа. Чтобы закончить ввод – необходимо ввести 0. Вывести...

2
138 / 138 / 42
Регистрация: 02.11.2010
Сообщений: 316
22.12.2011, 16:25 2
Проблема в том, что Вы используете объект не статического класса vvod. Компилятор просит либо создать объект класса, либо сделать его статическим:
C#
1
static class vvod
или
C#
1
2
vvod a = new vvod();
int number = a.Insert("Введите число");
1
17 / 17 / 5
Регистрация: 27.11.2011
Сообщений: 141
22.12.2011, 17:47  [ТС] 3
тогда пишет что нельзя объявлять члены экземпляра в статическом классе

Добавлено через 13 минут
сделал, всм спасибо за советы.
0
22.12.2011, 17:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2011, 17:47
Помогаю со студенческими работами здесь

Дана матрица 4х4. Для каждого столбца найти и вывести суму значений, что больше заданого числа А.Ввод числа с клавиатуры
срочно нужно, а я не знаю как решить.

Программа, выводящая прописью чётные числа массива.
В синтаксисе ошибок нет. При вводе кол-ва элементов выдаёт: &quot;Необработанное исключение в...

Программа, которая организует ввод с клавиатуры одномерного массива и удаляет из массива все числа пропорциональные 5
1).Дан массив целых чисел (i:=1 to n); После каждого четного числа нужно вставить в массив &quot;0&quot;. ...

Ввод числа с клавиатуры
нужно ввести с клавиатуры число(будущее количество эл-в маллива). число от 1 до 30, те: 1)если...

Ввод числа с клавиатуры
Дано действительное число R вида nnn.ddd(три цифровых разряда в дробной и целой частях). Поменять...

Ввод числа Пи с клавиатуры
Можно ли в Visual Basic ввести число \pi с клавиатуры?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru