online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
/****************************************************************************** Последовательность натуральных чисел характеризуется числом Х — наибольшим числом, кратным 14 и являющимся произведением двух элементов последовательности с различными номерами. Гарантируется, что хотя бы одно такое произведение в последовательности есть. https://otvet.mail.ru/question/225299873 *******************************************************************************/ #include <iostream> #include <fstream> //#include <utility> //#include <vector> //#include <algorithm> using namespace std; int main(){ int m14 = 0; //максимальное найденное число из последовательности ввода, делится без остатка на 14 int m7 = 0; //максимальное найденное число из последовательности ввода, делится без остатка на 7 int m2 = 0; //максимальное найденное число из последовательности ввода, делится без остатка на 2 int m = 0; //максимальное найденное число из последовательности ввода int result = 0; int n; //эту переменную вы зачем вообще объявили, если не используете ее нигде считав, я вот использую int x; // зачем вы объявляете эту переменную внутри цикли, на каждой итерации ж блин ifstream input("27.txt"); //открываем файл последовательности ввода input >> m; //n; - в m нужно считывать, т.к. m - первое встреченое число в последовательности ввода, и оно автоматом становится максимальным из считаных, т.к. других нет while(!input.eof()){//если не достигнут конец файла input >> x; //считываем новое число последовательности ввода cout << x << endl; //if(x == -1) break; // если считывание прошло неудачно прерываем цикл, кстати это не работает на данном ресурсе, поэтому проверка признака конца файла встроена в цикл. if(x % 14 == 0){// если новое число делится на 14 n = x * m; if(m != 0 && n > result){//если его произведение с максимальным найденным числом больше текущего результата - меняем результат result = n; } //m14 = max(m14, x); // запоминаем максимальное из чисел делящехся на 14, найденое ранее или текущее. эта переменная лишняя, т.к. случай с ней мы уже обработалии последний ваш блок ветвления можн, а значит нужно не выполнять. }else if(x % 7 == 0 /* && x % 2 != 0 лишнее условие, т.к. оно УЖЕ не делится на 14*/){// если новое число делится на 7 n = m2 * x; if(m2 != 0 && n > result){ //если его произведение с максимальным найденным числом, делящимся на 2 больше текущего результата - меняем результат result = n; } m7 = max(m7, x); // запоминаем максимальное из чисел делящехся на 7, найденое ранее или текущее. }else if(/*x % 7 != 0 && снова лишнее условие, мы уже знаем, что x не делится на 14 и на 7*/x % 2 == 0){ n = m7 * x; if(m7 != 0 && n> result){ //если его произведение с максимальным найденным числом, делящимся на 7 больше текущего результата - меняем результат result = m7 * x; } m2 = max(m2, x); // запоминаем максимальное из чисел делящехся на 2, найденое ранее или текущее. }/*else //if(x % 7 != 0 && x % 2 != 0) - лишнее, мы уже знаем, что число не делиться ни на 14, ни на 7 ни на 2 { n = m14 * x; if(m14 != 0 && n > result){//если его произведение с максимальным найденным числом, делящимся на 14 больше текущего результата - меняем результат result = n; } } - этот блок лишний целиком, т.к. этот случай вы уже обработали в самом первом блоку ветвления*/ m = max(m, x); // запоминаем максимальное из чисел введенных, найденое ранее или текущее. } input.close(); cout << result << endl; return 0; }
5 40 1000 7 28 55

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue