Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Noclip
43 / 27 / 2
Регистрация: 27.09.2011
Сообщений: 280
#1

Работа с меню в консоли - C++

09.11.2011, 22:19. Просмотров 2127. Ответов 25
Метки нет (Все метки)

я написал программу
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
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<iomanip.h>
#include<system.hpp>
int comp(const void *a,const void *b)
{return +(*(int*)a-*(int*)b);}
int rus(char str_c[])
{char *str=new char[255];
AnsiToOem(str_c,str);
cout<<'\n'<<str;
return(0);
}
int main()
{int i,n,max,i_max,sum=0,post_poz;
cout<<"N=";
cin>>n;
int *a=new int [n];      
rus("Введите элементы");
cout<<'\n';
for (int i=0;i<n;i++) cin>>a[i];
rus("Вывод элементов массива:       ");
for (i=0;i<n;i++)
cout<<setw(4)<<a[i];
max=a[0];
i_max=0;
for (int i=0;i<n;i++) if (a[i]>max) {max=a[i]; i_max=i;}
rus("Максимальный элемент массива:");
cout<<max;
rus("Номер максимального элемента массива:");
cout<<i_max+1;
for (int i=n-1;i!=0;i--) if (a[i]>0) {post_poz=i; break;}
for (int i=0;i<post_poz;i++) sum+=a[i];
rus("Сумма всех элементов массива до последнего положительного элемента:");
cout<<sum;
qsort(a,n,sizeof(int),comp);
 rus("Вывод массива после сортировки:");
for (i=0;i<n;i++)
cout<<setw(4)<<a[i];
delete(a);
getch();
return(0);
}
Мне нужно сделать вот по такому меню
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
int menu(); //обьявление функции
int main()
{int c;
clrscr;
for( ; ; )
{c=menu(); //обращение к функции
switch(c)
{
case(1):cout<<"Vibran punkt vvoda\n";break;
case(2):cout<<"Vibran punkt vivoda\n";break;
case(3):cout<<"Vibran punkt max i ego poziciya \n";break;
case(4):cout<<"Vibran punkt summi \n";break;
case(5):cout<<"Vibran punkt sortirovki\n";break;
case(6):cout<<"Vibran punkt konca raboti programmi\n";break;
default:cout<<"Vi oshiblis, vvedite punkt menu snova \n";break;
}
getch();
if (c==6) break;
}         //конец тела бесконечного цикла
getch();
return(0);
}        //конец главной функции
int menu()     //определение функции для вывода меню
{ int c;
clrscr();
cout<<"\n   ......MNEU......  \n\n";
cout<<"\n(1)Pervonachalniy vvod dannix \n";
cout<<"(2)Vivod dannix \n";
cout<<"(3)Max element massiva i ego poziciya\n";
cout<<"(4)summa elementov do poslednego polozhitelnogo \n";
cout<<"(5)Sortirovka dannix po vozrastaniyu \n";
cout<<"(6)Konec raboti programmi \n";
cin>>c;
return(c);
}
Я пока еще учусь с с++ !!!
От меня ОГРОМНОЕ СПАСИБО! =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2011, 22:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с меню в консоли (C++):

