HLFX.Ru Forum
Показать все 60 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Флуд (https://hlfx.ru/forum/forumdisplay.php?forumid=11)
-- Очередная тема о программировании (https://hlfx.ru/forum/showthread.php?threadid=2348)


Отправлено DEAD MAN 25-09-2010 в 10:28:

Question Очередная тема о программировании

И до меня дошло, да. Собственно поступил я на факультет "компьютерных систем" и , внезапно, нам тоже надо учить программирование, но не с самого лёгкого (как, например, инфотехнологи начали со Scratch`а), а с Си.
Я надеюсь вы не против, если я в этой теме буду просить помощь в этом нелёгком деле, ибо препод (бабушка, которой за 70) объясняет очень плохо, да и ещё работаем на линуксах.

И так, первая домашняя работа состоит в том, что бы написать схему Джексона на вот такое уравнение, т.е. как понял надо расписать алгоритм решения этого уравнения для самой программы. Но при этом есть условие (полу машинный перевод с эстонского языка):

Цитата:
Даны начальное значение аргумента А, нижняя граница значения функции YM и шаг Н. Значение функции считается в пунктах А, А+Н, А+2Н, А+3Н... до тех пор пока значение функции не привысит YM, но не более чем на 15 пунктов.


Может кто-нибудь кинет нормальное описание этих схем Джексона и как с ними работать. Ну или объяснит что мне делать с этим условием.


Отправлено XaeroX 25-09-2010 в 11:55:

Боюсь, на этом форуме нет программистов...
Вот если бы ты спросил, как скопипастить из ку3 код звука - тогда другое дело

__________________

xaerox on Vivino


Отправлено FiEctro 25-09-2010 в 13:30:

DEAD MAN
http://en.wikipedia.org/wiki/Jackso...red_Programming

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 25-09-2010 в 15:11:

Меня очень часто раньше просили помочь написать какую-нить лабораторную работу по программингу. Так вот я обратил внимание, чо единственным непреодолимым фактором является таки невероятно корявое описание заданий. То есть расписано оно достаточно подробно, но на какие-то отвлечённые темы абсолютно.
Другими словами, для меня тех. задание, это абсолютно чёткий набор пунктов, вида: программа должна делать вот это, вот это и вот это.
И еще было бы неплохо вот это. Я видел, допустим, домашние задания по изучению графического API (OGL). И там совершенно чётко написано:
Отрендерить модель своего рабочего места, поощряется использование зеркальных поверхностей и всяких там бликов. Комнату рендерить не надо, только модельку стола и всё что на нем. Модельку делайте в 3д макс.
Просто и понятно.
А у DEAD MAN какая-то абстракция на абстракции.
С таким же успехом я скопилю маленький экзешник с пустой функцией майн и скажу, што он делает именно то што вам нужно.
А про то что результаты надо вывести на экран никакого уговора не было (по крайней мере в посте DEAD MANа).
Так што подобные задачи - это полнейшая чушь и идиотизм.
С таким же успехом можно попросить выкопать яму от забора до обеда.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 25-09-2010 в 15:39:

Цитата:
Дядя Миша писал:
С таким же успехом я скопилю маленький экзешник с пустой функцией майн и скажу, што он делает именно то што вам нужно.

Ну, там исходники сдавать надо, скорее всего, а не екзешник..

__________________

xaerox on Vivino


Отправлено DEAD MAN 25-09-2010 в 16:20:

FiEctro Конечно спасибо, но к вики я уже обращался. И не смотря на то, что мой уровень знания английского языке довольно высок, такие вещи усвоить на не родном языке довольно сложно.

Дядя Миша Как нам объяснили эти схемы, что-то типа основ для небольших программ. Делаются они в JSP Editor ( http://www.his.se/english/universit...rom/jsp-editor/ ) и у него есть функция экспорта кода. Я конечно могу принести уже готовый код, но тогда будет много вопросов по работе когда, на которые я не смогу ответить. Вот пример такой схемы для вычисления квадратичной функции, препод составлял прямо на лекции: http://elrond.tud.ttu.ee/material/k...0I/ruut.jsp.gif (на эстонском языке).


Отправлено Дядя Миша 25-09-2010 в 16:24:

DEAD MAN аа, так тебе алгоритм наваять надо, а не программку?
Ну это жы совсем просто

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 26-09-2010 в 09:53:

Дядя Миша Да, пока что только алгоритм для решения уравнения из первого поста, но обязательно что бы выполнялось процитированное условие.

Добавлено сегодня в 13:53:

Я так понял, что здесь помощи у меня найти, к сожалению, не получится. Ну и ладно, буду пробовать тогда сам как-то разбираться.


Отправлено XaeroX 26-09-2010 в 10:48:

DEAD MAN
Я тебе в первом посте еще это сказал. Здесь форум не по программированию, а по модингу Халфы и OpenGL-движкам.

__________________

xaerox on Vivino


Отправлено с@ш@ халфер 26-09-2010 в 10:55:

Цитата:
XaeroX писал:
DEAD MAN
Я тебе в первом посте еще это сказал. Здесь форум не по программированию, а по модингу Халфы и OpenGL-движкам.


Или тебе влом всё подробно расписать или что-то ещё или просто не знаешь...
Но это врядли так как ты программируешь игру..

__________________
Глупый юзер

Кто написал^^^

Тот сам такой...


Отправлено XaeroX 26-09-2010 в 11:12:

с@ш@ халфер
Я просто не знаю. Я молекулярный биолог по образованию, а не программист.

__________________

xaerox on Vivino


Отправлено Дядя Миша 26-09-2010 в 11:18:

Цитата:
XaeroX писал:
Я молекулярный биолог по образованию, а не программист.

А я мастер по ремонту компьютеров.
А программизды - они там все. На гей-деве.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено AlMod 26-09-2010 в 22:10:

ёпрст - пишешь программу на си по тому своему условию, который "машинный перевод" а потом транслируешь код C в код jsp. Судя по тому что в википедии написано, не думаю что это будет так сложно

Вообще странной фигне вас учат, у нас были обычные блок-схемы алгоритмов, никакой упоротой фигни небыло

__________________
Сайт поддержки кодеров на AMX Mod X


Отправлено DEAD MAN 27-09-2010 в 13:59:

AlMod Если бы я ещё умел писать на Си, это это конечно да.


Отправлено Дядя Миша 27-09-2010 в 14:10:

Цитата:
DEAD MAN писал:
Если бы я ещё умел писать на Си, это это конечно да.

я тебе научу. Вот только дождемся боле-мене внятнова задания.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 04-10-2010 в 15:16:

Вроде как сделал я эту схему, скорее всего с ошибками, но всё-таки.
Теперь действительно сложная для меня вещь, на основе этой схемы(хотя можно и без неё) надо написать программу, которая считала бы функцию (из первого поста) по методу/условию (тоже из первого поста). Надеюсь (имя пользователя съел шамблер) сможет хотя бы тут помочь.


Отправлено Дядя Миша 05-10-2010 в 09:42:

Из всего что написал только break знаю
А что такое vqvod tablicq или SHAG FUNKCII я хз. Но я вполне допускаю, что это достойные, уважаемые люди, может даже тибетские монахи

Добавлено 05-10-2010 в 13:42:

ЗЫ. Никогда не пиши в алгоритме цыклы в виде for( int i ... за такое поушам надавать мало. Процессор ни про какие циклы не ведает.
Есть только условный и безусловные переходы.
Поэтому рисуешь вот так:

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 05-10-2010 в 11:59:

Цитата:
Дядя Миша писал:
А что такое vqvod tablicq или SHAG FUNKCII

Транслитом написаны действия. Ничего сам не придумывал, делал по примеру препода, она сама так писала, только на эстонском языке. Вот, например её поделки, квадратичное уравнение: http://elrond.tud.ttu.ee/material/k...0I/ruut.jsp.gif и тангенс: http://elrond.tud.ttu.ee/material/k...20I/tan.jsp.gif

А кусочки кода мне "помогли" написать.


Отправлено Дядя Миша 05-10-2010 в 12:28:

KUNI SAAB ?
поперхнулся чяем
Нет, я тебе вряд ли тут чем-то смогу помочь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PoD-Stas 05-10-2010 в 15:03:

DEAD MAN вообще какие-то очен ьстермные блок схемы вы юзаете о_0


Отправлено DEAD MAN 26-10-2010 в 16:19:

Эх. Ещё одна попытка. Только теперь уже с кодом.

Задание: Вывести на экран матрицу 5 на 5. Найти и вывести на экран самое большое чётное число из главной диагонали матрицы. А так же найти и вывести на экран самое малое нечётное число из побочной диагонали матрицы.

Вот, что я намудрил:

code:
#include <stdio.h> int main(void) { int i=0,j=0,max,min; int matrx[5][5]; for(i=1;i<6;i++) {for(j=1;j<6;j++) {matrx[i][j] = i*j;} } for (i=1;i<6;i++) { for(j=1;j<6;j++) {printf("%d\t",matrx[i][j] = i*j);} printf("\n"); } for(i=1;i<6;i++) { if(matrx[i][i]%2 == 0 && max < matrx[i][i]) max=matrx[i][i]; if(matrx[i][i]%2 == 1 && min > matrx[i][i]) min=matrx[i][i]; } printf("\nMAX = %d\nMIN= %d",max,min); getchar(); return 0; }


Проблема в том, что это чудо считает наиболее большим чётным числом - 26. И я не понимаю как проверить побочную диагональ(сейчас проверяется главная).


Отправлено Дядя Миша 26-10-2010 в 16:53:

DEAD MAN я уж хотел было сам наговнокодить, но тут в гугле вот чего нашел: http://programmersforum.ru/showthread.php?t=15801

Добавлено 26-10-2010 в 20:53:

DEAD MAN теперь по твоему коду скажу:

Цитата:
DEAD MAN писал:
for(i=1;i<6;i++)

вот за такое - руки отрывать надо. У тебя в массиве ПЯТЬ элементов, а ты лезешь в шестой. Твое персональное счастье, что в С++ нету экзепшенов на выход за пределы массива, поскольку под чистым Си твой код мигом вылетит с ошибкой. И правильно сделает.
Объясни, пожалуйста, почему ты оставляешь ячейки [0][0] в матрице непроинициализированными. и упорно лезешь за границы массива в каждом из циклов? Это вас в институте так учат?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 26-10-2010 в 17:11:

Цитата:
Дядя Миша писал:
поскольку под чистым Си твой код мигом вылетит с ошибкой

Дык, это и есть чистый Си и, хм, не вылетает. Мы на С++ не работаем.
Цитата:
Дядя Миша писал:
Объясни, пожалуйста, почему ты оставляешь ячейки [0][0] в матрице непроинициализированными

Хочу, что бы матрица начиналась с 1, а не с нуля. Так будет лучше:
code:
i=1;i<=5;i++
?
Цитата:
Дядя Миша писал:
Это вас в институте так учат?

Нет, это мой быдло код на основе небольшого примера, в котором самому надо было по заданию найти ошибки.

За ссылку спасибо. А что делать со странным числом 26, которое не входит в эту матрицу?


Отправлено Дядя Миша 26-10-2010 в 18:45:

Цитата:
DEAD MAN писал:
Дык, это и есть чистый Си и, хм, не вылетает. Мы на С++ не работаем.

А файлик твой с проектом какое расширение имеет? .cpp или .c ?

Добавлено 26-10-2010 в 22:45:

Цитата:
DEAD MAN писал:
А что делать со странным числом 26, которое не входит в эту матрицу?

прекратить читать мусор в стёке.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 26-10-2010 в 21:39:

Дядя Миша .c


Отправлено Дядя Миша 27-10-2010 в 09:38:

DEAD MAN и не вылетает? абамлеть!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено AlMod 27-10-2010 в 09:59:

code:
#include <stdio.h> int main(void) { int i=0,j=0,max,min; int matrx[5][5]; for(i=1;i<6;i++) {for(j=1;j<6;j++) {matrx[i][j] = i*j;} } for (i=1;i<6;i++) { for(j=1;j<6;j++) {printf("%d\t",matrx[i][j] = i*j);} // Зачем matrx[i][j] = i*j? достаточно matrx[i][j] printf("\n"); } // Инициализировать кто будет за тебя? max = 0; min = i*i; for(i=1;i<6;i++) { if(matrx[i][i]%2 == 0 && max < matrx[i][i]) max=matrx[i][i]; // Не побочная диагональ, правильно так: if(matrx[6-i][i]%2 == 1 && min > matrx[6-i][i]) min=matrx[6-i][i]; } printf("\nMAX = %d\nMIN= %d",max,min); getchar(); return 0; }


Держи

__________________
Сайт поддержки кодеров на AMX Mod X


Отправлено Дядя Миша 27-10-2010 в 11:33:

Еще чуть-чуть и получится программа "Поезд"

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 27-10-2010 в 16:09:

Цитата:
AlMod писал:
Зачем matrx[i][j] = i*j? достаточно matrx[i][j]

Потому что с matrx[i][j] последние число в матрице почему-то 5 место 25. Но оказывается с просто i*j - работает правильно, без 26.

Так, что большое спасибо добрый человек. Сильно выручил.

Дядя Миша Сарказм? Если нет, то и в линуксе через Geany и в винде через Dev C++ всё прекрасно компилируется и работает.


Отправлено AlMod 28-10-2010 в 11:45:

Небольшое добавление - старайся избегать такого нагромождения в коде (здесь: много лишних циклов), все можно сделать намного компактнее

code:
#include <stdio.h> int main(void) { int max=0,min=25; int matrx[5][5]; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { matrx[i][j] = (i+1)*(j+1); printf("%d\t",matrx[i][j]); } printf("\n"); if(matrx[i][i]%2 == 0 && max < matrx[i][i]) { max=matrx[i][i]; } if(matrx[4-i][i]%2 == 1 && min > matrx[4-i][i]) { min=matrx[4-i][i]; } } printf("\nMAX = %d\nMIN = %d",max,min); getchar(); return 0; }

__________________
Сайт поддержки кодеров на AMX Mod X


Отправлено Дядя Миша 28-10-2010 в 13:17:

Ну вот, наконец-то циклы правильные.

Добавлено 28-10-2010 в 17:17:

ЗЫ. % 2 можно по идее заменить на & 1.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 08-11-2010 в 18:36:

Ещё один вопрос по массивам назрел. Скажем у меня есть матрица 5 на 5, допустим такая:

1 6 8 4 9
5 3 9 4 5
9 3 7 5 1
0 0 8 6 6
6 7 2 0 4

И скажем с клавиатуры я задаю 4 строку и 2 столбец. При этом 4 строка должна поменяться местами со 2ым столбцом. Т.е. новая матрица должна выглядеть так (там где знак вопроса может стоять любая цифра, например 100):

1 0 8 4 9
5 0 9 4 5
9 8 7 5 1
6 ? 3 0 7
6 6 2 0 4

Как это реализовать?


Отправлено Дядя Миша 08-11-2010 в 20:11:

Ну обычно быдлокодингом, по типу:

C++ Source Code:
1
void Matrix3x3_Transpose( matrix3x3 out, const matrix3x3 in )
2
{
3
  out[0][0] = in[0][0];
4
  out[1][0] = in[0][1];
5
  out[2][0] = in[0][2];
6
  out[0][1] = in[1][0];
7
  out[1][1] = in[1][1];
8
  out[2][1] = in[1][2];
9
  out[0][2] = in[2][0];
10
  out[1][2] = in[2][1];
11
  out[2][2] = in[2][2];
12
}

Операция называется транспонированием матрицы (если конечно надо все ячейки поменять, а не только одну).
Операция достаточно ответственная, поэтому в цикле её лучше не делать, чтобы потом не гадать отчего всё глючит.
Если одну ячейку - то принцип тот же.

Добавлено 08-11-2010 в 23:11:

ЗЫ. Для твоего примера вышеприведенный код будет выглядеть приблизительно вот так:
C++ Source Code:
1
matrix3x3 tmp;
2
int row= 1, column=2;
3
memcpy( tmp, mat, sizeof( matrix3x3 ));
4
mat[row][0] = tmp[0][column];
5
mat[row][1] = tmp[1][column];
6
mat[row][2] = tmp[2][column];

Что-то типа того. Но надо как следует разобраться где у тебя строки. а где столбцы, то есть скорее тест на внимательность, нежели на умение кодить.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 08-11-2010 в 20:34:

Дядя Миша Извини, что я не совсем понимаю как это можно связать с началом моего кода:

code:
#include <stdio.h> #include <stdlib.h> int main() { int A[5][5]; int i=0,j=0; for (i=0;i<5;i++) { for (j=0;j<5;j++) { A[i][j] = rand() % 100; printf("%d\t",A[i][j]); } printf("\n"); } printf("Stroka, Stolbec: "); scanf("%d %d",&i,&j); return 0; }


Не мог бы чуть подробней объяснить?


Отправлено Дядя Миша 08-11-2010 в 21:24:

DEAD MAN тебе для удобства надо функцию завести, которая будет свапать выбранную строку и столбец, и вынести туда код, по типу того что я привёл. Тогда не запутаешься: получаешь из консоли строку, столбец, кормишь их функции, она сама всё свапает. А в одном майне и запутаться недолго.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 15-11-2010 в 20:05:

Новый вопрос.

Пользователь вводит координаты некой четырёхугольной фигуры. Программа должна сказать по этим точкам является ли фигура прямоугольником.
Проблема в том, что я понимаю как это надо делать: найти углы между векторами, найти длину векторов и сравнить противоположные стороны(если конечно они параллельны). Но тут возникает 2 проблемы. Тонны переменных, которые меня несколько напрягают(поскольку вводить координаты надо для 3ёх разных фигур) . И честность пользователя, будет ли он вводить координаты по часовой стрелке, или в случайном порядке, т.к. во втором случаи понятия не имею для каких векторов находить углы и длины.
В общем, есть ли более простой способ решения задачи?


Отправлено Skaarj 15-11-2010 в 20:24:

Кирпичами не кидайтесь. %)
Я бы всю фигуру передвинул бы в начало кооординат одной точкой и 2 раза повернул бы вокруг этой первой точки так, что бы сначала эта первая точка и, например, 2-я легли на одну ось и затем ещё раз, что бы уже 1 и 3-я опять же легли на одну ось.
Осталось бы за эти 2 поворота сравнить координаты точек, у прямоугольника будут по 2 парные точки с одинаковыми координатами по одной из осей за один из 2х вариантов поворота.


Отправлено Дядя Миша 15-11-2010 в 20:42:

DEAD MAN это школьная программа геометрии )

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено SiPlus 20-11-2010 в 14:43:

Я бы так сделал:
1) Нашел бы верхнюю левую точку.
2) Нашел бы верхнюю правую точку.
3) Нашел бы нижнюю левую точку.
4) Нашел бы нижнюю правую точку.
5) Сравнил бы X левой верхней и левой нижней точек.
6) Сравнил бы X правой верхней и правой нижней точек.
7) Сравнил бы Y левой верхней и правой верхней точек.
8) Сравнил бы Y левой нижней и правой нижней точек.
И если либо в 5, либо в 6, либо в 7, либо в 8 получаются не равные результаты, значит фигура - не прямоугольник.


Отправлено Government-Man 20-11-2010 в 18:58:

SiPlus а если он повернут на 34°?


Отправлено CrazyRussian 20-11-2010 в 19:13:

первое что на ум пришло:

C++ Source Code:
1
bool IsRectangle(int x1,int y1,int x2,int y2)
2
{
3
  // x1,y1		x2,y1
4
  //
5
  // x1,y2		x2,y2
6
 
7
  Vector edge1,edge2,edge3,edge4;
8
 
9
  edge1=Vector(x2-x1,y1-y1);
10
  edge2=Vector(x1-x1,y2-y1);
11
 
12
  edge3=Vector(x1-x2,y2-y2);
13
  edge4=Vector(x2-x2,y1-y2);
14
 
15
  float angle_11=arccos(DotProduct(edge1,edge2));
16
  float angle_22=arccos(DotProduct(edge3,edge4));
17
 
18
  return ((angle_11==90) && (angle_22==90));
19
}

__________________
Трагическая новость: Пятеро инженеров Casio умерли от смеха, узнав что Samsung анонсировали часы с заявленным временем работы в 25 часов


Отправлено Government-Man 20-11-2010 в 19:15:

DEAD MAN координаты должны вводиться только по часовой или только против часовой стрелки. Потом поверяешь противоположные стороны на равенство и один (любой) из углов на равенство 90° (результат скалярного произведения векторов-сторон должен быть равен 0).

Добавлено 20-11-2010 в 14:15:

Цитата:
CrazyRussian писал:
float angle_11=arccos(DotProduct(edge1,edge2);
float angle_22=arccos(DotProduct(edge3,edge4);

return ((angle_11==90) && (angle_22==90));


arccos нахрен не нужен - если угол равен 90 градусов то его косинус равен 0.


Отправлено SiPlus 21-11-2010 в 09:31:

CrazyRussian, откуда ты знаешь, что точка 2 будет поставлена человеком обязательно справа от точки 1?


Отправлено CrazyRussian 21-11-2010 в 10:10:

Цитата:
Government-Man писал:
arccos нахрен не нужен

это да, я сходу не вспомнил чему косинус 90 градусов равняется

__________________
Трагическая новость: Пятеро инженеров Casio умерли от смеха, узнав что Samsung анонсировали часы с заявленным временем работы в 25 часов


Отправлено Дядя Миша 21-11-2010 в 10:14:

Надо заюзать RotatePointAroundVector, построить четырёхугольник завращать вокруг центра, визуализировать его и вывести диалог для юзера: Эта фигура является прямоугольником? Да\Нет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 24-02-2011 в 18:51:

Здрасте, снова вернулся за помощью.

Вот такое задание (обращаюсь к вам, поскольку идей ноль, а со стрингами я так и не могу пока научится работать):

Цитата:
Написать функцию, которая возвращает количество повторяющихся букв в строчке.
Прототип функции выглядит так:
code:
int repeatCharCount( char * str);

максимальная длина строки - 256 символов.
Повторяющимися буквами считаются любые идущие друг за другом символа, например
В строчке "" ответ будет 0
В строчке "PARE uueks esimeheks valiti TTÜ ärikorralduse instituudi külalisprofessor Milvi Tepp" ответ будет 5, по одному в словах uueks,ärikorraldus,instituudi, külalisprofessor, Tepp
В строчке "12458756422457765497333457!!4:::" ответ будет 7, ибо 22,77,333,!!,:::
И да, в строчке "12__34___5" ответ будет 3

Ввод данных из файла "CharCount.txt", вывод в файл "Out.txt" где на каждую строчку ввода будет соответствовать строчка с числом.

CharCount.txt
Цитата:
12__34___5
12458756422457765497333457!!4:::
PARE uueks esimeheks valiti TTÜ ärikorralduse instituudi külalisprofessor Milvi Tepp
Mama myla ramy


Out.txt
Цитата:
3
7
6
0


Отправлено Дядя Миша 24-02-2011 в 19:34:

Писал я нечто подобное покойному смалл-диксу.
ЗЫ. Осторожно realloc

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 24-02-2011 в 21:11:

Дядя Миша Ух, стена кода, да и ещё работа с памятью (чего мы пока не учили). Ладно, спасибо, буду курить, может смогу это в что-то более простое переписать.


Отправлено Дядя Миша 24-02-2011 в 21:15:

DEAD MAN ну я не умею писать просто, всегда руки чешутся апчхимизировать, а из-за этого страдает читабельность.
Да и реаллок еще этот...
Но сам код рабочий 100% и без утечек, я его на боундс-чекере отлаживал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Scrama 25-02-2011 в 03:36:

std::vector<char>

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran


Отправлено Qif_Qgame 27-02-2011 в 17:22:

Если прога еще нужна - вот версия попроще. Да и комментов понаписал - мама не горюй, понятно вроде должно быть любому.

C++ Source Code:
1
#include <conio.h>
2
#include <stdio.h>
3
#include <stdlib.h>
4
 
5
#define maxline 256//максимальное количество символов в строке
6
 
7
 
8
int DoubleCount( char* Line )				//наша функция
9
{
10
  int Counter=0, i;						//Counter - счетчик пар
11
  for ( i=1; Line[i]!=NULL; i++ )		//создаем цикл и посимвольно достаем из строки буквы
12
  {
13
    if ( Line[i]=='\n' )			//проверяем на символ конца строки
14
      return Counter;				//возвращаем значение счетчика если конец
15
 
16
    if ( Line[i-1]==Line[i] ) Counter++;	//сравниваем текущий и предыдущий символ
17
    }
18
    return Counter;						//возвращаем значение счетчика
19
  }
20
 
21
void main()
22
{
23
  FILE *iFile, *oFile;
24
  int DCount=0;							//переменная для хранения количества пар в строке
25
  char iLine[maxline];					//массив символов для хранения строки
26
 
27
  if ((iFile=fopen("CharCount.txt", "r"))==NULL)	//открываем файл, из которого считываем текст
28
  {												//и проверяем, открылся ли он
29
  printf("ERROR OPENING FILE");				//если нет, то пишем мессагу
30
  getch();
31
  exit (1);									//и выходим
32
}
33
else oFile=fopen("Out.txt", "w");				//если да, то открываем файл для записи
34
 
35
while (fgets(iLine, maxline, iFile)!=NULL)		//считываем строку в массив iLine размером maxline
36
{												//из файла iFile. делаем до тех пор, пока нет конца файла
37
DCount = DoubleCount( iLine );					//записываем в DCount значение, возвращаемое нашей ф-цией
38
fprintf(oFile,"%d\n",DCount);					//записываем в результирующий файл количество пар
39
}
40
 
41
fclose(iFile);									//закрываем файлы
42
fclose(oFile);
43
printf("Mission Complete!");
44
getch();										//ждем от пользователя нажатия перед завершением программы
45
}


Правда без табуляции комменты смотрятся жутковато %)

__________________
При виде колоизации из дум3 Дядя Миша страшно кричит
Boom - круто! © Worker
[jqbros site]


Отправлено Дядя Миша 27-02-2011 в 17:28:

бьет Qif_Qgame по рукам. Не пиши макросы с нижнем регистре, не пиши макросы в нижнем регистре!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Qif_Qgame 27-02-2011 в 18:30:

Пардон, ошибочка. Больше не буду.

__________________
При виде колоизации из дум3 Дядя Миша страшно кричит
Boom - круто! © Worker
[jqbros site]


Отправлено fire64 27-02-2011 в 18:50:

Дядя Миша, а кстати, почему ?

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Дядя Миша 27-02-2011 в 19:02:

fire64 потому что их в таком случае легко перепутать с функциями.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 27-02-2011 в 19:43:

Qif_Qgame О, большое спасибо! Просто идеально. Мог не утруждать себя, не писать комментарии, я бы и так разобрался.


Отправлено DEAD MAN 13-03-2011 в 12:25:

И снова нуждаюсь в вас. Боюсь, что без чей-то помощи просто не осилю задание. Последний день сдачи - 31 марта.

Задание такое:

Цитата:
Генерируется матрица размером не меньше, чем 8 на 8, состоящая из 0 и 1 (в нашем случаи 0 - это пусто, 1 - есть мина). Единиц должно быть от 30% до 40% от всей матрицы. Выбирается случайная ячейка матрицы, на которую сбрасывается "парашютист". Этот "парашютист" может двигаться как Ладья в шахматах, но только на 1 клетку/ячейку за ход.
"Парашютист" делает шаг, проверяет клетку на наличие мины. Если мина есть - возвращается на предыдущую клетку, мины нет - остаётся на данной. В итоге"парашютист" должен найти выход из минного поля(или не найти, учень удивлюсь, если при случайной генерации выпадет так, что выход будет заблокирован) и вывести на экран результат о успешном завершении поиска. Функция поиска выхода, как я понял, должна быть рекурсивной. Так же программа должна выводить текущее положение "парашютиста" на матрице и состояние текущей клетки (есть мина/нет мины).


З.Ы. Программа всё ещё на том же C.


Отправлено Дядя Миша 13-03-2011 в 12:54:

Цитата:
DEAD MAN писал:
Генерируется матрица размером не меньше, чем 8 на 8, состоящая из 0 и 1

ну char matrix[8][8];
Цитата:
DEAD MAN писал:
Единиц должно быть от 30% до 40% от всей матрицы

for( x = 0; x < 8; x++ )
for( y = 0; y < 8; y++ )
{
matrix[x][y] = (rand() & 1) ? 0 : 1;
}
Я правда хз, тут скорее будет вероятность 50%.
Цитата:
DEAD MAN писал:
Выбирается случайная ячейка матрицы, на которую сбрасывается "парашютист".

x = rand() % 8;
y = rand() % 8;
Цитата:
DEAD MAN писал:
"Парашютист" делает шаг, проверяет клетку на наличие мины. Если мина есть - возвращается на предыдущую клетку, мины нет - остаётся на данной.

ну тут корочи разные способы могут быть, но самый простой - проверить все восемь ячеек вокруг себя и отдать приоритет той, которая ближе всего к 0 по x, нулю по y либо к 8 по x, 8 по y. Из этих четырех приоритетов некоторые отменяются, поскольку в одном из полей может оказаться мина *Внимание, здесь мины!!!".
Далее, если все предпочтительные поля заняты, делается следующий проход - поиск ЛЮБОГО свободного поля без мины. Как легко увидеть, у данного алгоритма есть жирный баг - при некотором стечении обстоятельств парашутист начнет метаться между двумя соседними клетками. Но для начала и это неплохо.
Цитата:
DEAD MAN писал:
Функция поиска выхода, как я понял, должна быть рекурсивной.

можно и рекурсивной, можно и просто в общем цикле вызывать MoveExecute();
sleep( 100 ); // ну чтоб не слишком быстро метался.
Цитата:
DEAD MAN писал:
Так же программа должна выводить текущее положение "парашютиста" на матрице и состояние текущей клетки (есть мина/нет мины).


это предалагается в числах выводить или прямо матрицу рисовать средствами консоли?
Второй вариант чуть сложнее, но зато более красивый =)

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено DEAD MAN 13-03-2011 в 15:30:

Дядя Миша Ну с генерацией матрицы и сбросом парашютиста я разобрался, это не сложно. Мне проблемы доставляет само написание этой рекурсивной функции (уточнил, надо делать рекурсию). Мне бы найти зачатки кода или псевдокод.

Цитата:
Дядя Миша писал:
рисовать средствами консоли

А есть команда, которая удаляет все записи в консоли? А так на самом деле достаточно только в численном виде выводить координаты.


Отправлено Дядя Миша 13-03-2011 в 17:49:

Цитата:
DEAD MAN писал:
А есть команда, которая удаляет все записи в консоли?

system( "@cls\n" );
не?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 22:24.
Показать все 60 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024