
Преобразование чисел в строку и обратно
В жизни программиста часто возникают ситуации, когда необходимо преобразовать int в char и обратно.
Функции: double atof( char *string );
int atoi( char *string );
long atol( char *string );
long double _atold( char *string );
Как видно данные функции преобразуют символьную строку в число. Пример:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
char *Str="123456";
int i;
i = atoi(Str);
cout<<i;
return 0;
}
Теперь наоборот, из число в символьную строку.
char *itoa( int value, char *string, int radix );
char *ltoa( long value, char *string, int radix);
char *ultoa( unsigned long value, char*string, int radix );
Пример:
#include <iostream.h>
#include <stdlib.h>
int main()
{
char * szString = new char[17];
int i = 1234567890;
itoa(i,szString,10);
cout<<szString;
return 0;
}
Задача 1. Дана строка символов, подсчитать сколько раз среди символов строки встречается буква x.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int count=0;
string str;
cout<<"Enter string "; cin>>str;
for (int i=0;i<str.length(); i++)
if (str[i]=='x') ++count;
cout << "Numb char 'x': "<<count<<endl;
return 0;
}
Задача 2. Написать программу, которая получает от пользователя набор символов, исключая пробел, и удаляет из этого набора все вхождения символов S и s.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int count=0;
string str;
cout<<"Enter string "; cin>>str;
for (int i=0;i<str.length(); i++)
{
if ((str[i]=='s')||(str[i]=='S')) {str.erase(i,1); i--;}
}
cout << str<<" "<<str.length();
return 0;
}
Задача 4. Написать программу, которая получает от пользователя набор символов, заменяет цифры знаком *.
Isdigit возвращает ненулевое значение если str[I] цифра ('0'-'9') (ctype.H)
#include <iostream>
#include <string>
#include <ctype.h>
using namespace std;
int main()
{
string str;
cout<<"Enter string "; cin>>str;
for(int i = 0; i < str.length(); ++i)
if (isdigit(str[i])) str[i] = '*';
cout << str;
return 0;
}
Задача 5. Дан текст. Определить количество предложений в тексте.
! Чтение введенной с клавиатуры строки getline(cin, s1);
Задача 6. Дано предложение. Определить количество слов в нем.
Задача 7. Дано предложение. Определить в нем слово максимальной длины.
Задача 8. Дан текст. Определить в нем самое короткое предложение.
Задача 9 Установить, является ли данное слово словом "перевертышем". Перевертыши (палиндромы) - это слова, которые читаются одинаково слева направо и справа налево: "поп", "довод", "доход", "потоп", "топот", "наган", "заказ", "казак", "шалаш". Многие любители словесных развлечений увлекаются составлением предложений, а то и маленьких рассказов или стихов, которые одинаково читаются в обе стороны. Вот несколько смешных фраз палиндромов:
"Аргентина манит негра",
"Торт с кофе не фокстрот",
"И любит Сева вестибюли",
"Удавы рвали лавры в аду",
"Я и ты будем в меду бытия",
"Я не мил - и не женили меня",
"Укроп наворован? Порку! А ремень - не мера",
"Лилипут сома на мосту пилил",
"Ах, у печали мерило, но лире мила чепуха!"
А вот двустишие Д. Авалиани, в котором безупречный гомеровский гекзаметр сочетается с прямым обращением к великому эллину:
"Море могуче. В тон ему,
шумен, отвечу Гомером:
Море, веру буди - ярок,
скор, я иду буревером..."
Палиндромы придумывали многие поэты. Забавный перевертыш "А роза упала на лапу Азора" принадлежит великому русскому поэту А. Фету, другой знаменитый поэт Г. Державин сказал: "Я иду с мечом, судия", а замечательный русский поэт В.Хлебников, кстати увлекавшийся математикой, написал целое стихотворение "Перевертень", где все строчки можно прочитать в обратном порядке.