Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите решить

Ответить
Настройки темы
C/C++ - Помогите решить

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Написать аналог функции UpperCase (в большие должны превращаться только латинские буквы).

Отправлено: 19:42, 24-12-2015

 

Аватара для K.A.V.

Ленивый кусок мяса


Contributor


Сообщения: 1986
Благодарности: 723

Профиль | Сайт | Отправить PM | Цитировать


Помещаете текстовую строку в массив символов, затем проходитесь по каждому элементу массива со сравнением, если элемент массива латинская маленькая буква - переводите её в большую буковку. Сравнение элемента массива делаете непосредственно с конкретной буквой в латинском алфавите, типа такого:
Код: Выделить весь код
			
if (m_templinebuf[i] == 'a')
  m_templinebuf[i] = 'A';
else if (m_templinebuf[i] == 'b')
  m_templinebuf[i] = 'B';
else if (m_templinebuf[i] == 'c')
  m_templinebuf[i] = 'C';

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]


Отправлено: 13:37, 27-12-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Зачем так много сравнений, зачем массив? Просто пробегаемся указателем до конца строки, проверяя диапазон кода символа от 'a' до 'z', и при попадании вычитаем от него разницу ('a'-'A').

Отправлено: 21:00, 27-12-2015 | #3


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата Iska:
Зачем так много сравнений, зачем массив? Просто пробегаемся указателем до конца строки, проверяя диапазон кода символа от 'a' до 'z', и при попадании вычитаем от него разницу ('a'-'A'). »
Понял твою идею, но не понял немного что из чего вычитается?

Код 'A' = 65, 'a' = 97, если вычитать 97 - 65, то мы получим разницу, т.е. 32 и на всех парах B = b, C = c эта разница 32 неизменна

UpperCase
Код: Выделить весь код
65 = A
66 = B
67 = C
68 = D
69 = E
70 = F
71 = G
72 = H
73 = I
74 = J
75 = K
76 = L
77 = M
78 = N
79 = O
80 = P
81 = Q
82 = R
83 = S
84 = T
85 = U
86 = V
87 = W
88 = X
89 = Y
90 = Z

LowerCase
Код: Выделить весь код
97 = a
98 = b
99 = c
100 = d
101 = e
102 = f
103 = g
104 = h
105 = i
106 = j
107 = k
108 = l
109 = m
110 = n
111 = o
112 = p
113 = q
114 = r
115 = s
116 = t
117 = u
118 = v
119 = w
120 = x
121 = y
122 = z


У меня ничего не приходит на ум кроме как такого изврата.

Код: Выделить весь код
...
   AnsiString str = "MySting#1TeSt-результат проверки";
   AnsiString newstr = "";
   int len = str.Length();
   char *ch;
   ch = str.c_str();

   for(int i = 0; i <= len; i++){
	  if(97 <= (int)ch[i] && 122 >= (int)ch[i])
		 newstr += ch[i];
	  else if(65 <= (int)ch[i] && 90 >= (int)ch[i])
		 newstr += char((int)ch[i] + 32);
	}
   Memo1->Lines->Add(newstr);
...
P.S. Немного наоборот сделал: UpperCase -> LowerCase

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 14:35, 31-12-2015 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Drongo:
Код 'A' = 65, 'a' = 97, если вычитать 97 - 65, то мы получим разницу, т.е. 32 и на всех парах B = b, C = c эта разница 32 неизменна »
Ну да. Просто не писать её «ручками», как константу, а однократно определять эту разницу через любую пару «строчная - ЗАГЛАВНАЯ».

Цитата Drongo:
но не понял немного что из чего вычитается? »
Из кода символа вычитается эта самая постоянная разница, т.е.:
Код: Выделить весь код
Новый_код_символа = Старый_код_символа - (Код_символа_a - Код_символа_A)

Отправлено: 16:05, 31-12-2015 | #5


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Срочно нужна помощь!!!! с командировки задержался а завтра последний день сдачи, не оставайтесь равнодушными!!)) надо на с++ 6 заданий сделать:

1) Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число – номер вертикали при счете слева направо, второе – номер горизонтали при счете снизу вверх. Даны натуральные числа k, l, m, n, каждое из которых не превосходит восьми. На поле (k,l) расположен слон. Угрожает ли он полю (m,n) )?

2) Дан правильный N-угольник с центром в точке (X, Y) и с радиусом описанной окружности R. Найти координаты всех вершин многоугольника.

3) Дана строка символов. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелы внутри себя, будем называть словами. Найти слова, у которых первый и последний символы совпадают. Подсчитать их количество.

4) Изобразить на экране прямоугольник с круглым отверстием, стороны которого окрашены в разные цвета, вращающийся вокруг горизонтальной или вертикальной оси с постоянной угловой скоростью.

5) Дан текстовый файл F. Переписать в другой файл G все строки, содержащие цифры.

6) Дан файл координат вершин ломаной линии на плоскости. Определить, имеет ли ломаная линия самопересечения, если да, то записать в файл G координаты точек самопересечения.

Отправлено: 03:12, 04-02-2016 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите решить

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Помогите решить!!! C++ drimis Программирование и базы данных 3 07-01-2018 08:46
помогите решить RustamMS Лечение систем от вредоносных программ 5 04-10-2013 10:19
Помогите решить! Анастасия_Сергейчик@vk Ноутбуки 2 30-05-2013 12:18
Разное - Помогите решить mike38 Программирование и базы данных 1 26-03-2011 18:47
C/C++ - Помогите решить elektra192 Программирование и базы данных 14 19-12-2007 18:00




 
Переход