Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
slboss
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 9
#1

C4 ЕГЭ - C++

29.05.2013, 12:44. Просмотров 1394. Ответов 6
Метки нет (Все метки)

Нужно решить С4, прошу вашей помощи ))

По каналу связи передаётся последовательность положительных целых
чисел, все числа не превышают 1000. Количество чисел известно, но может
быть очень велико. Затем передаётся контрольное значение
последовательности - наибольшее число R, удовлетворяющее следующим
условиям:
1) R - произведение двух различных переданных элементов
последовательности («различные» означает, что не рассматриваются
квадраты переданных чисел, произведения различных элементов
последовательности, равных по величине, допускаются);
2) R делится на 22.
Если такого числа R нет, то контрольное значение полагается равным 0.
В результате помех при передаче как сами числа, так и контрольное значение
могут быть искажены.
Напишите эффективную, в том числе по используемой памяти, программу
(укажите используемую версию языка программирования, например, Borland
Pascal 7.0), которая будет проверять правильность контрольного значения.
Программа должна напечатать отчёт по следующей форме:
Вычисленное контрольное значение: ...
Контроль пройден (или- Контроль не пройден)
Перед текстом программы кратко опишите используемый Вами алгоритм
решения.
На вход программе в первой строке подаётся количество чисел N. В каждой
из последующих N строк записано одно натуральное число, не превышающее
1000. В последней строке записано контрольное значение.

Пример входных данных:
б
55
997
22
7
9
400
2 2 0 00
Пример выходных данных для приведённого выше примера входных данных:
Вычисленное контрольное значение: 22000
Контроль пройден
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2013, 12:44     C4 ЕГЭ
Посмотрите здесь:

ЕГЭ Информатика С2 - C++
Найти и вывести наименьший номер элемента массива, равного Х, или сообщение, что такого элемента нет. #include <iostream> using...

ЕГЭ Информатика С4 - C++
Задача: После единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик, какой школы сколько баллов...

ЕГЭ Информатика С2 - C++
/*Опишите на русском языке или на одном из языков программирования алгоритм суммирования положительных элементов квадратной матрицы,...

ЕГЭ Информатика - C++
На вход программы подаются прописные латинские буквы, ввод этих символов заканчивается точкой. Напишите эффективную по времени работы и по...

С++ Одна из задач ЕгЭ С4 - C++
Задача С4 На вход в программе подаются сведения о студентах с 1-го по 5-й курс некоторого вуза. В первой строке сообщается количество...

Кодировка в консоли (на ЕГЭ) - C++
В этом году буду писать экзамен, но дело в том, что в visual studio setlocale(LC_ALL,"Rus"); не приводит ни к чему (знаю, что в самой...

ЕГЭ Информатика С2 (Массивы) - C++
Здравствуйте, решаю задачи для подготовки к ЕГЭ,все вроде бы легко,но проблема в том, что все ответы на Паскале. Решал такую задачу,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
WayThis
0 / 0 / 0
Регистрация: 18.03.2013
Сообщений: 3
29.05.2013, 19:42     C4 ЕГЭ #2
Насчет эффективности не уверен, но работает все стабильно.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program sifour;
uses crt;
var
a:array [1..1000] of integer;
control:longint;
i,j,max,n,vrem:longint;
begin
write('ВВЕДИТЕ КОЛИЧЕСТВО ЭЛЕМЕНТОВ ПОСЛЕДОВАТЕЛЬНОСТИ: ');
REAdln(n);
for i:=1 to n do
readln(a[i]);
write('ВВЕДИТЕ КОНТРОЛЬНОЕ ЗНАЧЕНИЕ: ');
readln(control);
max:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
if (a[i]*a[j]>max) and  (a[i]*a[j] mod 22 = 0) then max:=a[i]*a[j];
writeln('ВЫЧИСЛЕННОЕ КОНТРОЛЬНОЕ ЗНАЧЕНИЕ: ',MAX);
if max=control then
WRITELN('КОНТРОЛЬ ПРОЙДЕН')
else writeln('КОНТРОЛЬ НЕ ПРОЙДЕН');
end.
slboss
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 9
29.05.2013, 19:50  [ТС]     C4 ЕГЭ #3
Благодарю
WayThis
0 / 0 / 0
Регистрация: 18.03.2013
Сообщений: 3
29.05.2013, 22:29     C4 ЕГЭ #4
Цитата Сообщение от slboss Посмотреть сообщение
Благодарю
Это, правда, немного не с++, но, я думаю, ход моих мыслей понятен)
Moreman32
0 / 0 / 0
Регистрация: 11.10.2012
Сообщений: 19
29.05.2013, 22:37     C4 ЕГЭ #5
За это максимум 2 балла из 4... Нужно написать без цикла в цикле...
slboss
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 9
29.05.2013, 22:59  [ТС]     C4 ЕГЭ #6
Ход конечно понятен )
Паскаль я тоже знаю
Мне главное понять решение
ЕГЭ завтра ведь по информатике )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2013, 23:38     C4 ЕГЭ
Еще ссылки по теме:

Массивы A+B=C (трудная задача из ЕГЭ) - C++
Два одномерных массива, состоящие из целых натуральных чисел, задаются с клавиатуры : массив A, длинной m и массив B, длинной n....

Задание из ЕГЭ: поиск худших учеников - C++
Является ли моя программа эффективной по времени и по памяти? Что можно улучшить? Как можно было бы укоротить 26 строку? Задание: ...

Можно ли в ЕГЭ в С части использовать STL - C++
всем привет, можно ли в части Ц, где нужно самому писать программу использовать контейнеры и алгоритмы из STL ?

ЕГЭ. С4, С2 - обработка массива - правильное выделение памяти - C++
У меня вопрос к людям сдавшим ЕГЭ по информатике. В задании C4 часто приходится обрабатывать массив структур или просто массив. Что делать...

Не могу реализовать программу из ЕГЭ, ошибка на вводе. - C++
Во общем есть задача: После единых выпускных экзаменов по информатике в район пришла информация о том,какой ученик,какой школы,сколько...


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

Или воспользуйтесь поиском по форуму:
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
29.05.2013, 23:38     C4 ЕГЭ #7
Цитата Сообщение от slboss Посмотреть сообщение
Паскаль я тоже знаю
Мне главное понять решение
Дык, как же его понять, если ни С++, ни Паскаля...


Ну вот так в одном цикле.
Заводим две переменные, в которых храним первый и второй удовлетворяющий условиям максимумы.
По потоку идем и смотрим, если новое значение удовлетворяет условиям в сочетании с одним из максимумов, меняем значение первого или второго максимума на новое значение.

Мне лень возиться с файлами, поэтому я запилил потоковый рандом.
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <ctime>
#include <cstdlib>
 
#include <iostream>
 
// эта структура вообще не нужна.
struct RandomGenerator {
  RandomGenerator(int min, int max) : min(min), max(max) {}
  int operator()() const { return min + rand() % (max - min); }
  RandomGenerator &operator>>(int &v) {
    v = operator()();
    return *this;
  }
  int min, max;
};
 
int main(int , char**) {
  srand(time(0));
  
  // тут вместо RandomGenerator
  // нужно открывать файл на чтение
  RandomGenerator in(0, 1000);
 
  int firstMaximum = 0, secondMaximum = 0;
  if (firstMaximum < secondMaximum) {
    std::swap(firstMaximum, secondMaximum);
  }
  
  // вместо цикла for надо
  //while (!in.good()) {
  for (int i = 0; i < 88; ++i) {
    int value;
    in >> value;
    std::cout << value << std::endl;
 
    if (value > firstMaximum) {
      if (value * firstMaximum % 22 == 0) {
        secondMaximum = firstMaximum;
        firstMaximum = value;
      } else if (value * secondMaximum % 22 == 0) {
        firstMaximum = value;
      }
    } else if (value > secondMaximum && value < firstMaximum) {
      if (value * firstMaximum % 22 == 0) {
        secondMaximum = value;
      }
    }
  }
 
  int checkSum = firstMaximum * secondMaximum;
  if (firstMaximum == secondMaximum || checkSum % 22 != 0) checkSum = 0;
 
  std::cout << firstMaximum << "*" << secondMaximum << ", checksum = " << checkSum << std::endl;
 
  return 0;
}
Yandex
Объявления
29.05.2013, 23:38     C4 ЕГЭ
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru