0 / 0 / 0
Регистрация: 13.04.2017
Сообщений: 1
1

Найти в серии показаний минимальное произведение двух показаний, между которыми прошло не менее 6 минут

13.04.2017, 01:25. Показов 873. Ответов 1
Метки нет (Все метки)

Добрый день, задали по информатике на днях решить следующую задачу:

На спутнике «Фотон» установлен прибор, предназначенный для измерения энергии космических лучей. Каждую минуту прибор передаёт по каналу связи неотрицательное вещественное число — количество энергии, полученной за последнюю минуту, измеренное в условных единицах. Временем, в течение которого происходит передача, можно пренебречь. Необходимо найти в заданной серии показаний прибора минимальное произведение двух показаний, между моментами передачи которых прошло не менее 6 минут. Количество энергии, получаемое прибором за минуту, не превышает 1000 условных единиц. Общее количество показаний прибора в серии не превышает 10 000. Напишите на любом языке программирования программу для решения поставленной задачи.

В первой строке задаётся число N — общее количество показаний прибора. Гарантируется, что N > 6. В каждой из следующих N строк задаётся одно неотрицательное вещественное число — очередное показание прибора.

Пример входных данных:
11
12
45
5
4
25
23
21
20
10
12
26

Программа должна вывести одно число — описанное в условии произведение.
Пример выходных данных для приведённого выше примера входных данных:
48

Так так нужно написать программу эффективную и по времени, и по памяти, я использовал буферный массив, и в итоге получил следующий код. Программа работает правильно не для всех значений. Допустим, если мы введем числа 8 2 2 2 2 2 2 3 4, программа выведет число 8, вместо правильного числа 6. Тот же самый код на паскале работает прекрасно, а вот в С++ почему-то возникают проблемы. Возможно, что это связано с тем, что индексация массива в С++ начинается с 0 ? Если нет, то в чем проблема ? Помогите!!!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
  double M; // Минимальное произведение //
  double Mmin; // Минимальное число в последовательности //
  double dat;
  int N;
  int const d = 6;
  int A[d-1]; // буфер //
  
  cin >> N;
  for(int i = 0; i <= d; i++)
  {
      cin >> dat;
      A[i%d] = dat;
  }
  
  Mmin = 1001;
  M = 10001;
  
  for(int i = d+1; i < N; i++)
  {
      cin >> dat;
      if(A[i%d] < Mmin)
 
        Mmin = A[i%d];
 
      if((Mmin*dat) < M)
 
        M = Mmin*dat;
 
    A[i%d] = dat;
  }
  
  cout << M;
  return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2017, 01:25
Ответы с готовыми решениями:

Найти минимальное произведение двух показаний из множества показаний прибора
Здравствуйте. Я попытался решить самую последнюю задачу C3 из ЕГЭ по информатике. Но моя программа...

Найти в заданной серии показаний прибора минимальное произведение двух показаний
Решение: program C4_DEMO2015B; const C = 10000000; var nums : array of real; min_pr :...

В компонент Label вывести надпись «произведение показаний» и добавить текущее значение произведения показаний счетчиков
Разместите на форме два компонента Edit и два компонента UpDown. Первый счетчик должен отображать...

Найти наибольшую сумму двух чисел последовательности, между которыми интервал не менее заданного
На вход программе подаются целые числа, в первой строке задается их количество(не меньше семи),...

1
1269 / 1026 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
13.04.2017, 18:34 2
Цитата Сообщение от Maxim8 Посмотреть сообщение
Возможно, что это связано с тем, что индексация массива в С++ начинается с 0 ?
Возможно. Длина массива A почему-то равна d-1, а не просто d, в результате чего индекс выходит за пределы массива (например в 18 строке).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2017, 18:34
Помогаю со студенческими работами здесь

Найти максимальное произведение двух чисел последовательности, расстояние между которыми не меньше заданного
На вход подается последовательность целых чисел по модулю не больше 1000. Признак конца 2*109....

Найти характер зависимости показаний вольтметра от положения движка на потенциометре
К потенциометру с сопротивлением 2 кОм, имеющему длину обмотки 20 см, приложено напряжение 400 В....

Найти вероятность того, что в серии из пяти испытаний прибор выйдет из строя не менее двух раз
Проводятся испытания прибора . При каждом испытании прибор выходит из строя вероятностью p = 0,1 ....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru