Суббота, 03 Декабря 2022, 21:02

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Курсовик на с++ (Не актуально)
Курсовик на с++
Eyks001Дата: Воскресенье, 22 Июня 2014, 21:22 | Сообщение # 1
Эйкс. Просто Эйкс.
Сейчас нет на сайте
Курсовая по программированию, 1 курс.
Что должна делать программа:


Сроки:
сроки поджимают, завтра-послезавтра уже работать над сопроводительной запиской, сдача 25-го, но в этот же день "полуэкзамен" по другому предмету, так же нужно готовится.

В чем ведется работа:
Visual Studio 2013

С программированием у меня, честно признаюсь, не очень, особенно на С++. Был бы очень рад помощи в написании программы, если найдутся желающие.
Заплатить,увы, не смогу, разве что "плюсик в карму", если интересует, и помощь в ответ в роли 3D-шника: создание текстур окружения (тайл), моделирование и текстурирование объектов окружения для вашего проекта (предпочтительно неорганика средней сложности).

Добавлено (22.06.2014, 15:30)
---------------------------------------------
Немного псевдокода, хотя писал чисто для себя, чтобы понять, что вообще я должен делать:
Код

int X[30];
int Y[30];
int L1, L2;

int main(){
     открываем файл для чтения('input.txt');
      пока не конец файла
     {
       читаем n - ную строку;
       X[n] = /значение до " "/; //значение до пробела
       Y[n] = /значение после " "и до "/n"/;//значение после пробела и до '/n'
       n++;
     }

     for (int i = 0; i <= n; i++)
     {
      for (int j = 0; j <= n; j++)
      {
       вычисляем L1((x[i], y[i]); (x[j], y[j]));
        for (int k = j + 1; k <= n; k++)
        {
        if (L1 == L2((x[i], y[i]); (x[k], y[k])))
         {
         if ((x[k] != x[j])&(y[k] != y[j])&(L1 + L2 != L3((x[i], y[i]); (x[k], y[k]))))
          //если точки не совпадают и отрезки не лежат на одной прямой     
          записываем в output.txt новой строкой;
         }
        }
      }
      тут вывод графики(треугольников) на основе output.txt, но я х.з., как его сделать вообще
           
     }
     return 0;
}


Добавлено (22.06.2014, 21:22)
---------------------------------------------
Ап! Программа уже собственноручно написана в плане анализа данных и вывода в файл(правда в виде консольного приложения). Остался вопрос вывода графики. Неужели никто не может помочь?
Код

#define _CRT_SECURE_NO_WARNINGS //игнорируем предупреждения
#include <iostream>
#include <fstream>
#include <string>
#include <math.h>

using namespace std;

int X[30], Y[30];

typedef char vvod[30];
vvod st[30];

char vv[];

double L(int x1, int y1, int x2, int y2){

     double len = sqrt((x1 - x2) ^ 2 + (y1 - y2) ^ 2);
     return len;
};

