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

Программа неправильно работает - C++

Восстановить пароль Регистрация
 
Dosmanoff
0 / 0 / 0
Регистрация: 29.09.2016
Сообщений: 1
29.09.2016, 09:43     Программа неправильно работает #1
Всем доброго времени суток! Мое задание: "Есть некоторая последовательность цифр. Напишите программу, которая определит, какое максимальное число можно составить из данной последовательности, при условии, что оно должно делиться на 15." Я сделал в программе проверку на наличие 0 и 5, делимость суммы элементов на 3. Однако при выдаче результата программа выдает неверное число. Я подозреваю что ошибка в конечном условии if. Сам код:


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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "stdafx.h"
#include <iostream>
#include <limits>
#include <algorithm>
#include <functional>
 
using namespace std;
 
 
int main()
{
 
    cout << "Vvedite dlinu posledovatelnosti:\n";
    int n, sum = 0, lil = 0, posfive = -1, poszero = -1;
    bool exfive = false, deriv = false, exzero = false;
    cin >> n;
    const int count = n;
    int *arr = new int[count];
 
    for (int i = 0; i < count; i++) {
        cin >> arr[i];
    }
 
    for (int i = 0; i < count; i++) {
        // проверяем есть ли в последовательности 0
        if (arr[i] == 0) {
            exzero = true;
            poszero = i;
            break;
        }
        exzero = false;
    }
 
    for (int i = 0; i < count; i++) {
        // проверяем есть ли в последовательности 5
        if (arr[i] == 5) {
            exfive = true;
            posfive = i;
            break;
        }
        exfive = false;
    }
 
    
        for (int i = 0; i < count; i++) {
            // если есть то складываем все числа чтобы проверить делимость числа на 3
            sum += arr[i];
        }
    
 
    if (exzero == false || exfive == false || sum % 3 != 0)
        cout << "Iz etih cifr nelzya sozdat takoe chislo! Vvedite drugie chisla!\n";
    else
        deriv = true;
    
    // если в числе есть 0 или 5 и оно делится на 3, то находим младший разряд
    if (deriv == true) {
        if (poszero != -1)
            for (int i = poszero; i < n; ++i) arr[i] = arr[i + 1];
        else
            for (int  i = posfive;  i < n;  ++i) arr[i] = arr[i + 1];
 
 
        // сортируем массив оставшихся чисел
        sort(arr, arr + (count - 1), greater<int>());
 
        cout << "Maksimalnim chislom yavlayetsya: ";
        for (int i = 0; i < count-1; i++) {
            cout << arr[i];
        }
        cout << "\n";
 
    }
 
    delete arr;
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2016, 09:43     Программа неправильно работает
Посмотрите здесь:

QBasic Программа неправильно работает
неправильно работает программа на с++. C++
Неправильно работает программа C++
Неправильно работает программа Assembler
MathCAD Программа работает неправильно
C++ Программа работает неправильно
Программа работает неправильно Delphi
Delphi Программа работает неправильно

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему

Метки
c++, задача, код, массивы, программа, результат
Опции темы

Текущее время: 20:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru