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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2017, 00:18   #1
AndroMen
 
Регистрация: 02.06.2017
Сообщений: 4
По умолчанию [C] Функция, график которой будем рисовать. Посмотрите какие тут ошибки?

Код:
#include <graphics.h>
#include <fstream.h>
#include <math.h>
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <stdlib.h>

int a, b, c;
// Функция, график которой будем рисовать
float F(float x)
{
  return a*x*x + b*x + c;
}
void main (void)
{
  int x, y, i,j;
  /*если мы опираемся на квадратный трехчлен, то мы имеем y=a*x^2+b*x+c
  таким образом: */
  cout <<"Введите значения коэф. А В С/n";
  cin >>a;
  cin >>b;
  cin >>c;

  int gdriver = DETECT, gmode, errorcode;
  // Инициализация графического режима
  initgraph(&gdriver, &gmode, "");
  // Результат инициализации
  errorcode = graphresult();
  if (errorcode != grOk)  // Проверка ошибки при инициализации
  // Вывод кода ошибки
  {
    printf("Graphics error: %sn", grapherrormsg(errorcode));
    printf("Press any key to halt:");
    getch();
    exit(1);             // Выход из программы, если ошибк
  }
// установка цвета фона рисунка.
  setbkcolor(LIGHTGRAY);
  cleardevice();
// размеры графика
  int W = getmaxx();
  int H = getmaxy();
// масштаб графика
  float M = 40;
// положение координатных осей (посередине графика)
  int X0 = W/2;

  int Y0 = H/2;
// установка цвета координатных осей
  
setcolor(RED);
// рисуем координатные оси
 
 line(X0, 0, X0, H);

  line(0, Y0, W, Y0);
// рисуем засечки на координатной оси Y

  for (x=1;;x++)
  {

   
 int x1 = X0+(x*M);
   int x2 = X0-(x*M);
  if (x2<0 || x1>W)
      break;
    line(x1, Y0-3, x1, Y0+3);
   line(x2, Y0-3, x2, Y0+3);
  }

// рисуем засечки на координатной оси X
  for (y=1;;y++)
 
 {
  
  int y1 = Y0+(y*M);
    int y2 = Y0-(y*M);
    if (y2<0 || y1>H)
      break;
   line(X0-3, y1, X0+3, y1);
 line(X0-3, y2, X0+3, y2);
  }
// установка цвета графика
  setcolor(BLUE);
// собственно рисование в цикле по возможным графическим х
  for (x=1; x<W; x++)
  {
    float X1 = (float)(x-1-X0) / M;  // пересчет графического x в математическое X
    float Y1 = F(X1);                // вычисление Y как функции от X
    float X2 = (float)(x-X0) / M;    // то же для следующей точки
    float Y2 = F(X2);
    int y1 = Y0 - (int)(Y1*M);       // обратный пересчет математических координат Y
int y2 = Y0 - (int)(Y2*M);       //   в графические координаты y
  line(x-1, y1, x, y2);            // рисование
  }
  getch();
 closegraph();
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 02.06.2017 в 10:00.
AndroMen вне форума Ответить с цитированием
Старый 02.06.2017, 10:02   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от AndroMen Посмотреть сообщение
Посмотрите какие тут ошибки?
а тут есть ошибки?
Запускать пробовали? Что выдаёт компилятор и программа?
А какую задачу должен решать код?

Ну и название темы нарушает правила форума - название темы должно адекватно отражать суть решаемой задачи/проблемы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.06.2017, 00:28   #3
AndroMen
 
Регистрация: 02.06.2017
Сообщений: 4
Восклицание Функция, график которой будем рисовать

Вот код,но с ним что то не так
Код:
#include <graphics.h>
#include <fstream.h>
#include <math.h>
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <stdlib.h>

int a, b, c;
// Функция, график которой будем рисовать
float F(float x)
{
  return a*x*x + b*x + c;
}
void main (void)
{
  int x, y, i,j;
  /*если мы опираемся на квадратный трехчлен, то мы имеем y=a*x^2+b*x+c
  таким образом: */
  cout <<"Введите значения коэф. А В С/n";
  cin >>a;
  cin >>b;
  cin >>c;

  int gdriver = DETECT, gmode, errorcode;
  // Инициализация графического режима
  initgraph(&gdriver, &gmode, "");
  // Результат инициализации
  errorcode = graphresult();
  if (errorcode != grOk)  // Проверка ошибки при инициализации
  // Вывод кода ошибки
  {
    printf("Graphics error: %sn", grapherrormsg(errorcode));
    printf("Press any key to halt:");
    getch();
    exit(1);             // Выход из программы, если ошибк
  }
// установка цвета фона рисунка.
  setbkcolor(LIGHTGRAY);
  cleardevice();
// размеры графика
  int W = getmaxx();
  int H = getmaxy();
// масштаб графика
  float M = 40;
// положение координатных осей (посередине графика)
  int X0 = W/2;

  int Y0 = H/2;
// установка цвета координатных осей
  
setcolor(RED);
// рисуем координатные оси
 
 line(X0, 0, X0, H);

  line(0, Y0, W, Y0);
// рисуем засечки на координатной оси Y

  for (x=1;;x++)
  {

   
 int x1 = X0+(x*M);
   int x2 = X0-(x*M);
  if (x2<0 || x1>W)
      break;
    line(x1, Y0-3, x1, Y0+3);
   line(x2, Y0-3, x2, Y0+3);
  }

// рисуем засечки на координатной оси X
  for (y=1;;y++)
 
 {
  
  int y1 = Y0+(y*M);
    int y2 = Y0-(y*M);
    if (y2<0 || y1>H)
      break;
   line(X0-3, y1, X0+3, y1);
 line(X0-3, y2, X0+3, y2);
  }
// установка цвета графика
  setcolor(BLUE);
// собственно рисование в цикле по возможным графическим х
  for (x=1; x<W; x++)
  {
    float X1 = (float)(x-1-X0) / M;  // пересчет графического x в математическое X
    float Y1 = F(X1);                // вычисление Y как функции от X
    float X2 = (float)(x-X0) / M;    // то же для следующей точки
    float Y2 = F(X2);
    int y1 = Y0 - (int)(Y1*M);       // обратный пересчет математических координат Y
int y2 = Y0 - (int)(Y2*M);       //   в графические координаты y
  line(x-1, y1, x, y2);            // рисование
  }
  getch();
 closegraph();
}
AndroMen вне форума Ответить с цитированием
Старый 16.06.2017, 09:34   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от AndroMen Посмотреть сообщение
Вот код,но с ним что то не так
это викторина - угадать, что с кодом не так?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.06.2017, 12:12   #5
AndroMen
 
Регистрация: 02.06.2017
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
это викторина - угадать, что с кодом не так?
Да там ошибка.
AndroMen вне форума Ответить с цитированием
Старый 17.06.2017, 15:56   #6
Maggot9
Новичок
Джуниор
 
Регистрация: 17.06.2017
Сообщений: 1
По умолчанию

Цитата:
Сообщение от AndroMen Посмотреть сообщение
Да там ошибка.
Скопипашенный код, я видел его пока искал ответы ошибки на форумах.

Вот после скачки WinBGIm и исправления в нем бага. И ещё подправка кода в мэйн, вот что выдал компилятор. Плюс это компилюруется на C++, а не на C, потому что в graphics.h используется классы sstream из C++

Код:
||=== Build: Debug in asda (compiler: GNU GCC Compiler) ===|
D:\C\asda\main.cpp||In function 'int main()':|
D:\C\asda\main.cpp|30|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]|
obj\Debug\main.o||In function `main':|
D:\C\asda\main.cpp|30|undefined reference to `initgraph'|
D:\C\asda\main.cpp|32|undefined reference to `graphresult'|
D:\C\asda\main.cpp|36|undefined reference to `grapherrormsg'|
D:\C\asda\main.cpp|42|undefined reference to `setbkcolor'|
D:\C\asda\main.cpp|43|undefined reference to `cleardevice'|
D:\C\asda\main.cpp|45|undefined reference to `getmaxx'|
D:\C\asda\main.cpp|46|undefined reference to `getmaxy'|
D:\C\asda\main.cpp|55|undefined reference to `setcolor'|
D:\C\asda\main.cpp|58|undefined reference to `line'|
D:\C\asda\main.cpp|60|undefined reference to `line'|
D:\C\asda\main.cpp|71|undefined reference to `line'|
D:\C\asda\main.cpp|72|undefined reference to `line'|
D:\C\asda\main.cpp|84|undefined reference to `line'|
obj\Debug\main.o:D:\C\asda\main.cpp|85|more undefined references to `line' follow|
obj\Debug\main.o||In function `main':|
D:\C\asda\main.cpp|88|undefined reference to `setcolor'|
D:\C\asda\main.cpp|98|undefined reference to `line'|
D:\C\asda\main.cpp|101|undefined reference to `closegraph'|
||=== Build failed: 17 error(s), 1 warning(s) (0 minute(s), 1 second(s)) ===|

Последний раз редактировалось Maggot9; 17.06.2017 в 16:06.
Maggot9 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста перевести код из Delphi в C++ Builder. Какие тут ошибки? Alina96 Помощь студентам 0 05.04.2017 22:55
[C++]: Функция возвращающая строку, в которой каждый символ считываемой строки удвоен. Помогите найти ошибки в коде Crazy_Fixik Помощь студентам 1 05.01.2017 17:27
Посмотрите пожалуйста, что тут не верно Один Помощь студентам 1 28.12.2009 16:32