C / C++ 12.11.2014 / 23:40 | | Virus-ON Пользователь Сейчас: Offline
Имя: Макс Откуда: Чернигов Регистрация: 13.10.2011
| Naik (12.11.2014/21:11) WertysORK, ставь Linux, там нормально всеPyar master! |
13.11.2014 / 17:45 | | ДубоХирург Пользователь Сейчас: Offline
Имя: Сергей Откуда: Где-то возле Москвы Регистрация: 01.07.2012
| Naik, не сразу
|
15.11.2014 / 03:11 | | AGet Пользователь Сейчас: Offline
Регистрация: 20.07.2012
| Naik, если чуваку под линем писать под винду проблемы не изчезнут.
|
15.11.2014 / 07:43 | | Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| AGet, кто заставляет под венду? Кроме проблем с кодировками не нужно будет использовать conio.h также |
16.11.2014 / 21:19 | | Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Как в Ncurses FORM запихнуть в WINDOW отличный от stdscr? И почему при отрисовке form в окне stdscr все окно заполняется фоном, хотя form небольшая и выводится по конкретным координатам? Если установить form для другого WINDOW, то это WINDOW растягивается на весь терминал, и заполняется своим фоном, а в нем эта форма, по крайней мере так кажется Открыть спойлер Закрыть спойлер #define KEY_ESC 27
#define KEY_ENTER 10
//... int main
int w = getmaxx(stdscr), h = getmaxy(stdscr);
start_color();
init_pair(1, COLOR_BLACK, COLOR_CYAN);
init_pair(2, COLOR_BLUE, COLOR_WHITE);
init_pair(3, COLOR_BLACK, COLOR_GREEN);
bkgdset(COLOR_PAIR(1));
clear();
box(stdscr, 0, 0);// печать рамки
mvprintw(1, w / 2 - strlen(PROGRAM) / 3, PROGRAM);// печать имени программы
bkgdset(COLOR_PAIR(2));
mvprintw(2, w / 2 - strlen(HELP) / 3, HELP);// печать короткой справки
refresh();// отрисовка из буфера
FIELD *field[2];
// парам: высота, ширина, х, у, offscreen какой-то, доп. буфер
field[0] = new_field(4, 10, 4, 18, 0, 0);
field[1] = NULL; // типа метка конца
set_field_back(field[0], COLOR_PAIR(2));// установка цвета вывода
FORM *form = new_form(field);
// след. 2 строки не дали никакого результата.
//int windH = 10, windW = 10;
//scale_form(form, &windH, &windW);
// если тут напечатать форму, то все работает, но при этом
// главное окно заливается фоном (фоном не формы, а своим фоном)
//post_form(form);
//refresh();
WINDOW *wind;
while((key = getch()) != KEY_ESC) {
//mvprintw(10, 10, "Key pressed %d", key);
if (key == KEY_ENTER) {
// open new window and input data..
wind = new_wnd(w/4, h/4, w/2 - w/8, h/2 - h/8, 3);
mvwprintw(wind, 2, getmaxx(wind)/2 - strlen(INPUT_DATA)/3, INPUT_DATA);
set_form_win(form, wind); // установить форму для окна
post_form(form);// отсылаем форму
wrefresh(wind); // отрисовать новое окно
}
if (key == 263)/*backspace*/ form_driver(form, REQ_DEL_PREV);// удаление введенного текста в форме
form_driver(form, key); // посылаем на печать в форму все
}
WINDOW *new_wnd(int w, int h, int toX, int toY, int color) {
WINDOW *wind = newwin(h, w, toY, toX);//высота, ширина, х, у
wbkgdset(wind, COLOR_PAIR(color));
wclear(wind);
box(wind, 0, 0);
wrefresh(wind);
return wind;
}
Изменено Ксакеп (16.11 / 21:40) (всего 3 раза) |
18.11.2014 / 17:41 | | WertysORK Пользователь Сейчас: Offline
Имя: Никита Регистрация: 15.07.2014
| Помогите решить маленькую задачку : заданы 2 целых числа a и b. Требуется узнать , сколько есть целых чисел , которые одновременно удовлетворяют двум неравенствам x>a и x < b (тоесть чисел которые строго больше а и строго меньше b) |
18.11.2014 / 17:48 | | aNNiMONъ Супервизор Сейчас: Online
Имя: Витёк Регистрация: 11.01.2010
| WertysORK, int count = max(b - a - 1, 0) __________________
let live Изменено aNNiMONъ (18.11 / 17:48) (всего 1 раз) |
18.11.2014 / 17:50 | | WertysORK Пользователь Сейчас: Offline
Имя: Никита Регистрация: 15.07.2014
| aNNiMONъ, сударь, видно я не дошел до этого , или невнимательно читал , объясни ...... |
18.11.2014 / 17:55 | | Kalter Пользователь Сейчас: Offline
Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
| aNNiMON, программа нагнётся, если использовать отрицательные числа? Тогда надо брать по модулю. WertysORK, чего объяснять, имя метода говорит само за себя.
__________________
Homo homini penis est. |
18.11.2014 / 17:56 | | aNNiMONъ Супервизор Сейчас: Online
Имя: Витёк Регистрация: 11.01.2010
| WertysORK, а тут и объяснять нечего, возьми несколько примеров и посмотри. a = 1, b = 8. Входят: 2,3,4,5,6,7, кол-во 6. a = -52, b = -47. Входят: -51,-50,-49,-48, кол-во 4. То есть b - a - 1. Ну, а если будет так: a = 9, b = 6, то нет таких чисел, которые удовлетворяют неравенству, то есть количество 0. А по указанной формуле получится -4, так что нужно добавить учёт отрицательных чисел. Либо так: int count = b - a - 1;
if (count < 0) count = 0;
Но можно и в одну строчку. int count = max(b - a - 1, 0);
Kalter, ничто не нагнётся. -47 - (-52) - 1 = 5 - 1 = 4 __________________
let live Изменено aNNiMONъ (18.11 / 17:59) (всего 4 раза) |
Всего сообщений: 2777 Фильтровать сообщения Поиск по теме Файлы топика (111)
|