Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 13.04.2017
Сообщений: 1
1

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

13.04.2017, 01:25. Просмотров 531. Ответов 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
1265 / 1023 / 469
Регистрация: 25.12.2016
Сообщений: 3,331
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® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.