- •Вариант 10
- •Void f1(float *b,float t)
- •Int main()
- •Ifstream f;
- •Int magic(int **a,int n,int m)
- •Int k,ssto,sd1,sd2,l,sstr,I,j;
- •Int main()
- •Ifstream f;
- •5. Как передаются одномерные массивы в качестве параметров в функцию?
- •3.Как передаются двумерные массивы в качестве параметров в функцию? Примеры.
Вариант 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;