Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,064
1

Упорядочить количество символов

03.05.2015, 17:44. Показов 1066. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добро всем
У меня не очень сложная задача:
исходные данные состоят из цифр могут быть пяти, трех, четырех, двух значными, а мне надо чтоб были шестизначными, я решил задачу путем добавления спереди нолей и нужное количество определяю при помощи помощи условия if:
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
//добавляю нули к исходным данным
AnsiString abid; //исходные данные
AnsiString Lic; //переменная для получения искомого результата
 int let = 0;
      let = 6-abid.Length(); // определяю на сколько исходные данные меньше положенных 6 символов
      //добавляю нули 
      if(let == 0) // если шесть то все нормально
        {
        Lic = abid;
        }
      if(let == 1) //если из пяти то добавляю один ноль
        {
        Lic = "0"+abid;
        }
      if(let == 2)
        {
        Lic = "00"+abid;
        }
      if(let == 3)
        {
        Lic = "000"+abid;
        }
      if(let == 4)
        {
        Lic = "0000"+abid;
        }
      if(let == 5)
        {
        Lic = "00000"+abid;
        }
  //отображаю результат
  Edit5->Text=Lic;
Код работает но сделал я его по дилетантский
Вопрос может както кошерней можно сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2015, 17:44
Ответы с готовыми решениями:

Дана последовательность символов, в начале которой имеется некоторое количество одинаковых символов. Определить это количество
8.10.2. Помогите, пожалуйста, решить задачу в С++. Дана последовательность символов, в начале...

Найти количество символов всех строк файла и количество символов в определенной строке
Здравствуйте! Я хотел бы попросить помощи в решении задачки! У меня не получается найти...

Найти количество символов в строке, найти заданные буквы, разделить количество букв на количество символов
Написать код который сперва подсчитывает количество символов в строке а потом из этих находит буквы...

Посчитать количество пробелов, количество букв, количество знаков пунктуации и количество всех символов
дан файл, в файле содержатся буквы лат. алфавита, знаки пунктуации, пробелы и цифры. по нажатию на...

12
2 / 2 / 0
Регистрация: 17.04.2015
Сообщений: 7
03.05.2015, 17:51 2
Используй switch.
C++
1
2
3
4
5
6
switch (let)
{ case 0:
       {
         .....;
          break;
        }
Case можно создовать сколько угодно.Только в конце каждого не забудь break .
1
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,064
03.05.2015, 17:55  [ТС] 3
Цитата Сообщение от Gant26 Посмотреть сообщение
Используй switch
Спасибо уже точно лучше моего варианта, но почти тоже самое будет по размерам, только сравнит один раз, а далее все равно шесть результатов...
0
2 / 2 / 0
Регистрация: 17.04.2015
Сообщений: 7
03.05.2015, 18:02 4
попробуй так : Пусть входное значение 3 символа ,а нужно 6 .6-3=3 . 3 символа прибавить к входному значению .
Вот подумай как реализовать это циклами.
1
случайный прохожий
2934 / 1951 / 606
Регистрация: 20.07.2013
Сообщений: 5,160
03.05.2015, 19:36 5
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

C++
1
2
3
4
5
6
7
String MyFormatString (String number, int digits)
{
  String res = number;
  for (int i = 1; i <= digits-number.Length(); i++)
    res = "0" + res;
  return res;
}
C++
1
MyFormatString("125", 6);  // вернет строку "000125" без кавычек, т.е. 000125
1
108 / 49 / 26
Регистрация: 24.10.2012
Сообщений: 56
03.05.2015, 19:50 6
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

C++
1
2
3
AnsiString abid = "66"; //исходные данные
AnsiString Lic = AnsiString().sprintf("%.6d", abid.ToInt()); 
Edit5->Text = Lic;
1
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,064
03.05.2015, 19:56  [ТС] 7
Цитата Сообщение от SergeyKu Посмотреть сообщение
AnsiString abid = "66"; //исходные данные
AnsiString Lic = AnsiString().sprintf("%.6d", abid.ToInt());
Edit5->Text = Lic;
Спасибо большое, то что надо!
А этот ужас можно так же сделать чтоб было все по феншую?
C++
1
2
3
4
5
6
7
8
9
10
11
if (Edit6->Text == "02"){Edit6->Text = "Январь";}
 if (Edit6->Text == "03"){Edit6->Text = "Февраль";}
 if (Edit6->Text == "04"){Edit6->Text = "Март";}
 if (Edit6->Text == "05"){Edit6->Text = "Апрель";}
 if (Edit6->Text == "06"){Edit6->Text = "Май";}
 if (Edit6->Text == "07"){Edit6->Text = "Июнь";}
 if (Edit6->Text == "08"){Edit6->Text = "Июль";}
 if (Edit6->Text == "09"){Edit6->Text = "Август";}
 if (Edit6->Text == "10"){Edit6->Text = "Сентябрь";}
 if (Edit6->Text == "11"){Edit6->Text = "Октябрь";}
 if (Edit6->Text == "12"){Edit6->Text = "Ноябрь";}
0
108 / 49 / 26
Регистрация: 24.10.2012
Сообщений: 56
03.05.2015, 20:54 8
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

))
C++
1
2
3
4
5
6
7
AnsiString months[12] = {"Январь", "Февраль", "Март", "Апрель", "Май", 
    "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"};
