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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

Проблем със задачи c# моля помогнете

Featured Replies

  • Автор

ДА БЪРЗО,

 

ДА БЪРЗО

И все пак как завършва тази поредна програмистка драма ?

Ъплоудна ли се в крайна сметка или квесторите на СофтУни резнаха формата за качване ?

Ех, деца, деца ... като започнете работа, ще видите, че в момента лъжете само себе си с тези изпълнения ...

Точно 10 мин му трябва на интервюиращия за работа, за да разбере какво има срещу себе си. 

Но сполай - дано поне си е струвала цялата какафония във форума :)

Поздрави !

  • 1 година по-късно...

Здравейте, искам да помоля за помощ за няколко задачи на С#, моля помогнете спешно е!!!!

1.Да се напише програма, която въвежда положително 7-цифрено число и извежда негожата 4-та цифра.

2.Запишете израз, който е истина при изпълнение на указаното условие и лъжа в противен случай: х принадлежи на интервала [2.5] илина интервала [-1,1].

3.Да се намери лицето на изпъкнал четириъгълник, ако са зададени:

а) координатите на върховете му;

б) дължините на страните му и единия диагонал.

Благодаря предватително!

преди 23 часа, Емито написа:

Здравейте, искам да помоля за помощ за няколко задачи на С#, моля помогнете спешно е!!!!

1.Да се напише програма, която въвежда положително 7-цифрено число и извежда негожата 4-та цифра.

2.Запишете израз, който е истина при изпълнение на указаното условие и лъжа в противен случай: х принадлежи на интервала [2.5] илина интервала [-1,1].

3.Да се намери лицето на изпъкнал четириъгълник, ако са зададени:

а) координатите на върховете му;

б) дължините на страните му и единия диагонал.

Благодаря предватително!

Здравейте, 

Ще приложа САМО алготирмитните формули за решаването на повечето задачи (3 б) ще я оставя на Вас - за гимнастика), като въвеждането, проверката и извеждането ще си го направите вие :) .

Цитат

1.Да се напише програма, която въвежда положително 7-цифрено число и извежда негожата 4-та цифра.

 Така, извеждането на която и да е цифра от записа на произволно число се случава по следната формула:

(number / (10^(N - 1))%10 

Преведено на разбираем език, числото, в което ще търсим коя е цифрата на позиция N, първо разделяме ЧЕЛОЧИСЛЕНО на N-1-ва степен на 10, за да премахнем всички числа ПРЕДИ търсенето число. Вземането на по модул от 10 ни дава числото на последната позиция от резултата на деленето (или фактически N-тата позиция от подаденото оригинално число).

Пример:

За числото 123456 искаме позиция 4

number  = 123456, N = 4

R = (123456 / (10 ^ (4 - 1)))%10 = (123456 / 1000) % 10 = 123 % 10 = 3

Трябва да се добават проверки дали има N-та позиция за числото number, дали N и number не са отрицателни и т.н.

 

Цитат

2.Запишете израз, който е истина при изпълнение на указаното условие и лъжа в противен случай: х принадлежи на интервала [2.5] илина интервала [-1,1].

Едноредова проверка:

return (x >= -1 && x <= 1) || (x >= 2 && x <= 5);

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

 

Цитат

3.Да се намери лицето на изпъкнал четириъгълник, ако са зададени:

а) координатите на върховете му;

Тука нещата вече стават по - сериозни. 

Формулата за лице на произволен четириъгълник (подчертаваме, че не пише, че е списан и/или описан в/около окръжност !) е:

S = 1/2 * d1 * d1 * sin(θ)

където d1 и d2 са дължините на двата диагонала, а θ е ъгъла между тях.

Задача изисква няколко важни коментара:

1. Казвайки "диагонали", те не са зададани в чист вид - от 4-те зададени точки, 2 по 2 те създават диагоналите. Поставяйки ги на координатната система, нещата изгледат по следния начин:

normal_cs.PNG.8f2e81e3def105de577e3a39974125ae.PNG

Оттук се вижда, че диагоналите са [(1,3),(7,5)] (първата и последната точка, образно казано) и [(4,5),(5,1)]

Т.е. ще трябва да се предвиди някакъв вид подредба, с която винаги да знаем кои точки правят първия диагонал и кои - втория. При това, тази подредба, ще трябва да може да се справи и със следния случай:

corner_cs.PNG.551ca6ad279cdfbb46b1e1938a1f9683.PNG

2. Ъгълът между диагоналите ще трябва да се изчислява отделно, но там формулите идват наготово.

 

И така - първо да решим проблема с подредбата - ще подреждаме точките по следния начин - ако имаме две точки А(х1,у1) и В(х2,у2) то ще считаме за по-малкатази, която:

1) има по - малка стойност на х координатата си 

или ако двете имат една и съща стойност за х координата:

2) тази, чията у координата е по-малка.

Преведено на програмен език, това ще рече следното:

// Внимание - това е псевдокод !!!
private int compare(x1, y1, x2, y2) {
	if (x1 == x2) {
    	if (y1 <= y2) {
        	return -1; // Индикира, че първото е по-малко
        }
        return 1; // Индикира, че второто е по-малко
    } else if (x1 < x2) {
    	return -1;
    }
    return 1;
}

След като вече имаме подредбата на точките, диагоналите AC и BD ще се образуват по следния начин:

AC - първата точка от подредбата и последната точка на подредбата

BD - втората и третата точки от подредбата.

С това на ум, примерите, които ще поместя включват помощен клас и методи, за по - добра четимост.

// Помощен клас за описание на точка. 
// Внимание ! Това е псевдокод !
class Point {
        public double _x, _y;

        Point(double _x, double _y) {
            this._x = _x;
            this._y = _y;
        }

        int compareTo(Point other) {
            if (this._x == other._x) {
                if (this._y <= other._y) {
                    return -1;
                }
                return 1;
            } else if (this._x < other._x) {
                return -1;
            }
            return 1;
        }
  
        public int compareTo(Object o) {
            if (o instanceof Point) {
                return compareTo((Point) o);
            }
            throw error;
        }
    }

С помощта на този клас, можем да направим следните методи, които да решат задачата:

    double calculateSurfaceByCoordinates(List<Point> points){
        if (points.size() < 4) {
            throw error("At least 4 points are needed !!!");
        }
        sort(points);
        Point A = points.get(0);
        Point B = points.get(1);
        Point C = points.get(3); // Note, that points ordering is consider AC diagonal being made by the furthest points, compared by X and Y
        Point D = points.get(2);

        double AC = sqrt(pow(A._x - C._x,2) + pow(A._y - C._y, 2));
        double BD = sqrt(pow(B._x - D._x,2) + pow(B._y - D._y, 2));
        double sinTheta = calSinAngleRad(A, B, C, D);
        return abs(0.5 * AC * BD * sinTheta); // Това се прави, защото ъгъла, който се връща от atan2 може да е с отрицетелен знак, правейки и синуса отрицателен. С повече гимнастика, това може да се оправи, разбира се :).

    }

    double calSinAngleRad(Point A, Point B, Point C, Point D) {
        double dxAC = C._x - A._x;
        double dyAC = C._y - A._y;
        double dxBD = D._x - B._x;
        double dyBD = D._y - B._y;
        double angleRad =
                atan2(dxAC * dyBD - dxBD * dyAC, dxAC * dxBD + dyBD * dyAC); 
      //https://docs.microsoft.com/en-us/dotnet/api/system.math.atan2?view=netframework-4.8
        return sin(angleRad);
      //https://docs.microsoft.com/en-us/dotnet/api/system.math.sin?view=netframework-4.8
    }

Поздрави !

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

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

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

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

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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