В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
yura204080
yura204080
16.04.2022 17:32 •  Информатика

Мне нужно написать блок схему по этой программе

#include
#include
#include
#include
#include
#include
#include
char rus[256];
using namespace std;
class matr
{
private:
int size;
double **mas;
double *mas1;
public:
matr()
{
size = 0;
mas = null;
mas1 = null;
}
matr(int l)
{
size = l;
mas = new double*[l];
for (int i = 0; i < l; i++)
mas[i] = new double[l];
mas1 = new double[l];
}
void add()
{
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
cin > > mas[i][j];
for (int i = 0; i < size; i++)
{
cin > > mas1[i];
}
}
void print()
{
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
cout < < setw(4) < < mas[i][j] < < " ";
}
cout < < " " < < mas1[i] < < endl;
}
}
void preob()
{
double temp = 0;
for (int k = 0; k < size; k++)
{
for (int i = 0; i < size; i++)
{
temp = mas[i][i] * (-1);
mas1[i] /= temp;
for (int j = 0; j < = size; j++)
{
mas[i][j] /= temp;
}
}
}
for (int i = 0; i < size; i++)
{
mas1[i] *= -1;
for (int j = 0; j < size; j++)
mas[i][i] = 0;
}
}
double pogr(double **mas, double epsilon)
{
double eps = 0; double sum = 0, max = 0;
double norm1 = 0, norm2 = 0;
for (int i = 0; i < size; i++)
{
for (int j = 0; j < i; j++)
{
sum += fabs(mas[i][j]);
if (sum > norm1) norm1 = sum;
}
sum = 0;
for (int j = i + 1; j < size; j++)
{
sum += fabs(mas[i][j]);
if (sum > norm2) norm2 = sum;
}
sum = 0;
}
if (norm1 > = 1 || norm2 > = 1)
{ chartooem( "норма матрицы больше или равна 1.",rus);
cerr< sleep(1);
exit(1) ;

}
eps = ((1 - norm1) / norm2)*epsilon;
return eps;
}
void itera(double epsilon)
{
double *x = new double[size];
double *p = new double[size];
double *a = new double[size];
double *e = new double[size];
double per = pogr(mas, epsilon), max = 0;
for (int i = 0; i < size; i++)
{
x[i] = mas1[i];
p[i] = 0;
}
double var = 0;
for (int i = 0; i < size; i++)
{
var = 0;
for (int k = 0; k < size; k++)
var = mas[i][k] * mas1[k];
x[i] = var;
}
for (int i = 0; i < size; i++)
p[i] = x[i] + mas1[i];
int counter = 0;
do
{
counter++;
chartooem( "итерация № ",rus);
cout< for (int i = 0; i < size; i++)
{
var = 0;
for (int j = 0; j < i; j++)
var += (mas[i][j] * p[j]);
for (int j = i + 1; j < size; j++)
var += (mas[i][j] * x[j]);
a[i] = var;
x[i] = mas1[i] + a[i];
}
max = 0;
for (int i = 0; i < size; i++)
{
e[i] = fabs(x[i] - p[i]);
if (max < e[i]) max = e[i];
p[i] = x[i];
cout < < "x" < < i + 1 < < "=" < < x[i] < < " " < < endl;
}
cout < < endl;
cout < < "max =" < < max < < endl < < endl;
} while (max > per);
chartooem( "результат: \n\n",rus);
cout< for (int i = 0; i < size; i++)
cout < < "x" < < i + 1 < < "=" < < x[i] < < " " < < endl;
delete[] x;
delete[] p;
delete[] e;
delete[] a;
}
~matr()
{
for (int i = 0; i < size; i++)
delete mas;
}
};
void main()
{
int n; double epsi;
chartooem(" программа решения систем линейных уравнений методом зейделя",rus);
cout< while(true)
{
chartooem("введите количество уравнений: ",rus);
cout< cin > > n;
if(! cin)
{
chartooem("вы ввели не число\n" ,rus);
cout< cin.clear();
while (cin.get() ! = '\n');
}
else break;
}
while(true)
{
chartooem("введите желаемую точность(число): " ,rus);
cout< cin > > epsi;
if(! cin)
{
chartooem("вы ввели не число\n" ,rus);
cout< cin.clear();
while (cin.get() ! = '\n');
}
else break;
}
matr a(n);
while(true)
{
chartooem("введите левую часть,а потом правую(только числа): " ,rus);
cout< a.add();
if(! cin)
{
chartooem("вы ввели не число\n" ,rus);
cout< cin.clear();
while (cin.get() ! = '\n');
}
else break;
}
chartooem( "расширенная матрица: " ,rus);
cout< a.print();
a.preob();
chartooem("преображенная матрица" ,rus);
cout< a.print();
cout < < endl;
a.itera(epsi);
cout < < endl;
system("pause");
}

