geloescht_saschabu Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Also, ich möchte in dieser Arbeit am Donnerstag keine fünf schreiben, doch es klappt einfach nicht. Ich sitz da, hab kaum ne Ahnung (Es geht um Funktionen und Arrays) und hab ein Brett vorm Kopf. Ich komm zur scanf eingabe weiter nicht, so sieht mein Quellcode aus. Kann mir da jemand irgendwie helfen, irgendein Programm schicken, dass irgendeine Funktion hat, egal welche mit einer Erklärung drin? Sollte nicht zu kompliziert sein, möchte es ausdrucken. Kann mir da einer bitte bitte bitte helfen? Ich brauch eine drei, grad sieht es nach einer sechs aus ... *heul* Falls ihr gleich mailen wollt: Vielen Dank P.S.: Morgen kann ich leider keine E-Mails abrufen, bin ich nicht in der Firma, aus diesem Grund hoffe ich doch dass jemand bis heute mittag geholfen hat. MfG saschabu Zitieren
Goos Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Na dann poste hier doch den Code den du schon gemacht hast. .....und erzaehl vielleicht auch noch, wo es genau haengt und was das ganze werden soll, dann wird dir sicher auch geholfen. Die Chance dass dir hier jemand was komplettes macht halt ich dann doch fuer recht gering, da das hier ja kein Hausaufgabenservice ist Goos Zitieren
Woodstock Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Nun, ich denke zwar dass Du mit Deinem Problem etwas spät kommst, aber helfen tu ich trotzdem gerne (wenn ich kann). Was ich aber nicht mag, ist Dir einen fertigen Quellcode geben. Dabei hab ich nur Arbeit, und Du keinen Erfolg (weil Du es das nächste Mal wieder nicht kannst). Die Frage ist doch, wie wir Eure arbeit am Donnerstag aussehen? Was habt Ihr bisher gemacht, und was kannst Du davon, und was macht Dir Probleme. Bine PS: Und wähle das nächste Mal bitte einen etwas besseren Titel für Deinen Thread... Zitieren
geloescht_saschabu Geschrieben 14. Mai 2002 Autor Geschrieben 14. Mai 2002 Also ich fang mal an unseren stoff zu erzählen: Wir benutzen dass rororo Buch mit dem Titel C programmieren von anfang an. ich komme aus Bw! So also unsere vorherigen Lernziele: while, do- while, if, for, Entscheidungen. Ich habe schon etwas mit dem do-while, while, for Probleme. Ich komme soweit bis zu der scanf eingabe bei jedem Programm, sobald es aber um die schleife geht hab ich kaum einen Durchblick. Und das Buch hilft mir da auch nicht mehr grad weiter. Mein Quellcode sieht somit immer so aus: # include <conio.h usw> main() { int v; clrscr; printf("BSP"); scanf("%i",&v); so und jetzt kommt die schleife und da hängt es jetzt, ich weiß ganz genau dass ich dass programmieren könnte, habe früher qbasic programmiert, aber ich find da keine logik, auch nicht mit struktugramm. Die arbeit geht um wie oben schon gesagt, Funktionen und arrays. Eine Aufgabe z.B: Berechnung des Federweges einer Schraubenfeder: eine schraubenfeder hat die federkonstante c00,35N/cm. In einer tabelle soll nun der federweg für zugkräfte von 0...4N in 0,4 n schritte angegeben werden. Funktion Berechnung: s=f/c F ist zugkraft u. wird vom HP an die Funktion übergeben, das ergebnis s wird an das hp zurückgeliefert u. dort tabellarisch ausgegeben. Berechnung ist klar, aber der Syntax mit der Funktion, null durchblick, mir fehlt da die logik:confused: Hilft das weiter? Zitieren
Woodstock Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Hmm, also zum ersten fällt mir etwas an Deiner Funktion main auf. Du schreibst: main() { bla... } es müßte aber auf jeden Fall void main() { bla... } oder nach dem Standart int main() { bla... } Ist das hier nur eine Ungenauigkeit von Dir? Und was ist das für eine Schleife. Die ist hier nicht zu sehen. Wie soll ich denn sagen können was damit falsch ist, wenn ich sie nicht sehen kann???? Bine Zitieren
geloescht_saschabu Geschrieben 14. Mai 2002 Autor Geschrieben 14. Mai 2002 das war eine ungenauigkeit. Ich hab doch gesagt alles was da nach kommt ist quatsch, aus diesem grund habe ich ja auch probleme, ich weiß nicht, wann welche schleife ich benutzen muss, ok for- schleife, do- while auch noch, aber muss hier jetzt eine array (Zeichenkettenausgabe hin) oder was muss da hin. ich habe es mit array versucht, bin aber mit 20 Fehlern dann ausgestiegen und in der wut habe ich dass thema eroffnet, sorry wegen dem topic aber war komplett sauer *ich könnt heulen* Ich bekomm die schleifen nicht hin, ich kann mir dass einfach nicht richtig merken und unser lehrer kann es nicht erklären, zieht nur seinen stoff durch. deswegen habe ich ja auch gesagt es wäre gut ein programm mir zu schicken, dass keine funktion hat, sondern nur eine schleife zeigt, wo bekomm ich da hilfe, schulkameraden versuchen mir (und anderen zu helfen), doch sind grad im urlaub bis donnerstag verstehst du mich jetzt wasd ich mein??????? Zitieren
Klotzkopp Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Du brauchst für diese Aufgabe keine Arrays. Was die Schleifen angeht, zwischen for und while gibt es keinen wirklichen Unterschied, nur was wo steht. Wichtig ist nur der Unterschied zwischen while und do (also kopf- bzw. fußgesteuert). //Beispiel (for): for( double zugkraft = 0.0; zugkraft <= 4.0; zugkraft += 0.4 ) { // Berechnung & Ausgabe } //Beispiel (while): double zugkraft = 0.0; while( zugkraft <= 4.0 ) { // Berechnung & Ausgabe zugkraft += 0.4; } [/CODE] Zitieren
Woodstock Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Hmm, also wenn Dich jetzt richtig verstanden habe, dann willst Du wissen was für Schleifen es gibt, und wozu ich welche benutzte, richtig??? Also, es gibt: while do while for und noch ein paar andere Anwesisungen wie if, if else, switch, case, auf die ich jetzt aber nicht mehr eingehe. Wann benutze ich welche?!?! Tja, gute Frage. Im Grunde kann man das ziemlich frei entscheiden. Der große unterschied zwischen ein while und einer do while Schleife ist, das die while Schleife direkt zu Beginn ein Kriterium überprüft, also eventuell nicht ausgeführt wird, nud die do while Schleife dies erst am Ende tut. Die do while Schleife wird also auf jeden Fall einmal ausgeführt. Die for Schleife benutze ich, wenn ich eine festgelegte Anzahl an Durchläufen haben will (kann auch durch eine Variable festgelegt sein, mir also nicht unbedingt bekannt sein). Beispiel: while ( i >= 0 ) { string1[i] = string2[i]; i--; }[/PHP][PHP]do { y = f( x ); x--; } while ( x > 0 );for ( i = space = tab = 0; i < MAX; i++ ) { if ( line[i] == ' ' ) space++; if ( line[i] == '\t' ) { tab++; line[i] = ' '; } }[/PHP] Etwas klarer? Bine Zitieren
geloescht_saschabu Geschrieben 14. Mai 2002 Autor Geschrieben 14. Mai 2002 Danke, aber wann brauch ich was?? kopf und fuß gesteuert kann ich noch, aber das Problem ist halt, ich habe schon öfters versucht, etwas @home zu programmieren, und ich bleibe 99 % immer an den schleifen hängen, warum auch immer, also intelligent genug bin ich, schreib ja sonst nur so um die 1,6 Noten, ich konnte dass auch früher bei Q-basic, aber mir fehlt so die übung, wann was wie ich was verwende, wo gibt es da hilfe???? Zitieren
Woodstock Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Dafür gibt es keine allgemeine Festlegung. Das kann man ziemlich frei selber entscheiden, und im Grunde mit allen Schleifen das gleiche bewirken. Gib doch mal ein Beispiel für so eine Schleife die bei Dir nicht funktioniert??? Mit Quellcode davor und danach (weil an dem kann es auch liegen). Bine Zitieren
geloescht_saschabu Geschrieben 14. Mai 2002 Autor Geschrieben 14. Mai 2002 Ja, aber if, und else wie sieht es damit aus?? switch ist dass auswählen, dass hab ich wieder! Ich weiß nicht wie man dass nennt, aber ich habe nicht das programmierblut, ich konnte wie schon gesagt q, bis ein paar schleifen, aber dann war schluß, mit dem c hab ich irgendwie mit der logik probleme, mir fehlt einfach die denkweise, wie soll man das beschreiben??? Versteht ihr mich? Ich frag mich immer, wie komm ich darauf, und bleib an diesen stellen hängen, der code ist ja auch nicht riesig, und ist auch nicht die welt, aber mir fehlt irgendwie die logik! Was hilft dagegenß?? Aber sonst habe ich die logik!! Nur da nicht :confused: Zitieren
Woodstock Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 if ist eine Abfrage. if(x==1) { .... } Ist die Bedingung wahr (hier also X gleich 1), dann wird das was in den Klammern steht ausgeführt, sonst nicht. if else ist im grunde genauso: if(x==1) { ... } else { ... } nur das wenn die Bedingung nicht wahr ist, dann wird das ausgeführt was in den Klammern von else steht. Aber das müßte Dir auch Dein Buch erzählen. Bine Zitieren
geloescht_saschabu Geschrieben 14. Mai 2002 Autor Geschrieben 14. Mai 2002 Also ich habe gerade keinen quellcode da der so chaotisch ist. Liegt zu hause, wie find ich am einfachsten heraus, welche schleifenvariabel, die am einfachsten ist, und wie kann ich dass am einfachsten umsetzen?? Und danke dass ihr mir so hilft Danke Zitieren
Woodstock Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Wie gesagt, das ist unterschiedlich. Kommt immer auf einen selber drauf an. Der eine kann mit der besser, der andere mit der. Ist Gewöhnungssache, würde ich sagen. Ich arbeite sowohl mit while als auch mit for oft. Do while weniger, braucht man aber im allgemeinen nicht so oft. Am besten erklären kann man das an Code direkt, finde ich! Bine Zitieren
geloescht_saschabu Geschrieben 14. Mai 2002 Autor Geschrieben 14. Mai 2002 So hier ist ein Quellcode: Da steht auch mein Name drin, schaut mal drauf: // Kassenprogramm // 25.10.01 // Sascha #include <stdio.h> #include <conio.h> #include<dos.h> void main (void) { Anfang: int wahl,eing; clrscr(); printf("\n\t\t***K a s s e n p r o g r a m m***\n\n\n") ; printf("\n1 --> Sie sind unter 12 Jahren alt\n"); printf ("\n2 --> Sie sind **Âber** 12 Jahre alt\n\n"); printf("\t~DrÂcken Sie bitte eine der beiden oben genannten Zahlen~\n"); scanf("%i",&wahl); Ausgabe: if (wahl == 1) { printf("\nBitte zahlen sie 3 DM"); delay(750); printf("\n\n\t'Danke'"); } if (wahl == 2) { printf("\nBitte zahlen sie 5 DM"); delay(750); printf("\n\n\t'Danke'"); } if (wahl<1) { printf("\tSie haben eine falsche Zahl eingegeben\n\n"); printf("\t\t\Bitte geben Sie die Zahl 1 oder 2 ein: "); scanf("%i",&wahl); goto Ausgabe; } if (wahl>2) { printf("\tSie haben eine falsche Zahl eingegeben\n\n"); printf("\t\t\Bitte geben Sie die Zahl 1 oder 2 ein: "); scanf("%i",&wahl); goto Ausgabe; --> Das kapier ich bis jetzt alles, aber wie funktioniert der untere teil jetzt?? } printf("\n\n\n\t\t***WÂnschen Sie einen Neustarts des Programms***\n\n"); printf("\t 1 = ja ; 0 = nein : "); scanf("%i",&eing); if (eing == 1) { goto Anfang; } else printf("\n\n\n Bitte drÂcken Sie eine beliebige"); printf(" Taste um das Programm zu beenden"); getch(); } Zitieren
geloescht_saschabu Geschrieben 14. Mai 2002 Autor Geschrieben 14. Mai 2002 oder so was, das kapier ich auch noch, aber die verschaltelten schleifen, da habe ich probleme!!! // Ohmsche Gesetz // 15.11.01 // Sascha Burton #include <stdio.h> #include <conio.h> #include<dos.h> void main (void) { int u,r,i,abbrechen,fehler; char s,eing; abbrechen=0; while (abbrechen==0) { do { clrscr(); printf("\n\t\t***O h m s c h e G e s e t z***\n\n\n") ; printf("Welche Grâ€Ã¡e soll berechnet werden?\n"); printf("\n1 --> Spannung\n"); printf ("\n2 --> Strom\n"); printf ("\n3 --> Widerstand\n\n"); s = getch(); switch (s) { case '1': printf("\nGeben Sie bitte den Widerstand in Ohm ein: "); scanf("%i",&r); printf("\nGeben Sie bitte den Strom in Ampere ein: "); scanf("%i",&i); u=r*i; printf("Die Spannung betr„gt %i Volt.", u); break; case '2': printf("\nGeben Sie bitte die Spannung in Volt ein: "); scanf("%i",&u); printf("\nGeben Sie bitte den Widerstand in Ohm ein: "); scanf("%i",&r); i=u/r; printf("Der Strom betr„gt %i Ampere.", i); break; case '3': printf("\nGeben Sie bitte die Spannung in Volt ein: "); scanf("%i",&u); printf("\nGeben Sie bitte den Strom in Ampere ein: "); scanf("%i",&i); r=u/i; printf(" Der Widerstand betr„gt %i Ohm.", r); break; default: printf("Fehler! Bitte wiederholen Sie ihre Eingabe..."); delay(100); break; } } while (s!='1' && s!='2' && s!='3'); printf("\n\n\n\t***WÂnschen Sie einen Neustarts des Programms***\n\n"); printf("\t\t\t 1 = ja ; 0 = nein : "); eing = getch(); if (eing == '0') { printf("\n\n\n Bitte drÂcken Sie eine beliebige"); printf(" Taste um das Programm zu beenden"); abbrechen=1; getch(); } } } Zitieren
Woodstock Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Funktioniert bis auf ein paar Schönheitsfehler doch gut! Oder verstehst Du in dem Quellcode etwas nicht? Bine Zitieren
geloescht_saschabu Geschrieben 14. Mai 2002 Autor Geschrieben 14. Mai 2002 --> Das kapier ich bis jetzt alles, aber wie funktioniert der untere teil jetzt?? Schau mal von unten den zweiten <Quellcode an, da steht dass unten drann, damit habe ich noch probs, denn ich vertseh nicht genau warum dass so ist??? Das ging ja auch noch, aber die sachen mit formeln macht mir halt irgendwie probleme, und meine tastatur ist jetzt auch kaputt toll Zitieren
Goos Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Zum Thema FOR - Schleife: for ( i = space = tab = 0; i < MAX; i++ ) { if ( line[i] == ' ' ) space++; if ( line[i] == '\t' ) { tab++; line[i] = ' '; } } [/PHP] Das ist ein recht unglueckliches Beispiel find ich. Bei der FOR Schleife kommts ja auch nur auf den Kopf an. Das Problem, was die meisten damit haben ist die Abbruchbedingung, also: [PHP]for( i=0; Bedingung; i++) Ich denke mal man kann das mit dieser Bedingung ganz gut verdeutlichen, wenn man erklaert, dass es eben eine Bedingung ist ( ein Boolscher Ausdruck, der TRUE, oder FALSE zurueckliefert) Ist eben diese Bedingung TRUE, dann wird die Schleife durchlaufen und sobald FALSE auftaucht ist die Schleife beendet und der weitere Code wird durchlaufen. Deshalb wird dann auch ein i == 10 als Bedingung nicht funktionieren, da ja i zu anfang 0 ist und somit ein FALSE zurueckgeliefert wird. Schreibt man dann allerdings i <= 10, dann wird TRUE zurueckgegeben bis i die 11 erreicht hat. Ein haeufiger Fehler ist auch noch, dass als Bedingung sowas wie i = 10 eingetragen wird. Da dieses i = 10 aber kein Vergleich, sondern eine Zuweisung ist kann i = 10 nie falsch sein und die Schleife laeuft endlos. Ich weiss zwar nicht ob dir das nun was geholfen hat Sascha, aber meiner Erfahrung nach haben recht viele Leute Probleme damit Goos Zitieren
Woodstock Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Das Beispiel stammt aus der MSDN! Bine Zitieren
geloescht_saschabu Geschrieben 14. Mai 2002 Autor Geschrieben 14. Mai 2002 @ goos ja dass habe ich schon gewusst hatte auch damit keine probleme es ist eher mit dem : while (s!='1' && s!='2' && s!='3'); printf("\n\n\n\t***WÂnschen Sie einen Neustarts des Programms***\n\n"); printf("\t\t\t 1 = ja ; 0 = nein : "); eing = getch(); if (eing == '0') { printf("\n\n\n Bitte drÂcken Sie eine beliebige"); printf(" Taste um das Programm zu beenden"); abbrechen=1; getch(); } } dazu bräuchte ich noch eine kleine antwort, warum dass so funzt?? Zitieren
FIAE_professional Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Ich würde sagen, dass das n ziemlich verkrüppelter Code ist. Was soll denn die While - Schleife mit dem Semikolon dahinter? Wo ist der Schleifenkörper? etc. Zitieren
Woodstock Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Das ist so nicht Dein Quellcode. Schau ihn Dir noch mal an. Daswhile (s!='1' && s!='2' && s!='3'); gehört zu dieser do { printf("\n\t\t***O h m s c h e G e s e t z***\n\n\n") ; printf("Welche Grâ€Ã¡e soll berechnet werden?\n"); printf("\n1 --> Spannung\n"); printf ("\n2 --> Strom\n"); printf ("\n3 --> Widerstand\n\n"); s = getch(); switch (s) { case '1': printf("\nGeben Sie bitte den Widerstand in Ohm ein: "); scanf("%i",&r); printf("\nGeben Sie bitte den Strom in Ampere ein: "); scanf("%i",&i); u=r*i; printf("Die Spannung betr„gt %i Volt.", u); break; case '2': printf("\nGeben Sie bitte die Spannung in Volt ein: "); scanf("%i",&u); printf("\nGeben Sie bitte den Widerstand in Ohm ein: "); scanf("%i",&r); i=u/r; printf("Der Strom betr„gt %i Ampere.", i); break; case '3': printf("\nGeben Sie bitte die Spannung in Volt ein: "); scanf("%i",&u); printf("\nGeben Sie bitte den Strom in Ampere ein: "); scanf("%i",&i); r=u/i; printf(" Der Widerstand betr„gt %i Ohm.", r); break; default: printf("Fehler! Bitte wiederholen Sie ihre Eingabe..."); break; } // switch } while (s!='1' && s!='2' && s!='3'); // do - while[/PHP]Schleife. Das[PHP] printf("\n\n\n\t***WÂnschen Sie einen Neustarts des Programms***\n\n"); printf("\t\t\t 1 = ja ; 0 = nein : "); eing = getch(); if (eing == '0') { printf("\n\n\n Bitte drÂcken Sie eine beliebige"); printf(" Taste um das Programm zu beenden"); abbrechen=1; getch(); } // if steht unter der 'do-while' Schleife!!! Gewöhn Dir am besten direkt an, zu kennzeichnen wo welche Schleife wieder zu Ende ist. Was für einen Compiler benutzt Du eigentlich, denn eigentlich sollte das bei Dir im Compiler durch Tab-Verschiebung wie hier:#include <stdio.h> #include <conio.h> #include <dos.h> void main (void) { int u,r,i,abbrechen,fehler; char s,eing; abbrechen=0; while (abbrechen==0) { do { printf("\n\t\t***O h m s c h e G e s e t z***\n\n\n") ; printf("Welche Grâ€Ã¡e soll berechnet werden?\n"); printf("\n1 --> Spannung\n"); printf ("\n2 --> Strom\n"); printf ("\n3 --> Widerstand\n\n"); s = getch(); switch (s) { case '1': printf("\nGeben Sie bitte den Widerstand in Ohm ein: "); scanf("%i",&r); printf("\nGeben Sie bitte den Strom in Ampere ein: "); scanf("%i",&i); u=r*i; printf("Die Spannung betr„gt %i Volt.", u); break; case '2': printf("\nGeben Sie bitte die Spannung in Volt ein: "); scanf("%i",&u); printf("\nGeben Sie bitte den Widerstand in Ohm ein: "); scanf("%i",&r); i=u/r; printf("Der Strom betr„gt %i Ampere.", i); break; case '3': printf("\nGeben Sie bitte die Spannung in Volt ein: "); scanf("%i",&u); printf("\nGeben Sie bitte den Strom in Ampere ein: "); scanf("%i",&i); r=u/i; printf(" Der Widerstand betr„gt %i Ohm.", r); break; default: printf("Fehler! Bitte wiederholen Sie ihre Eingabe..."); break; } // switch } while (s!='1' && s!='2' && s!='3'); // do - while printf("\n\n\n\t***WÂnschen Sie einen Neustarts des Programms***\n\n"); printf("\t\t\t 1 = ja ; 0 = nein : "); eing = getch(); if (eing == '0') { printf("\n\n\n Bitte drÂcken Sie eine beliebige"); printf(" Taste um das Programm zu beenden"); abbrechen=1; getch(); } // if } // while } // main[/PHP]sichtbar sein! Bine Zitieren
Woodstock Geschrieben 14. Mai 2002 Geschrieben 14. Mai 2002 Das Semikolon ist da vollkommen richtig. Hinter dem while(blablabla) in einer 'do-while' Schleife muss ein Semikolon stehen. Und das es sich an dieser Stelle um eine 'do-while' Schleife handelt kann man aus dem vorher schon geposteten Code ersehen. Bine Zitieren
geloescht_saschabu Geschrieben 14. Mai 2002 Autor Geschrieben 14. Mai 2002 @ goos ja dass habe ich schon gewusst hatte auch damit keine probleme es ist eher mit dem : while (s!='1' && s!='2' && s!='3'); printf("\n\n\n\t***WÂnschen Sie einen Neustarts des Programms***\n\n"); printf("\t\t\t 1 = ja ; 0 = nein : "); eing = getch(); if (eing == '0') { printf("\n\n\n Bitte drÂcken Sie eine beliebige"); printf(" Taste um das Programm zu beenden"); abbrechen=1; getch(); } } dazu bräuchte ich noch eine kleine antwort, warum dass so funzt?? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.