Форум программистов, компьютерный форум CyberForum.ru

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

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

Поменять строчные буквы на заглавные C++
В алфавитной строке перевести строчные буквы в заглавные и заглавные в строчные C++
Ввести символьную строку и заменить все буквы "а" на буквы "б" и наоборот, как заглавные, так и строчные. C++
C++ Преобразовать строчные буквы в заглавные
Составить рекурсивную функцию, которая определяет наибольшую цифру, и заменяет все строчные латинские буквы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TSed
19 / 19 / 1
Регистрация: 22.01.2013
Сообщений: 76
22.01.2013, 23:58     Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные #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;
}
booker
 Аватар для booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
23.01.2013, 01:06     Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные #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 минут
ни чё не пойму с массивом работает с указателями нема может кто прокомментирует?
shur1kk
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 20
23.01.2013, 01:10  [ТС]     Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные #4
я еще не вник в саму программу что вы написали)
booker
 Аватар для booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
23.01.2013, 01:34     Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные #5
здесь манипуляции с отдельными битами и это upper т.е. преобразует в заглавные, но однако всёравно не работает

Добавлено через 10 минут
такая строчка, в теории *(str+n)=*(str+n)&255; должна преобразовывать в строчные
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
23.01.2013, 07:42     Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные #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;
}
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
23.01.2013, 09:55     Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные #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; должна преобразовывать в строчные
А во что она преобразует пробелы и восклицательный знак?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2013, 12:25     Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные
Еще ссылки по теме:

Создать функцию SWAP, преобразующую заглавные буквы передаваемой ей строки в строчные и наоборот C++
Работа со строкой (удалить все цифры, подсчитать количество и сумму удаленных цифр, заменить все заглавные латинские буквы на строчные) C++
C++ Все заглавные буквы строки нужно перевести в нижний регистр

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

Или воспользуйтесь поиском по форуму:
booker
 Аватар для booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
23.01.2013, 12:25     Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные #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
Yandex
Объявления
23.01.2013, 12:25     Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные
Ответ Создать тему
Опции темы

Текущее время: 22:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru