Дано целое число N (> 0). Последовательность вещественных чисел AK определяется следующим образом: A0 = 1, AK = (AK–1 + 1)/K, K = 1, 2, …

ВывестиэлементыA1, A2, …, AN.

Дано целое число N (> 1). Последовательность чисел ФибоначчиFK
(целого типа) определяется следующим образом: F1 = 1, F2 = 1,

FK = FK–2 + FK–1, K = 3, 4, … .Вывести элементы F1, F2, ..., FN.

Дано целое число N (> 1). Последовательность вещественных чисел AK определяется следующим образом: A1 = 1, A2 = 2, AK = (AK–2 + 2·AK–1)/3, K = 3, 4, … .ВывестиэлементыA1, A2, …, AN. Дано целое число N (> 2). Последовательность целых чисел AK определяется следующим образом: A1 = 1, A2 = 2, A3 = 3, AK = AK–1 + AK–2 – 2·AK–3, K = 4, 5, … .Вывести элементы A1, A2, …, AN.
Строкакласса string. Работа со строкой.

Для работы с величинами строкового типа в С++ используется класс string, который позволяет выполнить все операции со строками естественным образом. Класс string определен в библиотеке с именем <str1ng> и отнесен к пространству имен std. Поэтому для его использования в программу нужно включить следующие директивы:

#include <str1ng>

using namespace std;

С использованием класса string можно работать со значениями и выражениями типа string почти так же, как со значениями простого типа данных. Так, присваивание значения переменной типа string осуществляется оператором «=», а для конкатенации двух строк используется оператор «+».

Известно, что заключенные в двойные кавычки строковые литералы в программе на C++ фактически являются строками С, и поэтому они не относятся к типу string. Но ими можно пользоваться как литеральными значениями типа string Так, оператор s = “Прикладная информатика” присваивает переменной s объект string, содержащий те же символы и в том же порядке, что и строка С: chars[] = “Прикладная информатика”

НЕ нашли? Не то? Что вы ищете?

У класса string имеется используемый по умолчанию конструктор, инициализирующий объект типа string пустой строкой. Кроме того, у него есть второй конструктор с одним аргументом, в котором задается стандартная строка С. Этот второй конструктор инициализирует объект типа string значением, представляющим ту же строку, что и аргумент. Иначе говоря, если объявлять переменную типа string, то она по умолчанию инициализируется пустой строкой. А инициализацию можно осуществить следующим образом.

string s(“Прикладная информатика”) или

string s = “Прикладная информатика”

Ввод-вывод с помощью класса string

Для вывода объектов типа string можно пользоваться оператором <<, точно так же, как для вывода данных других типов. В отношении ввода данных класса такого типа имеется одна тонкость. Оператор ввода >> для объектов типа string работает так же, как для других данных, но он игнорирует начальные пробелы и прекращает чтение, как только встретит символ пробела, табуляции или перевода строки.

Если нужно, чтобы программа прочитала всю введенную строку в переменную типа string, можно воспользоваться функцией getline. Синтаксис ее использования со строковыми объектами несколько отличается от синтаксиса для строк С, в котором рассматривается как функция потоков ввода, т. е. если ввод осуществляется с клавиатуры, то оператор ввода имеет следующий вид cin. getline(str, n). А для класса string имеется следующий синтаксис:

getline(cin, str). Поток ввода является аргументом функции.

Функции-члены стандартного класса string

       Класс string имеет определенный набор стандартных функций, которые позволяют выполнить различные операции со строками. В таблице 7 приведены основные функции и операции выполняемые с величинами типа string

Таблица 7.s(s1,s2) – переменная типа string

Функция

Описание

s[i]

Возвращает ссылку на символ строки sс индексом i для чтения-записи

bstr(poz, len)

Возвращает подстроку из вызывающего объекта, начиная с индекса poz, длиной lenсимволов

s1 = s2

Инициализирует объект s1  данными объекта s2

s1+=s2

Добавляет строку объекта s2 в конец строки объекта s1

s. emty()

Возвращает true, если sсодержит пустую строку, и false в противном случае

s1 + s2

Возвращает строку, представляющую собой конкатенацию строк s1 иs2

s. insert(poz, s1)

Вставляет строку s1 в строку s, начиная с позиции poz

s. remove(poz, len)

Удаляет подстроку длиной len, начиная с позиции poz

s. f1nd(s1)

Возвращает индекс первого вхождения s1 в строку s

s. f1nd(s1,poz)

Возвращает индекс первого вхождения s1 в строку s; поиск начинается с позиции poz


Задание 20. Условие задания 19. Составить упорядоченную таблицу частотности.

#include <cstdlib>

#include <iostream>

#include <string>

#include <fstream>

using namespace std;

int main(int argc, char *argv[])

