М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
olga1779
olga1779
16.03.2021 22:34 •  Информатика

Составить программу формирования массива а из n случайных вещественных чисел, сделать возможным его редактирование. вычислить сумму дробных частей положительных элементов массива.

👇
Ответ:
LoStEk
LoStEk
16.03.2021
{$APPTYPE CONSOLE}
Const
   N = 13;
Var
   A:array[1..N] of real;
   i,C:integer;
Procedure ZAPOLNENIERND();
Var i,j:integer;
Begin
Randomize;
For i:= 1 to N do
    A[i]:=random*21-10;
End;

Procedure BbIBOD();
Var i,j:integer;
Begin
For i:= 1 to n do
    Write(A[i]:4:1,' ');
WriteLn;
End;

Procedure RE();
Begin
Write('i = ');ReadLn(i);
Write('A[',i,'] = ');ReadLn(A[i]);
End;

Procedure SF();
Var
   i:integer;
   S:real;
Begin
S:=0;
For i:= 1 to n do
    if A[i] > 0 then S:=S+Frac(A[i]);
WriteLn('S = ',S);
End;

Begin
ZAPOLNENIERND();
BbIBOD();
Repeat
WriteLn;
WriteLn('1 - заполнить массив случайными числами');
WriteLn('2 - ввести новое значение заданного элемента');
WriteLn('3 - вычислить сумму дробных частей положительных элементов массива. ');
WriteLn('4 - вывод массива');
WriteLn('9 - выход');
ReadLn(C);
Case C of
1:
  Begin
  ZAPOLNENIERND;
  BbIBOD;
  End;
2:RE;
3:
  Begin
  SF();
  End;
4:BbIBOD;
End
Until C = 9;
End.
4,4(39 оценок)
Открыть все ответы
Ответ:
alexandrcrivuli
alexandrcrivuli
16.03.2021

22

Объяснение:

Понятно, что каждая из команд может только увеличить число.

У нас обязательно есть число 16, из него есть два пути:

1. сделать +1

2. сделать x2

Если мы сделаем +1, то после этого уже точно не сможем сделать x2, т.к. 17 x 2 =  34, а 34 > 33, а уменьшить число мы не сможем. Если мы будем делать постоянно +1, то мы точно пройдём через 30.

Значит не нужно делать +1, когда мы на числе 16, а надо делать x2.

Следовательно, концовка у нас точно будет такая 16 -> 32 -> 33.

Теперь надо посчитать, сколько различных получить 16 из 2. К любому такому мы допишем нашу концовку и получим программу подходящую под наши условия, и к тому же все программы, подходящие под данные условия, выглядят именно так.

Считать сколькими можно получить 16 из 2 будет динамическим программированием.

ans[i] - количество различных программ, которые получают i из 2.

Очевидно, ans[2] = 1 (пустая программа).

ans[3] = 1 (нужно сделать +1)

ans[4] = ans[3] + ans[2] = 2 (можно сделать +1 к 3, а можно x2 к 2)

Далее вычисления всегда следующие:

ans[i] = ans[i - 1] + ans[i / 2] для чётных i (можно либо добавить +1 к числу i - 1, либо сделать x2 для числа i / 2)

ans[i] = ans[i - 1] для нечётных i (можно получить только путём добавления +1 к числу i - 1)

Итак, считаем:

ans[2] = 1

ans[3] = ans[2] = 1

ans[4] = ans[3] + ans[2] = 2

ans[5] = ans[4] = 2

ans[6] = ans[5] + ans[3] = 4

ans[7] = ans[6] = 4

ans[8] = ans[7] + ans[4] = 6

ans[9] = ans[8] = 6

ans[10] = ans[9] + ans[5] = 8

ans[11] = ans[10] = 8

ans[12] = ans[11] + ans[6] = 12

ans[13] = ans[12] = 12

ans[14] = ans[13] + ans[7] = 16

ans[15] = ans[14] = 16

ans[16] = ans[15] + ans[8] = 22

Значит 16 из 2 можно получить И столькими же можно получить 33 из 2 выполняя условия задачи.

4,4(14 оценок)
Ответ:
ангел709
ангел709
16.03.2021
#include <iostream>
using namespace std;
int main(){ 
int N,i,k,sum;    
sum=0;   
cin>>N; 
for(i=0;i<N;i++)
{   
cin>>k; 
  sum += k; 
}
cout<<sum;
return 0;}
2.
#include <iostream>
using namespace std;
int main(){   
 int N,i,k,number;   
 k=0;   
cin>>N;   
 for(i=0;i<N;i++){   
    cin>>number;     
 if(number == 0){           
 k+=1;     
  }   
 }   
 cout<<k;   
return 0;
}
3.#include <iostream>
using namespace std;
int main(){ 
  int N,i,number;   
int poz,neg,zero;   
poz = 0;    neg = 0;    zero = 0; 
   cin>>N; 
  for(i=0;i<N;i++){     
 cin>>number;     
 if(number == 0){           
 zero+=1;       
}else if(number > 0){     
      poz+=1;   
    }else{     
 neg+=1;     
 }   
 }   
cout<<"Poz: "<<poz<<endl;    cout<<"Neg: "<<neg<<endl;    cout<<"Zero: "<<zero<<endl;   
return 0;
}
4,4(95 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