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

Нужно сделать так чтобы при неправильном вводе программа не прекращала работу, а предлагала заново ввести значение N

11.01.2018, 17:51. Показов 5998. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот собственно сам код


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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include<ctime>
#include<iostream>
using namespace std;
int N, action;
int main()
{
    setlocale(LC_ALL,"Russian"); 
    srand(time(NULL));
    cout << "Введите N: ";
    cin >> N;
    if ((N>=2) && (N<=10))
    {
    int** matrix = new int *[N]; //создаем динамическую матрицу размером NxN, которая и будет нашим квадратом
    for (int i = 0; i < N; i++)
    matrix[i] = new int[N]; 
 
    int* solve = new int[N+N+2]; //создаем одномерный динамический массив всевозможных сумм линий элементов в квадрате
    for (int i=0; i<(N+N+2); i++)
        solve[i]=0;
 
    cout<<"Введите 1 чтобы заполнить матрицу вручную или введите 2 чтобы она заполнилась случайными числами: ";
    cin>>action;
    if (action == 1 || action == 2)
    {
    switch(action) //способы заполнения матрицы по выбору пользователя 
    {
    case 1:
        {for (int i=0; i<N; i++)
            for (int j=0; j<N; j++)
            {
                cout<<"Введите элемент матрицы с координатами "<<i+1<<","<<j+1<<" ";
                cin>>matrix[i][j];
            } break;
        }
    case 2:
        {for (int i=0; i<N; i++)
            for (int j=0; j<N; j++)
            matrix[i][j]= rand() % 301 - 100;
        } break;
    }
 
    for (int i=0; i<N; i++)
            {for (int j=0; j<N; j++)
                {
            cout.width(4);
            cout<<matrix[i][j];
                }
        cout<<endl;
    }
    
 
//----------------------------ПРОЦЕСС-РЕШЕНИЕ-ЗАДАЧИ---------------------------------------
 
    for (int s=0; s<N; s++)
    for (int j=0; j<N; j++)
        {
            solve[s] += matrix[s][j]; //поиск сумм элементов всех строк и столбцов
            solve[N+s] += matrix[j][s];
        }
 
    for (int i=0; i<N; i++)
                {
                    solve[N+N] += matrix[i][i]; //поиск сумм элементов главной и побочной диагонали
                    solve[N+N+1] += matrix[i][N-1-i];
                }
    cout<<endl;
    
    for (int i=0; i<(N+N+2); i++)
        cout<<solve[i]<<" "; //вывод всех сумм на экран 
    cout<<endl;
 
    int cor = 0; //отсюда и до закрытия фигурной скобки - процесс вывода результата
    int incor = 0;
    for (int i=0; i<(N+N+1); i++)
        if (solve[i] == solve[N+N+1])
            cor++;
        else 
            incor++;
 
    if (cor>incor)
            cout<<"Данная матрица является магическим квадратом!"<<endl;
    else
            cout<<"Данная матрица не является магическим квадратом!"<<endl;
    }
    else
        cout<<"Вы ввели неправильное число!";
 
    for (int i = 0; i < N; i++)
            delete[] matrix[i]; //освобождение памяти, выделенной под матрицу и массив сумм
        delete[] matrix;
        delete[] solve;
    }
    else 
        cout<<"Размер матрицы не удовлетворяет условию!"<<endl;
system("pause");
}
Исправьте пожалуйста. буду очень благодарен
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2018, 17:51
Ответы с готовыми решениями:

Сделать так, чтобы при вводе отрицательного значения программа выводила errror
Цикл WHILE. В этом коде нужно сделать так чтобы при вводе отрицательного значения программа...

Как написать функцию, чтобы условие при неправильном вводе выполнялось заново?
char alternative; scanf(&quot;%s&quot;, alternative); if...

Нужно чтобы при вводе числа 0 программа завершала работу
Привет всем.Это моя первая тема:) У меня такая проблема,задание я сделал но вот не до конца.Нужно...

Сделать так, чтобы при вводе Х=0 программа не завершалась а запрашивала ввод нового значения Х
Как сделать чтобы при вводе Х=0 программа не завершалась а запрашивала ввод нового значения Х...

4
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
11.01.2018, 17:53 2
do...while в помощь
0
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
11.01.2018, 17:54 3
Цитата Сообщение от Aleksey6898 Посмотреть сообщение
Исправьте пожалуйста.
Ну и что? ... этот код можно читать? ... не говоря уж о том, чтобы его исправлять.
0
21 / 21 / 20
Регистрация: 05.12.2017
Сообщений: 124
11.01.2018, 17:58 4
Не обязательно создавать отдельную тему ради исправления кода. В изначальной теме ответил уже (Проверка, является ли матрица магическим квадратом).
Цитата Сообщение от Olej Посмотреть сообщение
Ну и что? ... этот код можно читать? ... не говоря уж о том, чтобы его исправлять.
Я художник, и я обижен
0
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
11.01.2018, 18:43 5
Ну если речь идёт о зацикленном вводе N, то код по сути и читать не нужно
C++
8
9
10
11
12
13
srand(time(NULL));
do {
    cout << "Введите N: ";
    cin >> N;
} while (N <= 0); //например
if ((N >= 2) && (N <= 10))
0
11.01.2018, 18:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2018, 18:43
Помогаю со студенческими работами здесь

Дана программа, необходимо сделать так чтобы при вводе не вводилось кроме цифр
Дана программа, необходимо сделать так, чтобы при вводе нельзя было вводить ничего кроме цифр, пока...

Как сделать так, чтобы консоль при неправильном ответе закрывалась?
Здравствуйте. Пишу консольную игру &quot;Кто хочет стать миллионером&quot;. И у меня вопрос: как сделать так,...

Как сделать так чтобы программа запрашивала ввести путь к той папке в которой ей нужно исполнится
Всем доброго времени суток есть такая вот проблема написал программу которая переименовывает файлы...

Нужно нарисовать флаг, и сделать проверку на то, чтобы при вводе числа 0 - программа закрывалась
Прошу помощи =) Нужно нарисовать флаг, и сделать проверку на то, чтобы при вводе числа 0 -...


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

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

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