Клавиши F1-F12 в консоли, и работа с мышкой в консоли - C++
Я искал на сайте, но не нашел упоминания о том как обрабатывать и или узнавать где находится курсор мышки (и еще мне надо бы узнать нажатие...

Меню в консоли - C++
По условию нужно сделать что-то вроде меню в консоли. Чисто теоретически порядок знаю, но с реализацией проблемы((( в while массив из 5...

Меню в консоли - C++
Меня интересует вот что: зачем в функции int menu(); вот это условие code=getch(); if (code==224) ...

Меню на консоли - C++
Здравствуйте! Изучаю C++, для практики ради делаю консольное меню через класс. Может быть мне, пока что, ещё далеко до претендента на...

Меню в консоли - C++
есть код для менюшки, по идее при нажатии стрелок вверх или вниз, должен передвигаться флажок -&gt; , но почему то не передвигается,...

Оригинальное меню в консоли - C++
Доброго вечера, помогите разобраться с некоторым кодом, в котором содержится интересное консольное меню с помощью goto xy. Искал в нэте...

25
Gepar
1178 / 534 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
09.11.2011, 22:21 #2
а давайте вы код будете копировать не просто с vs6/borland c++, а закроете её, откроете cpp файл через текстовый редактор и помом уже скопируете, при этом комментарии будут уже в нормальной кодировке.
1
Noclip
43 / 27 / 2
Регистрация: 27.09.2011
Сообщений: 280
09.11.2011, 22:26  [ТС] #3
я все исправил
0
Gepar
1178 / 534 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
09.11.2011, 22:38 #4
Теперь если ещё обрамите в теги с++ то будет вообще супер (выделяете весь код и нажимаете кнопку c++ на панели сверху сообщения. И ещё сразу напишите что она делать хоть должна, будет гораздо легче разобраться с проблемой.

Добавлено через 5 минут
Ну, вроде я понял задания. Что вам нужно:
1)Разбить Ваш код на функции (ввести матрицу, напечатать матрицу, найти max элемент, отсортировать матрицу, вывести сумму элементов до последнего положительного)
2)Заключить всё в цикл while в main по принципу
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
#include <iostream>
using namespace std;
 
int main()
{
    int chose=-1;
    while(chose)
    {
        cout<<"1- ввести матрицу\n"
              "2 - напечатать матрицу\n"
              //...
              "3 - выход";
        cout<<"Enter your chose: ";
        cin>>chose;
        switch(chose)
        {
            case 1:
            //вызвать функцию для ввода матрицы
            break;
 
            case 2:
            //
            break;
            //...
 
        }
    }
}
что и будет являться Вашим меню, я бы по крайней мере именно так бы сделал.

Добавлено через 5 минут
Ну там ещё проверку что вам не символ ввели можно добавить чтобы программа не циклилась, но это уже потом.
0
Noclip
43 / 27 / 2
Регистрация: 27.09.2011
Сообщений: 280
09.11.2011, 22:40  [ТС] #5
я пробовал
и у меня не получилось
0
Gepar
1178 / 534 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
09.11.2011, 22:40 #6
Noclip, что именно не получилось, показывайте наработки.
0
Noclip
43 / 27 / 2
Регистрация: 27.09.2011
Сообщений: 280
09.11.2011, 22:41  [ТС] #7
мне очень нужно решение!!!
у меня не вышло я пробовал практически таким же способом
0
Gepar
1178 / 534 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
09.11.2011, 22:42 #8
Просто тут ничего сложного и хитрого нет, одно дело если бы Вы не знали что есть там какая-то хитрая функция нужная для вашей задачи, а у Вас просто разбить всё на функции. Ничего сложного в принципе нет, но если возникли трудности - пишите где именно и что не получилось.
0
Noclip
43 / 27 / 2
Регистрация: 27.09.2011
Сообщений: 280
09.11.2011, 22:48  [ТС] #9
да я же и пишу что не получилось у меня со ВСЕМ МЕНЮ!!!!!!

мне нужно от А до Я написать Меню...
Я учусь только!!!
мне очень нужно это меню....
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
09.11.2011, 22:51 #10
Noclip, что конкретно не получилось, неполучившийся код.
0
Gepar
1178 / 534 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
09.11.2011, 23:16 #11
Уф, ну вот вам начало вашего задания, я реализовал ввод и печать матрицы, дальше то сами уже по примеру справитесь надеюсь.
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
#include<iostream>
#include<iomanip>
#include<windows.h>
using namespace std;
 
int *array=NULL;
int dimension;
 
int comp(const void *a,const void *b)
{return +(*(int*)a-*(int*)b);}
 
 
void CreateMatrix()
{
    if(array!=NULL) delete array;
    cout<<"N=";
    cin>>dimension;
    array=new int [dimension];
    cout<<"Введите элементы";
    cout<<'\n';
    for (int i=0;i<dimension;i++) cin>>array[i];
}
 
void PrintMatrix()
{
    if(array)
    {
        cout<<"\nВывод элементов массива:       ";
        for (int i=0;i<dimension;i++)
         cout<<setw(4)<<array[i];
        cout<<"\n";
    }
    else
     cout<<"Матрица не задана!\n";
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int chose=-1;
    while(chose)
    {
        cout<<"1- ввести матрицу\n"
              "2 - напечатать матрицу\n"
              //...
              "0 - выход";
        cout<<"Enter your chose: ";
        cin>>chose;
        switch(chose)
        {
            case 1:
            CreateMatrix();//вызвать функцию для ввода матрицы
            break;
 
            case 2:
            PrintMatrix();
            break;
            //
            break;
            //...
 
        }
    }
}
Добавлено через 2 минуты
Вообще я сделал не совсем канонично - я сделал глобальные элементы, но боюсь если их сделать не глобальными то Вы запутаетесь с передачей их в виде параметров, а так думаю Вам не сложно будет разобраться, когда функции не принимают параметров.
По поводу сортировки - советую добавить флаг что всё отсортировано уже и сортировка не нужна.

Добавлено через 2 минуты
Ещё будет круто если Вы будете хранить старый размер массива и при создании проверять поменялся ли он, если не поменялся то удалять и выделять по новой память не нужно, но это уже оптимизация, делайте пока просто чтобы работало.
1
Noclip
43 / 27 / 2
Регистрация: 27.09.2011
Сообщений: 280
10.11.2011, 01:55  [ТС] #12
Я же и половины не знаю из того, что вы мне написали.....
0
Noclip
43 / 27 / 2
Регистрация: 27.09.2011
Сообщений: 280
10.11.2011, 02:01  [ТС] #13
вы забыли руссификатор подключить
C++
1
2
3
4
5
6
7
#include<system.hpp>
int rus(char str_c[])
{char *str=new char[255];
AnsiToOem(str_c,str);
cout<<'\n'<<str;
return(0);
}
0
Gepar
1178 / 534 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
10.11.2011, 02:04 #14
Цитата Сообщение от Noclip Посмотреть сообщение
Я же и половины не знаю из того, что вы мне написали.....
Например? Я всего лишь добавил switch case как меню, а в функции вставил ваш код, немножко изменив некоторые переменные и выбросив вашу печать русских символов.
Цитата Сообщение от Noclip Посмотреть сообщение
вы забыли руссификатор подключить
Я включил вывод и считывание русских символов через
C++
1
2
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
0
Noclip
43 / 27 / 2
Регистрация: 27.09.2011
Сообщений: 280
10.11.2011, 02:15  [ТС] #15
Цитата Сообщение от Gepar Посмотреть сообщение
Я включил вывод и считывание русских символов через

SetConsoleCP(1251);
SetConsoleOutputCP(1251);

Ну к примеру я сейчас скопировал все !
вставил! и запустил и увы не переводит на русский язык...
и добавил руссификатор и все получилось

Добавлено через 3 минуты
Непойму:
1.int *array=NULL;

2.if(array!=NULL) delete array;

3.if(array)
0
10.11.2011, 02:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2011, 02:15
Привет! Вот еще темы с ответами:

Организация меню в консоли - C++
всем доброе время суток необходимо организованить меню: Для выбора метода вычисления корня уравнения использовать меню, разработанное с...

Меню в консоли, управление стрелками - C++
Подскажите пожалуйста, как сделать меню типа: пункт 1 пункт 2 и так далее Чтобы между пунктами можно было перемещаться курсором и...

Бесконечное появление меню в консоли - C++
При попытке добавления записи через меню, меню начинает появляться в бесконечном количестве в консоли. Как исправить? Вроде проблема в...

Помогите создать меню в консоли - C++
Есть код игры змейка и надо сделать меню тут же в консоли, самое простое, в котором есть 'Старт' и 'Выход', а выбор осуществляется...


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

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

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