Reicht mit while?

10 Antworten



hab das Programm sleb gemacht, geht so? ich versuche noch kürze zumachen. aber gibt es ander Möglichkeit das außer while( habe 3 mal while; denke ich zu viel) zu mahchen.

das programm rechnet nach Angaber der Benutzer, aslo beliebige Zhalen eingeben, und bleibige Zhalen ziehen.

Bild zum Beitrag

Bild zum Beitrag

 - (Computer, programmieren)  - (Computer, programmieren)

Um die Anzahl der Möglichkeiten beim Lotto "6 aus 49" per Programm auszugeben, braucht man weder eine WHILE-Schleife noch eine Berechnung, weil es nur eine Zahl als Ergebnis gibt: 13.983.816. Ein C-Programm dazu sieht z. B. einfach so aus:

#include <stdio.h>

main {
  printf("Es gibt 13.983.816 Möglichkeiten, ")
  printf("aus 49 Zahlen 6 Zahlen auszuwählen\n");
}

Soll dagegen die Anzahl der Möglichkeiten, k Zahlen aus n Zahlen auszuwählen, berechnet und ausgegeben werden, und soll der Benutzer k und n eingeben können, so gibt es n*(n-1)*...*(n-k+1)/(2*3*...*k) Möglichkeiten und das C-Programm dazu könnte so aussehen:

#include <stdio.h>

int main() {
  int k=0, n=0;
  printf("Wie viele Zahlen sollen ausgewählt werden?\n");
  printf("Bitte positive ganze Zahl eingeben: ");
  scanf("%d", &k);
  if(k<=0){
    printf("Fehler: Eingegebene Zahl war nicht positiv\n");
   return 0;
  }
  printf("Aus wie vielen Zahlen sollen %d", k);
  printf(" ausgewählt werden?\n");
  printf("Bitte positive ganze Zahl eingeben: ");
  scanf("%d", &n);
  if(n<=0){
   printf("Fehler: Eingegebene Zahl war nicht positiv\n");
   return 0;
  }
  // k aus n berechnen
  int i=0, res=1;
  while(i<k) {
    res=res*(n-i)/(i+1);
    ++i;
  }
  printf("Es gibt %d Möglichkeiten, ", res);
  printf("aus %d Zahlen %d Zahlen auszuwählen\n", n, k);
  return 0;
}
Woher ich das weiß:eigene Erfahrung – Berufserfahrung als SW-Ingenieur, IT-Verantw. in NGO
shore22 
Fragesteller
 14.08.2019, 11:34

hast du dein Reimund , dein Programm geprüft? fällt dir etwas auf? wenn ja bitte mir beschied sagen. ich lasse dich das heruaszu finden

0

hier sit das gesamt code, ich versuche zu kürzen, aber gern jemand besser zu machen;

#include <stdio.h>

#include <stdlib.h>

int main()

{

int lotto,zahl, i;

  double produktlotto, produktzahl, binominalkoffizient,differenz;

  i=1,lotto=0 ,zahl=0,produktlotto=1, produktzahl=1;

double produktdiffierenz;

printf("eine Zahl einegeben :");

  scanf("%d",&lotto);

  while(i<=lotto)

  {

   produktlotto=produktlotto*i;

    i=i+1;

  }

  printf("Lotto produnkt %.f \n",produktlotto);

printf("AnZahl der ausgewählten Zahlen eingben :");

  scanf("%d",&zahl);

  i=1;

while(i<=zahl)

  {

    produktzahl=produktzahl*i;

    i=i+1;

  }

   printf("Lotto produnkt %.f \n", produktzahl);

differenz =lotto-zahl;

printf("Differenz %.f \n", differenz);

  i=1;

   produktdiffierenz=1;

while(i<=differenz)

  {

    produktdiffierenz= produktdiffierenz*i;

    i=i+1;

  }

binominalkoffizient=produktlotto/(produktzahl*produktdiffierenz );

  printf("Die anzahl der Möglich´keiten %.f",binominalkoffizient);

return 0;

}

Du brauchst einen Zufallszahlengenerator und ein Array, in das du die gezogenen Zahlen füllst.

Der Pseudocode deiner Schleife lautet

Solange die Anzahl an Arrayelementen kleiner als 6 ist 
  Generiere eine Zufallszahl 1..49
  Zufallszahl noch nicht im Array?
    Ja: Füge die Zufallszahl dem Array hinzu
Woher ich das weiß:Berufserfahrung – Programmierer
shore22 
Fragesteller
 12.08.2019, 15:05

ich habe noch kein array , geht monmentan uach mit while oder schlecht?ich möchte immer kuzre Programme machn, sie sehen viel besser aus

0
Suboptimierer  12.08.2019, 15:13
@shore22

Solange = while

Ich finde, mein Programmentwurf ist schon ziemlich kurz.

0
Suboptimierer  12.08.2019, 15:20
@shore22

Dann brauchst du fünf while schleifen, bei denen du immer wieder eine Zufallszahl ziehst, wenn die zuvor gezogene bereits gezogen wurde.

Du kannst auch die Zufallszahlen in eine Zeichenkette schreiben, z. B. so:

;5;18;9;36;

Dann suchst du mit einer Zeichenkettenfunktion in der Zeichenkette nach deiner Zahl ";<deine Zahl>;", um festzustellen, ob du die Zahl bereits gezogen hast.

0
shore22 
Fragesteller
 12.08.2019, 15:21
@Suboptimierer

hast du mein code geshen? ich habe es gesichkt um jemand zu modifiziern und kürzer machen, geht das?also mein code bearbeiten und kürze machen.

0
shore22 
Fragesteller
 12.08.2019, 15:24
@Suboptimierer

ic habe einmal den code als Bild und einmal als code. das heisst du kannst den code gucken und verarbeiten

0
shore22 
Fragesteller
 12.08.2019, 15:06

versehe dein code nicht

0

Es ist völlig egal, wie du das verwirklichst.

Hauptsache es ist :

  • übersichtlich
  • effektiv und schnell
  • macht fehlerfrei genau das was es soll
  • hat Fehlerbehandlungen, falls der Anwender was unsinniges eingibt

usw.

ZaoDaDong  12.08.2019, 13:58

*wenn der Anwender was unsinniges eingibt

es ist nur eine Frage der Zeit ;)

2
Isendrak  12.08.2019, 22:52
@ZaoDaDong

*sobald

Eine Frage der Zeit, ja. Aber zusätzlich auch noch eher früher denn später. ^^

0