000
02.05.2006, 23:09 Uhr
tobiw
|
Hallo! Ich studiere Mechatronik und habe im dritten Semester EDV (C++) bekommen! Die anfänglichen Übungsblätter waren nicht so tragisch aber jetzt hänge ich an folgender Aufgabenstellung...
In dieser Aufgabe sollen die Versionen "Mosaic_1.c", ...., "Mosaic_6.c" implementiert werden, die den entsprechenden Mosaike erzeugen (Siehe die Mosaiken weiter unten). Dabei soll jedes Mal nur der Inhalt der decideColor-Funktion mit Hilfe von if- oder switch-Anweisungen programmiert werden.
C++: |
/*==========================================================================*/ //#include <stdlib.h>
#include <stdio.h> #include <math.h>
#define SIZE 80 #define STONESIZE 4
FILE* psdatei;
/*==========================================================================*/
typedef enum { RED, GREEN, BLUE, WHITE, BLACK, GRAY, LIGTHGRAY, DARKGRAY, YELLOW, MAGENTA, CYAN, PINK, ORANGE } Color;
/*==========================================================================*/
Color decideColor( int x, int y ){ /* Hier Programmieren */ Color c;
c=YELLOW; if ((y%2)!=0) { y=y-1; } if(((79-y)==x) ||((78-y)==x) ) { c = RED; //Erzeugt ein gelbes Bild mit rotem Strich durch } return c; }
/*==========================================================================*/
/* PostScript header */ void begin( char* dateiname ) { psdatei = fopen( dateiname, "wt"); if ( psdatei!=NULL ) { fprintf( psdatei, "%%!PS-Adobe-3.0 EPSF-3.0\n" ); fprintf( psdatei, "%%%%BoundingBox: 0 0 %d %d\n",SIZE*STONESIZE,SIZE*STONESIZE); } else{ printf("The function begin can't open the file %s\n", dateiname ); } }
/*==========================================================================*/
/* PostScript end */ void end(void) { fprintf( psdatei,"showpage\n" ); fclose( psdatei ); }
/*==========================================================================*/
/* Paint a square */ void square( float x, float y, float size ){ fprintf(psdatei, "newpath\n"); fprintf(psdatei, "%f %f moveto\n", x, y ); fprintf(psdatei, "%f %f lineto\n", x, y+size ); fprintf(psdatei, "%f %f lineto\n", x+size, y+size ); fprintf(psdatei, "%f %f lineto\n", x+size, y ); fprintf(psdatei, "%f %f lineto\n", x, y ); fprintf(psdatei, "closepath\n"); fprintf(psdatei, "fill\n"); fprintf(psdatei, "stroke\n"); }
/*==========================================================================*/
/* change the color */ void setColor( float r, float g, float b ) { fprintf(psdatei, "%f %f %f setrgbcolor\n", r, g, b); }
/*==========================================================================*/
void RGB_Color( Color color ) { switch (color) { case RED: setColor( 1.0, 0.0, 0.0 ); break; case GREEN: setColor( 0.0, 1.0, 0.0 ); break; case BLUE: setColor( 0.0, 0.0, 1.0 ); break; case WHITE: setColor( 1.0, 1.0, 1.0 ); break; case BLACK: setColor( 0.0, 0.0, 0.0 ); break; case DARKGRAY: setColor( 0.3, 0.3, 0.3 ); break; case GRAY: setColor( 0.5, 0.5, 1.5 ); break; case LIGTHGRAY: setColor( 0.7, 0.7, 0.7 ); break; case YELLOW: setColor( 1.0, 1.0, 0.0 ); break; case MAGENTA: setColor( 1.0, 0.0, 1.0 ); break; case CYAN: setColor( 0.0, 1.0, 1.0 ); break; case PINK: setColor( 1.0, 0.7, 0.7 ); break; case ORANGE: setColor( 1.0, 0.8, 1.0 ); break; default: printf("ERROR: Not a defined color!\n"); } }
/*==========================================================================*/
int main( void ) { int x, y; Color color; char dateiname[50]; printf("Bitte eine Postscript-Dateiname (*.ps) eingeben: "); scanf("%s", &dateiname); begin( dateiname ); for ( x=0 ; x<SIZE; x++ ) { for ( y=0 ; y<SIZE; y++ ) { color = decideColor(x,y); RGB_Color( color ); square( x*STONESIZE, y*STONESIZE, STONESIZE ); } } end(); //system("PAUSE"); return 0; }
/*==========================================================================*/
|
Hier sind die zu erzeugenden Mosaike die ich nicht hinbekomme!
www.carhifi-tuner.de/skbilder/m1.gif www.carhifi-tuner.de/skbilder/m2.gif www.carhifi-tuner.de/skbilder/m3.gif
Kann mir vielleicht jemand einen Tipp geben wie ich das machen soll? Es waren insgesammt 9 und diese 3 bekomme ich absolut nicht hin!
MfG Tobi
mod edit: BENUTZE DIE CPP TAGS SELBER Dieser Post wurde am 03.05.2006 um 00:02 Uhr von Pablo editiert. |