Премини към съдържанието
  • Добре дошли!

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

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

     

Помощ за Курсова задача С++


Препоръчан отговор

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

 

#include "stdio.h"
struct Point 
{
    int a;
};
struct Recteangle
{
    int height, width;
};
int RechteangleArea(struct Recteangle r)
{

    int s;
    s = r.height * r.width;
    return s;
}

 

int main()
{
    struct Point points[1];
    
    for (int i = 0; i < 1; i++)
    {

        printf("a=");
        scanf_s("%d", &points.a);
    }


    struct Recteangle recht1;
    recht1.height = 6;
    recht1.width = 6;
    printf("Height: %d\n", recht1.height);
    printf("Weidt %d\n", recht1.width);
    

    int s = RechteangleArea(recht1);
    printf("The Area is : %d \n", s);

    


}

Линк към коментара
Сподели в други сайтове

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

Линк към коментара
Сподели в други сайтове

преди 31 минути, Arif Ivanov написа:

Правоъгълната област се описва с начална точка, дължина и ширина

Така зададено могат да се дефинират 4 правоъгълни области

Линк към коментара
Сподели в други сайтове

Точката само с един int не виждам как ще я опишеш :) За точка имаш координати X и Y щом си в 2Д. От там можеш да си дефинираш региони (правоъгълници), които можеш да опишеш като { Point. width, height }, координатната система си я строиш ти ( в условието нищо не ти е дадено ), Примерно TOP-LEFT ти е X=0, Y=0 и от там си лесно в играта.

п.с. Абе за тия курсови задачи винаги съм се чудил защо дават толкова малоумни условия? Тая същата тапащина, вместо да ти я дават с математичско условие съвсем спокойно може да се даде като реален, практически пример. Ама имам чувството, че "капацитетите" в университите нарочно гледат да направят така, че хората да изгубят интерес.

п.с.2 И също ми е чудно защо в повечето случаи те задължават на какво да го имплементираш решението (C/C++/Java/C# в повечето случаи ). Интересно ми е, ако дам решение на друг език ,защо да не е валидно :)

п.с. 3 Реално тая задача ми звучи като:
На селския кмет Пешо му дали земя и му казали да я раздели на селяните трудоваци. Всеки селянин трябва да получи пърче от посочената земя, но селяните могат да се кооперират ( двама селянина да имат общи части ). - Не е задължително цялата обща земя да бъде раздадена! - След разпределението на земята, други хора не трябва да стъпват в нивите на селяните. Напишете програма, която по зададени координати проверява в кои точно ниви не е стъпал Горан ( който не притежава нива в селото )

Линк към коментара
Сподели в други сайтове

преди 9 часа, borovaka написа:

И също ми е чудно защо в повечето случаи те задължават на какво да го имплементираш решението (C/C++/Java/C# в повечето случаи ).

Защото към момента на задаване на заданието се изучава даденият език. И трябва да се покажат знания и умения точно на този език.

Редактирано от DarkEdge (преглед на промените)
Линк към коментара
Сподели в други сайтове

преди 13 часа, DarkEdge написа:

Така зададено могат да се дефинират 4 правоъгълни области

Не и ако дължината и ширината са вектори :)

Линк към коментара
Сподели в други сайтове

преди 11 часа, borovaka написа:

п.с. Абе за тия курсови задачи винаги съм се чудил защо дават толкова малоумни условия? Тая същата тапащина, вместо да ти я дават с математичско условие съвсем спокойно може да се даде като реален, практически пример. Ама имам чувството, че "капацитетите" в университите нарочно гледат да направят така, че хората да изгубят интерес.

Щото даскала не знае как да напише условието по друг начин. Даскала не е софтуерен инженер и никога не е участвал в изграждането на голям проект.

Линк към коментара
Сподели в други сайтове

преди 1 час, killchain написа:

Не и ако дължината и ширината са вектори :)

Да, освен ако е пропуснат този момент в изучаването.

 

Линк към коментара
Сподели в други сайтове

Така... Универсалното решение на проблема, дали точка се намира в областта затворена от даден многоъгълник е елементарно. Теглиш един лъч (с произволно направление) от въпросната точка към безкрайността и ако лъчът пресече нечетен брой страни по посоката на развитие (многоъгълникът може и да не е изпъкнал), значи точката от която си тръгнал е затворена в пространството определено от въпросния много ъгълник. При правоъгълници условието лесно се редуцира редуцира до прости логически сравнения - ако хиксът на точката е между хиксът на началната точка и хиксът на началната точка плюс широчината на правоъгълника И игрекът на точката е между игрекът на началната точка и игрекът на началната точка плюс височината на правоъгълника, значи точката е вътре.

 

Дерзай!

Линк към коментара
Сподели в други сайтове

#include "stdio.h"


struct Point 
{
    int x, y;
    
    
};
struct Rectangle
{
    int height;
    int width;
    int a;
    int b;

};
void PrintResult(Rectangle* array, Point point)
{
    for (int j = 0; j < 3; j++)
    {
        Rectangle* temp = &array[j];
        for (int i = temp->a; i <= temp->a + temp->width; i++) {
            if (i == point.x)
            {
                for (int j = temp->b; i <= temp->b - temp->height; i--)
                {
                    if (j == point.y) printf("YES");

                }


            }

        }
    }
    printf("End");

}

int main()
{
    struct Point points;
    printf("x=");
    scanf_s("%d", &points.x);
    printf("y=");
    scanf_s("%d", &points.y);
    
    Rectangle recht;
    recht.height = 8;
    recht.width = 9;
    recht.a = -9;
    recht.b = 6;

    
    Rectangle recht2;
    recht2.height = 17;
    recht2.width = 5;
    recht2.a = -7;
    recht2.b = 7;

    Rectangle recht3;
    recht3.height = 7;
    recht3.width = 5;
    recht3.a = 2;
    recht3.b = -2;

    Rectangle array [3]= { recht,recht2, recht3 };

    }

Програмата все още не работи ,къде бъркам?

Линк към коментара
Сподели в други сайтове

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

Линк към коментара
Сподели в други сайтове

Добавете отговор

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

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване