Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2020, 22:08   #1
Yurec12
Новичок
Джуниор
 
Регистрация: 11.12.2020
Сообщений: 1
По умолчанию Проблемка в коде

Добрый день, у меня есть код, но в нем есть ошибка, не могу найти
В общем, задача была сделать форму с c++, с задачей "Найти количество точек в каждой полуплоскости" при этом пользователь вводит сам точки и выбирает их
Проблема собственно в чем
Например: ввожу 6 точек, но у меня записывает почему-то всего 5, и получается из 6 точек, я могу выбрать всего 5, можете пожалуйста указать на ошибку? Не могу найти все еще
Вот код
Для удобства, код где форма, убрал
Если понадобиться, могу докинуть
Код:
#pragma once
#include <cstdlib>
#include <ctime>
 
namespace Project6 {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace std;
 
    struct Point
    {
        int x, y;
        int number;
        Point * next;
    };
    Point *first = new Point;
 
    Point *addPoint(int a, int b, int c)
    {
        Point *pv = new Point;
        pv->x = a;
        pv->y = b;
        pv->number = c;
        pv->next = NULL;
        if (first->x == -842150451)
        {
            first = pv;
        }
        else
        {
            Point *p = first;
            while (p->next != NULL)
            {
                if (p->next != NULL)
                {
                    p = p->next;
                }
            }
            p->next = pv;
        }
        return first;
    }
    
    
    int m,i=1;
    int x1, y1, x2 , y2, z, n, t1, t2, t3, a, b, c;
 
    String ^go(String ^a)
    {
        if (a[1] == ':')
        {
            a = Convert::ToString(a[0]);
        }
        else
        {
            if (a[2] == ':')
            {
                a = Convert::ToString(a[0] + a[1]);
            }
        }
        return a;
    }
 
    
#pragma endregion
        
    private: System::Void button4_Click(System::Object^  sender, System::EventArgs^  e) {
        if (textBox8->Text != "")
        {
            m = Convert::ToInt32(textBox8->Text);
            m = m;
            first->next = NULL;
            groupBox1->Visible = false;
            groupBox2->Visible = true;
        }
        else MessageBox::Show("Введите количество точек");
    }
             void ghost()
             {
                Point *pv = first;
                while (pv)
                {
                    comboBox1->Items->Add(Convert::ToString(pv->number + ":" + pv->x + "," + pv->y));
                    comboBox2->Items->Add(Convert::ToString(pv->number + ":" + pv->x + "," + pv->y));
                    pv = pv->next;
                } 
             }
 
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
    if (textBox6->Text != "" && textBox7->Text != "")
    {
        timer1->Start();
    }
    else MessageBox::Show("Введите координаты точки");
}
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    if (Convert::ToString(comboBox2->SelectedItem) != Convert::ToString(comboBox1->SelectedItem))
    {
        if (textBox4->Text != "" && textBox3->Text != "" && textBox1->Text != "" && textBox2->Text != "")
        {
            t1 = 0; t2 = 0; t3 = 0;
            x1 = Convert::ToInt32(textBox1->Text);
            x2 = Convert::ToInt32(textBox4->Text);
            y1 = Convert::ToInt32(textBox2->Text);
            y2 = Convert::ToInt32(textBox3->Text);
            Point *pv = first;
            while (pv)
            {
                if (pv->number != Convert::ToInt32(go(Convert::ToString(comboBox1->SelectedItem))) && pv->number != Convert::ToInt32(go(Convert::ToString(comboBox2->SelectedItem))))
                {
                    if (pv->y > (((y2 - y1) / (x2 - x1)*pv->x) + ((-a) * x1 + y1)))
                    {
                        t1++;
                    }
                    if (pv->y < (((y2 - y1) / (x2 - x1)*pv->x) + ((-a) * x1 + y1)))
                    {
                        t2++;
                    }
                    if (pv->y == (((y2 - y1) / (x2 - x1)*pv->x) + ((-a) * x1 + y1)))
                    {
                        t3++;
                    }
                }
                pv = pv->next;
            }
            textBox9->Text = Convert::ToString(t1);
            textBox5->Text = Convert::ToString(t2);
            textBox10->Text = Convert::ToString(t3);
        }
        else MessageBox::Show("Выберите вторую точку");
    }
    else MessageBox::Show("Нельзя ставить одну и туже точку");
}
private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
    if (i < m)
    {
        addPoint(Convert::ToInt32(textBox6->Text), Convert::ToInt32(textBox7->Text), i);
        i++;
        timer1->Stop();
    }
    else
    {
        timer1->Stop();
        groupBox2->Visible = false;
        groupBox3->Visible = true;
        ghost();
    }
}
private: System::Void textBox8_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
    if (!((e->KeyChar >= 48) && (e->KeyChar <= 57) || (e->KeyChar == '-') || (e->KeyChar == ',') || (e->KeyChar == '.'))) 
    {
        e->Handled = true;
        if (e->KeyChar == 8) 
        {
            e->Handled = false;
        }
    }
}
private: System::Void textBox6_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
    if (!((e->KeyChar >= 48) && (e->KeyChar <= 57) || (e->KeyChar == '-') || (e->KeyChar == ',') || (e->KeyChar == '.')))
    {
        e->Handled = true;
        if (e->KeyChar == 8)
        {
            e->Handled = false;
        }
    }
}
private: System::Void textBox7_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
    if (!((e->KeyChar >= 48) && (e->KeyChar <= 57) || (e->KeyChar == '-') || (e->KeyChar == ',') || (e->KeyChar == '.')))
    {
        e->Handled = true;
        if (e->KeyChar == 8)
        {
            e->Handled = false;
        }
    }
}
        
private: System::Void comboBox1_SelectedIndexChanged(System::Object^  sender, System::EventArgs^  e) {
        int tempcom;
        tempcom = Convert::ToInt32(go(Convert::ToString(comboBox1->SelectedItem)));
        Point *pv = first;
        while (pv)
        {
            if (pv->number == tempcom)
            {
                textBox1->Text = Convert::ToString(pv->x);
                textBox2->Text = Convert::ToString(pv->y);
                break;
            }
            else
            {
                pv = pv->next;
            }
        }
}
private: System::Void comboBox2_SelectedIndexChanged(System::Object^  sender, System::EventArgs^  e) {
    
        int tempcom;
        tempcom = Convert::ToInt32(go(Convert::ToString(comboBox2->SelectedItem)));
        Point *pv = first;
        while (pv)
        {
            if (pv->number == tempcom)
            {
                textBox4->Text = Convert::ToString(pv->x);
                textBox3->Text = Convert::ToString(pv->y);
                break;
            }
            else
            {
                pv = pv->next;
            }
        }
 
}
Yurec12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемка defak PHP 1 17.04.2012 18:42
Проблемка Assman Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 21.06.2010 17:24
Проблемка Lacrimoso Общие вопросы C/C++ 11 24.09.2009 23:14