Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторные_ЯП.doc
Скачиваний:
291
Добавлен:
10.06.2015
Размер:
11.47 Mб
Скачать

2.3. Листинг программы:

// Лабораторная работа №7

// Индивидуальное задание №2

#include <iostream.h>

#include <fstream>

#include <string.h>

using namespace std;

int readfile(string fileName)

{

ifstream fin(fileName.c_str(),ios::in);

if (!fin)

{

cout << "Ошибка открытия файла" << endl;

return 1;

}

int nword;

cout << "Введите искомое число слов в предложении: ";

cin >> nword;

fin.seekg(0,ios::end);

int len = fin.tellg();

char *buf = new char [len + 1];

fin.seekg(0,ios::beg);

fin.read(buf,len);

buf[len] = '\0';

int l_beg = 0, i = 0, n = 0, j = 0;

bool exist;

exist = false;

while (buf[i])

{

if (buf[i] == ' ') n++;

if (buf[i] == '.')

{

n++;

if (n == nword)

{

for(j = l_beg; j <= i; j++)

cout << buf[j];

exist = true;

cout << endl;

}

l_beg = i + 2;

i = i + 2;

n = 0;

}

i++;

}

if (!exist)

cout << "Таких предложений не найдено" << endl;

fin.close();

return 0;

}

int main()

{

setlocale( LC_ALL, "Russian" );

cout <<"\n"

<<"\tЛабораторная работа № 7\n"

<<"\n"

<<"------------------------------------------\n"

<<"Задание: Считать текст из файла. Вывести на экран только предложения, \n"

<<"\tсостоящие из заданного количества слов\n"

<<"-----------------------------------------\n";

string str;

cout << "Какой файл открыть? ";

cin >> str;

readfile(str);

return 0;

}

2.4. Результаты работы программы:

Рисунок 7.4 – Файл для входных данных

Рисунок 7.5 – Вывод программы на экран

3. Индивидуальное задание №3:

3.1. Постановка задачи:

Выполнить задания согласно варианта индивидуального задания №1 лабораторной работы №6, оформив каждый пункт задания в виде шаблона функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.

3.2. Листинг программы:

// Лабораторная работа №7

// Индивидуальное задание №3

#include <iostream>

#include <fstream>

#include <iomanip>

using namespace std;

template <class T> T sort_array(T ncol, T nrow)

{

ifstream fin("input.txt",ios::in);

if (!fin)

{

cout << "Can't find input.txt" << endl;

return 1;

}

ofstream fout("output.txt");

if (!fout)

{

cout << "Write falure: check permission" <<endl;

return 1;

}

int k, l, k1, l1, counter, i, j;

double sum, sumdiag = 0;

double a[nrow][ncol];

cout << "Чтение данных из файла..." << endl;

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

for(j = 0; j < ncol; j++) fin >> a[i][j];

cout << "Обработка данных..." << endl;

counter = 0; sum = 0; l = 0; l1 = 0;

double m[nrow][ncol];

//calculate neighbour' sum & sum diagonalies

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

for(j = 0; j < ncol; j++)

{

k = i - 1;

k1 = i + 1;

if (k<0) k++;

if (k1 > ncol - 1) k1--;

if ((j <= ncol - 1)&&(j >= ncol - i))

sumdiag = sumdiag + a[i][j];

for(k; k <= k1; k++)

{

l = j - 1;

l1 = j + 1;

if (l < 0) l++;

if (l1 > ncol - 1) l1--;

for(l; l <= l1; l++)

if ((k == i)&&(l == j)) continue;

else

{

sum = sum + a[k][l];

counter++;

}

}

m[i][j] = (float) sum/counter;

sum = 0;

counter = 0;

}

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

{

for(j = 0; j < ncol; j++)

fout << setw(5) << left << setprecision(3)

<< m[i][j] << " ";

fout << endl;

}

fout << endl;

fout << "Сумма эл-ов ниже главной диагонали: "

<< setw(5) << setprecision(9) << sumdiag <<endl;

return 0;

}

int main()

{

const int nrow = 10;

const int ncol = 10;

sort_array(ncol,nrow);

cout << "Запись результатов обработки в файл..."

<< endl;

cout << "Обработка успешно закончена!" << endl;

cout << "Ошибка обработки данных!" << endl;

return 0;

}