Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчёт лр 5.docx
Скачиваний:
5
Добавлен:
01.12.2018
Размер:
82.78 Кб
Скачать

Вариант 10

Задание 1

Занести из файла в массив данные о температуре воды на Черноморском побережье  за сентябрь. Определить: а) сколько за это время было дней, пригодных для купания; б) в какой из декад сентября было больше дней пригодных для купания? Программную реализацию пункта б) оформить в виде функции, в которую необходимо передать в качестве параметра массив, содержащий данные о температуре воды на Черноморском побережье  за сентябрь.

Алгоритм

Начало

Ввод данных

Файл существует

true

false

i<30

Вывод сообщения об ошибке

true

f >> A[i] – записываем в массив температуру i дня

Конец

Выводим ее на экран

i++

f.close() – закрываем файл

Ввод температуры пригодной для купания

true

i<30

i++

false

A[i]>=t

true

K=k+1 – увеличиваем кол-во дней

Вывод k (количество дней, пригодное для купания)

f1(A,t) – вызов функции

f1

начало

i<10

false

i<20

false

true

b[i]>=t

true

j=j+1

true

b[i]>=t

true

h=h+1

i<30

false

true

b[i]>=t

true

k=k+1

Вывод h, j, k.

Конец

Текст программы

#include <iostream>

#include <stdio.h>

#include <fstream>

using namespace std;

Void f1(float *b,float t)

{

int i,h,j,k;

h=j=k=0;

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

{

if (b[i]>=t)

h=h+1;

}

for (i=10;i<20;i++)

{

if (b[i]>=t)

j=j+1;

}

for (i=20;i<30;i++)

{

if (b[i]>=t)

k=k+1;

}

cout<<"\n pervaja dekada: "<<h<<" dney \n vtoraja: "<<j<<" dney \n tret'ja:"<<k<<" dney \n";

if (h>j && h>k) cout<<"v pervuju dekadu bilo bol'cshe vsego dney, prigodnih dlja kupanija: "<<h;

if (j>h && j>k) cout<<"vo vtoruju dekadu bilo bol'cshe vsego dney, prigodnih dlja kupanija: "<<j;

if (k>j && k>h) cout<<"v tret'u dekadu bilo bol'cshe vsego dney, prigodnih dlja kupanija: "<<k;

if (h==j || h==k || j==h || j==k) cout<<"\ndekadi, v kotoroi bol'she vsego dney, prigodnih dlja kupanija, ne suchestvuet";

cout<<endl;

}

Int main()

{

float A[30];

float t;

int k,i;

Ifstream f;

f.open("D:\\1.txt");

k=0; //schetchik dney

if (f)

{ cout << "Read file ! \n";

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

{ f >> A[i];

cout<<" "<<i+1<<" den' - "<<A[i]<<" C \n ";

}

cout << "\n";

f.close();}

else cout << "File not found \n";

cout<<"\n vvedite temperaturu, prigodnuu dlja kupanija(gradusi Celsija): ";

cin>>t;

cout<<"\n";

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

{

if (A[i]>=t)

{

cout<<i+1<<" den' prigoden dlja kupanija\n";

k=k+1;}

}

if (k==0) cout<<"\n kol-vo dney prigodnih dlja kupania ravno 0";else

cout<<"\n kol-vo dney prigodnih dlja kupania ravno "<<k;

cout<<"\n";

f1(A,t);

system("pause");

}

Тесты:

Задание 2

Магическим квадратом порядка n называется квадратная таблица размером n x n, состоящая из чисел 1, 2, ….., n2, так, что суммы по каждому столбцу, каждой строке и каждой из двух диагоналей равны между собой. В файле хранится целочисленная квадратная матрица. Записать целочисленную квадратную матрицу в двумерный массив. Проверить, является ли заданная целочисленная квадратная матрица магическим квадратом.

Алгоритм

Начало

файл существует

вывод “error”

true

f>>n;f>>m – считываем из файла в переменные n и m кол-во строк и столбцов

конец

true

i<n

false

true

i++

j<n

j++

false

true

f>>a[i][j] считываеем элементы из файла в массив

i<n

j<n

i++

true

false

true

false

вывод элементов массива на экран

magic(a,n,m)

Magic==1

true

false

Вывод сообщения:”Магический квадрат”

Вывод сообщения:”Не магический квадрат”

Конец

Конец

Функция magic – функция, возвращающая значение 1, если матрица является магическим квадратом, и 0, если матрица им не является.

Алгоритм работы функции:

Первым делом функция считает сумму элементов первой строки матрицы, затем осуществляется подсчет суммы элементов оставшихся строк и сравнение их суммы с суммой элементов первой строки, если в какой-либо момент суммы не совпадают, то функция возвращает значение 0.

Далее функция считает сумму элементов первого столбца, сравнивает ее с суммой элементов первой строки, если суммы не совпадают, то функция возвращает значение 0, следующим шагом является сравнение суммы элементов первого столбца с остальными суммами элементов столбцов, если суммы не совпадают, то функция возвращает значение 0.

После функция считает сумму элементов главной диагонали, сравнивает ее с суммой элементов столбца. И сумму побочной диагонали. Если все суммы равны, то функция возвращает значение 1, в противном случае функция возвращает значение 0.

Текст программы

#include <iostream>

#include <fstream>

using namespace std;