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

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

#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");
}

Показать ответ
Ответ:
mashoshinaliza1
mashoshinaliza1
09.12.2020 23:25
Вообще то, это задача чисто математическая.  Пусть есть трехзначное число abc.
По условию:

   abc
+ abc

   bca
Понятно, что максимальным число будет, если сложение в двух младших разрядах идет через перенос  ->  получим систему уравнений:
2c = a +16
2b +1 = c + 16
2a + 1 = b
равносильная ей система
2с = a + 16
c = 2b - 15
b = 2a + 1
подставляем третье во второе, получаем первые два уравнения
2с = a + 16
c = 4a - 13   из этих двух уравнений  ->   7a = 42  ->  a = 6  -> из третьего уравнения  b = 13
13 = D(16),   из первого уравнения  с = 22/2 = 11(10) = B(16)
->  abc(16) = 6DB(16) = 1755(10),     DB6(16) = 3510(10)   -> 2abc = bca
0,0(0 оценок)
Ответ:
IKristin
IKristin
21.08.2021 04:21
Во-первых, не whill, а while.
 Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу.
 Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота