<h2>Задание 4</h2>
program task30982812;
var
arr: array[1..10] of integer;
x, i, Sum, a: integer;
begin
Write('Введите число a: ');
Readln(a);
Writeln('Введите 10 значений массива!');
for i := 1 to 10 do
begin
Write(i, '-й элемент: ');
Read(arr[i]);
if (arr[i] mod 2 <> 0) then
Sum := Sum + arr[i];
if (arr[i] > a) then
Writeln(arr[i], ' больше числа ', a)
end;
Write('Сумма нечётных чисел: ', Sum);
end.
<h2>Задание 5</h2>
program task30982812;
var
arr: array[1..15] of integer;
i, k3, k5: integer;
begin
for i := 1 to 15 do
begin
arr[i] := Random(50);
Write(arr[i], ' ');
if (arr[i] mod 3 = 0) then
Inc(k3);
if (arr[i] mod 5 = 0) then
Inc(k5);
end;
Write(Chr(10), 'k3 = ', k3, ', k5 = ', k5);
end.
<u>PascalABC.NET 3.3.5, сборка 1650 от 01.04.2018</u>
<u>Внимание! Если программа не работает, обновите версию!</u>
begin
ArrRandom(100,10,99).Println.Sorted.Println
end.
<u>Пример</u>
36 20 21 96 76 46 14 62 76 59 93 21 78 49 43 60 81 13 75 48 51 11 99 34 61 46 85 55 74 91 76 34 74 26 85 76 69 96 29 45 95 69 28 23 20 77 96 12 72 83 39 29 10 66 68 35 20 87 44 39 61 58 87 85 83 69 47 61 64 66 91 85 83 39 53 82 82 85 23 83 50 82 83 91 61 57 33 17 57 59 66 82 61 90 84 46 81 43 40 51
10 11 12 13 14 17 20 20 20 21 21 23 23 26 28 29 29 33 34 34 35 36 39 39 39 40 43 43 44 45 46 46 46 47 48 49 50 51 51 53 55 57 57 58 59 59 60 61 61 61 61 61 62 64 66 66 66 68 69 69 69 72 74 74 75 76 76 76 76 77 78 81 81 82 82 82 82 83 83 83 83 83 84 85 85 85 85 85 87 87 90 91 91 91 93 95 96 96 96 99
Код написан ниже.
Пример ввода:
4
x100+12mamba+11=barry-3
7x100-4barry=4
barry=x100-2mamba
4=2+2
Пример вывода:
barry=6
mamba=-1
x100=4
#include <iostream>
#include <map>
#include <string>
#include <set>
#include <vector>
#define abs(x) ((x)<0 ? -(x) : (x))
using namespace std;
typedef map<string, double> equation;
equation parseLine(const string &str, set<string> &vars) {
map<string, double> eqn;
bool left_part = true;
size_t i = 0;
while (i < str.length()) {
double n = 0;
bool isNeg = !left_part;
bool isCoeffOmitted = true;
string var = "";
if (str[i] == '='){
left_part = false;
i++;
continue;
}
if ((str[i] == '-') || (str[i] == '+'))
{
if (str[i] == '-') isNeg = !isNeg;
i += 1;
}
while ((i < str.length()) && (str[i] >= '0') && (str[i] <= '9')) {
n = 10 * n + (str[i] - '0');
isCoeffOmitted = false;
i++;
}
if ((i < str.length()) && (str[i] == '.')) {
int exp = 0;
i++;
while ((i < str.length()) && (str[i] >= '0') && (str[i] <= '9')){
n = 10 * n + (str[i] - '0');
exp++;
i++;
}
for (int j = 0; j < exp; n /= 10., j++);
}
while ((i < str.length()) && (str[i] != '+') && (str[i] != '=') && (str[i] != '-')){
var += str[i];
i++;
}
if (isCoeffOmitted) n = 1;
if (isNeg) n = -n;
eqn[var] += n;
vars.insert(var);
}
return eqn;
}
void GaussJordan(vector<equation> &eqns, const vector<string> &vars) {
for (size_t i = 0; i < vars.size(); i++) {
size_t j = i;
while ((j < eqns.size()) && (eqns[j][vars[i]] == 0))
j++;
if (j == eqns.size()) throw "Underdetermined system";
if (j != i) swap(eqns[i], eqns[j]);
double elem = eqns[i][vars[i]];
for (equation::iterator it = eqns[i].begin(); it != eqns[i].end(); it++)
it->second /= elem;
for (j = i + 1; j < eqns.size(); j++){
elem = eqns[j][vars[i]];
for (equation::iterator it = eqns[i].begin(); it != eqns[i].end(); it++)
eqns[j][it->first] -= elem * eqns[i][it->first];
}
}
for (size_t i = vars.size(); i < eqns.size(); i++)
for (equation::iterator it = eqns[i].begin(); it != eqns[i].end(); it++)
if (abs(it->second) > 1e-12) throw "No solutions";
for (size_t i = vars.size() - 1; i > 0; i--) {
for (size_t j = 0; j < i; j++) {
eqns[j][""] -= eqns[j][vars[i]] * eqns[i][""];
eqns[j][vars[i]] = 0;
}
}
}
void printAnswer(vector<equation> &eqns, vector<string> &vars) {
for (size_t i = 0; i < vars.size(); i++)
cout << vars[i] << "=" << -eqns[i][""] << endl;
}
int main() {
set<string> vars;
vector<equation> eqns;
size_t n = 0;
cin >> n;
for (size_t i = 0; i < n; i++) {
string t;
cin >> t;
eqns.push_back(parseLine(t, vars));
}
vars.erase("");
vector<string> vars_list(vars.begin(), vars.end());
try {
GaussJordan(eqns, vars_list);
}
catch (char const *e) {
cout << e;
return 1;
}
printAnswer(eqns, vars_list);
return 0;
}
Дано:
N1=16
N2=32
K1=100
K2=50
Найти: I
Формулы: N=2i, I=k*I
Решение:
16i=4, 32i=5
100*5=500
50*5=250
Ответ: 500 и 250