Sunteți pe pagina 1din 7

aaMINISTERUL EDUCAIEI I TIINEI AL REPUBLICII MOLDOVA

Universitatea Tehnic a Moldovei

Catedra: Automatica si Tehnologii Informationale

RAPORT
LA LUCRAREA DE LABORATOR NR.3
La Grafica pe Calculator

Tema: DESENAREA GRAFICELOR PENTRU FUNCII

Elaborat student gr.TI-154

Verificat lector universitar: C. Plotnic

Chiinu 2017
Lucrarea 2 Varianta 6
Scopul lucrrii: Obinerea cunotinelor practice n sintezarea i afiarea graficelor funciilor n
baza bibliotecii grafice.
Partea teoretic: temele 1-7

Sarcina lucrrii:

1. De a elabora un program pentru sintezarea i afiarea graficelor funciilor conform


variantelor (tabela 1)
2. S se foloseasc transformarea fereastr-poart.
3. De a prezenta imagini n diferite pori de vizualizare

Tabelul 1. Variantele de ndeplinire a lucrrii

1.
Listingul Programului in C++:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "graphics.h"
#include <math.h>

using namespace std;


float k = 1;
void Grafic(float xfmin,float xfmax,float yfmin,float yfmax,int xpmin,int xpmax,int ypmin,int
ypmax,float a,float b,float pas,int n,int culoare);
void desen();
void desen(){
cleardevice();
setcolor(100);
rectangle(10,10,630,470);
line(320,10,320,470);
line(10,240,630,240);
setviewport(320,10,630,240,1); //cadr 1
outtextxy(5,100," LUCRAREA DE LABORATOR NR.3");
outtextxy(5,125," DESENAREA GRAFICELOR PENTRU FUNCTII");
setviewport(10,10,320,240,1); //cadr 2
Grafic(-4.02,4.02,-3,3.,10,320,10,240,-6,6,0.01,1,2);
setviewport(10,240,320,470,1); //cadr 3
Grafic(-6.28,6.28,-5,5,10,320,10,240,-6,6,0.01,2,2);
setviewport(320,240,630,470,1); //cadr 4
Grafic(-6.28,6.28,-5,5,10,320,10,240,-6,6,0.01,3,2);
setviewport(0,0,639,479,1);
}
//-----------------------------------
void Grafic(float xfmin,float xfmax,float yfmin,float yfmax,int xpmin,int xpmax,int ypmin,int
ypmax,float a,float b,float pas,int n,int culoare){
float Sx,Sy,tx,ty,xf,yf,func;
int xp,yp;

// calculam parametrii Sx, Sy , tx , ty


if(n!=0){
Sx=(xpmax-xpmin)/(xfmax-xfmin);
Sy=(ypmax-ypmin)/(yfmax-yfmin);
if(Sx<Sy)
Sy=Sx;
else
Sx=Sy;
tx=xpmin-Sx*xfmin+(xpmax-xpmin-Sx*(xfmax-xfmin))/2;
ty=ypmin-Sy*yfmin+(ypmax-ypmin-Sy*(yfmax-yfmin))/2;
}
//desenam graficele functiilor in dependeta de parametrul de intrare n
setcolor(15);
switch(n){
case 1:{
outtextxy(30,200," y=sin(x)/cos(x)");
outtextxy(175,10,"y");
outtextxy(155,132,"0");
outtextxy(295,130,"x");
line(160,15,165,10);
line(165,10,170,15);
line(305,120,310,125);
line(310,125,305,130);
break;}
case 2:{
outtextxy(30,200," y=tan(x)");
outtextxy(175,10,"y");
outtextxy(155,132,"0");
outtextxy(295,130,"x");
line(160,15,165,10);
line(165,10,170,15);
line(305,120,310,125);
line(310,125,305,130);
break;}
case 3:{
outtextxy(30,200," y=2*sin(x)");
outtextxy(175,10,"y");
outtextxy(155,132,"0");
outtextxy(295,130,"x");
line(160,15,165,10);
line(165,10,170,15);
line(305,120,310,125);
line(310,125,305,130);
break;}
default: {goto A;}
}
xf=a;
switch(n){
case 1:{
func=sin(xf)/cos(xf);
break;}
case 2:{
func=tan(xf);
break;}
case 3:{
func=2*sin(xf);
break;}
}
xp=xf*Sx+tx;
yp=ypmin+ypmax-(func*Sy+ty);
moveto(xp,yp);
xf+=pas;
setcolor(145);

while(xf<b){
xp=xf*Sx+tx;

switch(n){
case 1:{
func=sin(xf)/cos(xf);
break;}
case 2:{
func=tan(xf);
break;}
case 3:{
func=2*sin(xf);
break;}
}
yp=ypmin+ypmax-(func*Sy+ty);
lineto(xp,yp);
xf+=pas;
}
//desenam coordonatele
if(n!=0){
A:
setcolor(15);
line(xpmin+(xpmax-xpmin)/2,ypmin,xpmin+(xpmax-xpmin)/2,ypmax);
setcolor(15);
line(xpmin,ypmin+(ypmax-ypmin)/2,xpmax,ypmin+(ypmax-ypmin)/2);
}
}
int main(){
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "\bgi");
errorcode = graphresult();

if (errorcode != grOk){
printf("Eroare: %s\n", grapherrormsg(errorcode));
printf("Apasati orice tasta");
getch();
exit(1);

}
//setbkcolor(190);
desen();
getch();
closegraph();
}

Figura 1. Indeplinirea sarcinii conform variantei


Concluzie: Efectund aceast lucrare de laborator prin intermediul limbajului de programare C+
+ am obinut cunotinele necesare pentru a efectua afisarea graficilor in dependent de fereastra
poarta.

S-ar putea să vă placă și

  • MD Lab-1
    MD Lab-1
    Document15 pagini
    MD Lab-1
    Cobilas Vasile
    Încă nu există evaluări
  • PW Lab1
    PW Lab1
    Document5 pagini
    PW Lab1
    Cobilas Vasile
    Încă nu există evaluări
  • Lab 1 ASDN
    Lab 1 ASDN
    Document7 pagini
    Lab 1 ASDN
    Cobilas Vasile
    Încă nu există evaluări
  • LFPC 1
    LFPC 1
    Document5 pagini
    LFPC 1
    Cobilas Vasile
    Încă nu există evaluări