int main()
{     
     ofstream out("output.txt", ios::out);     //удаляем содержимое файла вывода с прошлого запуска программы
     out.close();

     for (int i1 = 0; i1 < 30; i1++)       //избавляемся от случайных значений
     {
      X[i1] = 0; Y[i1] = 0;
     }

     FILE *in = fopen("input.txt", "r");      //открываем файл с данными
     if((in = fopen("input.txt", "r")) == 0)     //проверка на открытие потока
      {
       cout << "Ошибка открытия входного файла";     
       system("pause");
       return 1;
      }
     int i = 0;
     while (!feof(in)){                    //Пока не конец файла, читаем данные
      fgets(st[i], 30, in);
      cout << st[i];
      for (int j = 0; j < strlen(st[i]); j++)    //Переводим их в числовые значения
       {
       if (st[i][j] != ' ')
        X[i] = X[i] * 10 + st[i][j] - '0';
       else
       {
        j++;
        for (int k = j; k < strlen(st[i])-1; k++)
        {
             
         Y[i] = Y[i] * 10 + st[i][k] - '0';
             
        }
        break;
       }

       }
      i++;
     }
     int n = i;
     i = 0;
     cout << "\n";
     while (X[i] != 0 & Y[i]!=0)
     {
      cout << "X[" << i << "]=" << X[i] << " Y[" << i << "]="<< Y[i]<<"\n";
      i++;
     }
     system("pause");

//-----------------------------------------------------------------------------------------------------------------------------------------

     for (int i = 0; i < n; i++)
     {
      for (int j = 0; j <= n; j++)
      {
       double L1 = L(X[i], Y[i], X[j], Y[j]);
       for (int k = j + 1; k <= n; k++)
       {
        if (L1 == L(X[i], Y[i], X[k], Y[k]))
        {
         if (X[j] != X[k] & Y[j] != Y[k] & L(X[j], Y[j], X[k], Y[k]) != L1 * 2) //если точки не совпадают и отрезки не лежат на одной прямой     
         {
          ofstream out("output.txt", ios::app);  //вывод координат, удовлетворяющих условию в output.txt
          out<<X[i]<<"|"<<Y[i]<<"  |"<<X[j]<<"|"<<Y[j]<<"  |"<<X[k]<<"|"<<Y[k]<<"\n";
              
              
          //тут должен быть вывод графики по текущим координатам...

         }
        }
       }
      }
     }
     return 0;
}



---

В общем, код программы, если кому интересно.

Код

#define _CRT_SECURE_NO_WARNINGS //игнорируем предупреждения
#include <iostream>
#include <fstream>
#include <string>
#include <math.h>
#include <Windows.h>
#include <stdlib.h>

using namespace std;

int X[30], Y[30];

typedef char vvod[30];
vvod st[30];

bool analise(int i, int j, int k)
{
   bool r = false;
   int t1 = (((X[i] - X[j])*(X[i] - X[j])) + ((Y[i] - Y[j])*(Y[i] - Y[j]))); //выражение, находящееся при вычислении длины отрезка под корнем
   int t2 = (((X[i] - X[k]) *(X[i] - X[k])) + ((Y[i] - Y[k])*(Y[i] - Y[k]))); //выражение, находящееся при вычислении длины отрезка под корнем
   //cout << t1 <<" "<< t2; //вывод для проверки вычислений
   //system("pause");
   if (t1==t2)
    if (X[j] != X[k] & Y[j]!=Y[k])                    //если i-я и k-я точки не совпадают
     if ((((X[j] - X[k])*(X[j] - X[k])) + ((Y[j] - Y[k])*(Y[j] - Y[k]))) != 4 * t1)    //если отрезки не лежат на одной прямой, т.е. расстояние от j-й до k-й не равно длине двух отрезков
     {
    r = true;
     }
   return r;
}

void art(int x1, int y1, int x2, int y2, int x3, int y3)//отрисовка треугольника
{   

   int r, g, b,m,sd;
   r = 128 + rand() % (255 - 128);//задаем рандомное значение цвета от 128 до 255
   g = 128 + rand() % (255 - 128);
   b = 128 + rand() % (255 - 128);
   m = 5;       //масштаб, по умолчанию рекомендуется значение 5
   sd = 60;      //сдвиг начала координат, по умолчанию рекомендуется значение 60

   HDC hDC = GetDC(GetConsoleWindow());    //отрисовка в консоли
   HPEN Pen = CreatePen(PS_SOLID, 1, RGB(r, g, b));//параметры кисти, белый цвет
   SelectObject(hDC, Pen);
   MoveToEx(hDC, x1*m+sd, y1*m+sd, NULL);
   LineTo(hDC, x2*m + sd, y2*m + sd);
   LineTo(hDC, x3*m + sd, y3*m + sd);
   LineTo(hDC, x1*m + sd, y1*m + sd);
};

