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

1. Пользовательский числовой формат: трехзначный номер и желтым цветом те номера, которые больше M. 2. С использованием функций СРЗНАЧ, МИН, МАКС, ЕСЛИ получите: средний год рождения работников, самую раннюю дату поступления на завод, столбец лет рождения, больших N.

3. В произвольную ячейку задайте значение текущего года, и, используя абсолютный адрес этой ячейки, сформируйте столбец возраста работников.

Показать ответ
Ответ:
lerashherbakov
lerashherbakov
24.05.2022 00:14
Инвариантные фрагменты кода
Оптимизация инвариантных фрагментов кода тесно связана с проблемой оптимального программирования циклов. Внутри цикла могут встречаться выражения, фрагменты которых никак не зависят от управляющей переменной цикла. Их называют инвариантными фрагментами кода. Современные компиляторы часто определяют наличие таких фрагментов и выполняют их автоматическую оптимизацию. Такое возможно не всегда, и иногда производительность программы зависит целиком от того, как запрограммирован цикл. В качестве примера рассмотрим следующий фрагмент программы (язык Turbo Pascal):
for i := 1 to n do
begin
...
for k := 1 to p do
for m := 1 to q do
begin
a[k, m] := Sqrt(x * k * m - i) + Abs(u * i - x * m + k);
b[k, m] := Sin(x * k * i) + Abs(u * i * m + k);
end;
...
am := 0;
bm := 0;
for k := 1 to p do
for m := 1 to q do
begin
am := am + a[k, m] / c[k];
bm := bm + b[k, m] / c[k];
end;
end;
Здесь инвариантными фрагментами кода являются слагаемое Sin(x * k * i) в первом цикле по переменной m и операция деления на элемент массива c[k] во втором цикле по m. Значения синуса и элемента массива не изменяются в цикле по переменной m, следовательно, в первом случае можно вычислить значение синуса и присвоить его вс переменной, которая будет использоваться в выражении, находящемся внутри цикла. Во втором случае можно выполнить деление после завершения цикла по m. Таким образом, можно существенно сократить количество трудоёмких арифметических операций.
[править] Приоритеты оптимизации
0,0(0 оценок)
Ответ:
vangelinna
vangelinna
29.11.2021 00:54
//PascalABC.NET 3.2 сборка 1318

Type
  people=record
    subn:string;  //фамилия
    n:string;     //имя
    otn:string;   //отчество
    rai:string;     //район
    street:string;  //улица
    hou:integer;    //дом
    ap:integer;     //квартира
    plBor:string;      //место рождения
    dayBor:integer;    //день рождения
    mounthBor:integer; //месяц рождения
    yearBor:integer;   //год рождения
    mainWorkTime:integer; //общий стаж работы
    dangWorkTime:integer; //стаж работы на "вредном производстве"
    gender:string;      //пол
    moneyPerMounth:integer; //з/п, из которой была начислена пенсия
    oldMoneyPerMounth:integer; //пенсия
  end;

 Var
  oldPeople:array of people;
  i,n,st:integer;
  sFIO:string;
  sr:real;
begin
sr:=0;
write('Введите количество пенсионеров:');
readln(n);
setlength(oldPeople,n);
for i:=0 to n-1 do
  begin
    write('Фамилия пенсионера #',i,':');
    readln(oldPeople[i].subn);
    write('Имя пенсионера #',i,':');
    readln(oldPeople[i].n);
    write('Отчество пенсионера #',i,':');
    readln(oldPeople[i].otn);
    write('Район пенсионера #',i,':');
    readln(oldPeople[i].rai);
    write('Улица пенсионера #',i,':');
    readln(oldPeople[i].street);
    writeln('Дом пенсионера #',i,':');
    readln(oldPeople[i].hou);
    writeln('Квартира пенсионера #',i,':');
    readln(oldPeople[i].ap);
    writeln('Место рождения пенсионера #',i,':');
    readln(oldPeople[i].plBor);
    writeln('День рождения пенсионера #',i,':');
    readln(oldPeople[i].dayBor);
    writeln('Месяц рождения пенсионера #',i,':');
    readln(oldPeople[i].mounthBor);
    writeln('Год рождения пенсионера #',i,':');
    readln(oldPeople[i].yearBor);
    writeln('Общий стаж работы пенсионера #',i,':');
    readln(oldPeople[i].mainWorkTime);
    writeln('Cтаж работы на "вредном производстве" пенсионера #',i,':');
    readln(oldPeople[i].dangWorkTime);
    writeln('Пол пенсионера #',i,':');
    readln(oldPeople[i].gender);
    writeln('з/п, из которой была начислена пенсия пенсионера #',i,':');
    readln(oldPeople[i].moneyPerMounth);
    writeln('Пенсия пенсионера #',i,':');
    readln(oldPeople[i].oldMoneyPerMounth);
    sr+=oldPeople[i].oldMoneyPerMounth;
end;
write('Введите ФИО пенсионера');
readln(sFIO);
var FIO:=sFIO.Split;
for i:=0 to n do
if (oldPeople[i].subn=FIO[0]) and (oldPeople[i].n=FIO[1]) and (oldPeople[i].otn=FIO[2]) then
  begin
    writeln(oldPeople[i].oldMoneyPerMounth);
    break;
  end;
write('Введите стаж работы на "вредном производстве":');
readln(st);
for i:=0 to n do
if oldPeople[i].dangWorkTime=st then
 writeln(oldPeople[i].subn,' ',oldPeople[i].n,' ',oldPeople[i].otn);
sr/=n;
writeln('Список пенсионеров с зарплатой ниже среднего');
for i:=0 to n do
if oldPeople[i].oldMoneyPerMounth<sr then
 writeln(oldPeople[i].subn,' ',oldPeople[i].n,' ',oldPeople[i].otn);
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота