с++

wind

Пользователь
2MuIII•GuN
вы спрашивали:
а где команда hot key=enter ? или аналог это команды?
я ответила:
if (ch == 13) //...

что не понятно??

2Falcao если вы не знаете разницы мужду консольным windos приложением и программой под dos это еще не значит что ее нет! Если интерестно могу переписать приведенную выше программу, разница будет огромной, еще раз советую ознакомтесь хоть поверхностно с WinAPI...
 
F

Falcao

Guest
"если вы не знаете разницы мужду консольным windos приложением и программой под dos это еще не значит что ее нет"
согласен...Согласен, что разница есть..
" Если интерестно могу переписать приведенную выше программу"
ннуууу... Давайте ;)
" разница будет огромной"
....??? неужель прям-таки огромной? :)
"еще раз советую ознакомтесь хоть поверхностно с WinAPI..."
:p :p :blink:
спасибо за совет :) ^_^
 

wind

Пользователь
Код:
#include "windows.h"
#include <stdlib.h>
#include <time.h>

void rand_bgcolor(HANDLE out)
{
   // Получим число символьных ячеек в текущем буфере.
   CONSOLE_SCREEN_BUFFER_INFO cs;
   GetConsoleScreenBufferInfo(out, &cs);
   DWORD size = cs.dwSize.X * cs.dwSize.Y;

   int n = rand() % 16;
   WORD color = cs.wAttributes &  ~BACKGROUND_RED & ~BACKGROUND_GREEN & ~BACKGROUND_BLUE & ~BACKGROUND_INTENSITY;
   if (n >> 0 & 1) color |= BACKGROUND_RED;
   if (n >> 1 & 1) color |= BACKGROUND_GREEN;
   if (n >> 2 & 1) color |= BACKGROUND_BLUE;
   if (n >> 3 & 1) color |= BACKGROUND_INTENSITY;
   
   COORD coord = {0, 0}; // исходная позиция для курсора
   FillConsoleOutputAttribute(out, color, size, coord, 0);
   SetConsoleTextAttribute(out, color);

   // Поместим курсор в его изначальные координаты
   SetConsoleCursorPosition(out, cs.dwCursorPosition);
}

VOID KeyEventProc(KEY_EVENT_RECORD event)
{
    if (event.wVirtualKeyCode == VK_ESCAPE)
        ExitProcess(0);
    if (event.bKeyDown && event.wVirtualKeyCode == VK_RETURN)
        rand_bgcolor(GetStdHandle(STD_OUTPUT_HANDLE));    
}

int main()
{
    srand(time(0));
    SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), ENABLE_WINDOW_INPUT|ENABLE_MOUSE_INPUT);
    while (1)
    {
        INPUT_RECORD buffer[128];
        DWORD count;
        ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), buffer, 128, &count);
        for (int i = 0; i < count; ++i)
        {
            switch(buffer[i].EventType)
            {
                case KEY_EVENT: // ввод с клавиатуры
                    KeyEventProc(buffer[i].Event.KeyEvent);
                    break;
                // игнорирование    
                case MOUSE_EVENT:  // ввод от мыши
                case WINDOW_BUFFER_SIZE_EVENT: // изменение размера
                case FOCUS_EVENT:  // игнорирование событий фокуса
                case MENU_EVENT:   // игнорирование событий меню
                    break;            
                default:
                    break;
            }
        }
    }
    return 0;
}
2Falcao Будем дальше спорить?
//Учтите код сократила до предела, выкинула все проверки...
 
F

Falcao

Guest
Ветерок, дык спорили-то о чем?
Этот же код работает как в консоли, так и чистом ДОСе.. Не так ли??
:rolleyes:
То, что ты молодЕц, я уверен :unsure: , больше значит не о чем спорить...
зы: оставайся на форуме. С тобой интересно ...
 

wind

Пользователь
Этот это простите какой? Если первый, то не работает(компилируеться только вщы ) он под виндой! CRT(textbackground, clrscr) исключительно досовские приблуды.
А если вы имеете ввиду работу в дос эмуляторе, то простите великадушно, вы путаете теплое с мягким.

Про ваш форум я подумаю, но уж лучше вы к нам http://progz.ru/forum/

И еще вы хоть Страуструпа читали, юный знаток С++Builder?
 
F

Falcao

Guest
Про ваш форум я подумаю
ЧЕСС СЛОВО, он не мой.. :wub2:
Бывал на прогз...
Понравилось из всех имеющихся в ру-нете программерских форумов больше всего один... а какой - не скажу.. B)

еще:второй код легко переводим в Win... :signthankspin:
В чем разница-то? В том, что установка консоли идет плюс конс. команда?
а прием ввода и работа можно так же и в Вин.. :clap_1:
 

SkeЛ

Пользователь
Помогите, кто может:
Как поменять 2 соседних числа в линейном массиве?
 

GoDleSS