int i = Edit6->Text.ToIntDef(0) - 2;
if(i >= 0 && i < 12)
{
    Edit6->Text = months[i]; 
}
1
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,064
03.05.2015, 21:04  [ТС] 9
Спасибо!
0
Модератор
9256 / 6034 / 2379
Регистрация: 21.01.2014
Сообщений: 25,793
Записей в блоге: 3
04.05.2015, 06:05 10
C++
1
2
3
4
5
6
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int i;
  if((TryStrToInt(Edit1->Text, i)) && (i >= 0 && i <= 11))
   Edit1->Text = LongMonthNames[i];
}
2
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
05.05.2015, 22:26 11
Цитата Сообщение от D1973 Посмотреть сообщение
void __fastcall TForm1::Button1Click(TObject *Sender)
{
* int i;
* if((TryStrToInt(Edit1->Text, i)) && (i >= 0 && i <= 11))
* *Edit1->Text = LongMonthNames[i];
}
D1973, Под шестёркой твой код работает привосходно, а чтоб работал под высшими версиями к примеру XE4, то необходимо сделать так

C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm2::Button1Click(TObject *Sender)
{
  TFormatSettings FormatSettings;
  FormatSettings = FormatSettings.Create();
  int i;
 
  if((TryStrToInt(Edit1->Text, i)) && (i >= 0 && i <= 11))
  {
    Edit1->Text = FormatSettings.LongMonthNames[i];
  }
}
Добавлено через 1 час 13 минут
Это я так для будущего поколения привёл код, чтобы потом не было лишних вопросов )))))
2
Модератор
9256 / 6034 / 2379
Регистрация: 21.01.2014
Сообщений: 25,793
Записей в блоге: 3
06.05.2015, 06:01 12
Sasha, все правильно, я на BCB6 и ориентировался, а в последних версиях - это да, все верно, только вот код этот будет работать и без первых 2-х строк (проверял на ХЕ3)
А по поводу "будущих поколений" ... Поиском бы ему, поколению этому, пользоваться бы научиться бы (во, сколько "бы" )
1
Модератор
9256 / 6034 / 2379
Регистрация: 21.01.2014
Сообщений: 25,793
Записей в блоге: 3
06.05.2015, 06:03 13
Вот, кстати, пример, чтобы голословным не быть
Миниатюры
Упорядочить количество символов  
1
06.05.2015, 06:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2015, 06:03
Помогаю со студенческими работами здесь

Определить количество букв, количество цифр и количество остальных символов, присутствующих в строке
Дана строка. Определить количество букв, количество цифр и количество остальных символов,...

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

Подсчитать количество букв, количество слов и количество символов в тексте
Дан текст, который состоит из слов. Слова в тексте отделяются одно от другого символом *....

Подсчитать количество символов ‘c’ и ‘d’ во введенной строке и определить, каких из символов больше
Подсчитать количество символов ‘c’ и ‘d’ во введенной строке и определить, каких из символов ‘c’...


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

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