Evizienter programmieren
-
So, ich habe versucht eine Funktion aus meinen Rahmen zu machen, aber es funzt natürlich nicht....(Ich habe auch nichts anderes erwartet...
)
int main() { int w = 1,Rahmen; char x, y; char r1=201,r2=205,r3=187,r4=186,r5=200,r6=188,r7=175,r8=174,r9=204,r10=185; //Rand-Zeichen float a, b, Ergebniss,ZErgebniss,ZErgebniss2; double c, d; //Rahmen-Funktion-Erstellung void Rahmen() clrscr(); gotoxy(25,1); cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",r1,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r3); gotoxy(25,2); for (Rahmen = 2; Rahmen <= 4; Rahmen++) { gotoxy(25, Rahmen); cprintf("%c", r4); } gotoxy(25,5); cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",r9,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r10); for (Rahmen = 6; Rahmen <= 24; Rahmen++) { gotoxy(25, Rahmen); cprintf("%c", r4); } gotoxy(25,25); cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%cSteveKempe%c%c%c",r5,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r7,r8,r2,r6); gotoxy(25,2); for (Rahmen = 2; Rahmen <= 4; Rahmen++) { gotoxy(54, Rahmen); cprintf("%c", r4); } for (Rahmen = 6; Rahmen <= 24; Rahmen++) { gotoxy(54, Rahmen); cprintf("%c", r4); } //Rahmen-Funktion-Erstellung-Ende while(w != 0) { Rahmen(); clrscr(); textbackground(CYAN); textcolor(RED);
Was ist hier nun mein Fehler? So wie ich das mitbekommen habe, hat der Compiler mit den ganzen conio.h Befehler seine Probleme. Liege ich richtig?
-
void rahmen(); //Deklaration int main() { //code rahmen(); //Aufruf } void rahmen() //funktion { //code }
-
Lyrix schrieb:
void rahmen(); //Deklaration int main() { //code rahmen(); //Aufruf } void rahmen() //funktion { //code }
Ich versteh es irgendwie nicht
Muss man nicht Variablen ganz am Anfang deklarieren? Und wie ist das genau gemeint(das andere)? Bitte mit etas mehr Kommentar posten. Danke schon mal im Vorraus!
-
Das steht alles, aber auch wirklich ALLES in nem Tutorial....
also nochmal.
Zunächst musst du deine Funktionen Deklarieren, das macht man so:
void funtionsname();
Dann kommt deine Main-Funktion:
void main() { //Variablen //Quellcode }
Die Variablen, die du in der Main Funktion deklarierst, sind auch nur in der Main Funktion verwendbar.
Zum Schluss kommt noch deine Funktion:
void Funktionsname() { //Variablen //Code }
Auch hier handelt es sich um lokale Variablen, die wiederrum nur in der Funktion "Funktionname" verwendet werden koennen....
Aber les es doch bitte in nem Tut oder Buch nach
-
In der FAQ steht aber, das es verboten ist eine void main zu machen. darf man das jetzt doch?
(Gib mal nen Link zu einen guten Tutorial)
-
-
-
unfug, hat doch grad noch....
und jetzt immernoch!und nein, eine void main() ist nicht gern gesehen und vom standard her verboten.
-
dann mach halt
int main() { return 0; }
Aber das hat ja nun nicht so ganz was mit dem thema zu tun
-
Kann mal schnell wer meinen Quellcode so editieren das es funzt?
-
verschieb deine rahmenfunktion einfach vor die main() und nicht in die main.
-
void Rahmen(); int main() { int w = 1; char x, y; //Rand-Zeichen float a, b, Ergebniss,ZErgebniss,ZErgebniss2; double c, d; while(w != 0) { Rahmen(); clrscr(); textbackground(CYAN); textcolor(RED); } } void Rahmen() { int Rahmen; char r1=201,r2=205,r3=187,r4=186,r5=200,r6=188,r7=175,r8=174,r9=204,r10=185; clrscr(); gotoxy(25,1); cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",r1,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r3); gotoxy(25,2); for (Rahmen = 2; Rahmen <= 4; Rahmen++) { gotoxy(25, Rahmen); cprintf("%c", r4); } gotoxy(25,5); cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",r9,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r10); for (Rahmen = 6; Rahmen <= 24; Rahmen++) { gotoxy(25, Rahmen); cprintf("%c", r4); } gotoxy(25,25); cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%cSteveKempe%c%c%c",r5,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r7,r8,r2,r6); gotoxy(25,2); for (Rahmen = 2; Rahmen <= 4; Rahmen++) { gotoxy(54, Rahmen); cprintf("%c", r4); } for (Rahmen = 6; Rahmen <= 24; Rahmen++) { gotoxy(54, Rahmen); cprintf("%c", r4); } }
Denke so müsste es nun gehn...
-
Mal kurz Off-Topic:
Muss man sich bei der Tutorial-Seite registrieren um dort Infos zu bekommen?Der Quellcode funzt nicht: Es kommt Call zo Nonfunction!
-
Hast du die Funktionsdeklaration oben auch kopiert?
Wenn ja kannste mal den genauen Fehler nieder schreiben...
-
Wegen OT:
Da sind auch viele Tutorials.
WEnn du lieber nen Buch lesen willst, empfehle ich dir:
- C von A bis Z
und/oder
- Jetzt lerne ich C
-
Gut, danke! Die Seite ist echt stark! Jetzt bräuchte ich nur noch Infos zur OnTopic
-
DSD-Steve schrieb:
Der Quellcode funzt nicht: Es kommt Call zo Nonfunction!
Dann hast du wohl falsch abgeschrieben, bei mir geht's.
Du wirst uns wohl zeigen müssen, was du da produziert hast.
-
void Rahmen(); int main() { int w = 1; char x, y; //Rand-Zeichen float a, b, Ergebniss,ZErgebniss,ZErgebniss2; double c, d; while(w != 0) { Rahmen(); clrscr(); textbackground(CYAN); textcolor(RED); } } void Rahmen() { int Rahmen; char r1=201,r2=205,r3=187,r4=186,r5=200,r6=188,r7=175,r8=174,r9=204,r10=185; clrscr(); gotoxy(25,1); cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",r1,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r3); gotoxy(25,2); for (Rahmen = 2; Rahmen <= 4; Rahmen++) { gotoxy(25, Rahmen); cprintf("%c", r4); } gotoxy(25,5); cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",r9,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r10); for (Rahmen = 6; Rahmen <= 24; Rahmen++) { gotoxy(25, Rahmen); cprintf("%c", r4); } gotoxy(25,25); cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%cSteveKempe%c%c%c",r5,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r7,r8,r2,r6); gotoxy(25,2); for (Rahmen = 2; Rahmen <= 4; Rahmen++) { gotoxy(54, Rahmen); cprintf("%c", r4); } for (Rahmen = 6; Rahmen <= 24; Rahmen++) { gotoxy(54, Rahmen); cprintf("%c", r4); } } int w = 1,Rahmen; char x, y; char r1=201,r2=205,r3=187,r4=186,r5=200,r6=188,r7=175,r8=174,r9=204,r10=185; //Rand-Zeichen float a, b, Ergebniss,ZErgebniss,ZErgebniss2; double c, d; while(w != 0) { Rahmen(); clrscr(); textbackground(CYAN); textcolor(RED); gotoxy(33,1); cputs("\n\nTaschenrechner"); gotoxy(33,6); cputs("Grundrechenarten\n"); gotoxy(33,7); cputs("(a)Addition\n"); gotoxy(33,8); cputs("(s)Subtraktion\n"); gotoxy(33,9); cputs("(m)Multiplikation\n"); gotoxy(33,10); cputs("(d)Division\n"); gotoxy(29,11); cputs("Erweiterte Rechenarten\n"); gotoxy(33,12); cputs("(q)Quadratberechnung\n"); gotoxy(33,13); cputs("(w)Wurzelberechnung\n"); gotoxy(33,14); cputs("(p)Potenzierung\n"); gotoxy(33,15); //printf("(pw)potenzwurzelberechnung\n"); gotoxy(30,16); cputs("Spezielle Berechnungen\n"); gotoxy(33,17); cputs("(1)Sinusberechnung\n");/* gotoxy(33,18); cputs("(2)Cosinusberechnung\n"); gotoxy(33,19); cputs("(3)Tangensberechnung\n"); */ gotoxy(36,20); cputs("Sonstiges\n"); gotoxy(33,21); cputs("(i)Informationen\n"); gotoxy(33,22); cputs("(b)Beenden\n"); scanf("%c", &x); clrscr();
-
Du machst wieder den gleichen Fehler wie oben...
Jede Funktion muss alleine stehen. So wie du das gemacht hast, haste wieder Code geschrieben, der in keiner Funktion steht...
Der ganze Quellcode, der unterhalb der Rahmen Funktion steht, muss in die Main Funktion.
Was du mit den unteren Initialisierungen und Deklaratipnen meinst weiss ich nich...
-
Ich verzweifle, tu mir BITTE,BITTE,BITTE doch einfach den gefallen und schreibe den Quellcode in meinen Beispiel so wie er sein muss.. BITTE!