Zum Inhalt springen

IltisvdT

Mitglieder
  • Gesamte Inhalte

    41
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von IltisvdT

  1. Die schleife mit dem getchar ist gut. Das hast du mir ja schonmal geraten. Das werd ich auf jeden Flal nun ncihtmehr fragen. Habe jetzt grade nochmal ne 3/4 Stunde mich über Pointer informiert. Jetzt weiß ich was die machen. Aber dann versteh ich die Aufgabe nicht zum einen und verstehe nicht, wo die Sinn machen würden. Und malloc hatten wir noch nicht. Du sagst, ich brauche dafür ein Array oder eine Liste. So, dass dann jeder Mitgliedseintrag ein Eintrag in einer Liste ist, oder wie kann ich mir das vorstellen?
  2. es hat sich noch nciht viel verändert, aber es sieht mittlerweile so aus: #include <stdio.h> struct { char Vorname[40]; char Nachname[40]; char Nummer[40]; char Telefon[40]; }mitglied; void ausgabe() { printf("%s",mitglied.Vorname); printf("%s",mitglied.Nachname); printf("%s",mitglied.Nummer); printf("%s",mitglied.Telefon); } void eingabe() { printf("Geben Sie den Vornamen ein\n"); fgets(mitglied.Vorname, 40, stdin); printf("Geben Sie den Nachnamen ein\n"); fgets(mitglied.Nachname, 40, stdin); printf("Geben Sie die Mitgliedsnummer ein\n"); fgets(mitglied.Nummer,40,stdin); printf("Geben Sie die Telefonnummer ein\n"); fgets(mitglied.Telefon,40,stdin); } int main() { int a; while(a!=0) { printf("Willkommen im Mitgliedsverzeichnis\n"); printf(":----------------------------------------\n"); printf("Aus Gruenden des Datenschutzes werden\n"); printf("keine Eintraege dauerhaft gespeichert.\n"); printf(":----------------------------------------\n\n"); printf("1. Ausgabe eines vorhandenen Eintrages\n"); printf("2. Anlegen eines neuen Eintrages\n"); printf("0. Beenden\n"); printf("Eingabe:"); scanf("%d",&a); switch(a) { case 0: { return(0); break; } case 1: { ausgabe(); break; } case 2: { eingabe(); break; } } } } Leider habe ich keine Idee, wie ich diesen Zeilenumbruch vom scanf wegkriegen soll. Habe schon einiges durchprobiert, aber da diese Auswahl mit 1,2 und 0 vorgegeben ist, schränkt das für mich das ziemlich ein. Zu den Pointern. Es kann vllt sein, dass ich noch nciht so ganz gerafft habe, wozu die gut sind. Aber ich habe mich auch schon gefragt, wie ich denn bei meinem Programm mehrere Einträge speichern soll, und das geht wahrscheinlich damit, richtig? Könnte das jemand vllt in kurze Worte fassen? Habe Wikipedia und so gelesne, aber das is mir etwas zu abstrakt. Es fällt mir sicher leichter zu verstehen, wenn ich das auf (m)ein Beispiel bezogen erklärt kriege. Vielen Dank schonmal
  3. Hi, wir haben die Aufgabe gekriegt ein Programm zu schreiben, das der Mitgliedsverwaltung dient. In der Aufgabe steht: Es sollen immer nu Pointer auf den jeweiligen Eintrag übergeben werden. Wir haben bisher das: #include <stdio.h> struct { char Vorname[40]; char Nachname[40]; int Nummer; int Telefon; }mitglied; void ausgabe() { printf("%s",mitglied.Vorname); } void eingabe() { printf("Geben Sie den Vornamen ein"); gets(mitglied.Vorname); } int main() { int a; while(a!=0) { printf("Willkommen im Mitgliedsverzeichnis\n"); printf(":----------------------------------------\n"); printf("Aus Gruenden des Datenschutzes werden\n"); printf("keine Eintraege dauerhaft gespeichert.\n"); printf(":----------------------------------------\n\n"); printf("1. Ausgabe eines vorhandenen Eintrages\n"); printf("2. Anlegen eines neuen Eintrages\n"); printf("0. Beenden\n"); printf("Eingabe:"); scanf("%d",&a); switch(a) { case 0: { return(0); break; } case 1: { ausgabe(); break; } case 2: { eingabe(); break; } } } } Wir haben erstmal das nur mit Vorname gemacht um die Funktionsweise zu probieren. Und natürlich geht es nciht. Wenn man die 2 wählt, um einen Eintrag zu erstellen schreibt er zwar, dass man den Vornamen eingeben soll, printet dann aber sofort wieder das "Hauptmenü". Scheinbar klappt die Eingabe schon und das ausgeben lassen, er macht nur zu oft dieses Menü. Zweites Problem: Wo soll man da denn Zeiger einbauen? Vielen vielen Dank schonmal
  4. Hallo hallo, ich möchte ein Programm schreiben, dass ein Spielfeld printet, dann soll man sagen in welche Richtung man will und dann soll der einen dahinbewegen bis man an einem ziel ist. Das ganze Ding sieht so aus: #include <stdio.h> // Aktuelle Position der Spielfigur short spielfigur_x = 1; short spielfigur_y = 4; // Definition des Spielfelds short spielfeld[10][10] = { {1,1,1,1,1,1,1,1,1,1}, {1,0,0,1,0,0,0,1,0,1}, {1,1,0,0,0,1,0,1,0,1}, {1,0,0,0,1,1,0,0,0,1}, {1,1,1,0,1,1,1,1,1,1}, {1,1,1,0,1,0,0,0,0,1}, {1,0,0,0,1,1,0,1,0,1}, {1,0,1,0,0,0,0,1,0,1}, {1,0,0,0,1,1,1,1,2,1}, {1,1,1,1,1,1,1,1,1,1} }; int m,n,b,x,y,e; char eingabe; void ausgabe() { for(m=0;m<10;m++) { for(n=0;n<10;n++) { b=spielfeld[m][n]; if(m==y && n==x) printf("X"); else switch( { case 0: { printf(" "); break; } case 1: { printf("#"); break; } case 2: { printf("O"); break; } } } printf("\n"); } } int tastatur() { printf("In welche Richtung moechten sie gehen?"); scanf("%c",&eingabe); switch(eingabe) { case 'w': { y=y-1; break; } case 's': { y=y+1; break; } case 'a': { x=x-1; break; } case 'd': { x=x+1; break; } case 'q': { printf("3"); x=8; y=8; return(0); break; } } switch(spielfeld[y][x]) { case 0: { printf("1\n"); break; } case 1: { printf("0\n"); switch(eingabe) { case'w': { y=y+1; break; } case's': { y=y-1; break; } case'a': { x=x+1; break; } case'd': { x=x-1; break; } } break; } } } int main(int argc, char **argv ) { x=1; y=4; while((x!=8) || (y!=8)) { ausgabe(); tastatur(); printf("\nx=%d y=%d",x,y); printf("\n\n\n\n\n"); } } [/code]Das Problem ist nun folgendes: Er printet das Feld, macht die Abfrage, dann gibt man was ein und er ändert auch die Position usw richtig. Das einzige Problem ist, dass er die while-Schleife in der main-Funktion nochmal durchgeht, aber keine Abfrage macht und dann nochmal durchgeht und dann die Abfrage funktioniert. Er macht also einen Durchlauf zu viel. ich hoffe ihr versteht, was ich meine. Vielen Dank schonmal
  5. IltisvdT

    String Kette

    Weiß zwar nicht ob meine jetzige Lösung deinem Tipp entspricht, aber habe es mit strcat gelöst und funktioniert wie es soll. Danke
  6. IltisvdT

    String Kette

    Das Problem ist, dass ich keine Idee habe, wie man den Text bzw. Teile des Textes per Befehl kopiert.. Und die Aufgabenstellung lautet etwas anders, allerdings habe ich diese ja auch nicht gepostet gehabt:D Wir sollen einen Text mit dem Vignere-Quadrat verschlüsseln bzw. einen Code entschlüsseln. Dies funktioniert soweit auch, nur ist in dem gegebenen Beispiel, dass Passwort nicht solang wie der Text, weshalb die Kodierung nur bis zum 8. Zeichen klappt. Und da tritt dann das beschriebene Problem auf..
  7. Vielen Dank. Es funktioniert nun alles. close
  8. IltisvdT

    String Kette

    Hallo, ich habe folgendes Problem. Ich lese einen Text als String ein. Zum Beispiel mit 5 Zeichen. Nun soll der aber diesen string immer wieder hintereinander machen mit soviel stellen wie ich ihm sage. Als Beispiel: Text: Programm (hat 8 Stellen) Ich möchte jetzt beispielsweise, dass der bis auf 12 Stellen das immer hintereinanderweg schreibt: Also bei 12 Stellen soll der string dann so aussehen: ProgrammProg Ich hoff ihr versteht was ich meine. Danke schonmal
  9. Ok, also das mit dem hin und her wechseln sollte ich hinbekommen haben(denk ich). d habe ich zusetzlich eingefügt, weil b ja sonst in der Fakultätsberechnung verändert werden würde und das sollte ja nicht so sein. Habe die Wurzelfunktion eingefügt, damit überprüft wird, ob der Betrag kleiner als "1" bzw. "genau" ist, wodurch negative Werte für b und glied ja kein Problem mehr bei der Überprüfung sein sollten.. Jetzt habe ich nur das Problem, dass die Fakultät gar nicht mehr berechnet wird, finde allerdings den Fehler nicht:/ #include <stdio.h> #include <math.h> int main(){ int a, c; float x, fak, b, d, genau, glied, erg, n, test, test1; printf("Fuer Sin(x) druecke 1, fuer Cos(x) druecke 2 und fuer e^x 3\n"); scanf("%d", &a); printf("Bitte x-Wert eingeben!\n"); scanf("%f", &x); printf("Bitte geben Sie die Genauigkeitsschranke ein!\n"); scanf("%f", &genau); switch(a) case 1: b=3; erg=x; glied=x; for(c=1; test>genau; b+=2, c=-c) { b=b*c; fak=b; d=b; for(; test1!=1; d--) { fak=fak*(d-1); test1=sqrt(d*d); } printf("%f\n", fak); glied=pow(x, b)/fak; erg=erg+glied; test=sqrt(glied*glied); } printf("%f\n", erg); return(0); }
  10. IltisvdT

    Primzahlen

    Ich hab es nun hinbekommen, dass nur Primzahlen ausgespuckt werden:) Vielen Dank für die Tipps! Der Vollständigkeit halber hier einfach noch der Code: #include <stdio.h> int main () { int zahla, zahlb, a, b, prim; printf("Untere Grenze?:"); scanf("%d",&zahla); printf("Obere Grenze?:"); scanf("%d",&zahlb); for(; zahla<zahlb; zahla++) { prim=0; for(a=2;a<=(zahla-1);a++) { b=zahla%a; if(b==0) prim=1; } if(prim==0) printf("%d\n", zahla); } return(0); } Geht sicherlich eleganter aber wir sind zufrieden solange es funktioniert;)
  11. So haben nun nochmal etwas verändert. Zum Einen sollte jetzt abwechselnd addiert und subtrahiert werden und zum Anderen haben wir das b+2 geändert. Das Ergebnis ist allerdings immernoch falsch. Die Fakultät scheint er richtig zurechnen, aber dann weiter stimmt es nicht. Tipps? #include <stdio.h> #include <math.h> int main(){ int a; float x, fak, b, genau, glied, erg, n; printf("Fuer Sin(x) druecke 1, fuer Cos(x) druecke 2 und fuer e^x 3\n"); scanf("%d", &a); printf("Bitte x-Wert eingeben!\n"); scanf("%f", &x); printf("Bitte geben Sie die Genauigkeitsschranke ein!\n"); scanf("%f", &genau); switch(a) case 1: b=3; erg=x; glied=x; for(erg=x; glied>genau; b+=2, b=0- { fak=b; for(b!=0; b>1; b--) { fak=fak*(b-1); } printf("%f\n", fak); glied=pow(x, b)/fak; erg=erg+glied; } printf("%f\n", erg); return(0); }[/code]
  12. IltisvdT

    Primzahlen

    Hoffe mal, dass die Tabs nun richtig angezeigt werden und der Code ansprechend angezeigt wird. Also wir haben nun eure Tipps soweit wie es geht umgesetzt. Das Programm funktioniert auch, allerdings zeigt er noch alle Zahlen an, die nicht den Rest 0 haben.. ich habe im Moment nur leider keine Idee wie man dies ändern könnte(auch das Sieb des Erasthotener hilft mir nicht viel weiter). Hättet ihr diesbezüglich vielleicht noch einen Tipp? Hier der Code: #include <stdio.h> int main () { int zahla, zahlb, a, b; printf("Untere Grenze?:"); scanf("%d",&zahla); printf("Obere Grenze?:"); scanf("%d",&zahlb); for(; zahla<zahlb; zahla++) { for(a=2;a<=(zahla-1);a++) { b=zahla%a; switch( { case 0: break; default: { printf("%d\n", zahla); break; } } } } return(0); }[/code]
  13. IltisvdT

    Primzahlen

    Könnte man es also vielleicht so machen, das man das Produkt aller Reste nimmt? Wenn das ungleich 0 ist, müsste es ja ein Primzahl sein, oder? Dann müsste ichs mit float machen, richtig? oder geht das insgesamt noch einfacher?
  14. IltisvdT

    Primzahlen

    Entschuldigt bitte die schlechte Darstellung. Ich habe das ausm Editor kopiert, da sahs gut aus(also mit tabs usw) und dann hab ich auf Beitrag erstellen geklickt und dann sah es so aus. Nächstes mal werde ich darauf achten. @Korhil: Wie du sagst soll ja einfach nur die for-Schleife losgehen. Was liegt da näher als ein bedingung zu nehmen, die immer erfüllt is? Und das ist diese ja, dadurch, dass die untere Grenze idR immer kliener ist als die obere. natürlich gibt es schönere Möglichkeiten, aber hauptsache es funktioniert?
  15. Hallo, wir sollen folgendes machen: Es gilt Sin(x)=x-(x^3/3!)+(x^5/5!)... wir sollen ein Programm erstellen, dass einen x Wert ausliest und die Berechnung abbricht, wenn das nächste Glied kleiner als eine einzulesende Genauigkeitsschranke ist. Das Programm soll eigentlich auch Cos(x) und e^x berechnen, hängen aber schon bei sin(x)... Dies ist bisher unser Programm: #include <stdio.h> #include <math.h> int main(){ int a; float x, fak, b, genau, glied, erg, n; printf("Fuer Sin(x) druecke 1, fuer Cos(x) druecke 2 und fuer e^x 3\n"); scanf("%d", &a); printf("Bitte x-Wert eingeben!\n"); scanf("%f", &x); printf("Bitte geben Sie die Genauigkeitsschranke ein!\n"); scanf("%f", &genau); switch(a) case 1: b=3; erg=x; glied=x; for(erg=x; glied>genau; b+2) { fak=b; for(b!=0; b>1; b--) { fak=fak*(b-1); } printf("%f\n", fak); glied=pow(x, b)/fak; erg=erg+glied; } printf("%f\n", erg); return(0); } Die erste for-Schleife scheint nicht richtig zu laufen.. irgendwelche Tipps?
  16. IltisvdT

    Primzahlen

    Hallo, ich soll ein Programm schreiben, dass die Primzahlen zwischen zwei Grenzen ausgibt. Ich habe folgenden Code: #include <stdio.h> int main (){ int zahla, zahlb, hilfa, hilfb, a=2,b; printf("Untere Grenze?:"); scanf("%d",&zahla); printf("Obere Grenze?:"); scanf("%d",&zahlb); hilfa=zahla; hilfb=zahlb; for(hilfa<hilfb;hilfa<hilfb;hilfa++){ for(a=2;a<=(hilfa-1);a++){ b=hilfa%a; switch({ case 0: break; default: { printf("%d\n",hilfa); break;} }} a=2;} return(0); } Die hilfa und hilfb hab ich eingebaut, weil ich dachte, ich bräuchte die Grenzen vielleicht nochmal. Er kompiliert das Programm auch, stürzt dann aber ab ohne eine einzige Zahl zu berechnen. Schreiben müssen wir in C. Vielen Dank schoneinmal

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...