Пользователь
[quote name=\'SkeЛ\' date=\'12.3.2006, 17:36\']Помогите, кто может:
Как поменять 2 соседних числа в линейном массиве?
[post=\"24900\"]<{POST_SNAPBACK}>[/post]​
[/quote]
Пузырьковый метод знаешь?! Если нет, то принцип такой:
есть две переменные, допустим
int myA=3;
int myB=5;
значения надо махнуть местами, для этого вводим переменную-буффер такого же типа:
int myC;

Далее действуем:
спасаем MyA
myC=myA;
кидаем в нее значение MyB
myA=myB;
кидаем "спасенное" значение в myB
myB=myC;

итого получаем:
Код:
int myA=3;
int myB=5;
int myC;

myC=myA;
myA=myB;
myB=myC;
Что же о массиве, то в нем все то же самое, т.е. если нам надо поменять всего лишь 2 элемента местами, то(пусть [0]-й и [4]-й)

Код:
int BUFFER;
BUFFER=myArray[0];

myArray[0]=myArray[4];
myArray[4]=BUFFER;
но если нам надо поменять местами пары( каким-либо образом ) во всем массиве, то тут пригодится цикл...
пусть у нас определен массив, допустим с числами (0,6,3,1,0,8,4,3,3,1,3,5), хоть это и не важно b надо все подряд идущие четные поменять значениями с нечетными:
Код:
int i;
int BUFFER;

for (i=0;i<length(myArray);i+=2) {
 if (defined(myArray[i+1])) {
  BUFFER=myArray[i];
  myArray[i]=myArray[i+1];
  myArray[i+1]=BUFFER;
 }
}
Крайне неуверен насчет length(myArray) и defined(myArray[i+1])) по причине незнания C (
 

SkeЛ

Пользователь
А попроще?
Мне нада поменять местами 2 соседних: a[m] и a[m+1]
 

GoDleSS

Пользователь
[quote name=\'SkeЛ\' date=\'12.3.2006, 22:08\']А попроще?
Мне нада поменять местами 2 соседних: a[m] и a[m+1]
[post=\"24908\"]<{POST_SNAPBACK}>[/post]​
[/quote]
Куда уж проще?!

Код:
int BUFFER;

BUFFER=a[m];
a[m]=a[m+1];
a[m+1]=BUFFER;
 

wind

Пользователь
Falcao какая прелесть вы еще и STL бачите? тогда уж:

Код:
#include <algorithm>
std::swap(a, b); 
// или 
using namespace std;
swap(a, b);
 
F

Falcao

Guest
[quote name=\'wind\' date=\'13.3.2006, 14:30\']Falcao какая прелесть вы еще и STL бачите? тогда уж:[/quote]
Не понял?? :jamie:
//не STL, а вот: акая прелесть вы еще и.. Типа "даже это знаешь"??
Винд, ты что - думаешь, что я Ламер аццкый?? :)
 

wind

Пользователь
Про Ламера аццкого вы сами сказали из моего поста это не следует. Если обидела приношу извиния. А отношение мое вызвано приведенным вами кодом и ничем более... Вообще признаю что не права, на личности переходить не стоит, и еще жду ответа вы таки читали Страуструпа?
 

SkeЛ

Пользователь
Зацените программу для сортировки массива в порядке возрастания:


Код:
//Made by [SkeL] - Sortirovka//
#include<stdio.h>
#include<math.h>
main()
{
	float a[10]; int m; int n; float b;

  printf("Vvedite 10 chisel:\n");

	for(m=0; m<10; m++)
  scanf("%f", &a[m]);


	for(n=8; n>=0; n--)
  for(m=0; m<=n; m++)
 	 if(a[m]>a[m+1])
    {b=a[m];
    a[m]=a[m+1];
    a[m+1]=b;
    }

	for(m=0; m<10; m++)
  printf("%f ", a[m]);
}
 
F

Falcao

Guest
Винд, читал, читаю, и еще буду читать. :)
В эл. виде тока есть. Книгу не могу купить.
А так Архангельский тока есть.. Визуальное пограммирование - это для меня :jamie: .. Больше валюсь в сторону сетевого программирования. А еще есть желание научится чему-то новому помимо учебной программы и не быть ламером..
Вот.
А в чем собссно дело:читал я аль нет?
 

GoDleSS

Пользователь
[quote name=\'SkeЛ\' date=\'13.3.2006, 16:24\']Зацените программу для сортировки массива в порядке возрастания:[/quote]

Честно?! Ужасно, даже при моем незнании этого языка(работать то она может и работает, но через Ж) :D
Ты уж не обижайся, но критику сам заказал =)

1. А нафиг тебе библиотека math?! Что ты из нее заюзал?!
2. Может стоит юзать потоки cout, cin?! Тебе нужен этот форматированный вывод в данном случае?!
3. Никакой гибкости, програмка расчитана на 10 чисел и только! Незнаю как в СИ определяется размер массива(или кол-во введенных чисел, хотя в голову вбредает поставить счетчик) и делается гибкий массив(изменяющий размерность, хотя можно заюзать функцию)...
 

SkeЛ

Пользователь
Нам по информе надо именно 10 чисел, если что, можно за 2 секунды изменить.
библиотека math в данном случае не нужна, но могла пригодиться (в принципе, из неё for и if)
 

Svent

Пользователь
[quote name=\'SkeЛ\' date=\'14.3.2006, 11:51\']библиотека math в данном случае не нужна, но могла пригодиться (в принципе, из неё for и if)[/quote]
Что-то тут не так! :)

У меня вопрос.
Увлекаюсь С++, под ДОС умею многое.
Хочу научиться писать под ВИНДОВЗ.
Меня увлекает графика.
Подскажите, пожалуйста, хорошие книги в этом направлении.
 

Mulll•GuN

Пользователь
народ а мне то кто поможет иль нет или вы будите дальше сами с сабой спорить? о_0
 
Сверху