Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Alex_lt
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 25
#1

Написать функцию, возвращающую преобразованную к верхнему регистру строку, полученную в качестве аргумента - C++

08.07.2013, 00:28. Просмотров 2105. Ответов 15
Метки нет (Все метки)

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
// функция upcase
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
 
//функция преобразования строчных букв в прописные
char* upcase(char *st)
{
      
      int i = 0;
      while ( st[i] )
      {
            if (st[i] >= 'a' && st[i] <= 'z' ||  // латинские
                st[i] >= 'а' && st[i] <= 'п') // русские
            st[i]-= 32;
            else if ( st[i] >= 'р' && st[i] <= 'я')
            st[i]-=80;
            i++;
            }
            return st;
}
 
//  пример использования функции upcase
int main()
{
    setlocale ( LC_ALL, "Russian_Russia.1251" );     
     char st[80];
     
     puts(" Введите строку текста");
     gets(st);
     puts(upcase(st));
     getch();
}
Не могу найти ошибку.Введенные строчные русские буквы,не становятся прописными.Подскажите,что я сделал не так...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2013, 00:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать функцию, возвращающую преобразованную к верхнему регистру строку, полученную в качестве аргумента (C++):

Создать функцию, имеющую два аргумента и возвращающую в качестве аргумента число из отрезка [a,b] - C++
Создать функцию, которая будет иметь два целочисленных параметра a и b, и в качестве своего значения возвращать случайное целое число из...

Реализовать функцию Revert(s), возвращающую строку, полученную из символов, составляющих s - C++
2. Реализовать функцию Revert(s), возвращающую строку, полученную из символов, составляющих s, записанных в обратном порядке: 123ааббвв -&gt;...

Реализовать функцию Delete(s, i, n), возвращающую строку, полученную удалением из строки s n символов - C++
Реализовать функцию Delete(s, i, n), возвращающую строку, полученную удалением из строки s n символов, начиная с i-го. Не использовать...

Реализовать функцию Copy(s, i, n), возвращающую строку, полученную копированием из строки s n символов - C++
C++ 1.Реализовать функцию Copy(s, i, n), возвращающую строку, полученную копированием из строки s n символов, начиная с i-го. Не...

Реализовать функцию UnSpace(s), возвращающую строку, полученную удалением из исходной всех лишних пробелов - C++
Реализовать функцию UnSpace(s), возвращающую строку, полученную удалением из исходной всех лишних пробелов (т.е. последовательность из N...

Преобразовать к верхнему регистру заданную строку - C++
Всем доброго времени суток. все сделал, работает. Но есть одно но... Подскажите пожалуйста как сделать что бы переводило к верхнему...

15
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2013, 00:36 #2
Цитата Сообщение от Alex_lt Посмотреть сообщение
Введенные строчные русские буквы,не становятся прописными.Подскажите,что я сделал не так...
Наверное, не сделали ввод русских букв.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
В свойствах консоли выбрать шрифт: Lucida Console
1
-=ЮрА=-
Заблокирован
Автор FAQ
08.07.2013, 00:37 #3
Цитата Сообщение от Alex_lt Посмотреть сообщение
setlocale ( LC_CTYPE, "Russian_Russia.1251" );
попробуй руссифицировать не всё и конечно же лучше просто записать
setlocale ( LC_CTYPE, "RUS" );
Добавлено через 16 секунд
Alex_lt, какой компилятор?
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
08.07.2013, 00:41 #4
Цитата Сообщение от Alex_lt Посмотреть сообщение
функция преобразования строчных букв в прописные
А мне одному показалось, что тема и суть темы - противоположные вещи? Верхний регистр - это же строчные, а нижний - прописные...хотя плевать.
0
Belfegor
Ghost
173 / 173 / 6
Регистрация: 16.09.2012
Сообщений: 526
08.07.2013, 00:41 #5
вот что есть
0
Миниатюры
Написать функцию, возвращающую преобразованную к верхнему регистру строку, полученную в качестве аргумента  
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2013, 00:47 #6
Цитата Сообщение от Belfegor Посмотреть сообщение
вот что есть
У ТС собственная реализация.
0
-=ЮрА=-
Заблокирован
Автор FAQ
08.07.2013, 00:51 #7
Alex_lt, вот твой код без всяких изменений в алгоритме(только гетч заменил)
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
#include <iostream>
using namespace std;
 
//функция преобразования строчных букв в прописные
char * upcase(char * st);
 
// пример использования функции upcase
int main()
{
setlocale ( LC_CTYPE, "RUS" ); 
char st[] = "fdsfяпапврр";
 
//puts(" Введите строку текста");
//gets(st);
puts(upcase(st));
cin.get();
return 0;
} 
 
//функция преобразования строчных букв в прописные
char * upcase(char * st)
{
int i = 0;
while ( st[i] )
{
if (st[i] >= 'a' && st[i] <= 'z' || // латинские
st[i] >= 'а' && st[i] <= 'п') // русские
st[i]-= 32;
else if ( st[i] >= 'р' && st[i] <= 'я')
st[i]-=80;
i++;
}
return st;
}
Компилировалось на VisualStudio 9.0 на 6-ке скажем setlocale не отработает, так что вопрос по компилятору оставил открытым
1
Миниатюры
Написать функцию, возвращающую преобразованную к верхнему регистру строку, полученную в качестве аргумента  
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2013, 01:00 #8
Так тоже работает:
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
// функция upcase
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
 
 using namespace std;
 
 //функция преобразования строчных букв в прописные
 char* upcase(char *st)
 {
     int i = 0;
     while ( st[i] )
     {
         if (st[i] >= 'a' && st[i] <= 'z' || // латинские
         st[i] >= 'а' && st[i] <= 'я') // русские
         st[i]-= 32;
         i++;
     }
     return st;
 }
 
 // пример использования функции upcase
 int main()
 {
     //setlocale ( 0, "" );
     SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
     char st[80];
 
     puts(" Введите строку текста");
     gets(st);
     puts(upcase(st));
     getch();
 }
0
Миниатюры
Написать функцию, возвращающую преобразованную к верхнему регистру строку, полученную в качестве аргумента  
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2013, 01:45 #9
Только для 'ё' нужно добавить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char* upcase(char *st)
 {
     int i = 0;
     while ( st[i] )
     {
         if (st[i] == 'ё') st[i]-= 16;
         else
         if (st[i] >= 'a' && st[i] <= 'z' || 
         st[i] >= 'а' && st[i] <= 'я') 
         st[i]-= 32;
         
         i++;
     }
     return st;
 }
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
08.07.2013, 03:55 #10
Проще подключить библиотеку cctype. И там есть функции tolower(нижний регистр), toupper(верхний регистр).
Вот еще русский язык в консоле:
Подключаешь #include <Windows>.
И прям в main пишешь
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

Профит!
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2013, 04:05 #11
Цитата Сообщение от Bend3r Посмотреть сообщение
Вот еще русский язык в консоле:
Подключаешь #include <Windows>.
И прям в main пишешь
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Второй и пятый пост прочтите.
0
Croessmah
08.07.2013, 04:13
  #12

Не по теме:

Цитата Сообщение от Bend3r Посмотреть сообщение
Вот еще русский язык в консоле:
Подключаешь #include <Windows>.
Где такой файл взять - windows

1
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
08.07.2013, 04:18 #13
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


Где такой файл взять - windows

Библиотека такая есть. В ней много всякого полезного. (ссылка)

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Второй и пятый пост прочтите.
Я читаю первый пост, знаю пишу, не знаю значит закрываю вкладку.
0
Croessmah
08.07.2013, 04:23
  #14

Не по теме:

Цитата Сообщение от Bend3r Посмотреть сообщение
Библиотека такая есть
первый раз слышу. А по ссылке про хедер windows.h

0
alsav22
08.07.2013, 04:25     Написать функцию, возвращающую преобразованную к верхнему регистру строку, полученную в качестве аргумента
  #15

Не по теме:

Цитата Сообщение от Bend3r Посмотреть сообщение
Я читаю первый пост, знаю пишу, не знаю значит закрываю вкладку.
Свои знания демонстрируете?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2013, 04:25
Привет! Вот еще темы с ответами:

Функция, которая приводит строку к верхнему регистру - C++
Написать функцию, которая приводит строку к верхнему регистру. Проиллюстрировать работу функции примером

Написать функцию, возвращающую максимальное из двух целых чисел, полученных в качестве аргументов - C++
1)Написать функцию, которая возвращает максимальное из двух целых чисел, полученных в качестве аргумента. (функции) #include &lt;iostream.h&gt;...

Написать функцию,удаляющую из строки первое слово и возвращающую его в качестве значения - C++
Написать функцию,удаляющую из строки первое слово и возвращающую его в качестве значения.

Напишите функцию, принимающую два аргумента, изменяющую значение второго аргумента и возвращающую void - C++
Помогите, пожалуйста:( Напишите функцию add_tax типа void. У нее два формальных параметра: taxRate, значение которого представляет налог...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru