Вектор, подобно массиву, имеет базовый тип и содержит набор значений этого типа. Однако синтаксис использования и объявления векторной переменной отличается от синтаксиса массивов. Векторная переменная v базового типа int объявляется так:

vector<int> v;

Для добавления в вектор нового элемента используется функция push_back. Элементы добавляются в вектор в определенном порядке: сначала в позицию 0, затем в позицию 1, позицию 2 и т. д. Функция  push_back добавляет элемент в следующую доступную позицию. Количество элементов вектора называется его размером. Для того чтобы узнать размер вектора, можно воспользоваться функцией size.  Для использования векторов необходимо включить библиотеку: #include <vector>.

Задание 21. Выполнить задание 19 с использованием вектора.

#include <cstdlib>

#include <iostream>

#include <vector>

#include <string>

#include <fstream>

using namespace std;

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

{

  vector <string> s1;

  string mys;

  string del=" ./,'=-:;?",vr;

  int k=0,n, m=del. length();;

  ifstream fin;

  ofstream fout;

  fin. open("r. txt");

  while(!fin. eof())

  {

  vr="";

  getline(fin, mys);

  n=mys. length();

  //cout<<n<<'\t'<<m<<endl;

  for(int i=0;i<n;i++)

  {

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

  {

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

  {

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

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

  {

  if(mys[i-1]==del[j1])

  goto a1; 

  }

  s1.push_back(vr);

  vr="";

  goto a1;

  }

  }

  vr+=mys[i];

a1:  continue; 

  }

  if(vr!="")

  s1.push_back(vr);

}

  for(int i=0;i<s1.size();i++)

  cout<<i+1<<"-th word is - "<<s1[i]<<endl;

  system("PAUSE");

  return EXIT_SUCCESS;

}

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

Напишите программу, считывающую предложение длиной до 100 символови выводящую его же с откорректированными расстояниями между словамии правильной расстановкой заглавных букв. Иными словами, все последовательностииз двух или более пробелов должны быть заменены одним. Предложениедолжно начинаться с заглавной буквы и не содержать других заглавныхбукв. Символ переводастроки программа должна интерпретировать как один пробел, так что эти символыи один или несколько пробелов необходимо заменить одним пробелом. Предполагается, что предложение оканчивается точкой и не содержит другихточек. 7 Напишите программу, считывающую строку текста и выводящую число слов

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

Приведите определение функции, объявленной так:

void get_double(doubles input_number);

Включите это определение в отладочную программу. Можно считать, что пользователь вводит числа в обычном наиболее часто используемомформате, скажем 23.789, не применяя научный формат. Чтобы функция считывала ввод в виде последовательности символов, редактировала полученную символьную строку и преобразовывала результатв число типа doubl е.

Напишите программу, считывающую имя человека в таком формате: Имя, Отчество, Фамилия. Затем программа выводит имя в следующемформате:

Фамилия Имя Отчество.

Подсказка, Можно применять для ввода не одну, а три строковые переменные

меньшего размера.

Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом «оаяп» Напишите функцию сортировки, похожую на функцию из листинга 5 стр. 61, с той разницей, что ее аргументом должен быть вектор, содержащийчисла типа int, а не массив. Реализуйте задание 5 стр. 64, но на этот раз вместо массивов используйтевекторы. Дан набор ненулевых целых чисел; признак его завершения — число 0. Вывести количество чисел в наборе. Дан набор ненулевых целых чисел; признак его завершения — число 0. Вывести сумму всех положительных четных чисел из данного набора. Если требуемые числа в наборе отсутствуют, то вывести 0. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести количество чисел в наборе, меньших K. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести номер первого числа в наборе, большего K. Если таких чисел нет, то вывести 0. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести номер последнего числа в наборе, большего K. Если таких чисел нет, то вывести  0. Дано вещественное число B, переменное целое число N и набор из N вещественных чисел, упорядоченных по возрастанию. Вывести элементы набора вместе с числом B, сохраняя упорядоченность выводимых чисел. Дано переменное целое число N и набор из N целых чисел, упорядоченный по возрастанию. Данный набор может содержать одинаковые элементы. Вывести в том же порядке все различные элементы данного набора.

17. Структура

17.1. Определение структуры

Иногда полезно иметь набор значений разных типов и оперировать им как одним элементом. В качестве примера рассмотрим банковский депозитный сертификат, часто называемый CD (CertificateofDeposit). Это банковский счет, деньги с которого нельзя снимать в течение заданного количества месяцев. С ним связаны три элемента данных: баланс на счету, процентная ставка и значение, соответствующее сроку, по истечении которого разрешается снимать деньги. Первые два элемента могут быть представлены значениями типа double, а количество месяцев - значением типа int. Определение структуры следующее:

Struct CDAccount

{

double balance;

double interest_rate:

int term; // Количество месяцев до наступления срока выплаты.

}:

Ключевое слово struct указывает, что это определение типа структуры. Идентификатор CDAccount является именем типа этой структуры или тегом. Тегом структуры может быть любой допустимый идентификатор, но не ключевое слово. Хотя язык C++ этого не требует, в тегах структур обычно используются строчные и заглавные буквы, причем начинается тег с заглавной буквы. Идентификаторы, объявленные внутри фигурных скобок, называются членами структуры. Как видно из примера, определение структуры завершается закрывающей фигурной скобкой и точкой с запятой. Определение типа структуры обычно размещается вне определений функций (подобно определениям глобальных именованных констант).

После определения структуры ее тип может использоваться так же, как любой из предопределенных типов int, char и т. п. Например, следующий оператор объявляет две переменные типа CDAccount: my_account и your_account.

CDAccount  my_account. youp_account;

В переменной типа структуры, как и в любой другой переменной, могут храниться значения. Значением такой переменной является набор меньших значений, называемых значениями-членами. Каждому имени члена структуры соответствует одно значение. В частности, значение типа CDAccount включает три значения-члена: два типа double и одно типа int. Значения-члены хранятся в переменных-членах.

Рассмотрим другой пример. Определим структуру для объекта автомобиль:

struct car

{

        string  model;

        int horse_power;

        float price;

  string  owner;                 

};

Далее в программном модуле объявляем переменную типа car, например, следующим образом:

car auto;

Переменная auto будет иметь 4 поля (переменные-члены): модель, мощность, цена и владелец, значения которых определяется разными способами, например, Приведенным выше переменным-членам можно присвоить значения с помощью следующих операторов присваивания:

:

auto. model=”Audi”;

auto. horse_power=250;

auto. price=7500;

auto. owner=”Buratino”;

17.2 Инициализация структуры

Структуру можно инициализировать при ее объявлении. Для того чтобы присвоить значение переменной типа структуры, нужно поместить после ее имени знак равенства и в фигурных скобках задать значения всех членов этой структуры.

Рассмотрим определение типа структуры car. После его определения можно следующим образом объявить и инициализировать переменную auto:

car auto={“Audi”,250,7500.65, ”Buratino”};

Необходимо, чтобы значения членов структуры должны задаваться в точности

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

Допускается использование вложенных структур. Например, в приведенной выше структуры, можно создать структуру для определения владельца следующим образом:

struct  odam

{

       string nom;

       string drive_license;

       int age;

}; 

После чего создадим структуру  car

struct car

{

        string  model;

        int horse_power;

        float price;

  odam  owner;                 

};

Тогда переменному-члену owner структурной переменной auto типа car можно присвоить значения с помощью следующих операторов присваивания:

auto. owner. nom=”Buratino”;

auto. owner. drive_license =”A123456”

auto. owner. age=35;

Литература

овременное проектирование на С++. - М.: Вильямс, 2002. Му программирование на С++. М.: Вильямс, 2002. Павловская  Т. А. С/С++. Программирование на языке высокого уровня. – СПб.:Питер, 2012. рограммирование на С++, 4-е изд. – СПб.: Питер, 2004. зык программирования С++. 3-ое издание. - М.: БИНОМ, 1999. Методические рекомендации по выполнению курсовой работы по дисциплине ОАЯМ. Душанбе:-РТСУ, 2011. ++ для начинающих. М.:ЭКОМ Паблишерс,2007.

1 Имеются разные среды для разработки программы на языке С++: VisualC++, BorlandC++, Dev-C++. Мы все примеры будем приводить с учетом использования, в основном консольного варианта среды Dev-C++.

2American National Standards Institute - Американский национальный институт стандартов

3Случай, когда тело цикла состоит из единственного оператора, нет необходимости в использовании фигурных скобок.


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