![]() |
Показать все 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)
Очередная тема о программировании
И до меня дошло, да. Собственно поступил я на факультет "компьютерных систем" и , внезапно, нам тоже надо учить программирование, но не с самого лёгкого (как, например, инфотехнологи начали со Scratch`а), а с Си.
Я надеюсь вы не против, если я в этой теме буду просить помощь в этом нелёгком деле, ибо препод (бабушка, которой за 70) объясняет очень плохо, да и ещё работаем на линуксах.
И так, первая домашняя работа состоит в том, что бы написать схему Джексона на вот такое уравнение, т.е. как понял надо расписать алгоритм решения этого уравнения для самой программы. Но при этом есть условие (полу машинный перевод с эстонского языка):
Боюсь, на этом форуме нет программистов...
Вот если бы ты спросил, как скопипастить из ку3 код звука - тогда другое дело
__________________
DEAD MAN
http://en.wikipedia.org/wiki/Jackso...red_Programming
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Меня очень часто раньше просили помочь написать какую-нить лабораторную работу по программингу. Так вот я обратил внимание, чо единственным непреодолимым фактором является таки невероятно корявое описание заданий. То есть расписано оно достаточно подробно, но на какие-то отвлечённые темы абсолютно.
Другими словами, для меня тех. задание, это абсолютно чёткий набор пунктов, вида: программа должна делать вот это, вот это и вот это.
И еще было бы неплохо вот это. Я видел, допустим, домашние задания по изучению графического 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'
__________________
FiEctro Конечно спасибо, но к вики я уже обращался. И не смотря на то, что мой уровень знания английского языке довольно высок, такие вещи усвоить на не родном языке довольно сложно.
Дядя Миша Как нам объяснили эти схемы, что-то типа основ для небольших программ. Делаются они в JSP Editor ( http://www.his.se/english/universit...rom/jsp-editor/ ) и у него есть функция экспорта кода. Я конечно могу принести уже готовый код, но тогда будет много вопросов по работе когда, на которые я не смогу ответить. Вот пример такой схемы для вычисления квадратичной функции, препод составлял прямо на лекции: http://elrond.tud.ttu.ee/material/k...0I/ruut.jsp.gif (на эстонском языке).
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'
Дядя Миша Да, пока что только алгоритм для решения уравнения из первого поста, но обязательно что бы выполнялось процитированное условие.
Добавлено сегодня в 13:53:
Я так понял, что здесь помощи у меня найти, к сожалению, не получится. Ну и ладно, буду пробовать тогда сам как-то разбираться.
DEAD MAN
Я тебе в первом посте еще это сказал. Здесь форум не по программированию, а по модингу Халфы и OpenGL-движкам.
__________________
__________________
Глупый юзер
Кто написал^^^
Тот сам такой...
с@ш@ халфер
Я просто не знаю. Я молекулярный биолог по образованию, а не программист.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ёпрст - пишешь программу на си по тому своему условию, который "машинный перевод" а потом транслируешь код C в код jsp. Судя по тому что в википедии написано, не думаю что это будет так сложно
Вообще странной фигне вас учат, у нас были обычные блок-схемы алгоритмов, никакой упоротой фигни небыло
__________________
Сайт поддержки кодеров на AMX Mod X
AlMod Если бы я ещё умел писать на Си, это это конечно да.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вроде как сделал я эту схему, скорее всего с ошибками, но всё-таки.
Теперь действительно сложная для меня вещь, на основе этой схемы(хотя можно и без неё) надо написать программу, которая считала бы функцию (из первого поста) по методу/условию (тоже из первого поста). Надеюсь (имя пользователя съел шамблер) сможет хотя бы тут помочь.
Из всего что написал только 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'
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'
DEAD MAN вообще какие-то очен ьстермные блок схемы вы юзаете о_0
Эх. Ещё одна попытка. Только теперь уже с кодом.
Задание: Вывести на экран матрицу 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; }
DEAD MAN я уж хотел было сам наговнокодить, но тут в гугле вот чего нашел: http://programmersforum.ru/showthread.php?t=15801
Добавлено 26-10-2010 в 20:53:
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'
?code:
i=1;i<=5;i++
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша .c
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'
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
Еще чуть-чуть и получится программа "Поезд"
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Небольшое добавление - старайся избегать такого нагромождения в коде (здесь: много лишних циклов), все можно сделать намного компактнее
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 в 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'
Ещё один вопрос по массивам назрел. Скажем у меня есть матрица 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
Как это реализовать?
Ну обычно быдлокодингом, по типу:
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 | } |
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'
Дядя Миша Извини, что я не совсем понимаю как это можно связать с началом моего кода:
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; }
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'
Новый вопрос.
Пользователь вводит координаты некой четырёхугольной фигуры. Программа должна сказать по этим точкам является ли фигура прямоугольником.
Проблема в том, что я понимаю как это надо делать: найти углы между векторами, найти длину векторов и сравнить противоположные стороны(если конечно они параллельны). Но тут возникает 2 проблемы. Тонны переменных, которые меня несколько напрягают(поскольку вводить координаты надо для 3ёх разных фигур) . И честность пользователя, будет ли он вводить координаты по часовой стрелке, или в случайном порядке, т.к. во втором случаи понятия не имею для каких векторов находить углы и длины.
В общем, есть ли более простой способ решения задачи?
Кирпичами не кидайтесь. %)
Я бы всю фигуру передвинул бы в начало кооординат одной точкой и 2 раза повернул бы вокруг этой первой точки так, что бы сначала эта первая точка и, например, 2-я легли на одну ось и затем ещё раз, что бы уже 1 и 3-я опять же легли на одну ось.
Осталось бы за эти 2 поворота сравнить координаты точек, у прямоугольника будут по 2 парные точки с одинаковыми координатами по одной из осей за один из 2х вариантов поворота.
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'
Я бы так сделал:
1) Нашел бы верхнюю левую точку.
2) Нашел бы верхнюю правую точку.
3) Нашел бы нижнюю левую точку.
4) Нашел бы нижнюю правую точку.
5) Сравнил бы X левой верхней и левой нижней точек.
6) Сравнил бы X правой верхней и правой нижней точек.
7) Сравнил бы Y левой верхней и правой верхней точек.
8) Сравнил бы Y левой нижней и правой нижней точек.
И если либо в 5, либо в 6, либо в 7, либо в 8 получаются не равные результаты, значит фигура - не прямоугольник.
SiPlus а если он повернут на 34°?
первое что на ум пришло:
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 часов
DEAD MAN координаты должны вводиться только по часовой или только против часовой стрелки. Потом поверяешь противоположные стороны на равенство и один (любой) из углов на равенство 90° (результат скалярного произведения векторов-сторон должен быть равен 0).
Добавлено 20-11-2010 в 14:15:
CrazyRussian, откуда ты знаешь, что точка 2 будет поставлена человеком обязательно справа от точки 1?
__________________
Трагическая новость: Пятеро инженеров Casio умерли от смеха, узнав что Samsung анонсировали часы с заявленным временем работы в 25 часов
Надо заюзать RotatePointAroundVector, построить четырёхугольник завращать вокруг центра, визуализировать его и вывести диалог для юзера: Эта фигура является прямоугольником? Да\Нет.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Здрасте, снова вернулся за помощью.
Вот такое задание (обращаюсь к вам, поскольку идей ноль, а со стрингами я так и не могу пока научится работать):
code:
int repeatCharCount( char * str);
Писал я нечто подобное покойному смалл-диксу.
ЗЫ. Осторожно 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 ну я не умею писать просто, всегда руки чешутся апчхимизировать, а из-за этого страдает читабельность.
Да и реаллок еще этот...
Но сам код рабочий 100% и без утечек, я его на боундс-чекере отлаживал.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
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
Если прога еще нужна - вот версия попроще. Да и комментов понаписал - мама не горюй, понятно вроде должно быть любому.
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]
бьет 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'
Пардон, ошибочка. Больше не буду.
__________________
При виде колоизации из дум3 Дядя Миша страшно кричит
Boom - круто! © Worker
[jqbros site]
Дядя Миша, а кстати, почему ?
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
fire64 потому что их в таком случае легко перепутать с функциями.
__________________
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 О, большое спасибо! Просто идеально. Мог не утруждать себя, не писать комментарии, я бы и так разобрался.
И снова нуждаюсь в вас. Боюсь, что без чей-то помощи просто не осилю задание. Последний день сдачи - 31 марта.
Задание такое:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша Ну с генерацией матрицы и сбросом парашютиста я разобрался, это не сложно. Мне проблемы доставляет само написание этой рекурсивной функции (уточнил, надо делать рекурсию). Мне бы найти зачатки кода или псевдокод.
__________________
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