Лабораторная работа 2. Работа со строками и файлами.
Цель работы: освоить функции обработки строк класса string и файлами класса fstream
Отчет предоставить преподавателю в виде текста отлаженной программы с результатами счета и тестовым примером, сопроводив блок-схемой алгоритма.
Пояснения.
Строку с исходными данными необходимо предварительно набрать и сохранить в текстовом файле. Чтение данных из файла см. в примере программы. Рассмотрим основные методы работы со строками класса string.
string st, str; int l,p; char ch;
st.length() возвращает длину строки, например l=st.length();
st.insert(pos,строка); вставляет строка в строку st, например st.insert(p,ch); вставляет символ ch в строку st после символа с номером p.
st.find(строка) возвращает индекс первого вхождения строка в st, например р=st.find(str);
st.erase(pos,size); удаляет подстроку длиной size из строки st, начиная с позиции pos
Строка обрабатывается как одномерный массив посимвольно, для перевода символьной цифры в целое число можно вычесть 48, например, p=st[i]-48. Строки можно сравнивать обычной операцией ==.
// Задана последовательность идентификаторов, разделенная сериями пробелов //и заканчивающаяся *, данные заданы предварительно в текстовом файле. Имя //файла вводится в программе. Требуется в идентификаторе минимальной длины //определить количество букв
# include // класс для работы с вводом-выводом
# include // для функции CharToOem(text, bufRus);
# include // класс для работы с файлом
# include // класс для работы со строками
char* Rus(const char* text); // прототип функции Rus
void main()
{using namespace std; //необходимо для работы с классом
string st,stt,str; // st исходная строка
string ch;
char name[10];
cout< cin>> name;
ifstream inf(name); //открытие файла name на чтение
getline(inf,st); //чтение из файла строки в строку st
cout<< "st="<< st < int l=0;
int k=0, i=0,min=200;
while(st[i]!='*')
{ stt= "";
while (st[i]!=' ' && st[i]!='*') // последнее слово может //заканчиваться *
{
stt+=st[i]; // stt текущее слово
i++;
}
l=stt.length();
if(l
while(st[i]==' ')i++; // пропуск серии пробелов
}
cout< for(i=0; i<(min-1);i++)
if(str[i]>='a' && str[i]<='z') k++;
cout<<"k="<
}
// Rus функция перевода на русский !!!
char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
Задана последовательность идентификаторов, разделенных сериями пробелов. Последовательность задана строкой символов (string) заканчивается символом *’.
Варианты:
Найти длину такого первого идентификатора в котором количество всех четных цифр максимально.
Найти длину такого первого идентификатора в котором произведение всех четных цифр максимально.
Найти длину такого последнего идентификатора в котором количество всех кратных трем цифр минимально.
Определить количество идентификаторов, начинающихся на гласную букву.
Определить порядковый номер идентификатора заданной длины.
Определить порядковый номер идентификатора совпадающего с заданным идентификатором.
Определить количество идентификаторов, начинающихся и заканчивающихся на
одну и ту же букву.
Вывести на экран введенную последовательность идентификаторов, предварительно заключив заданный идентификатор в кавычки.
Вывести на экран введенную последовательность идентификаторов, предварительно включив заданный идентификатор после идентификатора максимальной длины.
Вывести на экран введенную последовательность идентификаторов, предварительно удалив идентификатор равный заданному идентификатору.
Вывести на экран введенную последовательность идентификаторов, предварительно включив заданный идентификатор перед идентификатором минимальной длины.
Среди идентификаторов с нечетным порядковым номером найти идентификатор максимальной длины.
Среди идентификаторов с кратным трем порядковым номером найти первый идентификатор, начинающийся и заканчивающийся на одну и ту же букву.
В каждом идентификаторе с четным порядковым номером определить сумму цифр.
В каждом идентификаторе с нечетным порядковым номером удалить первую цифру.
В каждом идентификаторе с четным порядковым номером удвоить последнюю цифру.
В каждом идентификаторе с нечетным порядковым номером удвоить последнюю букву.
В каждом идентификаторе с кратным трем порядковым номером заменить каждую цифру на букву A’.
Среди идентификаторов с нечетным порядковым номером определить номер идентификатора, в котором сумма цифр максимальна.
Среди идентификаторов с четным порядковым номером найти длину такого идентификатора, в котором содержится максимальное количества букв.
Среди идентификаторов с нечетным порядковым номером определить произведение цифр в идентификаторе максимальной длины.
Вывести на экран введенную последовательность идентификаторов, предварительно удалив лишние пробелы и заключив идентификатор, в котором нет цифр в кавычки.
Найти длину такого первого идентификатора который одинаково читается слева направо и справа налево (abcba, eoffoe).
Определить количество идентификаторов, в которых нет гласных букв.
15
Цель работы: освоить функции обработки строк класса string и файлами класса fstream
Отчет предоставить преподавателю в виде текста отлаженной программы с результатами счета и тестовым примером, сопроводив блок-схемой алгоритма.
Пояснения.
Строку с исходными данными необходимо предварительно набрать и сохранить в текстовом файле. Чтение данных из файла см. в примере программы. Рассмотрим основные методы работы со строками класса string.
string st, str; int l,p; char ch;
st.length() возвращает длину строки, например l=st.length();
st.insert(pos,строка); вставляет строка в строку st, например st.insert(p,ch); вставляет символ ch в строку st после символа с номером p.
st.find(строка) возвращает индекс первого вхождения строка в st, например р=st.find(str);
st.erase(pos,size); удаляет подстроку длиной size из строки st, начиная с позиции pos
Строка обрабатывается как одномерный массив посимвольно, для перевода символьной цифры в целое число можно вычесть 48, например, p=st[i]-48. Строки можно сравнивать обычной операцией ==.
// Задана последовательность идентификаторов, разделенная сериями пробелов //и заканчивающаяся *, данные заданы предварительно в текстовом файле. Имя //файла вводится в программе. Требуется в идентификаторе минимальной длины //определить количество букв
# include
# include
# include
# include
char* Rus(const char* text); // прототип функции Rus
void main()
{using namespace std; //необходимо для работы с классом
string st,stt,str; // st исходная строка
string ch;
char name[10];
cout<
ifstream inf(name); //открытие файла name на чтение
getline(inf,st); //чтение из файла строки в строку st
cout<< "st="<< st <
int k=0, i=0,min=200;
while(st[i]!='*')
{ stt= "";
while (st[i]!=' ' && st[i]!='*') // последнее слово может //заканчиваться *
{
stt+=st[i]; // stt текущее слово
i++;
}
l=stt.length();
if(l
while(st[i]==' ')i++; // пропуск серии пробелов
}
cout<
if(str[i]>='a' && str[i]<='z') k++;
cout<<"k="<
}
// Rus функция перевода на русский !!!
char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
Задана последовательность идентификаторов, разделенных сериями пробелов. Последовательность задана строкой символов (string) заканчивается символом *’.
Варианты:
Найти длину такого первого идентификатора в котором количество всех четных цифр максимально.
Найти длину такого первого идентификатора в котором произведение всех четных цифр максимально.
Найти длину такого последнего идентификатора в котором количество всех кратных трем цифр минимально.
Определить количество идентификаторов, начинающихся на гласную букву.
Определить порядковый номер идентификатора заданной длины.
Определить порядковый номер идентификатора совпадающего с заданным идентификатором.
Определить количество идентификаторов, начинающихся и заканчивающихся на
одну и ту же букву.
Вывести на экран введенную последовательность идентификаторов, предварительно заключив заданный идентификатор в кавычки.
Вывести на экран введенную последовательность идентификаторов, предварительно включив заданный идентификатор после идентификатора максимальной длины.
Вывести на экран введенную последовательность идентификаторов, предварительно удалив идентификатор равный заданному идентификатору.
Вывести на экран введенную последовательность идентификаторов, предварительно включив заданный идентификатор перед идентификатором минимальной длины.
Среди идентификаторов с нечетным порядковым номером найти идентификатор максимальной длины.
Среди идентификаторов с кратным трем порядковым номером найти первый идентификатор, начинающийся и заканчивающийся на одну и ту же букву.
В каждом идентификаторе с четным порядковым номером определить сумму цифр.
В каждом идентификаторе с нечетным порядковым номером удалить первую цифру.
В каждом идентификаторе с четным порядковым номером удвоить последнюю цифру.
В каждом идентификаторе с нечетным порядковым номером удвоить последнюю букву.
В каждом идентификаторе с кратным трем порядковым номером заменить каждую цифру на букву A’.
Среди идентификаторов с нечетным порядковым номером определить номер идентификатора, в котором сумма цифр максимальна.
Среди идентификаторов с четным порядковым номером найти длину такого идентификатора, в котором содержится максимальное количества букв.
Среди идентификаторов с нечетным порядковым номером определить произведение цифр в идентификаторе максимальной длины.
Вывести на экран введенную последовательность идентификаторов, предварительно удалив лишние пробелы и заключив идентификатор, в котором нет цифр в кавычки.
Найти длину такого первого идентификатора который одинаково читается слева направо и справа налево (abcba, eoffoe).
Определить количество идентификаторов, в которых нет гласных букв.
15