Вопросы и ответы по программированию.
-
- VIP
- Сообщения: 2463
- Зарегистрирован: 13.12.2007
- Откуда: Latvia
- Поблагодарили: 2 раза
Насколько сложно создать «виртуальный монитор» и получать с него изображение, которое в него рисует ОС?
Интересует в первую очередь Линукс, но инфа по винде тоже ок.
Интересует в первую очередь Линукс, но инфа по винде тоже ок.
The Planet is fine. The people are fucked. — George Carlin
Science is interesting, and if you don't agree you can fuck off. — Richard Dawkins
Мой рогалик на JavaScript ⋅ Мой профиль на GitHub
Science is interesting, and if you don't agree you can fuck off. — Richard Dawkins
Мой рогалик на JavaScript ⋅ Мой профиль на GitHub
если совсем ничего не знаешь - Basic
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
Огребете же. По-русски написано, что ответ уже был дан давным давно.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
Спасибо тебе аллах за то что ты создал такую тему.
Что я спросить хотел то.
Сессия почти кончается а мне с информатики практические сдать нужно.
Дело в том что у меня задание "Построить круговую диаграмму" в Qbasic.
Я бы построил но я не понимаю как...
В интернете искал но поиски не дали результатов.
Что я спросить хотел то.
Сессия почти кончается а мне с информатики практические сдать нужно.
Дело в том что у меня задание "Построить круговую диаграмму" в Qbasic.
Я бы построил но я не понимаю как...
В интернете искал но поиски не дали результатов.
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
Круговая диаграмма это что-то такое, да?

Лол, ну ты что. Здесь довольно просто.
Лол, ну ты что. Здесь довольно просто.
- В центре экрана берём точку O - центр окружности.
- Строим окружность с радиусом R. Длина окружности будет L = 2 * pi * R.
- Берём наши данные, например A, B, C (будет три сегмента в круге).
X - сумма этих значений, от которой будет считаться процентное отношение и проч. X = A + B + C. - Берём произвольную точку на окружности T1, затем вычисляем длину дуги для значения A. Надо найти, какой процент от X составляет A.
Percentage = A / X * 100.
Допустим, получилось 10 процентов. Тогда надо "пройти" по окружности от точки T1 до новой точки T2 ещё 10 процентов от длины окружности. На этом месте будет T2. - Соединяем линией точку O c T1, затем O c T2.
- Повторяем 2 предыдущих шага для остальных данных, но уже не берём случайную точку, а двигаемся от последней полученной T2.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
-
- Эксперты no-Steam
- Сообщения: 2600
- Зарегистрирован: 15.02.2007
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 44 раза
- Контактная информация:
Может кому-нибудь пригодится полезный код:
Код: Выделить всё
unsigned int getbits(unsigned char *buf, int start, int count)
{
unsigned int result = 0;
unsigned char bit;
while (count)
{
result <<= 1;
bit = 1 << (7 - (start % 8));
result |= (buf[start/8] & bit) ? 1 : 0;
start++;
count--;
}
return result;
}
Код: Выделить всё
void hexdump(char *prefix, unsigned char *data, size_t size)
{
char ascii[17];
int i;
for (i = 0; i < size; i++) {
if (0 == (i%16)) {
fprintf(stderr,"%s%s%04x:",
prefix ? prefix : "",
prefix ? ": " : "",
i);
memset(ascii,0,sizeof(ascii));
}
if (0 == (i%4))
fprintf(stderr," ");
fprintf(stderr," %02x",data[i]);
ascii[i%16] = isprint(data[i]) ? data[i] : '.';
if (15 == (i%16))
fprintf(stderr," %s\n",ascii);
}
if (0 != (i%16)) {
while (0 != (i%16)) {
if (0 == (i%4))
fprintf(stderr," ");
fprintf(stderr," ");
i++;
};
fprintf(stderr," %s\n",ascii);
}
}
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Борюсь с утечками, вроде везде прикрыл, но потребление памяти снизилось всего лишь на 30%(по сравнению с программой вообще без delete). При просмотре core программы оказыватесть что более 80% там составляют огромные блоки из нулей. Ещё иногда встречаются и нормальные данные(содержимое файлов, которые я загружал в память) Но какие то испорченые в начале.
Может чего посоветуете?
Может чего посоветуете?
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
GanGSISoft
Выделяй сначала наименьшее возможное количество памяти, а потом перераспределяй, если не будет хватать. Лишней памяти выделено вообще не будет.
Выделяй сначала наименьшее возможное количество памяти, а потом перераспределяй, если не будет хватать. Лишней памяти выделено вообще не будет.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Обнаружил странность, вот тут почему-то не работает delete[] c2
Если закоментировать первую половину то delete[] c2 работает, а если так то в core можно найти содержимое файла 2.fb2
---------------------------------------
Ещё вопрос, у меня есть функция, "char *delescape(char *s)" которая в строке перед символами кавычки, пробел и прочее ставить символ '\'. Как правильнее сделать, чтобы она заменяла *s или *s оставалась неизменной, а возвращала другую строку. Как принято делать в таких функциях?
---------------------------------------
И если есть функция bool и в конце возвращает значение, как лучше
или
?
Код: Выделить всё
int main()
{
FILE *f=fopen("/home/user/tmp/1.fb2","r");
fseek(f,0,SEEK_END);
int len=ftell(f);
fseek(f,0,SEEK_SET);
char *c=new char[len];
fread(c,len,1,f);
fclose(f);
delete[] c;
FILE *f2=fopen("/home/user/tmp/2.fb2","r");
fseek(f2,0,SEEK_END);
int len2=ftell(f2);
fseek(f2,0,SEEK_SET);
char *c2=new char[len2];
fread(c2,len2,1,f2);
fclose(f2);
delete[] c2;
abort();
return 0;
}
---------------------------------------
Ещё вопрос, у меня есть функция, "char *delescape(char *s)" которая в строке перед символами кавычки, пробел и прочее ставить символ '\'. Как правильнее сделать, чтобы она заменяла *s или *s оставалась неизменной, а возвращала другую строку. Как принято делать в таких функциях?
---------------------------------------
И если есть функция bool и в конце возвращает значение, как лучше
Код: Выделить всё
if(s==0){return true}else{return false}
Код: Выделить всё
if(s==0){return true}
return false
Последний раз редактировалось GanGSISoft 19.06.2011, 13:37, всего редактировалось 3 раза.