Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Borland C 3.1] Построить график функции 
V
    Опции темы
Lenysik89
Дата 16.5.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Построить график функции  ,   y=pow(x,2)+abs(x)+3  где   с шагом изменения 0.5.

Может у кого есть, а может кто может быстро это сделать?..


 ! 
Guedda
Последнее предупреждение! Оформляйте название темы в соответствии с правилами форума (язык программирования сначала, в квадратных скобках, а потом уже само осмысленное название)! В следующий раз темы будут закрываться!


Это сообщение отредактировал(а) Guedda - 16.5.2007, 21:18
PM MAIL   Вверх
susanin
Дата 16.5.2007, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 7



вот написана на борланде 3 но функцию сам подставь свою....ибо мне влом! smile 
Код

#include <graphics.h>
#include <stdio.h>    
#include <conio.h>
#include <math.h>

#define PATHTODRIVER "D:\\BORLAND\\BGI\\"



void grafik()
{
    float x,dx;    // аргумент и его приращение
    float x1,x2;     // диапозон изменения аргумента
    float y;    // значение функции
    int mx, my;    // масштаб по X и Y - колличество точек экрана, соответствующее единице по осям координат
    int x0,y0;    // начало осей координат
    int px,py;    // координаты точки графика на экране
    
    x0=320; y0=240;    // расположение координатных осей по центру экрана
    mx=20; my=20;    // выбираем подходящий масштаб
    
    
    bar(0,0,640,480);
    setfillstyle(SOLID_FILL,WHITE);
/************************************************************************/
/* Накладываем сетку по вертикали вдоль оси Y                           */
/************************************************************************/    

    int count_x = 0; // счетчик начала наложения сетки
    do {
    setlinestyle(DOTTED_LINE,0,0.0000001);
    setcolor(GREEN);
        line (count_x,0,count_x,480);
    count_x +=20; // шаг сетки (в пикселях)
        
    } while (count_x < 640);
    
/************************************************************************/
/* Накладываем сетку по горизонтали вдоль оси X                         */
/************************************************************************/
    
    int count_y = 0; // счетчик начала наложения сетки
    do {
    setlinestyle(DOTTED_LINE,0,0.005);
    setcolor(GREEN);
        line (0,count_y,640,count_y);
    count_y +=20; // шаг сетки (в пикселях)
        
    } while (count_y < 480);

/************************************************************************/
/* Вычерчиваем главные оси: ординат и абсиц вдоль                       */
/************************************************************************/
   
    setlinestyle(SOLID_LINE,0,0.0000001);
    setcolor(BLACK);
    line (0,y0,640,y0);
    line (x0,0,x0,480);

/************************************************************************/
/* Накладываем сетку по горизонтали вдоль оси X                         */
/************************************************************************/
    line (320,16,309,27);     // вычерчиваем стрелочки над осями координат по X
    line (316,12,331,27);     // вычерчиваем стрелочки над осями координат по X
    line (640,240,630,230); // вычерчиваем стрелочки над осями координат по Y
    line (640,240,630,250); // вычерчиваем стрелочки над осями координат по Y
    gotoxy(38,2);        // делаем подпись оси Y
    printf("Y");;
    gotoxy(79,17);// делаем подпись оси X
    printf("X");
    /************************************************************************/
/*отмечаем единичный отрезок*/
/************************************************************************/
    line (340,236,340,245);
    line (315,220,325,220);
    gotoxy(43,17);
    printf("1");
    gotoxy(39,14);
    printf("1");

/************************************************************************/
/* Задаем начальные условия для искомой  функции                        */
/************************************************************************/
    
    x1=-30;
    x2=30;
    //int x3=-1;        // "нижний" предел
    //int x4=0+dx;        // "верхний" предел
    dx=0.0001;    // приращение функции
    float x3=0-dx;        // "нижний" предел
    float x4=0+dx;        // "верхний" предел
    x=x1;

/************************************************************************/
/* Вызываем цикл для решения/нахождения искомой функции                 */
/************************************************************************/
    
    while (x<x3)
    {
    y=(log(fabs(cos(x))))/(log(1+pow(x,2)));    // запись искомой функции
        px=x0+x*mx;                // находим координаты точки по оси X
        py=y0-y*my;                // находим координаты точки по оси Y
    putpixel(px,py,RED);            // на месте решения ставим "точку"
        x+=dx;                    // продолжаем выполнение цикла с приращением
    }
    /*if (x==0)
    {
     x=x4;
    }*/
    x=x4;
    px=x0+x*mx;
    y=(log(fabs(cos(x))))/(log(1+pow(x,2)));
    py=y0-y*my;
    moveto(px,py);
    
    while (x<x2)
    {
     y=(log(fabs(cos(x))))/(log(1+pow(x,2)));    ; // запись искомой функции
        px=x0+x*mx;                // находим координаты точки по оси X
        py=y0-y*my;                // находим координаты точки по оси Y
    putpixel(px,py,RED);            // на месте решения ставим "точку"
        x+=dx;                    // продолжаем выполнение цикла с приращением
    }
}

/************************************************************************/
/* Вызываем главную функцию MAIN для обработки функции GRAFIK           */
/************************************************************************/

void main(void)
{
     int gdriver=DETECT;
     int gmode;
     int errorcode;
     
     initgraph(&gdriver,&gmode,PATHTODRIVER);
     errorcode=graphresult();
     
     if (errorcode!=grOk)
     {
         printf("Ошибка: %d\n", errorcode);
         puts("Для завершения программы нажмите <ENTER>");
         getch();
         return;
     }
     
     grafik();    // вызываем функцию построения графика
     
     getch();
     closegraph();   
}


PM MAIL   Вверх
Lenysik89
Дата 16.5.2007, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Спасибо4ки! smile 
PM MAIL   Вверх
IVANUSHKA
Дата 22.2.2008, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.2.2008

Репутация: нет
Всего: нет



y=x4+x2+1 smile

Добавлено через 1 минуту и 15 секунд
y=x4+x2+1 производная помогите пожалуйста smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1045 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.