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

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

Войти
Регистрация
Восстановить пароль
 
shur1kk
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 20
#1

Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные - C++

22.01.2013, 21:12. Просмотров 1022. Ответов 7
Метки нет (Все метки)

Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные
С помощью этой функции преобразовать строку «Happy New Year!».
(кавычки тоже входят в строку).
Результат вывести на экран
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2013, 21:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные (C++):

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

В алфавитной строке перевести строчные буквы в заглавные и заглавные в строчные - C++
В заданой алфавитной строке перевести строчные буквы в заглавные и заглавные в строчные. Со строковыми функциями еще не доводилось...

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

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

Преобразовать в строке строчные (малые) буквы русского алфавита в прописные (заглавные) - C++
Написать программу, которая в введенной с клавиатуры строке преобразует строчные (малые) буквы русского алфавита в прописные (заглавные).

Ввести символьную строку и заменить все буквы "а" на буквы "б" и наоборот, как заглавные, так и строчные. - C++
1. Ввести символьную строку и заменить все буквы "а" на буквы "б" и наоборот, как заглавные, так и строчные. Пример: Введите...

7
TSed
20 / 20 / 1
Регистрация: 22.01.2013
Сообщений: 76
22.01.2013, 23:58 #2
Как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;
string input;
int main ()
{
    getline (cin, input);
    for (int i=0; i<input.size(); i++)
    {
        if (isupper(input[i])) input[i]=tolower(input[i]);
    }
    cout<<input<<endl;
    system ("pause");
    return 0;
}
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
23.01.2013, 01:06 #3
Шилд рекомендует использовать поразрядное И

Добавлено через 29 минут
но у меня чето не работает

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
 
void LOWER (char*);
 
int main()
{
    char* phrase= "Happy New Year!";
    LOWER(phrase);
    std::cout<<phrase;
 
    system ("pause");
    return 0;
}
 
void LOWER(char* str)
{
    for(int n=0;n<strlen(str);n++)
    *(str+n)=*(str+n)&223;
}
Добавлено через 29 минут
ни чё не пойму с массивом работает с указателями нема может кто прокомментирует?
0
shur1kk
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 20
23.01.2013, 01:10  [ТС] #4
я еще не вник в саму программу что вы написали)
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
23.01.2013, 01:34 #5
здесь манипуляции с отдельными битами и это upper т.е. преобразует в заглавные, но однако всёравно не работает

Добавлено через 10 минут
такая строчка, в теории *(str+n)=*(str+n)&255; должна преобразовывать в строчные
0
Пaтрик
416 / 391 / 39
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
23.01.2013, 07:42 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cctype>
#include <iostream>
#include <string>
 
template < typename iterator >
void lower(iterator first, iterator last)
{
    while (first != last)
    {
        *first = tolower(*first);
        ++first;
    }
}
 
int main()
{
    std::string s1("Happy New Year!");
    lower(s1.begin(), s1.end());
    std::cout << s1 << std::endl;
}
Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
 
void lower(std::string& s)
{
    std::transform(s.begin(), s.end(), s.begin(), tolower);
}
 
int main()
{
    std::string s1("Happy New Year!");
    lower(s1);
    std::cout << s1 << std::endl;
}
1
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
23.01.2013, 09:55 #7
Цитата Сообщение от booker Посмотреть сообщение
с массивом работает с указателями нема
C++
1
char* phrase= "Happy New Year!";
Создается строковый литерал и его адрес записывается в указатель phrase. Строковый литерал - константа, его нельзя изменить, например:
C++
1
phrase[2] = 'x'; // ошибка
Вообще правильным будет объявление указателя на константные данные:
C++
1
const char* phrase= "Happy New Year!";
Тогда будет ясно, почему функция не работает.

Выход - объявить массив вместо указателя, его элементы можно будет изменять.
C++
1
char phrase[] = "Happy New Year!";
Цитата Сообщение от booker Посмотреть сообщение
такая строчка, в теории *(str+n)=*(str+n)&255; должна преобразовывать в строчные
А во что она преобразует пробелы и восклицательный знак?
1
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
23.01.2013, 12:25 #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
36
37
38
39
40
41
42
43
#include<iostream>
 
using namespace std;
void UPPER (char*); //преобразует в заглавные
void LOWER (char*); //преобразует в строчные
 
int main()
{
    char phrase[] = "Happy New Year!";
    
    std::cout<<phrase<<endl;
    
    LOWER(phrase);
    std::cout<<phrase<<endl;
    
    UPPER(phrase);
    std::cout<<phrase<<endl;
 
    system ("pause");
    return 0;
}
 
void UPPER(char str[])
{
    int len = strlen(str);
    for(int n=0;n<len;n++)
    {
        if(isalpha(str[n]))
        str[n]=str[n]&223;
        else continue;
    }
}
 
void LOWER (char str[])
{
    int len = strlen(str);
    for(int n=0;n<len;n++)
    {
        if(isalpha(str[n]))
        str[n]=str[n]|32;
        else continue;
    }
}
рабочий вариант для строк в стиле C
1
23.01.2013, 12:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2013, 12:25
Привет! Вот еще темы с ответами:

Работа со строкой (удалить все цифры, подсчитать количество и сумму удаленных цифр, заменить все заглавные латинские буквы на строчные) - C++
Из заданной строки удалить все цифры, подсчитать количество и сумму удаленных цифр, заменить все заглавные латинские буквы на строчные

Перевести строчные буквы строки в прописные - C++
Подскажите, как исправить ошибку в коде: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; void main(){ ...

Все заглавные буквы строки нужно перевести в нижний регистр - C++
Нужно составить функцию, принимающую аргумент типа string и проводящую над ним некоторые действия: во-первых, все заглавные буквы нужно...

Составить рекурсивную функцию, которая определяет наибольшую цифру, и заменяет все строчные латинские буквы - C++
Вообщем снова рекурсия на С++, ну не дружу я с ней:(. Вообщем, смысл задачи: дана строка символов, составить рекурсивную функцию, которая...


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

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

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