6-1.Написать программу, которая строит разбиение множества по отношению эквивалентности R. Конечное множество точек задается файлом.
Программа
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
struct point
{
double x,y;
};
bool check(struct point a, struct point b)
{
if (a.x==b.x && a.y==b.y)
return true;
return false;
}
int main()
{
int n;
string file;
cout << “Vvedite kolichestvo elementov v mnozhestve:”;
cin >> n;
struct point *a = new struct point[n];
for (int i=0; i<n; i++)
{
cout << “Vvedite x:”;
cin >> a[i].x;
cout << “Vvedite y:”;
cin >> a[i].y;
}
cout << “Vvedite nazvanie faila resultata:”;
cin >> file;
fstream myfile;
myfile.open (file.c_str(), std::fstream::out);
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
{
if (check(a[i], a[j]))
myfile << “(” << a[j].x << “, ” << a[j].y << “) “;
}
myfile << endl;
}
myfile.close();
delete[] a;
return 0;
}
Вывод программы
Содержимое файла с результатом:
(1, 1)
(2, 2)
(3, 3)
(4, 4)
(9, 9)
7-1.Написать программу, которая строит матрицу бинарного отношения R и проверяет его симметричность и негатранзитивность.
Программа
#include <iostream>
using namespace std;
bool check(double a, double b)
{
if (a*(b+1) == 12)
return true;
return false;
}
void inputSet(int n, double *a)
{
for (int i=0; i<n; i++)
cin >> a[i];
}
int main()
{
int n, m;
cout << “Vvedite kolichestvo elementov v mnozhestve 1:”;
cin >> n;
double *a = new double[n];
cout << endl << “Vvedite kolichestvo elementov v mnozhestve 2:”;
cin >> m;
double *b = new double[m];
cout << endl << “Vvedite elementi mnozhestva 1” << endl;
inputSet(n, a);
cout << endl << “Vvedite elementi mnozhestva 2” << endl;
inputSet(m, b);
cout << “Result matrix:” << endl;
for (int i=0; i<n; i++)
{
for (int j=0; j<m; j++)
cout << check(a[i], b[j]) << ” “;
cout << endl;
}
delete[] a;
delete[] b;
return 0;
}
Вывод программы
6-2.Написать программу разгадки числового ребуса
С А Р = А Т О В
7-2.Написать программу генерации m-последовательностей 0 и 1, удовлетворяющих обоим требованиям:
число единиц должно быть чётно (включая 0 единиц);
число нулей должно быть не меньше числа единиц.
Программа
#include <iostream>
#include <string.h>
#include <bitset>
#include <math.h>
using namespace std;
void Engine(int Number);
int main()
{
int Number = 1;
while(Number != 0)
{
cout <<“Input number(0 to exit): “;
cin >> Number;
Engine(Number);
}
return 0;
}
void Engine(int Number)
{
int BitsetNumberCountUnit = 0, BitsetNumberCountZero = 0, StringCount = 0;
for(int i = 0; i < pow(2, Number) – 1; i++)
{
bitset <8> BitsetNumber(i);
for(int j = 0; j < Number; j++)
{
if(BitsetNumber[j] == 1)
BitsetNumberCountUnit = BitsetNumberCountUnit + 1;
else
BitsetNumberCountZero = BitsetNumberCountZero + 1;
}
if(BitsetNumberCountUnit % 2 == 0 && BitsetNumberCountZero >= BitsetNumberCountUnit)
{
for(int j = 0; j <= Number – 1; j++)
cout << BitsetNumber[j];
cout << endl;
StringCount++;
}
BitsetNumberCountUnit = 0;
BitsetNumberCountZero = 0;
if(StringCount == Number)
return;
}
}
Вывод программы
6-3. По таблице рёбер построить списки инцидентности неориентированного графа и подсчитать степени его вершин.
Программа
#include <string>
#include <iostream>
#include <fstream>
#include <set>
#include <stdlib.h>
using namespace std;
struct edge
{
int a,b;
};
int getPowForVertex(struct edge *data, int n, int v, bool *inc_list)
{
int result = 0;
for (int i=0;i<n;i++)
{
inc_list[i] = 0;
if (data[i].a==v)
{
result++;
inc_list[i] = 1;
}
if (data[i].b==v)
{
result++;
inc_list[i] = 1;
}
}
return result;
}
void readInput(struct edge *data)
{
string file_input;
string line;
cout << “Vvedite nazvanie faila s tablicei reber:”;
cin >> file_input;
fstream ifile;
ifile.open(file_input.c_str(), std::fstream::in);
if (!ifile.is_open())
return;
int i=0;
while (getline (ifile,line))
{
int pos = line.find(” “);
if (pos==std::string::npos)
continue;
data[i].a= atoi(line.substr(0, pos).c_str());
data[i].b= atoi(line.substr(pos+1).c_str());
i++;
}
ifile.close();
}
void print(bool *inc_list, int n)
{
for(int i=0;i<n;i++)
cout << inc_list[i] << ” “;
}
int main()
{
int n;
cout << “Vvedite chislo reber:”;
cin >> n;
struct edge *data = new struct edge[n];
readInput(data);
set<int> all_verts;
for (int i=0; i<n; i++)
{
if (!all_verts.count(data[i].a))
{
bool *inc_list = new bool[n];
all_verts.insert(data[i].a);
int t = getPowForVertex(data, n, data[i].a, inc_list);
cout << “Spisok incidentnosti vershini ” << data[i].a << “: “;
print(inc_list, n);
cout << endl << “Stepen vershini = ” << t << endl;
delete[] inc_list;
}
if (!all_verts.count(data[i].b))
{
bool *inc_list = new bool[n];
all_verts.insert(data[i].b);
int t = getPowForVertex(data, n, data[i].b, inc_list);
cout << “Spisok incidentnosti vershini ” << data[i].b << “: “;
print(inc_list, n);
cout << endl << “Stepen vershini = ” << t << endl;
delete[] inc_list;
}
}
delete[] data;
return 0;
}
Вывод программы
Содержание файла graph.txt
1 2
4 0
2 3
3 1
4 3
5 5
1 5
7-3. По таблице рёбер построить списки инцидентности неориентированного графа, записи в каждом списке упорядочить по убыванию номеров вершин.
roll9 5.0
Интересуюсь различными областями знаний, хорошо разбираюсь в русском языке, экономике, теории вероятностей, аналитической геометрии, метрологии,статистике, маркетинге, логистике, журналистике.
На странице представлен фрагмент
Уникализируй или напиши новое задание с помощью нейросети
Похожие работы
Определить сопротивление растеканию сложного заземления
Определить сопротивление растеканию сложного заземления, состоящего из вертикальных стержневых заземлителей и горизонтальной полосы. Исходные данные принять по варианту, номер которого совпадает с последней...
3 Заносим числовые данные по задаче в 5 столбец и 6 столбец
3. Заносим числовые данные по задаче в 5 столбец и 6 столбец. Данные столбца 5 – это данные уровня притязаний, а столбца 6 – силы воли Кодируем переменные: для этого переходим с листа «представление...