{

  string s, d[1000],del(" ,.;'!?+-");

  int m=del. length(),n, i,k=0,kl=0,l[1000];

  bool da=false;

  ifstream fin; ofstream fout;

  fin. open("split. txt");

  fout. open("aftersplit. txt");

  while(!fin. eof())

  {

  getline(fin, s);

  cout<<s<<"->"<<endl;

  n=s. length();

  i=0;

  while (i<n)

  {

  for(int j=0;j<m;j++)

  {

  if(s[i]==del[j])

  {

  if(!da)

  k++;

  da=true;

  goto m1;

  } 

  } 

  da=false; 

  d[k]+=s[i];

m1:  i++;

  }

  }

  for(int j=0;j<k;j++)

  {

  cout<<d[j]<<endl;

  fout<<d[j]<<endl;

  } 

  for(i=0;i<k;i++)

  {

  l[i]=0;

  for(int j=i+1;j<=k;j++)

  {

  if(d[i]==d[j])

  {

  l[i]+=1;

  d[j].erase(0,d[j].length());

  }

  } 

  }

  int max;

  for(i=0;i<k;i++)

  {

  for(int j=i+1;j<=k;j++)

  {

  if(l[i]>l[j])

  {

  max=l[i];s=d[i];

  l[i]=l[j];d[i]=d[j];

  l[j]=max;d[j]=s;

  }

  } 

  }

  for(i=0;i<k;i++)

  {

  cout<<d[i]<<"--->"<<l[i]<<endl;

  fout<<d[i]<<"--->"<<l[i]<<endl;

  } 

  system("PAUSE");

  return EXIT_SUCCESS;

}

Задания для лабораторной работы №8

Выполнить задачи с помощью класса string

Напишите программу, которая вводит строку и выводит ее, сокращая каждый раз на 1 символ с конца строки до тех пор, пока в строке не останется 1 символ. Напишите программу, определяющую число слов в строке. Одно слово от другого отделяется одним пробелом. В конце предложения стоит точка. Напишите программу, определяющую, какая из букв первая или последняя встречаются в заданном слове чаще. Напишите программу, определяющую, сколько букв «о» (латинский строчный символ) стоит в заданном слове на четных местах. Заданы фамилия, имя и отчество учащегося, разделенные одним или несколькими пробелами. Напишите программу, печатающую фамилию и  инициалы (инициал заканчивается точкой). После фамилии оставлять один пробел. Напишите программу, удаляющую из строки все буквы, совпадающие с его последней буквой. Напишите программу, удаляющую из слова X все буквы, которые встречаются в слове Y. Напишите программу, подсчитывающую количество различных букв в заданном слове. Составить программу, определяющую, является ли введенное слово перевертышем. (Например,  КАЗАК,  ШАЛАШ). Напишите программу, сортирующую символы введенной с клавиатуры строки в порядке возрастания их номеров в ASCII-таблице. Дана непустая строка S и целое число (0<N<10). Вывести строку, содержащую символы строки S, между которыми вставлено по N символов «*» (звездочка). Дана строка S длиной не более 255 символов. Подсчитать количество содержащихся в ней цифр. Дана строка. Подсчитать количество содержащихся в ней прописных латинских букв. Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских букв. Дана строка. Преобразовать в ней все прописные латинские буквы в строчные. Дана строка. Если она представляет собой запись целого числа, то вывести 1, если вещественного (с дробной частью) — вывести 2; если строку нельзя преобразовать в число, то вывести 0. Считать, что дробная часть вещественного числа отделяется от его целой части десятичной точкой «.». Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из этих строк новую строку, содержащую первые N1 символов строки S1 и последние N2 символов строки S2(в указанном порядке). Даны строки S и S0. Проверить, содержится ли строка S0 в строке S. Если содержится, то вывести True, если не содержится, то вывести False. Даны строки S и S0. Найти количество вхождений строки S0 в строку S. Даны строки S и S0. Удалить из строки S первую подстроку, совпадающую с S0. Если совпадающих подстрок нет, то вывести строку S без изменений. Даны строки S, S1 и S2. Заменить в строке S последнее вхождение строки S1 на строку S2. Дана строка, состоящая из слов и разделенных пробелами (одним или несколькими). Найти количество слов, которые начинаются и заканчиваются одной и той же буквой. Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Найти длину самого короткого слова Дана строка-предложение. Вывести самое длинное слово в предложении. Если таких слов несколько, то вывести первое из них. Словом считать набор символов, не содержащий пробелов, знаков препинания и ограниченный пробелами, знаками препинания или началом/концом строки. Дана строка-предложение и число K (0 < K < 10). Зашифровать строку, выполнив циклическую замену каждой буквы на букву того же регистра, расположенную в алфавите на K-й позиции после шифруемой буквы (например, для K = 2 «А» перейдет в «В», «а» — в «в», «Б» — в «Г», «я» — в «б» и т. д.). Букву «ё» в алфавите не учитывать, знаки препинания и пробелы не изменять. Запросите у пользователя строку и символ и выведите на экран сообщение, имеется ли среди символов строки заданный пользователем символ. Если - нет, то добавьте в его строку этот символ по выбору: в начало или в конец строки. Выясните, какая из букв (первая или последняя) встречается в заданном слове чаще. Сколько букв "у" в слове стоит на четных местах? Заменить окончание "ing" каждого слова, встречающегося в заданном предложении на "ed". Напишите программу, определяющую число слов в строке. Одно слово от другого отделяетсязапятой. В конце предложения стоит точка.
Векторы

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15