Spieler Abfrage
-
C ist nichts für Anfänger, obwohl das vielfach behauptet wird.
-
C ist eine einfache Sprache.
Das macht sie aber nicht leicht lernbar.Informierr dich mal, in welcher Sprache (und Toolkits) deine Favoritenspiele programmiert sind.
-
Nach langem grübeln und rumzicken habe ich es endlich Geschafft!
DirkB Ich danke dir tausendfach!
Ich weiß nicht wirklich warum ich das jetzt mache aber du bist für mich irgendwie so wie ein Mentor.
Darum will ich dir jetzt das End-Produkt präsentieren:
aber zu erst will ich dir zeigen was ich so alles damit angestellt habe xD und jup ich weiß, dass ich mir gerade keine freund machen mit dem post aber ich will damit nur sagen ich bin lern willig.void spielerabfrage(int anzahl) { char spieler1[15], spieler2[15], spieler3[15], spieler4[15], spieler5[15], spieler6[15], spieler7[15], spieler8[15]; switch(anzahl) { case 1: printf("Bitte gibt den Namen des 1. Spielers ein: "); scanf("%s", spieler1); break; case 2: printf("Bitte gibt den Namen des 1. Spielers ein: "); scanf("%s", spieler1); printf("Bitte gibt den Namen des 2. Spielers ein: "); scanf("%s", spieler2); break; case 3: printf("Bitte gibt den Namen des 1. Spielers ein: "); scanf("%s", spieler1); printf("Bitte gibt den Namen des 2. Spielers ein: "); scanf("%s", spieler2); printf("Bitte gibt den Namen des 3. Spielers ein: "); scanf("%s", spieler3); break; case 4: printf("Bitte gibt den Namen des 1. Spielers ein: "); scanf("%s", spieler1); printf("Bitte gibt den Namen des 2. Spielers ein: "); scanf("%s", spieler2); printf("Bitte gibt den Namen des 3. Spielers ein: "); scanf("%s", spieler3); printf("Bitte gibt den Namen des 4. Spielers ein: "); scanf("%s", spieler4); break; case 5: printf("Bitte gibt den Namen des 1. Spielers ein: "); scanf("%s", spieler1); printf("Bitte gibt den Namen des 2. Spielers ein: "); scanf("%s", spieler2); printf("Bitte gibt den Namen des 3. Spielers ein: "); scanf("%s", spieler3); printf("Bitte gibt den Namen des 4. Spielers ein: "); scanf("%s", spieler4); printf("Bitte gibt den Namen des 5. Spielers ein: "); scanf("%s", spieler5); break; case 6: printf("Bitte gibt den Namen des 1. Spielers ein: "); scanf("%s", spieler1); printf("Bitte gibt den Namen des 2. Spielers ein: "); scanf("%s", spieler2); printf("Bitte gibt den Namen des 3. Spielers ein: "); scanf("%s", spieler3); printf("Bitte gibt den Namen des 4. Spielers ein: "); scanf("%s", spieler4); printf("Bitte gibt den Namen des 5. Spielers ein: "); scanf("%s", spieler5); printf("Bitte gibt den Namen des 6. Spielers ein: "); scanf("%s", spieler6); break; case 7: printf("Bitte gibt den Namen des 1. Spielers ein: "); scanf("%s", spieler1); printf("Bitte gibt den Namen des 2. Spielers ein: "); scanf("%s", spieler2); printf("Bitte gibt den Namen des 3. Spielers ein: "); scanf("%s", spieler3); printf("Bitte gibt den Namen des 4. Spielers ein: "); scanf("%s", spieler4); printf("Bitte gibt den Namen des 5. Spielers ein: "); scanf("%s", spieler5); printf("Bitte gibt den Namen des 6. Spielers ein: "); scanf("%s", spieler6); printf("Bitte gibt den Namen des 7. Spielers ein: "); scanf("%s", spieler7); break; case 8: printf("Bitte gibt den Namen des 1. Spielers ein: "); scanf("%s", spieler1); printf("Bitte gibt den Namen des 2. Spielers ein: "); scanf("%s", spieler2); printf("Bitte gibt den Namen des 3. Spielers ein: "); scanf("%s", spieler3); printf("Bitte gibt den Namen des 4. Spielers ein: "); scanf("%s", spieler4); printf("Bitte gibt den Namen des 5. Spielers ein: "); scanf("%s", spieler5); printf("Bitte gibt den Namen des 6. Spielers ein: "); scanf("%s", spieler6); printf("Bitte gibt den Namen des 7. Spielers ein: "); scanf("%s", spieler7); printf("Bitte gibt den Namen des 8. Spielers ein: "); scanf("%s", spieler8); break; default: printf("Es sind zu viele Spieler\n"); } switch(anzahl) { case 8: printf("Der 1 Spieler heisst %s\n", spieler1); printf("Der 2 Spieler heisst %s\n", spieler1); printf("Der 3 Spieler heisst %s\n", spieler1); printf("Der 4 Spieler heisst %s\n", spieler1); printf("Der 5 Spieler heisst %s\n", spieler1); printf("Der 6 Spieler heisst %s\n", spieler1); printf("Der 7 Spieler heisst %s\n", spieler1); printf("Der 8 Spieler heisst %s\n", spieler1); break; case 7: printf("Der 1 Spieler heisst %s\n", spieler1); printf("Der 2 Spieler heisst %s\n", spieler1); printf("Der 3 Spieler heisst %s\n", spieler1); printf("Der 4 Spieler heisst %s\n", spieler1); printf("Der 5 Spieler heisst %s\n", spieler1); printf("Der 6 Spieler heisst %s\n", spieler1); printf("Der 7 Spieler heisst %s\n", spieler1); break; case 6: printf("Der 1 Spieler heisst %s\n", spieler1); printf("Der 2 Spieler heisst %s\n", spieler1); printf("Der 3 Spieler heisst %s\n", spieler1); printf("Der 4 Spieler heisst %s\n", spieler1); printf("Der 5 Spieler heisst %s\n", spieler1); printf("Der 6 Spieler heisst %s\n", spieler1); break; case 5: printf("Der 1 Spieler heisst %s\n", spieler1); printf("Der 2 Spieler heisst %s\n", spieler1); printf("Der 3 Spieler heisst %s\n", spieler1); printf("Der 4 Spieler heisst %s\n", spieler1); printf("Der 5 Spieler heisst %s\n", spieler1); break; case 4: printf("Der 1 Spieler heisst %s\n", spieler1); printf("Der 2 Spieler heisst %s\n", spieler1); printf("Der 3 Spieler heisst %s\n", spieler1); printf("Der 4 Spieler heisst %s\n", spieler1); break; case 3: printf("Der 1 Spieler heisst %s\n", spieler1); printf("Der 2 Spieler heisst %s\n", spieler1); printf("Der 3 Spieler heisst %s\n", spieler1); break; case 2: printf("Der 1 Spieler heisst %s\n", spieler1); printf("Der 2 Spieler heisst %s\n", spieler1); break; case 1: printf("Der 1 Spieler heisst %s\n", spieler1); break; } }
Tja kacken kilometer text für so einen scheiß (verzeiht den Kraftausdruck aber is wahr eh) hab dann noch lange rum experimentiert und habe das rausbekommen war so deutlich besser ist oder?^^
int i, j, anzahl=3; char spieler[8][15], temp; for(i=0;i<anzahl;i++) { for(j=0;j<1;j++) { printf("Bitte gib einen Namen ein: "); scanf("%s", &spieler[i][j]); } printf("\n"); } for(i=0;i<anzahl;i++) { printf("Der %d Spieler heisst %s", i+1, spieler[i]); printf("\n"); }
manchmal sind die einfachsten dinge die Schwersten.
Ich bin jedenfals stolz auf mich, dass ich das alleine hinbekommen habe!
-
Was soll denn bitte diese for(j=0;... Schleife bei der Eingabe?
Welchen Wert hat da denn j? Genua 0.
Dann reicht ein j=0; aus.
Am Besten noch ohne Variable, schreib statt j gleich 0.printf("Bitte gib den Namen fuer Spieler %d ein: ", i); scanf("%14s", &spieler[i][0]);
Statt
&spieler[i][0]
kannst du auch nurspieler[i]
(ohne &) schreiben.
-
case 8: printf("Bitte gibt den Namen des 1. Spielers ein: "); scanf("%s", spieler1); printf("Bitte gibt den Namen des 2. Spielers ein: "); scanf("%s", spieler2); printf("Bitte gibt den Namen des 3. Spielers ein: "); scanf("%s", spieler3); printf("Bitte gibt den Namen des 4. Spielers ein: "); scanf("%s", spieler4); printf("Bitte gibt den Namen des 5. Spielers ein: "); scanf("%s", spieler5); printf("Bitte gibt den Namen des 6. Spielers ein: "); scanf("%s", spieler6); printf("Bitte gibt den Namen des 7. Spielers ein: "); scanf("%s", spieler7); printf("Bitte gibt den Namen des 8. Spielers ein: "); scanf("%s", spieler8); break;
Wie wärs stattdessen mit:
printf("Bitte gibt den Namen des %d. Spielers ein: ", anzahl); scanf("%s", spieler[anzahl-1]);
spieler ist in dem Fall ein zwei-Dimensionales Array.
Spart ein klein wenig Codeswitch(anzahl) { case 8: printf("Der 1 Spieler heisst %s\n", spieler1); printf("Der 2 Spieler heisst %s\n", spieler1); printf("Der 3 Spieler heisst %s\n", spieler1); printf("Der 4 Spieler heisst %s\n", spieler1); printf("Der 5 Spieler heisst %s\n", spieler1); printf("Der 6 Spieler heisst %s\n", spieler1); printf("Der 7 Spieler heisst %s\n", spieler1); printf("Der 8 Spieler heisst %s\n", spieler1); break;
Das hier geht auch viel einfacher:
for (i=1; i<=anzahl; i++) printf("Der %d Spieler heißt %s\n", i, spieler[i-1]);
Oder ist es Absicht, dass du 8 mal Spieler 1 ausgibst?
-
So in etwa wollte ich auch antworten.
Ich habe aber bis zum Ende gelesen, wo der Autor voller Stolz selber geschrieben hat, dass er auf deine Lösung gekommen ist.
-
DirkB schrieb:
So in etwa wollte ich auch antworten.
Ich habe aber bis zum Ende gelesen, wo der Autor voller Stolz selber geschrieben hat, dass er auf deine Lösung gekommen ist.Ah sorry, ich hätte mir wohl den Text durchlesen sollen
-
DirkB schrieb:
Was soll denn bitte diese for(j=0;... Schleife bei der Eingabe?
Welchen Wert hat da denn j? Genua 0.
Dann reicht ein j=0; aus.
Am Besten noch ohne Variable, schreib statt j gleich 0.printf("Bitte gib den Namen fuer Spieler %d ein: ", i); scanf("%14s", &spieler[i][0]);
Statt
&spieler[i][0]
kannst du auch nurspieler[i]
(ohne &) schreiben.Coole idee aber leider funktioniert das bei mir nicht
wenn ich es so mache dann gebe ich die namen ganz normal ein und nehmen wir an wir haben 3 spieler die heißen Josef Hans und Maier.
dann gibt er mir den letzten spieler aus also Maier und aus hans und josef wird ein zufälliger wert aber nicht mehr der name.muss ich also dennoch mit der for schleife machen oder wie?
-
for(i=0;i<anzahl;i++) { printf("Bitte gib den Namen fuer Spieler %d ein: ", i); scanf("%14s", spieler[i]); printf("\n"); } for(i=0;i<anzahl;i++) { printf("Der %d Spieler heisst %s\n", i+1, spieler[i]); }
Das funktioniert nicht?
-
DirkB schrieb:
for(i=0;i<anzahl;i++) { printf("Bitte gib den Namen fuer Spieler %d ein: ", i); scanf("%14s", spieler[i]); printf("\n"); } for(i=0;i<anzahl;i++) { printf("Der %d Spieler heisst %s\n", i+1, spieler[i]); }
Das funktioniert nicht?
Doch jetzt schon via copy paste aber dann weiß ich nicht was ich falsch hatte denn bei mir funtionierte es nicht.
-
@Azumi: du bist so mächtig auf den Holzweg. Du verstehst nach wie vor nicht, was Arrays sind, wie man mit ihnen umgeht, und vor allem, was ein String ist und wie es in C dargestellt wird.
Ohne dieses Wissen sind all deine Versuche zum Scheitern verurteilt, hin und wieder mag etwas "funktionieren" (sieht nur dank Zufalls so aus, als ob) aber du weißt immer noch nicht warum.
Lerne erstmal die Grundlagen von C, vor allem wie man mit Arrays umgeht. Dann wirst du sehen, dass dein Program sehr leicht zu programmieren ist.
-
supertux schrieb:
@Azumi: du bist so mächtig auf den Holzweg. Du verstehst nach wie vor nicht, was Arrays sind, wie man mit ihnen umgeht, und vor allem, was ein String ist und wie es in C dargestellt wird.
Ohne dieses Wissen sind all deine Versuche zum Scheitern verurteilt, hin und wieder mag etwas "funktionieren" (sieht nur dank Zufalls so aus, als ob) aber du weißt immer noch nicht warum.
Lerne erstmal die Grundlagen von C, vor allem wie man mit Arrays umgeht. Dann wirst du sehen, dass dein Program sehr leicht zu programmieren ist.
Danke weiß ich aber leider schon mittlerweile. ich habe dies nur fertig machen müssen.
und mittlerweile habe ich mir schon das buch http://www.thalia.at/shop/programmiersprachen-2531/rubrikartikel/c_programmieren_von_anfang_an/helmut_erlenkoetter/EAN9783499600746/ID2945863.html;jsessionid=BC4FACA8838FFEAC1EEC421F3BB1386C.tc4p
bestellt und werde dies jetzt mal so versuchen zu lernen.
aber danke