19.09.2008, 16:29
общий
это ответ
Здравствуйте, !
В приложении 4 способа решения задачи:
- Без использования указателей;
- C использованием указателей;
- C использованием метода индексирования указателей;
- C использованием метода передачи строки как аргумента
Также используются функции isupper(), islower(), toupper() и tolower().
функция isupper() возвращает истину, если буква прописная;
Функция islower() возвращает истину, если буква строчная;
функция toupper() изменяет регистр строчной буквы на регистр прописной;
Функция tolower() изменяет регистр прописной буквы на регистр строчной;
Для обеспечения работы с этим функциями - подключаем заголовок <cctype>.
Будут вопросы по коду - задавайте в мини-форум вопроса.
Удачи!!!
Приложение:
//Без использования указателей
//Заголовок потокового ввода-вывода
#include <iostream>
//Заголовок для поддержки функции gets()
#include <cstdio>
//Заголовок для поддержки функций toupper(), tolower(), isupper(), islower()
#include <cctype>
using namespace std;
int main()
{
//Объявляем строку с именем str на 100 символов
char str[100];
cout << " Vvedyte stroku: (latynskymy bukvamy): ";
//Ввод строки с клавиатуры
gets(str);
cout << endl << " Ishodnaya stroka: " << str << endl << endl;
//Цикл, в котором, перебирается вся строка и меняется регистр каждого символа на противоположный
for(int i = 0; str[i]; i++)
{
if(islower(str[i])) str[i] = toupper(str[i]);
else if(isupper(str[i])) str[i] = tolower(str[i]);
}
cout << " Stroka s invertyrovannym regystrom bukv: " << str << endl << endl;
return 0;
}
//C использованем указателей
//Заголовок потокового ввода-вывода
#include <iostream>
//Заголовок для поддержки функции gets()
#include <cstdio>
//Заголовок для поддержки функций toupper(), tolower(), isupper(), islower()
#include <cctype>
using namespace std;
int main()
{
//Объявляем строку с именем str на 100 символов
char str[100];
//Объявляем указатель
char *s;
cout << " Vvedyte stroku: (latynskymy bukvamy): ";
//Ввод строки с клавиатуры
gets(str);
cout << endl << " Ishodnaya stroka: " << str << endl << endl;
//Присваиваем указателю s адрес начала массива
s = str;
//Пока не достигли конца строки, т.е. 0 - символа, меняем регистр каждого символа на противоположный
while(*s)
{
if(isupper(*s))
*s = tolower(*s);
else if(islower(*s))
*s = toupper(*s);
s++;
}
cout << " Stroka s invertyrovannym regystrom bukv: " << str << endl << endl;
return 0;
}
//C использованием метода индексирования указателей
//Заголовок потокового ввода-вывода
#include <iostream>
//Заголовок для поддержки функции gets()
#include <cstdio>
//Заголовок для поддержки функций toupper(), tolower(), isupper(), islower()
#include <cctype>
using namespace std;
int main()
{
//Объявляем строку с именем str на 100 символов
char str[100];
//Объявляем указатель
char *s;
cout << " Vvedyte stroku: (latynskymy bukvamy): ";
//Ввод строки с клавиатуры
gets(str);
//Присваиваем указателю s адрес начала массива
s = str;
cout << " Ishodnaya stroka: " << str << endl;
//Цикл, в котором, перебирается вся строка и меняется регистр каждого символа на противоположный
for(int i = 0; s[i]; i++)
{
if(islower(s[i])) s[i] = toupper(s[i]);
else if(isupper(s[i])) s[i] = tolower(s[i]);
}
cout << " Stroka s invertyrovannym regystrom bukv: " << str << endl << endl;
return 0;
}
//C использованием метода передачи строки (адреса начала строки) как аргумента
//Заголовок потокового ввода-вывода
#include <iostream>
//Заголовок для поддержки функции gets()
#include <cstdio>
//Заголовок для поддержки функций toupper(), tolower(), isupper(), islower()
#include <cctype>
using namespace std;
//Объявляем прототип функции invert_reg
void invert_reg(char *str);
int main()
{
//Объявляем строку с именем str на 100 символов
char str[100];
cout << " Vvedyte stroku: (latynskymy bukvamy): ";
//Ввод строки с клавиатуры
gets(str);
cout << endl << " Ishodnaya stroka: " << str << endl << endl;
//Вызов функции
invert_reg(str);
cout << " Stroka s invertyrovannym regystrom bukv: " << str << endl << endl;
return 0;
}
//Описание работы функции
void invert_reg(char *str)
{
//Цикл, в котором, перебирается вся строка и меняется регистр каждого символа на противоположный
for(int i = 0; str[i]; i++)
{
if(islower(str[i])) str[i] = toupper(str[i]);
else if(isupper(str[i])) str[i] = tolower(str[i]);
}
}