int main()
{   
   ofstream out("output.txt", ios::out);     //удаляем содержимое файла вывода с прошлого запуска программы
   out.close();

   for (int i1 = 0; i1 < 30; i1++)       //избавляемся от случайных значений
   {
    X[i1] = 0; Y[i1] = 0;
   }

   bool inp_type;
   cout << "Input type? \n" << "0-by user; 1 - from file";
     
   cin >> inp_type;

   switch (inp_type)
   {
   case 0:
    int n;
    cout << "n<30.   n= ";
    cin >> n;
    for (int i = 0; i<n; i++){
     cout << "\nX[" << i+1 << "]=";
     cin >> X[i];
     cout << "Y[" << i+1 << "]=";
     cin >> Y[i];
    }
    cout << "\n\n\n\n";
    break;

      
   case 1:
     FILE *in = fopen("input.txt", "r");      //открываем файл с данными
     if ((in = fopen("input.txt", "r")) == 0)     //проверка на открытие потока
     {
      cout << "Can't open file\n";
      system("pause");
      return 1;
     }
     int i = 0;

     while (!feof(in)){                    //Пока не конец файла, читаем данные
      fgets(st[i], 30, in);
      for (int j = 0; j < strlen(st[i]); j++)    //Переводим их в числовые значения
      {
       if (st[i][j] != ' ')
        X[i] = X[i] * 10 + st[i][j] - '0';
       else
       {
        j++;
        for (int k = j; k < strlen(st[i]) - 1; k++)
        {

         Y[i] = Y[i] * 10 + st[i][k] - '0';

        }
        break;
       }

      }
      i++;
     }
    }
     

     

//-----------------------------------------------------------------------------------------------------------------------------------------
   //анализируем данные
   int i = 0;
   int j ;
   int k ;
   while (X[i]!=0&Y[i]!=0)
   {   
    j = 0;
    while (X[j] != 0 & Y[j] != 0)
    {   
     k = j+1;
     while (X[k] != 0 & Y[k] != 0)
     {   
        
      if (analise(i,j,k))
       {
        ofstream out("output.txt", ios::app);  //вывод координат, удовлетворяющих условию в output.txt
        out<<X[i]<<"|"<<Y[i]<<"  |"<<X[j]<<"|"<<Y[j]<<"  |"<<X[k]<<"|"<<Y[k]<<"\n";
                    
        art(X[i], Y[i], X[j], Y[j], X[k], Y[k]);//вывод треугольников
       }
      k++;
        
     }
     j++;
    }
    i++;
   }
   string ex;
   cin >> ex;//просто замена system("pause"), не перекрывающая область отрисовки, ни на что не влияет. Позволяет просмотреть вывод.
   return 0;
}




"Счастье для всех, даром, и пусть никто не уйдет обиженный!" - Рэд Шухарт
("Пикник на обочине", Стругацкие А. и Б.)
***

Извиняюсь за часто появляющиеся "оЧеПЯтки", виной тому моя невнимательность...


Сообщение отредактировал Eyks001 - Вторник, 24 Июня 2014, 12:13
HPlusDieseДата: Понедельник, 23 Июня 2014, 12:51 | Сообщение # 2
участник
Сейчас нет на сайте
OpenGL
falcowareДата: Понедельник, 23 Июня 2014, 12:57 | Сообщение # 3
старожил
Сейчас на сайте
Eyks001, тебе нужно создать окно в нем нарисовать линии с помощью GDI или OpenGL или DirectDraw графики.

Самое простое, это создать проект в MFC и вывести в окно диалога все треугольники.

Могу сделать проект. Цена вопроса? wink


https://falco3d.com
DoxxyДата: Понедельник, 23 Июня 2014, 13:03 | Сообщение # 4
был не раз
Сейчас нет на сайте
Цитата Eyks001 ()
1 курс

Цитата Eyks001 ()
С++

Мда, не образование а ужас какой-то. Вы там ассемблер не изучаете?
SaiteiДата: Понедельник, 23 Июня 2014, 14:15 | Сообщение # 5
старожил
Сейчас нет на сайте
Цитата Doxxy ()
Мда, не образование а ужас какой-то. Вы там ассемблер не изучаете?

Я на 1 курсе (был, уже закончил). Изучали и ассемблер (писали змейку), и С++. Образование меняется жи, нынче современные ЯП си-подобны
Eyks001Дата: Понедельник, 23 Июня 2014, 16:24 | Сообщение # 6
Эйкс. Просто Эйкс.
Сейчас нет на сайте
Спасибо, конечно, но уже поздно, к ночи дописал сам) Костыли forever happy

Doxxy, начинаем на втором курсе, с сентября, если не ошибаюсь.

falcoware,



"Счастье для всех, даром, и пусть никто не уйдет обиженный!" - Рэд Шухарт
("Пикник на обочине", Стругацкие А. и Б.)
***

Извиняюсь за часто появляющиеся "оЧеПЯтки", виной тому моя невнимательность...
goldsphereДата: Вторник, 24 Июня 2014, 06:24 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Eyks001, Saitei, если не секрет, по каким специальности учитесь?

FinderX - Android Аркада

Сообщение отредактировал goldsphere - Вторник, 24 Июня 2014, 07:25
morgloddddДата: Вторник, 24 Июня 2014, 06:55 | Сообщение # 8
участник
Сейчас нет на сайте
Eyks001Дата: Вторник, 24 Июня 2014, 11:08 | Сообщение # 9
Эйкс. Просто Эйкс.
Сейчас нет на сайте
goldsphere, у меня типичное направление из разряда
-у вас ведь куча возможностей, с нашим дипломом многие двери будут перед вами открыты!
-Как хотя-бы специальность свою назвать?
-А... Да фиг ее знает...

Вообще, Факультет Радиоэлектроники и информатики, направление Информатики и Вычислительной техники.

morglodddd, заявил даже не прочитавший темы диванный аналитик biggrin



"Счастье для всех, даром, и пусть никто не уйдет обиженный!" - Рэд Шухарт
("Пикник на обочине", Стругацкие А. и Б.)
***

Извиняюсь за часто появляющиеся "оЧеПЯтки", виной тому моя невнимательность...
-l33t-h4xx-Дата: Вторник, 24 Июня 2014, 11:51 | Сообщение # 10
участник
Сейчас нет на сайте
А может это и хорошо, что кресты на первых курсах. Лет через пять с буста вообще начинать будут, вот благодать наступит! Ни одного велосипедиста, всё шаблонами, как подобает настоящим мужчинам.

Как правильно задавать вопросы
morgloddddДата: Вторник, 24 Июня 2014, 14:02 | Сообщение # 11
участник
Сейчас нет на сайте
Eyks001Дата: Вторник, 24 Июня 2014, 14:19 | Сообщение # 12
Эйкс. Просто Эйкс.
Сейчас нет на сайте
morglodddd, ибо в теме черным по белому написано, что знания есть, и более того, программа-таки написана, я просто надеялся, что остались еще люди, готовые бескорыстно помочь)Следовательно, от темы прочитано разве что название и немного из вступления)
***
К модератору: тему, думаю, стоит прикрыть, а то тут уже подтягивается очередной бессмысленный срач biggrin



"Счастье для всех, даром, и пусть никто не уйдет обиженный!" - Рэд Шухарт
("Пикник на обочине", Стругацкие А. и Б.)
***

Извиняюсь за часто появляющиеся "оЧеПЯтки", виной тому моя невнимательность...
morgloddddДата: Вторник, 24 Июня 2014, 14:30 | Сообщение # 13
участник
Сейчас нет на сайте
Форум игроделов » Программирование » C/C++ » Курсовик на с++ (Не актуально)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг