Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<windows.h>
- #include<GL/glut.h>
- #include<stdio.h>
- #include<string.h>
- struct Produs{
- char producator[20];
- char model[20];
- int cantitate;
- int pret_fara_TVA;
- int TVA;
- float pret_cu_TVA;
- };
- //declararea variabilelor globale
- int i, n, flag, q;
- struct Produs p[20], aux;
- FILE *f_in, *f_out;
- int y, s=1;
- //declararea functiilor
- int Afisare(struct Produs a[]);
- int cantitate(struct Produs a[]);
- void display();
- //programul MAIN
- int main(int argc, char** argv) {
- int op;
- float t;
- f_in = fopen("date.txt", "r");
- fscanf(f_in,"%d",&n); //citeste nr de linii
- for(i=0; i<n; i++){
- fscanf(f_in,"%s",p[i].producator);
- fscanf(f_in,"%s",p[i].model);
- fscanf(f_in,"%d",&p[i].cantitate);
- fscanf(f_in,"%d",&p[i].pret_fara_TVA);
- fscanf(f_in,"%d",&p[i].TVA);
- }
- fclose(f_in);
- printf("- 0 - STOP Program\n"
- "- 1 - Calculeaza Pret cu TVA\n"
- "- 2 - Sorteaza dupa Cantitate\n"
- "- 3 - Introducerea datelor in fisier nou\n"
- "- 4 - Grafic\n");
- fflush(stdout);
- scanf("%d",&op);
- while(op != 0){
- switch(op){
- //Calculeaza Pret cu TVA
- case 1 :
- for(i=0; i<n; i++){
- t = 1 + (float)p[i].TVA / 100;
- p[i].pret_cu_TVA = (float)p[i].pret_fara_TVA * t;
- }
- break;
- //Sorteaza dupa Cantitate
- case 2 :
- printf("/ 1 / - cantitate max\n/ 2 / - cantitate min\n");
- fflush(stdout);
- scanf("%d", &q);
- y = cantitate(p);
- break;
- //Introducerea datelor in fisier nou
- case 3 :
- y = Afisare(p);
- break;
- case 4 :
- glutInit(&argc, argv);
- glutInitWindowSize(720, 720);
- glutInitWindowPosition(50, 50);
- glutCreateWindow("Grafic OpenGL ");
- glutDisplayFunc(display);
- glutMainLoop();
- break;
- }
- printf("- 0 - STOP Program\n"
- "- 1 - Calculeaza Pret cu TVA\n"
- "- 2 - Sorteaza dupa Cantitate\n"
- "- 3 - Introducerea datelor in fisier nou\n"
- "- 4 - Grafic\n");
- fflush(stdout);
- scanf("%d",&op);
- }
- printf("\n!!! SFIRSIT PROGRAM !!!");
- fflush(stdout);
- return 0;
- }
- //scrierea datelor in fisier nou
- int Afisare(struct Produs a[]){
- f_out = fopen("date_out.txt", "w");
- for(i=0; i<n; i++){
- fprintf(f_out,"%s ",a[i].producator);
- fprintf(f_out,"%s ",a[i].model);
- fprintf(f_out,"%d ",a[i].cantitate);
- fprintf(f_out,"%d ",a[i].pret_fara_TVA);
- fprintf(f_out,"%d ",a[i].TVA);
- fprintf(f_out,"%.2f ",a[i].pret_cu_TVA);
- fprintf(f_out,"\n");
- }
- fclose(f_out);
- return s;
- }
- //sortare dupa cantitate
- int cantitate(struct Produs a[]){
- if(q==1){
- do{
- flag=0;
- for(i=0; i<n-1; i++){
- if(a[i].cantitate < a[i+1].cantitate){
- aux = p[i];
- p[i] = p[i+1];
- p[i+1] = aux;
- flag=1;
- }
- }
- }
- while(flag != 0);
- }
- if(q==2){
- do{
- flag=0;
- for(i=0; i<n-1; i++){
- if(a[i].cantitate > a[i+1].cantitate){
- aux = p[i];
- p[i] = p[i+1];
- p[i+1] = aux;
- flag=1;
- }
- }
- }
- while(flag != 0);
- }
- return s;
- }
- //Grafica
- void display(){
- char text[10], numar[10];
- int i, j;
- float dx, ky, max;
- dx = 1.9 / n;
- max = p[0].pret_cu_TVA;
- for(i = 1; i < n; i++){
- if(max < (p[i].pret_cu_TVA))
- max = (p[i].pret_cu_TVA);
- }
- ky = 1.5 / max;
- glClearColor(1.0f, 1.0f, 1.0f, 0.5f);
- glClear(GL_COLOR_BUFFER_BIT);
- for(i = 0; i < n; i++){
- glBegin(GL_TRIANGLES);
- glColor3f(1.0f, 0.0f, 0.0f);
- glVertex2f(-0.95 + i * dx, -0.85);
- glVertex2f(-0.95 + (i + 1) * dx - 0.02, -0.85);
- glVertex2f(((-0.95 + i * dx)+(-0.95 + (i + 1) * dx - 0.02))/2, -0.9 + (p[i].pret_cu_TVA) * ky );
- glEnd();
- sprintf(text,"%s", p[i].model);
- glRasterPos2f(-0.95 + i * dx + dx / 5, -0.9);
- for(j = 0; j < strlen(text); j++){
- glutBitmapCharacter(GLUT_BITMAP_8_BY_13, text[j]);
- }
- sprintf(numar,"%.2f",p[i].pret_cu_TVA);
- glRasterPos2f(-0.95 + i * dx + dx / 5, -0.9 + p[i].pret_cu_TVA * ky + 0.05);
- for(j = 0; j < strlen(numar); j++){
- glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_10, numar[j]);
- }
- }
- glFlush();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement