Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Координатна система и намерането на дължини

Featured Replies

Здравейте скъпи програмисти.

 

Търся малко помощ за една задача на C/C++

Задачата е за курсова работа, а понеже съм задочник първи курс почти нищо не съм научил по време на лекциите и сега само със учебник ми е много трудно.

Така нека първо да спомена задачата:

"Да се въведат координатите (X,Y) на N на брой точки, където N<30. Да се изчислят и съхранят дължините на разстоянията от всяка точка до центъра на координатната система, както и дължините на разстоянията по затворения контур, образуван от свързването на всяка точка със следващата. Да се намерят общите суми на тези два вида разстояния и да се сравнят като се изведе подходящо съобщение."

Това е задача 1:1 преписана от учебника от който ми е дадена.

 

За сега знам че, трябва да се използва едномерен масив за стойностите на X и Y.

Преподавателя по упражненията по ПИК ми каза, че може да използвам формулата за намиране на хипотенуза на правоъгълен триъгълник която е:

катет2 + катет2 = хипотенуза2. Въвеждането на стойност на X и Y е все едно въжеждането на двата стойността на първия катет и втория катет.

 

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

 farmula.png която се използва за изчисляването на разтоянието между две точки.

 

Предварително благодаря за това че отделихте част от времето си за четенето на този роман  :P и на следващите постове.

Здравейте скъпи програмисти.

 

Здрасти, аз те съм програмист и последно със С съм се занимавал преди-и-и ... 20 години.

Но - ето ти нещо за начало.

прост алгоритъм

дефинираш променливата n                      ' броя на точките

въвеждаш стойност на променливата       ' проверяваш дали е реално число и по-малко от 30

дефинираш масив x(n),y(n)                         ' може да приемеш, че n=30 и да не въвеждаш, ама не е много стилно

дефинираш масив rad(n)                             ' това ще ти е радиалната съставка на полярната координата на всяка точка

дефинираш променлива sumrad                ' това ще ти е сумата от радиалните съставки

дефинираш масив dist(n-1)                         ' това ще са разстоянията м/у всяка точка и следващата

дефинираш променлива sumdist                ' това ще ти е обиколката на затворения контур включващ всички точки

 

                                 ' пускаш един цикъл за въвеждане на стойности в масива x(n),y(n)

                                 ' пускаш един цикъл за изчисляване на стойностите в масива rad - по формулата като x1 и y1 са нули

                                 ' и сумираш стойностите от масива rad в променливата sumrad

                                 ' пускаш един цикъл за изчисляване на стойностите в масива dist - по формулата

                                 ' и сумираш стойностите от стойностите в масива dist в променливата sumdist

 

Извеждаш получените резултати

Редактирано от jhoro (преглед на промените)

  • Автор

Благодаря за бързия отговор. :]

И да попитам понеже в университета използвахме Visual Basic C++ 6 с ОС Win XP сега пробвах да го инсталирам на моито PC с ОС Win 8.1 ама към края на инсталацията ми забива и неможе да я доърши. Пробвах последната версия на C++ със последен ъпдейт от месец август но немога да и разбера как да я компилирам после да я тествам. Та към въпроса можеш ли да ми препоръчаш нещо което да стане за Win 8.1?
 

Благодаря за бързия отговор. :]

И да попитам понеже в университета използвахме Visual Basic C++ 6 с ОС Win XP сега пробвах да го инсталирам на моито PC с ОС Win 8.1 ама към края на инсталацията ми забива и неможе да я доърши. Пробвах последната версия на C++ със последен ъпдейт от месец август но немога да и разбера как да я компилирам после да я тествам. Та към въпроса можеш ли да ми препоръчаш нещо което да стане за Win 8.1?

Видя ли какво ти писах в началото

последно със С съм се занимавал преди-и-и ... 20 години.

 

Иначе чат-пат си играя, ама само с Visual Basic-а, дето е в MS Office.

Даже сега се порових за С / С++ - ами бъркам ги нещата с Visual Basic. Затова не ти писах код

