Oh stimmt!!
Ich dachte, dass int main(int argc, char** argv) und int main(int argc, char* argv[]) unterschiedlich sind^^ Trozdem habe ich noch Probleme und brauche noch die Hilfe
Code: Alles auswählen
#include <stdio.h>
#include <cairoutils.h>
#include <math.h>
float * calcF(int a, int b, float c) // Parameter a und b als ganze Zahlen, c als reelle Zahl
{
float * arr = new float[601]; // Mittels "new" wird in C++ Speicher reserviert. Die Zahl zwischen den eckigen Klammern gibt die Anzahl der Elemente an
int i = 0; // i = Position
for (float x = -3; x <= 3; x = x+0.01) // 601 Werte
{
float f = ((float)a / (float)b) * (float)sin(c * x) + (float)sin(x); // Ergebnis f
arr[i] = f; // f auf arr
i = i + 1; // i = Position
}
return arr;
}
int findGlobalMin (float * array2) // Funktion gibt ganzzahligen Wert zurueck, arbeitet aber mit float
{
float min = array2[0]; // Anfang
int i = 0; // i = Position
for (int a = 1; a < 601; a++)
{
if (min < array2[a]) // Wenn das zuzeitige min kleiner als array2,
{
min = array2[a]; // dann wird min array2 (der Minimumwert)
i = a; // und Position array2 (Position des Minimumwertes)
}
}
return i;
}
int findGlobalMax (float * array2) // Funktion gibt ganzzahligen Wert zurueck, abertet aber mit folat
{
float max = array2[0]; // Anfang
int i = 0; // i = Position
for (int a = 1; a < 601; a++)
{
if (max > array2[a]) // Wenn das zuzeitige max groeszer als arry2,
{
max = array2[a]; // dann wird max array2 (der Maximumwert)
i = a; // und Position array2 (Position des Maximumwertes)
}
}
return i;
}
int main(int argc, char** argv)
{
int a, b;
float c;
printf("- Eingabe dreier Parameter\n ------------------------\n");
printf("Parameter a (ganze Zahl): ");
scanf("%d", &a);
printf("Parameter b (ganze Zahl): ");
scanf("%d", &b);
printf("Parameter c: \n");
scanf("%f", &c);
float * array2 = calcF(a, b, c);
printf("a = %d, b = %d, c = %f\n", a ,b, c);
printf("Minimum bei %d\n", findGlobalMin(array2));
printf("Maximum bei %d\n", findGlobalMax(array2));
//open drawing window, window size will be 640x480
if (cairoUtils_initialize() == CAIROUTILS_RESULT_INITCAIROWINDOW_SUCCESS)
{
cairoUtils_clear(0,0,0); //black blackground
//Zeichenen der y-Achse
cairoUtils_drawLine(20,10,20,420,1,0,0,1); //Linie y-Achse
cairoUtils_drawLine(20,10,15,20,1,0,0,1); //Linker Teil Pfeil y-Achse
cairoUtils_drawLine(20,10,25,20,1,0,0,1); //Rechter Teil Pfeil y-Achse
cairoUtils_drawText(2,20,12,"Y",1,0,0,1); //Beschriftung y-Achse
//Zeichnen der x-Achse
cairoUtils_drawLine(11,410,620,410,0,0,1,1); //Linie x-Achse
cairoUtils_drawLine(610,405,620,410,0,0,1,1); //Oberer Teil Pfeil x-Achse
cairoUtils_drawLine(610,415,620,410,0,0,1,1); //Unterer Teil Pfeil x-Achse
cairoUtils_drawText(600,425,12,"X",0,0,1,1); //Beschriftung X-Achse
float max = array2[findGlobalMax(array2)], min = array2[findGlobalMin(array2)];
float b = max - min;
for(int i = 1; i < 600; i++)
{
int y_wert = (((array2[i] - min) * 400) / b);
int y_wert_naechster = (((array2[i + 1] - min) * 400) / b);
cairoUtils_drawLine(20 + i, 10 + y_wert, 22 + i, 10 + y_wert_naechster, 0, 1, 0, 1);
}
//Zecihnen der MAX/MIN-Kästchen
cairoUtils_drawRect(findGlobalMax(array2)+15, (((array2[findGlobalMax(array2)] - array2[findGlobalMin(array2)]) * 400) / b) + 5,10,10,1,1,0,1);
cairoUtils_drawRect(findGlobalMin(array2)+15,5, 10,10, 1,1,0, 1);
fflush(stdin);
printf("Press ENTER to bestaetigen.\n");
//wait for user pressing ENTER
getchar();
//close drawing window
cairoUtils_close();
return 0;
}
else
{
fprintf(stderr, "Function cairoUtils_initialize returned error.\n");
return -1;
}
}
Das ist das ganze Programm und ich hab noch Fragen dazu und zwar das Ganze hier:
Code: Alles auswählen
float max = array2[findGlobalMax(array2)], min = array2[findGlobalMin(array2)];
float b = max - min;
for(int i = 1; i < 600; i++)
{
int y_wert = (((array2[i] - min) * 400) / b);
int y_wert_naechster = (((array2[i + 1] - min) * 400) / b);
cairoUtils_drawLine(20 + i, 10 + y_wert, 22 + i, 10 + y_wert_naechster, 0, 1, 0, 1);
}
habe ich nicht verstanden, wozu max - min muss?
und das hier "float max = array2[findGlobalMax(array2)], min = array2[findGlobalMin(array2)];" habe ich noch nie gesehen was heisst das denn, neben array2 gibt es [] und wiederum gibt es noch (array2) in []??
Code: Alles auswählen
for(int i = 1; i < 600; i++)
{
int y_wert = (((array2[i] - min) * 400) / b);
int y_wert_naechster = (((array2[i + 1] - min) * 400) / b);
cairoUtils_drawLine(20 + i, 10 + y_wert, 22 + i, 10 + y_wert_naechster, 0, 1, 0, 1);
}
Was versteht man unter dem Ganzen? und wo kommt die 400 her?
vielen vielen Danke
Arnont