Тролль Опубликовано 15 сентября, 2010 Жалоба Поделиться Опубликовано 15 сентября, 2010 (изменено) Aksiom: #include <graphics.h>#include <time.h>#include <stdio.h>#include <math.h>char* sinput(){char c,buf[2],*str=(char*)malloc(100); str[0]='\0'; buf[1]='\0'; moveto(200,0);while((c=getch())!=13){if(c<' '||c>'z')continue; buf[0]=c; outtext(buf);str[strlen(str)+1]='\0'; str[strlen(str)]=c;}outtextxy(0,0," "); return str;}int main(){ initwindow(800,600); float b,l,a,a1,a2,a3,a4; int i,j,k; char fn[100]; outtextxy(0,0,"b ? "); sscanf(sinput(),"%f",&b); outtextxy(0,0," "); outtextxy(0,0,"L ? "); sscanf(sinput(),"%f",&l); outtextxy(0,0," ");outtextxy(0,0,"Name of the file? "); sscanf(sinput(),"%s",fn); outtextxy(0,0," ");outtextxy(0,0,"Number of quadruples? "); sscanf(sinput(),"%d",&k); outtextxy(0,0," ");FILE *f; f=fopen(fn,"w");srand(time(NULL)); for(i=0;i<k*4;i++){a=b-log(float(rand())/RAND_MAX)/l; fprintf(f,"%f ",a);}fclose(f);f=fopen(fn,"r");for(i=0;i<k;i++){fscanf(f,"%f%f%f%f",&a1,&a2,&a3,&a4);j=rand()%14+1; setcolor(j); ellipse(unsigned(a1),unsigned(a2),0,360,unsigned(a3),unsigned(a4));}fclose(f);settextstyle(1,0,2); char dateStr[9],timeStr[9]; _strdate(dateStr); _strtime(timeStr);setcolor(BLUE); outtextxy(20,550,dateStr); outtextxy(200,550,timeStr); setcolor(RED); outtextxy(400,550,"Troll");while(!kbhit()); closegraph();} Программировалось в среде Dev-C++ с борландовской графической библиотекой winbgim При запуске с b=200, L=0.03 и количеством четверок чисел, равным 10, получается такая картинка: P.S. Посмотрел еще раз и несколько оптимизировал: #include <graphics.h>#include <time.h>#include <stdio.h>#include <math.h>char* sinput(int x,int y){char c,buf[2],sb[]=" "; static char str[100]; str[0]='\0'; buf[1]='\0'; moveto(x,y);while((c=getch())!=13){if(c==8){str[0]='\0'; outtextxy(x,y,sb);} if(c<' ')continue; buf[0]=c; outtext(buf); str[strlen(str)+1]='\0'; str[strlen(str)]=c;}outtextxy(x,y,sb); return str;}int main(){ float b,l,a,a1,a2,a3,a4; int i,j,k; char fn[100],sb[]=" "; initwindow(800,600); outtextxy(0,0,"b ? "); sscanf(sinput(200,0),"%f",&b); outtextxy(0,0,sb); outtextxy(0,0,"L ? "); sscanf(sinput(200,0),"%f",&l); outtextxy(0,0,sb);outtextxy(0,0,"Name of the file? "); sscanf(sinput(200,0),"%s",fn); outtextxy(0,0,sb);outtextxy(0,0,"Number of quadruples? "); sscanf(sinput(200,0),"%d",&k); outtextxy(0,0,sb);FILE *f; f=fopen(fn,"w"); srand(time(NULL)); for(i=0;i<k*4;i++){a=b-log(float(rand())/RAND_MAX)/l; fprintf(f,"%f ",a);}fclose(f);f=fopen(fn,"r");for(i=0;i<k;i++){fscanf(f,"%f%f%f%f",&a1,&a2,&a3,&a4); j=rand()%14+1; setcolor(j); ellipse(unsigned(a1),unsigned(a2),0,360,unsigned(a3),unsigned(a4));}fclose(f);char dateStr[9],timeStr[9]; _strdate(dateStr); _strtime(timeStr);settextstyle(1,0,2); setcolor(BLUE); outtextxy(20,550,dateStr); outtextxy(200,550,timeStr); setcolor(RED); outtextxy(400,550,"Troll"); while(!kbhit()); closegraph();} Изменено 15 сентября, 2010 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
R2D2 Опубликовано 16 сентября, 2010 Жалоба Поделиться Опубликовано 16 сентября, 2010 написать в builder C++ Задание: Календарь на год. Составьте программу для реализации календаря на год, изображенного на рис. помогите написать программу, заранее спасибо. :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 16 сентября, 2010 Жалоба Поделиться Опубликовано 16 сентября, 2010 R2D2: У меня C++ Builder не установлен, но в программе дело сводится практически к перетаскиванию на форму и настройке свойств двенадцати готовых компонентов TMonthCalendar (из вкладки Win32). Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 18 сентября, 2010 Жалоба Поделиться Опубликовано 18 сентября, 2010 дл началоа обойдемся без кода - просто вопрос - как изменять значения масива динамического через функцию? void work(bool *,int size){for (...) x[i]=1;}void main(){bool *y; y=new bool[size];work (*y);} в моем неправильном представлении вот так, а как же правильно? (масив обязательно динамический) Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 18 сентября, 2010 Жалоба Поделиться Опубликовано 18 сентября, 2010 такой вариант вроде заработал: void work(bool *,int size){ for (...) x=1; } void main(){ bool *y; y=new bool; work (&y[0],size); } но так я изменяю значения масива, а как просто оперировать в функциии как парметрами значениями входящего масива, не изменяя его значений? Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 18 сентября, 2010 Жалоба Поделиться Опубликовано 18 сентября, 2010 и еще проблема - та же только с двумерным масивом. Вариант : такой вариант вроде заработал: void work(bool *,int size){for (...) x[i]=1;}void main(){bool **y; y=new bool*[size]; // и тд выделение памятиwork (&y[i][0],size);//указатель на первый елемент i-ой строки} результат ужасающий Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 19 сентября, 2010 Жалоба Поделиться Опубликовано 19 сентября, 2010 у кого есть свежесть в мозгах - поищите ошибку. я уже не могу. компилятор ошибок не выдает, а винда приложение прекращает #include <QtCore/QCoreApplication>#include <QDebug>#include <QTime>bool compare (int x,int y){bool c;x>y?c=1:c=0;return c;}bool checkflag(bool *x,int size){int y=0; bool ret;for (int i=0;i<size;i++)if (x[i]) y++;y==size?ret=true:ret=false;return ret;}void work (int * x,bool * y,bool c,int d){int sig;if (c==true) sig=-1;else sig=1;for (int i=0;i<d;i++){if(y[i])x[i]+=-1;}}int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QTime time(0, 0, 0);qsrand(time.secsTo(QTime::currentTime()));int sx=12,sy=6;int teta,count=0,check=0;bool res=false;bool **mas=NULL; mas=new bool*[sx];for(int i=0; i<sy;i++) mas[i]=new bool[sy];bool *values; values=new bool[sy];int *koef;koef=new int[sx];bool *flags;flags=new bool[sy];for (int i=0;i<sx;i++)for (int j=0;j<sy;j++){ mas[i][j]=qrand()%2; }for (int i=0;i<sy;i++) values[i]=qrand()%2;for (int i=0;i<sy;i++){ if (qrand()%2)koef[i]=qrand()%20;else koef[i]=qrand()%20*-1;}for (int i=0;i<sy;i++) qDebug("%d",koef[i]);teta=qrand()%20;while (!res||count<1000){ for (int i=0;i<sy;i++){ for (int j=0;j<sx;j++){ check+=mas[i][j]*koef[j];} if (values[i]==compare(check,teta)) flags[i]=true; else work(&koef[0],&mas[i][0],compare(check,teta),sy); } count++; if (checkflag(&flags[0],sy)) res=true; }delete[]flags; delete[]values;delete[]koef;for (int i=0;i<sx;i++) delete[]mas[i];return a.exec();} Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 19 сентября, 2010 Жалоба Поделиться Опубликовано 19 сентября, 2010 путем копи-паста кусков кода (дебаг бесполезен в виду отсутствия ошибок от комплилятора) оказалось что проблема в инициализации двумерного масива: вот без етого кусочка кода все работает (ну задачу не выполняет конечно, но вылетов нет): for (int i=0;i<sx;i++)for (int j=0;j<sy;j++){ mas[i][j]=qrand()%2; } :) Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 19 сентября, 2010 Жалоба Поделиться Опубликовано 19 сентября, 2010 с утреца пораньше решение нашлось: память я выделял на sy строк и столбцов. а строк то у меня sx>sy . Получается хотел инициализировать несуществующи елемент :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Aksiom Опубликовано 19 сентября, 2010 Жалоба Поделиться Опубликовано 19 сентября, 2010 (изменено) Написать на C++. Задание. В модуль включить функции: 1. Записи в файл некоторого количества четверок чисел, подчиняющихся сдвинутому экспоненциальному закону распределения Xn=b-ln(Vn)/L , где V случайные числа, равномерно распределённые в диапазоне (0,1]. Количество четвёрок, коэффициенты b, L и имя файла вводить с консоли. 2. Получения и вывода на экран в графическом режиме шрифтом Triplex даты и времени запуска программы. Для вывода отвести нижнюю четверть площади экрана. Сюда же вывести фамилии авторов модуля и размер 3. Чтение из файла этих чисел по пункту 1 и рисования на экране эллипсов с прочитанными параметрами и случайным цветом. Рисование производить в осташейся свободной части экрана. Помогите ребята кто может. Буду очень благодарен и рад. i Уведомление:Пользуйтесь, пожалуйста, кнопкой "Предварительный просмотр" ! Изменено 19 сентября, 2010 пользователем Yezhishe Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 19 сентября, 2010 Жалоба Поделиться Опубликовано 19 сентября, 2010 (изменено) Aksiom: Прокрути десять сообщений назад. Изменено 19 сентября, 2010 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Aksiom Опубликовано 20 сентября, 2010 Жалоба Поделиться Опубликовано 20 сентября, 2010 Тролль спасибо тебе. Ссылка на комментарий Поделиться на другие сайты Поделиться
Riki_Tiki_Tavi Опубликовано 26 сентября, 2010 Жалоба Поделиться Опубликовано 26 сентября, 2010 (изменено) Помогите решить на С Дані числа х, у. З’ясувати, чи належить точка (х, у) області, зображеній на малюнку. ! Предупреждение:Please use preferred on the Forum language! Inace cu biti primoran za sankcije zbog prekrsenja p.1 Правила Форума. i Уведомление:Достаточно внятно написано? Изменено 26 сентября, 2010 пользователем Yezhishe Ссылка на комментарий Поделиться на другие сайты Поделиться
Riki_Tiki_Tavi Опубликовано 26 сентября, 2010 Жалоба Поделиться Опубликовано 26 сентября, 2010 (изменено) Помогите решить на С Дані числа х, у. З’ясувати, чи належить точка (х, у) області, зображеній на малюнку. Данные числа х, у. Выяснить, принадлежит ли точка (х, у) области, изображенной на рисунке i Уведомление: Ну вот, значительно лучше... И ведь несложно совсем, правда? Изменено 26 сентября, 2010 пользователем Yezhishe Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 26 сентября, 2010 Жалоба Поделиться Опубликовано 26 сентября, 2010 Riki_Tiki_Tavi: #include <stdio.h>#include <math.h>main(){float x,y; char *s[]={"out","in"}; printf("x y ? "); scanf("%f%f",&x,&y);printf("%s\n",y>0?s[x*x+y*y<=1]:s[y-fabs(x)>=-1]); getchar(); getchar();} Ссылка на комментарий Поделиться на другие сайты Поделиться
Riki_Tiki_Tavi Опубликовано 26 сентября, 2010 Жалоба Поделиться Опубликовано 26 сентября, 2010 Riki_Tiki_Tavi: #include <stdio.h>#include <math.h>main(){float x,y; char *s[]={"out","in"}; printf("x y ? "); scanf("%f%f",&x,&y);printf("%s\n",y>0?s[x*x+y*y<=1]:s[y-fabs(x)>=-1]); getchar(); getchar();} Спасибо большое! Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 2 октября, 2010 Жалоба Поделиться Опубликовано 2 октября, 2010 И так простая задача.... как мне показалось изначально :) Имеем полярную систему координат, в которой находятся: - Земля (P1,φ1) и Луна (P2,φ2); - Управляемый Космический Аппарат УКА (P3,φ3); 1. Взаимодействие Земля и Луна оказывают притяжение/притягивают УКА, но они стационарны. 2. УКА обладает тремя двигателями -30,0,+30 (градусов по вектору скорости), а вектор/тяга произвольная, те три вектора с любыми значениями для каждого из трёх, а так же вектором скорости. 3. В сумме получается сложение 5-и векторов + вектор скорости/инерция. 4. Два вектора Земля и Луна надо учесть исходя из расстояния до УКА. Требуется только одна итерация/расчёт в результате которой получится новое значение УКА (P3,φ3) и вектор скорости УКА, проверку на "столкновение" проводить не обязательно. PS Желательно ответ дать на Паскале (любом) - по возможности. PPS По возможности не переходить в расчётах к декартовым координатам. И φ рассчитывать по часовой стрелке, где Север равен 0 градусов. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 2 октября, 2010 Жалоба Поделиться Опубликовано 2 октября, 2010 (изменено) Indomito: Да, бывает - кто-то придумал условие, а какое - без пол-литра не разобраться :). Условие, на мой взгляд, кривое и хромает на несколько ног. Во-первых, если надо аппарат из точки (P3,φ3) перевести в точку (P3,φ3), то и трудиться нечего :) А вот если нам надо перевести аппарат в точку (P4,φ4), то все зависит от величины и направления скорости, с которой летел аппарат. При этом, кстати, я одним ударом моих двигателей (неограниченной, согласно условию, мощности) через секунду окажусь в нужной точке, и мне всякие там силы притяжения до лампочки - за одну секунду они движение моего аппарата не изменят. Правда, тут я основываюсь на "вектор/тяга произвольная", поскольку может быть так, что придется давать отрицательную тягу. А если двигатели тянут только вперед, то нам во многих случаях придется разворачивать корабль, что резко усложнит расчет - придется считать маневр с учетом постепенного разворота корабля под действием перпендикулярной к вектору скорости силы, это ИМХО довольно тяжелая задача на дифуры. Но по условию такого ограничения вроде бы нет, да и мы уже и так довольно далеко ушли от условия... Понимаю, что это все рассуждения об условии вместо решения, но что купил, то и продаю. Кстати, первая цена очень дешевая - мы уже в конечной точке :) P.S. Я бы, конечно, мог превратить условие в осмысленное, задав, например, время перелета из одной точки в другую. Но мое ли это дело? Изменено 2 октября, 2010 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 2 октября, 2010 Жалоба Поделиться Опубликовано 2 октября, 2010 Если есть знатоки по прологу... domainsnumreis=integerdestination=stringpredicateshelloreis(numreis,destination)findreis(destination)goalhello.clauseshello:-makewindow(1,7,7,"Avia Company",4,54,10,22),nl,write("Please, type your name "),cursor(4,5),readln(Name),nl,write ("Welcome ",Name),nl,write("Input destination: "),nl,cursor(7,5),readln(Dest),nl,write("Reises to ",Dest). /*до етого места работает*/findreis(Dest):-reis(Who,Dest),write(Who),nl,fail. /*???*/reis(331,"Kyiv").reis(413,"Kyiv").reis(531,"Harkiv").reis (152,"Donetsk"). что делает програма - создает окошко, юзер пишет имя, потом юзер пишет пункт назначения и програма показывает номера рейсов в пункт назначения. Одно только не знаю как вызвать поиск? У меня в результате номеров не показывает. Оно и понятно - сегодня впервые увидел пролог. А задание как раз на одну лабораторную - сделать прогу на прологе. Как сделать что б програма искала номера рейсов по введенному пункту назначения? (цель должна быть описана внутри) Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 2 октября, 2010 Жалоба Поделиться Опубликовано 2 октября, 2010 Тролль: ты немного не прав, ибо я декартовой системе решил её просто... правда УКА "шёл с заносом", те система торможения немного странная, был рассказ, кого не помню, а название его бильярдный термин... но это если не сильно разогнать УКА, а то его разворот не смотря на использование тяготение любой звезды абсолютно бесполезен - займёт пол галактики (трения в космосе - скажем почти нет) :) PS Меня собственно заинтересовало как рассчитывать в полярных координатах, без применения декартовой системы. Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 2 октября, 2010 Жалоба Поделиться Опубликовано 2 октября, 2010 Есть прлдвижение, но не понимаю как передать введенную переменную в предикат? domainsnumreis=integerdestination=stringpredicateshelloreis(numreis,destination)clauseshello:-makewindow(1,7,7,"Avia Company",4,54,10,22),nl,write("Please, type your name "),cursor(4,5),readln(Name),nl,write ("Welcome ",Name),nl,write("Input destination: "),nl,cursor(7,5),readln(Dest),nl,write("Reises to ",Dest),nl.reis(331,"Kyiv").reis(413,"Kyiv").reis(531,"Harkiv").reis (152,"Donetsk").goalhello,reis(Nums,Dest),write(Nums),nl,fail. в результате выводит все номера рейсов, а нужно только те, которые Dest Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 2 октября, 2010 Жалоба Поделиться Опубликовано 2 октября, 2010 Indomito: Ну, мне условие кажется неполным. Может, это и не расшифровка Фестского диска, но ИМХО в нем надо многое додумывать самому... Если задаться временем, то можно рассчитать, какую скорость надо придать аппарату, чтобы он через это время достиг заданной точки, так как все остальные скорости и ускорения известны. Хотя не скажу, что это совсем просто. А в полярной системе, если не преобразовывать в нее в конце, а считать в ней, формулы будут сильно непривычными - http://heritage.sai.msu.ru/ucheb/kinematika/Kinematika.htm ... По-моему, после изучения этих формул можно запутаться в трех соснах ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 2 октября, 2010 Жалоба Поделиться Опубликовано 2 октября, 2010 Тролль: а если тоже самое решать в декартовых координатах то как будет выглядеть "свод правил". Я серьёзно, ибо мне кажется что я ошибся решая эту задачу - думаю что то не учёл. Ссылка на комментарий Поделиться на другие сайты Поделиться
Riki_Tiki_Tavi Опубликовано 3 октября, 2010 Жалоба Поделиться Опубликовано 3 октября, 2010 Помогите пожалуйста решить.... http://s53.radikal.ru/i141/1010/76/9720cc3fb59c.jpg Извините не указал язык, на языке С Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 3 октября, 2010 Жалоба Поделиться Опубликовано 3 октября, 2010 Riki_Tiki_Tavi: небольшой оффтоп - надо писать по русски ибо это офиц. язык форума. PS Тебе вреде об этом говорили, хотя может и не тебе. PPS Please use preferred on the Forum language! Inace cu biti primoran za sankcije zbog prekrsenja p.1 Правила Форума. :blush2: Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти