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

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

Войти
Регистрация
Восстановить пароль
 
PsychodeliNoise
0 / 0 / 0
Регистрация: 14.11.2013
Сообщений: 12
#1

Интерфейс пользователя типа "меню" - C++

26.02.2014, 15:44. Просмотров 241. Ответов 2
Метки нет (Все метки)

C++ (Qt)
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
97
98
99
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <stdlib.h>
 
using namespace std;
 
const int n = 4; 
 
void vvod(int a[n][n])
{
    int i, j;
 
    cout << " Просто введи эти 16 чисел, нигер: \n ";
 
    for (i = 0; i < n; i++)
    for (j = 0; j < n; j++)
    cin >> a[i][j];
}
 
void vivod(int a[n][n])
{
    setlocale(0, "");  
 
    int i, j;
 
    cout << "\n Вывод матрицы на экран\n";
    for (i = 0; i < n; i++)
    {
        for (j =0; j < n; j++)
        cout  << " " << setw(5) << a[i][j];
        cout << "\n";
    }
}
 
int imin(int a[n][n])
{
    setlocale(0, "");  
 
    int
    i, j,
    min = a[0][0],
    imin, 
    imin1,
    sum = 0;
 
    for (i = 0; i < n; i ++)
    {
        for (j = 0; j < n; j ++)
        if (a[i][j] < min)  
        min = a[i][j];
    }
    
    for (i = 0; i < n; i ++)
    {
        for (j = 0; j < n; j ++)
        if (a[i][j] == min)
        imin = i;      
    }
 
    imin1 = imin+1;
    for (i = 0; i < n; i ++)
    sum += a[imin][i];
 
    cout << "\n Минимальный элемент " << min << ", строка " << imin1;
    cout << "\n Сумма элеметов в этой строке = ";
 
    return sum;
 
}
 
int main()
{       
    setlocale(0, "");
 
    int b[n][n];
 
    while (1)
    
    {
    puts(" в•”в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•—\r\n");
    puts(" в•‘     ПРОГРАММА ОБРАБОТКИ МАТРИЦЫ                                 в•‘\r\n");
    puts(" в•*═════════╦══════════╦═════════════╦══════════╣\r\n");
    puts(" в•‘ 1-ввод       в•‘ 2-вывод       в•‘ 3-обработка       в•‘ 4-выход       в•‘\r\n");
    puts(" в•љв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•©в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•©в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•©в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ќ\r\n");
    char menu=_getch();
    switch (menu)
        {
        case '1': vvod(b); break;
        case '2': vivod(b); break;
        case '3': cout << imin(b) << "\n "; break;
        case '4': exit(0);
        }
    }
 
    system("PAUSE");
 
    return 0;
}
Вот код. По идее, он рабочий, за исключением 2 "НО". В частности, вся суть кроется в главной функции:
1) VS 2012 не понимает символов, из которых составлено меню таблицы. Вместо них — вопросительные знаки.
2) Таблица выводится слишком часто. В идеале ей бы выводиться 1 раз, в начале, но таблица выводится и после нажатия Enter по завершении ввода чисел, и по факту нажатия клавиш "2" и "3". Ну вы сами убедиться можете. Я пробовал разными путями это исправить, но видно туповат я слегка. Прошу помочь. Важно лишь, чтобы в любой момент работы программы таблица высвечивалась лишь 1 раз.


P.S. Похоже, что символы таблицы не распознаются и тут. Вот так она в идеале должна выглядеть.
╔═════════════════════════════════════════════╗
║ ПРОГРАММА ОБРАБОТКИ МАТРИЦЫ ║
╠═════════╦══════════╦═════════════╦══════════╣
║ 1-ввод ║ 2-вывод ║ 3-обработка ║ 4-выход ║
╚═════════╩══════════╩═════════════╩══════════╝
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2014, 15:44     Интерфейс пользователя типа "меню"
Посмотрите здесь:

Аргумент типа "char *" несовместим с параметром типа "LPCWSTR" - C++
Что такое и с чем его едят 1 IntelliSense: аргумент типа &quot;char *&quot; несовместим с параметром типа...

Аргумент типа "LPCWSTR" несовместим с параметром типа "LPCSTR" - C++
Выводит ошибку в условии. Если включать мультикодировку, то выводится одна ошибка, если Юникод, то другая. Как исправить? BOOL...

Аргумент типа "int **" несовместим с параметром типа "int (*)[26]" - C++
Здравствуйте. Я не могу передать динамический двумерный массив в функцию. Как это можно сделать? И как можно нормально объявить массив ?...

Ошибка: "Значение типа float нельзя присвоить сущности типа int" - C++
При компиляции в Visual C++ получается такая ошибка: &quot;Значение типа float нельзя присвоить сущности типа int&quot;. Восьмая строка #include...

Аргумент типа "HDC" несовместим с параметром типа const PAINTSTRUCT - C++
#include &lt;Windows.h&gt; int main(void) { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &amp;ps); HPEN p1, p2, p3, p4, p0; p1 =...

Написать интерфейс "Парсер" с методом парсинга (разбора) файлов - C++
Помогите пожалуйста с заданием Написать интерфейс &quot;Парсер&quot; с методом парсинга (разбора) файлов parse(std::string filename). Написать...

Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" - C++
interface Interface { __int32 Read(); }; //--------------------------------------------------------------------------- ...

Ищу "веб интерфейс" для публикации кода - C++
Здравствуйте, ищу аналог гитхаба. Что хотелось бы видеть: веб интерфейс; опенсурс (обязательно); отсутствие клиентской части...

Проверка ответа пользователя на вопрос: "Продолжить программу или завершить?" - C++
Программа запросит следующие: Продолжить программу или завершить? Нужно нажать y для &quot;да&quot; или n для &quot;нет&quot;. Подскажите, как реализовать...

Запрашивать у пользователя строки до тех пор, пока он не введет строку "Все" - C++
Помогите пожалуйста решить задачу на С++ на строки. Запрашивать у пользователя строки до тех пор, пока он не введет строку &quot;Все&quot;

Значение типа "int*" нельзя присвоить сущности типа int - C++
#include &lt;iostream&gt; using namespace std; int sort(int k, int p, int b, int n) { int min = 0; // для вставки задач int sum;...

Однонаправленный список типа "Очередь". Поменять элементы местами - C++
Всем привет. Есть такая вот задачка: Поменять местами наибольший среди отрицательных и наименьший среди положительных элементов...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
recoder
130 / 130 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
26.02.2014, 16:20     Интерфейс пользователя типа "меню" #2
Вообще, нужно менять кодировку, т.к у вас скорее всего window-1251, а она не поддерживает такие символы вроде бы, ну и надо преобразовывать int в char:

cout << char(12);
PsychodeliNoise
0 / 0 / 0
Регистрация: 14.11.2013
Сообщений: 12
26.02.2014, 18:09  [ТС]     Интерфейс пользователя типа "меню" #3
recoder, перепробовал все варианты кодировки Unicode — не помогает. А динии таблицы точно юникодовские.
А зачем преобразовывать в char?
Yandex
Объявления
26.02.2014, 18:09     Интерфейс пользователя типа "меню"
Ответ Создать тему
Опции темы

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