Показать ответ
Ответ:
Эльвина567
Эльвина567
01.03.2021 16:39
R=A+B+C, где
A=53₁₀,
B=653₈,
C=DA₁₆,
R=R₂
Эту задачу можно решать разными выбор зависит от умения решающего выполнять сложение в той или иной системе счисления. Но в любом варианте, сначала нужно представить А, В, С в какой-то одной системе счисления.

Посмотрим, как это будет выглядеть, если пользоваться привычной нам десятичной системой.
653₈ = 6·8²+5·8¹+3·8⁰ = 6·64+5·8+3 = 427
DA₁₆ = 13·16¹+10·16⁰ = 218
R₁₀ = 53+427+218 = 698
Переводим полученное число в двоичную систему, получая R₂:
698/2=349, остаток 0
349/2=174, остаток 1
174/2=87, остаток 0
87/2=43, остаток 1
43/2 =21, остаток 1
21/2=10, остаток 1
10/2=5, остаток 0
5/2=2, остаток 1
2/2=1, остаток 0
1/2=0, остаток 1
Выписываем остатки в обратном порядке: 1010111010.
Это и есть ответ.

А теперь допустим, что мы хорошо владеем восьмеричной системой счисления.
1) получим А₈
53/8=6, остаток 5
6/8=0, остаток 6
Выписываем остатки в обратном порядке: А₈=65
2) получим С₈, для чего перейдем сначала в двоичную систему
С₂=1101 1010 (просто заменяем каждую цифру четырьмя двоичными).
А теперь разобьем справа налево полученное значение по три разряда и каждую полученную триаду заменим восьмеричной цифрой.
11 011 010₂ = 332₈
3) Выполним сложение R₈=A₈+B₈+C₈
    65          740
+653        +332
       
  740        1272
Складывать в восьмеричной системе просто, если знать одну маленькую хитрость. 8 отличается от 10 на 2, поэтому и результат сложения в восьмеричной системе на 2 больше, чем в десятичной, если число превышает 7. Смотрим: 5+3=8, но это в десятичной, а в восьмеричной это на 2 больше, т.е. 10. Поэтому мы пишем 0 и +1 идет в следующий разряд. 6+5=11 и еще +1 от переноса, итого 12. Но в восьмеричной на 2 больше, т.е. 14. 4 пишем. +1 перенос. 6 и +1 от переноса - 7. Вот и получили 740.
4) Мы нашли R₈, переходим к R₂.
Заменяем каждую восьмеричную цифру тремя двоичными:
1272₈=1 010 111 010₂
Мы получили тот же ответ, что и в предыдущем расчета.

Так что - дело привычки. Второй вариант кажется "непосвященному" сложнее, но на самом деле в нем меньше арифметики и если нет под рукой калькулятора, то может оказаться и быстрее, и удобнее.

ответ: 1010111010
0,0(0 оценок)
Ответ:
умник22822822222
умник22822822222
20.03.2020 18:25
Не знаю, что за автоматизация, но запрос на выборку выглядит так:
SELECT * FROM my_table
или же запрос на выборку с условием
SELECT * FROM my_table WHERE name="kek2255"
при этом еще можно использовать операторы AND(И)  и OR(ИЛИ)
SELECT * FROM my_table WHERE name="Иван" AND first_name="Иванов"
SELECT * FROM my_table WHERE name="Иван" OR name="Дмитрий"
и понятное дело их можно комбинировать
SELECT * FROM my_table WHERE (name="Иван" AND first_name="Иванов") OR (name="Дмитрий" AND first_name="Дмитриев")
Можно выполнять запрос из нескольких таболиц
SELECT t1.*, t2.* FROM my_table AS t1, my_table2 AS t2
WHERE t1.id = t2.id_ref


Здесь:
SELECT - Сам оператор выборки
* - это поля выборки, в данном случае все поля(*) -звездочка это значит все поля, но можно просто перечислить id, name, first_name и т.д. При выборе из 2-х и более таблиц указываются префиксы таблицы - это может быть как полное название таблицы(my_table.id) или псевдоним, которое мы указали (FROM my_table AS t1) t1 - будет псевдонимом и выбррка полей будет таким (t1.id, t1.name ...)
FROM - Обязательное ключевое слово(оператор) означает ИЗ(from) 
WHERE - Не обязательный оператор условия (ГДЕ)
Если перевести запрос на русский язык, то будет как в 1С:)
ВЫБРАТЬ * ИЗ моя_таблица ГДЕ Имя = "Иван"
Надеюсь
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота