C-Hilfe
-
erst, wenn du dich als blizzarac einloggst.
-
ich nicht ER...sondern sind beide in der selben jahrgangsstufe...er hat mir diese seite empfohlen...weil wir nicht die selben codes haben dürfen...sorry.....
-
hehe, ich war schon etwas verwirrt, weil ihr beiden sehr aehnliche IPs habt. andererseits frag ich mich, wieso mich das ueberhaupt verwirrt hat. immerhin kann man das beim groessten deutschen c/c++ forum erwarten...
dein letzter codeschnipsel sieht uebrigens richtig aus.
-
ich danke dir für dein feedback....jeder kann und darf sich mal irren hehe
habe nur noch ein Problem...dann bin ich wie ich HOFFE fertig
auf dem Funktionskopf wird ein fehler angezeigt: syntax error before numeric constantvoid array_leeren(int koordinaten_array[][y_achse], int x_achse){ /*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;
}
-
corvettev1 schrieb:
habe nur noch ein Problem...dann bin ich wie ich HOFFE fertig
auf dem Funktionskopf wird ein fehler angezeigt: syntax error before numeric constantVor längerer Zeit wurdest Du in diesem Thread drauf angesprochen ob x_achse ein #define ist und Du hattest mit "ja" geantwortet.
Demzufolge steht in der Zeile
void array_leeren(int koordinaten_array[][y_achse], int x_achse){
hinten eine Zahl (der Wert von #define x_achse). Eine Zahl ist eine "numeric constant"
-
also wirklich...weiss dembezüglich garnicht weiter...wie muss es denn korrekt aussehen?
-
Du weisst dass wenn Du #define x_achse 26 machst jedes Vorkommen des Wortes "x_achse" durch die Zahl "26" ersetzt wird bevor der wirkliche Compiler das Programm bekommt? Sowas nennt man Präprozessor... In der Zeile steht also wenn der Präprozessor durch ist und der Compiler anfängt folgendes:
void array_leeren(int koordinaten_array[][22], int 76){
Was definitiv wenig Sinn macht. Nunja, wie löst man das Dilemma wenn man zwei "Dings" hat die sich beissen weil Sie den gleichen Namen haben? Benenne ein beliebiges "Dings" in "Bums" um
-
und wie löse ich das problem? ich versuche es schon die ganze zeit...BITTE
-
Tses... Wenn zwei "Dings" sich beissen, benenne ein "Dings" in ein "Bums" um.
Analogie: Wenn zwei "x_achse" sich beissen, benenne eins davon in "x_achse2" um.
Wobei ich mich frage wieso Du "x_achse" noch an die Funktion array_leeren übergibst wenn "x_achse" doch sowieso bekannt ist und programmweit den Wert "76" hat? Ich glaube Du solltest den Parameter "int x_achse" für array_leeren ganz weglassen
-
kann dir keinen meter folgen...ich weiss das du es um einiges besser kannst als ich....bitte habe auch verständnis dafür...ich WILL lernen...aber nicht verspottet werden.
ich habe doch nur einmal x_achse als define und kein anderes mal definiert...wie sollen die sich dann beissen?
wenn du sdo gütig wärst und es mir zeigen könntest bitte..wo der fehler wirklihc ist...und wie ich ihn ausmerzen kann? BITTE...muss es nachher per email abgeben...DANKEEEE
-
ursprünglich wollte ich den array in die MAIN setzen...da ich dann merkte das dann nur noch fehler resultieren...habe ich mir gesagt das es GOLBAL einfacher ist...und deswegen den weg gewählt...habe NUN...
das hier gemacht:
void array_leeren(void)
-
Klar Array global geht auch... Aber nochmal zum Verständnis, wo sich x_achsen beissen
#define x_achse 76
void array_leeren(int koordinaten_array[][y_achse], int x_achse){
In der ersten Zeile definierst Du "x_achse ist 76". In der zweiten Zeile erzeugst Du einen Parameter vom Typ int, dessen Name "76" ist (da ja zuvor definiert wurde dass "x_achse ist 76"). Da der Name einer Variablen in C mit einem Buchstaben oder Unterstrich beginnen muss -> Fehlermeldung.
-
ach also hääte ich einfach nur den
den letzeren teil umbennen sollen? also: in x_achse...VERSTEHE...dankevoid array_leeren(int koordinaten_array[][y_achse], int x_achse){
-
dank diesem forum bin ich FAST fertig....habe nur Glaube ein letztes problem:
ich bekomme das koordintankreuz nach der eingabeaufforderung ausgegeben...jedoch werden die Funktionen nicht gesetzt....wie mache ich das....????
zeige mal meinen code:
void eingabe_berechnung(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]='#'; } } }
-
Wenn du das Array mit den eingetragenen Funktionen ausgegeben haben willst, dann nach der Berechnung:
array_leeren(); array_ausgeben();//->leeres Koordinatensystem eingabe_berechnung(); array_ausgeben();//->Koordinatensystem mit Funktionsgraphen
PS1: Das Array koeff kannst du übrigens ganz weglassen:
double a,b,c,d; printf("Koeffizienten fuer x^3 eingeben: "); /*Eingabeaufforderung der Koeffizienten*/ scanf("%lf", &a); printf("Koeffizienten fuer x^2 eingeben: "); scanf("%lf", &b); printf("Koeffizienten fuer x^1 eingeben: "); scanf("%lf", &c); printf("Koeffizienten fuer x^0 eingeben: "); scanf("%lf", &d);
PS2: Wenn ihr zwei verschiedene Personen seid, warum sehen sich dann eure Code-Fragmente so ähnlich?
-
also muss ich eine eigene funktion dafür schreiben oder wie sehe ich das?
oder einfach meinen CODE abändern oder wie meinst du das?
double a,b,c,d; printf("Koeffizienten fuer x^3 eingeben: "); /*Eingabeaufforderung der Koeffizienten*/ scanf("%lf", &a); printf("Koeffizienten fuer x^2 eingeben: "); scanf("%lf", &b); printf("Koeffizienten fuer x^1 eingeben: "); scanf("%lf", &c); printf("Koeffizienten fuer x^0 eingeben: "); scanf("%lf", &d);
Ps...... wir haben uns gegenseiig geholfen....zudem ist doch sicher so das unter 100 schülern mehrere stark ähnliche teile vorkommen können, denn es gibt denke ich mal auf dem lvl nicht so viele wege....!er ist fertig warum SITZE ich noch hier?
DANKE
-
corvettev1 schrieb:
also muss ich eine eigene funktion dafür schreiben oder wie sehe ich das?
Kannst du machen - ich dachte aber du hättest schon eine Funktion zum Ausgeben.
oder einfach meinen CODE abändern oder wie meinst du das?
vermutlich
-
corvettev1 schrieb:
er ist fertig warum SITZE ich noch hier?
Weil du nicht im geringsten verstehst, was du da tust.
Übrigens hast du noch ein Problem mit deinen if-Anweisungen. Bei der Prüfung der unteren Grenze für funk1 und funk2 prüfst du den Wert von funk.
Außerdem glaube ich, dass du mindestens einmal x und y vertauschst. Üblicherweise ist x der erste Index. Bei dir ist es andersrum. Wenn du das zweimal vertausch hast - also bei der Ausgabe auch - hebt sich das natürlich wieder auf.Liegen die Werte überhaupt in einem Bereich, der angezeigt werden kann?
-
das problem dabei ist....würde ja gerne es machen das ich das 1 DIM array weglasse....nur muss diese funktion in ein struct bauen...was mir nicht gelingt...habe mir angesehen...was in einem andere tread darüber steht aber auf mein Programm bezogen ist es denke ich anders.
void eingabe_berechnung (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]='#'; } } }
typdef struct{
double koeff[4];
}POLYNOMdeswegen wollte ich den 1 DIM beibehalten....
-
Was denn nun? Struct oder Array?
Wenn du wirklich ein Struct verwenden willst, kannst du das lokale Array und auch die Variablen weglassen und direkt damit rechnen:
POLYNOM pol; /*Eingabeaufforderung der Koeffizienten*/ for(int i=0;i<4;++i) { printf("Koeffizienten fuer x^%d eingeben: "); scanf("%lf", &(pol.koeff[i])); } //... //Berechnung: func = pol.koeff[3]*x*x*x + pol.koeff[2]*x*x + pol.koeff[1]*x + pol.koeff[0];
Und dann könntest du deine Riesen-Funktionen sogar noch weiter zerlegen und diese POLYNOM-Struktur jeweils als Parameter zwischen Eingabe und Berechnung durchreichen.