Благодаря за бързия отговор. :]

Здравейте, 

 

Колегата jhoro е дал добър подход за начало, но мен лично ме притеснява самото условие на задачата, което поне на пръв поглед е непълно:

"Да се въведат координатите (X,Y) на N на брой точки, където N<30. Да се изчислят и съхранят дължините на разстоянията от всяка точка до центъра на координатната система, както и дължините на разстоянията по затворения контур, образуван от свързването на всяка точка със следващата. Да се намерят общите суми на тези два вида разстояния и да се сравнят като се изведе подходящо съобщение."

Добре, за първата част няма проблеми - намирането на разстояние от точка до центъра на координатната система вече се уточни. Но проблема идва в:

дължините на разстоянията по затворения контур, образуван от свързването на всяка точка със следващата

Това означава, че самите 30 точки, които сте въвел правят затворен контур. Вида на фигурата, която ще се получи е доста въпросен - може да има вид на изпъкнал многоъгълник, може да има и вида на вдлъбнат многоъгълник. Т.е. тук целта не е да се сумират всички разстояние от центъра до точките, а периметъра на многоъгълника, който ще се получи про свързване на точките последователно една с друга. Където идва и следващия въпрос - как знаем коя точка след коя се свързва ? За да можем да го направим, на нас ни трябва наредба, която да ни каже коя точка е "по-голяма" от друга. Разстоянията няма да ни помогнат за такава метрика, защото ние искаме затворен контур, а не спирала. В случая за въпросната наредба, трябва да използваме комплексна оценка, включваща координатите и отстоянието от центъра. Също така, ще има значение в кой квадрант ще се окаже точката - тъй като не видях да има условие точките да са само с положителни координати, то нещата стават още по - забавни.

 

Лично, аз бих направил един особен подход - понеже условието е доста особено и много непълно, след като намеря разстоянията от точките до центъра, ще обърна координатната система в полярна. За целта обаче, освен rad, трябва да се намери и 11px-Greek_phi_Didot.svg.png. По този начин, наредбата на точките ще се получи спрямо големината на 11px-Greek_phi_Didot.svg.png - от 0 до 2*π. При равни 11px-Greek_phi_Didot.svg.png, точката с по - голямо отстояние от центъра на координатната система ще е по - голяма. Може да погледнете тук  и тук как се получава преминаването от Декартова координатна система в полярна. След като си имате наредбата, може отново да се върнете в Декартовата координатна система, и по - лесно да си изчислите разстоянията между вече наредените точки. След това, сумирате въпросните разстояния и сте готов.

 

За целите Ви, дори и DevC++ е достатъчен. Лично аз ползвам Eclipse IDE + MinGW (За Windows) и GCC за MacOS/Linux като среда и компилатор. 

 

Поздрави !

Редактирано от soundtracker (преглед на промените)

 

дефинираш масив dist(n-1)                         ' това ще са разстоянията м/у всяка точка и следващата

 

Щом се търси затворен контур масива dist трябва да е с размерност n - разстоянията м/у всяка точка и следващата + разстоянието  м/у последната и първата точка .

Ок - съгласен съм с уточненията и дебъгването. Все пак гледайте и в колко часа са пуснати постовете.

 

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

  • Автор

Ок - съгласен съм с уточненията и дебъгването. Все пак гледайте и в колко часа са пуснати постовете.

 

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

 

Задачата е дадена за курсова работа в технически университет Габрово от учебника: " Примери и задачи по програмиране на C/C++" от Р.Иванова и В.Василева, издателството е разбира се "Габровопринт".

 

Самата задача е от раздел масиви и под раздел едномерни масиви.

 

Благодаря на всички които сте писали в темата. До преди 12 часа незнаех откъде да почна докато сега немога да  сваря да пиша и да тествам :)

Задачата е дадена за курсова работа в технически университет ВМЕИ Габрово ...

С това трябваше да започнеш  :help wanted4:

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.