Strukt hilfe
-
ich bekomme es einfach nicht hin! naja egal werde das weglassen...!
Mein Programm soll ein koordintansystem darstellen und funktion + 2 ableitungen davon einzeichnen....
ausgabe des kreuzes ist gegeben...nur und die eingabeaufforderung der koeff funktioniert auch...!nur er zeichnet sie nicht ein....was mache ich da falsch...BITTE nicht ausrasten!!!
-
Bitte sagt mir warum er hier nicht die werte in das Koordintansystem reinschreibt.....ich komme NICHT weiter...bin hier nach entgültog fertig und dann bin ich weg...DANKE...BITTE helft....
#include <stdio.h> #define x_achse 76 #define y_achse 22 int koordinaten_array[x_achse][y_achse]; /*Dekleration des 2 DIMM arrays*/ void array_leeren(void); /*Funktionsdekleration*/ void eingabe_berechnung(void); /*Funktionsdekleration*/ void zeichnung_x_achse(void); /*Funktionsdekleration*/ void zeichnung_y_achse(void); /*Funktionsdekleration*/ //void ausgabe(void); /*Funktionsdekleration*/ void wait(void); /*typedef struct{ double koeff_zahl[4]; }POLYNOM;*/ //void eingabe_berechnung(POLYNOM *x); /* forward declaration sonst schimpft der compiler */ int main(void){ /*HauptProgramm*/ array_leeren(); //POLYNOM x; //eingabe_berechnung(&x); eingabe_berechnung(); zeichnung_y_achse(); zeichnung_x_achse(); wait(); return 0; /*Zum Beenden Programms einfach ENTER*/ } void eingabe_berechnung(void) /*(POLYNOM* x)*/{ /*Hier wird die Eingabe+Berechnung vorgenommen*/ double a,b,c,d =0; double koeff_zahl[4]; /*1 Dimm Array deklariert*/ int funk=0,funk1=0,funk2=0; int x=0; printf("Koeffizienten fuer x^3 eingeben: "); /*Eingabeaufforderung der Koeffizienten*/ scanf("%lf", &koeff_zahl[0]); printf("Koeffizienten fuer x^2 eingeben: "); scanf("%lf", &koeff_zahl[1]); printf("Koeffizienten fuer x^1 eingeben: "); scanf("%lf", &koeff_zahl[2]); printf("Koeffizienten fuer x^0 eingeben: "); scanf("%lf", &koeff_zahl[3]); a=koeff_zahl[3]; b=koeff_zahl[2]; c=koeff_zahl[1]; d=koeff_zahl[0]; for (x;x<y_achse;x++){ /*Hier ist die Berechnung von den Formeln*/ funk=(a*x*x*x+b*x*x+c*x+d)+0.5; /*f(x)*/ funk1=((3*a)*(x*x)+(2*b)*(x)+c)+0.5; /*f(x)'*/ funk2=((6*a)*x+(2*b))+0.5; /*f(x)''*/ if ((funk >= 0) && (funk<x_achse)){ /*Zeichnen der Arrayergenisse ins Koordinatensystem*/ koordinaten_array[funk][x]='*'; } if ((funk >= 0) && (funk1<x_achse)){ /*Zeichnen der Arrayergenisse ins Koordinatensystem*/ koordinaten_array[funk1][x]='+'; } if ((funk >= 0) && (funk2<x_achse)){ /*Zeichnen der Arrayergenisse ins Koordinatensystem*/ koordinaten_array[funk2][x]='#'; } } } void zeichnung_x_achse(void){ /*Hier wird das Zeichnen der x-achse vorgenommen*/ int zaehler_x=0; printf(" +"); /*Das + wird eingerückt gesetzt*/ for (zaehler_x;zaehler_x<76;zaehler_x++){ printf("-"); } printf(" 0000000000111111111122222222223333333333444444444455555555556666666666777777");/*Einfaches Zeichnen der Zahlen*/ printf(" 0123456789012345678901234567890123456789012345678901234567890123456789012345");/*Einfaches Zeichnen der Zahlen*/ return; } void zeichnung_y_achse(void){ /*Hier wird das Zeichnen der x-achse vorgenommen*/ int zaehler_y=21; int zaehler_y1=0; for(zaehler_y;zaehler_y>0;zaehler_y--){ /*Hier wird das Zeichnen der x-achse vorgenommen*/ printf("%*d|", 2,zaehler_y); /*die 2 rückt die 1stelligen Zahlen um eine stelle nach rechts*/ printf("\n"); } return; } void array_leeren(void){ /*funktion die den array leert*/ int lauf1=0; int lauf2=0; for (lauf1;lauf1<x_achse;lauf1++){ /*wenn die Var lauf1 kleiner ist als die x_achse*/ for (lauf2;lauf2<y_achse;lauf2++){ /*dann soll er schaun, ob lauf2 kleiner ist */ koordinaten_array[lauf1][lauf2]= ' '; /*danach soll er den array mit einem LEERZeichen füllen*/ } /*nach jedem springen in die schleife wird der zähler um 1 erhöht.*/ } return; } void wait(void){ /*Funktion, welches unter WIN dafür sorgt, das das Programm Kurz am Ende stoppt*/ setvbuf(stdin,NULL,_IONBF,0); setvbuf(stdin,NULL,_IOFBF,BUFSIZ); getchar(); }
-
warum helft ihr nicht...???bin danach fertig!!!
-
hilft mir keiner??????bittee helft doch mal
-
cryme schrieb:
warum helft ihr nicht...???bin danach fertig!!!
Weil du zu blind bist, die gegebene Hilfe anzunehmen (sorry, auch mir reißt irgendwann der Geduldsfaden). Deshalb der letzte Hinweis von mir zu deinem Problem:
Der Compiler muß vor der Verwendung einer Funktion wissen, wie sie heißt und welche Parameter sie erwartet, deshalb benötigst du eine Forward-Deklaration:
typedef struct { ... }POLYNOM;//ab hier sind POLYNOM'e bekannt und können verwendet werden void eingabe_berechnung(POLYNOM* x);//ab hier kennt der Compiler diese Funktion int main() { POLYNOM x; eingabe_berechnung(&x);//nutzt die oben deklarierte Funktion //... } void eingabe_berechnung(POLYNOM* x) { //Definition der Funktion (Quelltext) }
-
ich sagte mehrmals das ichs GENAU so habe...aber danke der zuneigung....wenigstens warst du ein wenig geduldig..
-
cryme schrieb:
ich sagte mehrmals das ichs GENAU so habe.
Wenn du es GENAU so hättest, würde es funktionieren. Lesen gehört offenbar auch nicht zu deinen Stärken. Es bringt übrigens nichts, wenn du dir immer wieder einen anderen Nick ausdenkst. Man erkennt dich ziemlich leicht.
-
Hi Cryme,
ZuK hat bis jetzt alles korrekt beschrieben. Allerdings machst in der Software folgenden fehler...
Dies ist dein Code
typedef struct{
double koeff_zahl[4];
}POLYNOM;int main(void){ /*HauptProgramm*/
array_leeren();
POLYNOM x;
eingabe_berechnung(&x);
eingabe_berechnung();
zeichnung_y_achse();
zeichnung_x_achse();
wait();return 0; /*Zum Beenden Programms einfach ENTER*/
}void eingabe_berechnung (POLYNOM* x) /(void)/{ /*Hier wird die Eingabe+Berechnung vorgenommen*/
double a,b,c,d =0;
double koeff_zahl[4]; /*1 Dimm Array deklariert*/int funk=0,funk1=0,funk2=0;
int x=0;printf("Koeffizienten fuer x^3 eingeben: "); /*Eingabeaufforderung der Koeffizienten*/
scanf("%lf", &koeff_zahl[0]);
printf("Koeffizienten fuer x^2 eingeben: ");
scanf("%lf", &koeff_zahl[1]);
printf("Koeffizienten fuer x^1 eingeben: ");
scanf("%lf", &koeff_zahl[2]);
printf("Koeffizienten fuer x^0 eingeben: ");
scanf("%lf", &koeff_zahl[3]);a=koeff_zahl[3];
b=koeff_zahl[2];
c=koeff_zahl[1];
d=koeff_zahl[0];
for (x;x<y_achse;x++){ /*Hier ist die Berechnung von den Formeln*/
funk=(a*x*x*x+b*x*x+c*x+d)+0.5; /*f(x)*/
funk1=((3*a)*(x*x)+(2*b)(x)+c)+0.5; /*f(x)'*/
funk2=((6*a)*x+(2*b))+0.5; /*f(x)''/if ((funk >= 0) && (funk<x_achse)){ /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
koordinaten_array[funk][x]='*';
}
if ((funk >= 0) && (funk1<x_achse)){ /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
koordinaten_array[funk1][x]='+';
}
if ((funk >= 0) && (funk2<x_achse)){ /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
koordinaten_array[funk2][x]='#';
}So nun verwendest Du die Variable x als Zaehler da du "int x" deklariert hast. Aber gleichzeitig hast Du einen Funktionsparameter "eingabe_berechnung (POLYNOM* x) "
Und der Parameter x ist ein Pointer von Typ POLYNOM. Ändere bitte den for-Schleifenzaehler auf den Namen i. Danach kannst auf den Struktur z.B. mit folgender Anweisung zugreifen x->koeff_zahl[2];
Zusätzlich hast du noch ein Problem eingebaut ---> Du sprengst deine Arraygrenzen. Siehe dies --> koordinaten_array[funk2][x]='#'; Welchen Wert hat die Variable funk2 und stelle dir die Frage wie lang ist der Array mit dem Namen "koordinaten_array" und seiner zwei Dimensionen.Gruß
Krasstala
PS: Mach dir nichts daraus C is a bug. This is why we need a debugger. Durch Übung wirst du schon fit. Ich kann deine Probleme schon verstehen. Irgendwie haben wir alle so angefangen.
-
Krasstala, auch unregistrierte duerfen cpp-Tags benutzen, auch wenn der Code Ansi C ist.
-
Mache ich, Mod. Danke für den Hinweis!
Gruß
Krasstala