Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zufallszahlen - Zahlenlotto in C

Frage Entwicklung C und C++

Mitglied: Butterblume

Butterblume (Level 1) - Jetzt verbinden

08.06.2007, aktualisiert 14:04 Uhr, 10846 Aufrufe, 2 Kommentare

9.Juni 2007 00:30

Ich habe jetzt das Programm fertig:
01.
//Programm wurde von Kristina Stepanova erstellt// 
02.
//Zahlenlotto, 6 Zufallszahlen werden ausgegeben// 
03.
 
04.
#include <stdio.h> 
05.
#include <math.h> 
06.
#include <time.h> 
07.
#include <stdlib.h> 
08.
 
09.
void zufallszahl(int max); 
10.
 
11.
int main(void) 
12.
{	int n; 
13.
	printf ("Modul 118: Zahlenlotto\n"); 
14.
	printf ("______________________\n\n"); 
15.
    printf("Bitte Maximum groesser als 6 eingeben: "); 
16.
	scanf("%d", &n); 
17.
 
18.
	printf("\nEingabe: %d\n", n); 
19.
        if (n <= 6) { 
20.
   	         printf("\nEingabe zu klein.\n"); 
21.
  	 	system("pause"); 
22.
                return 3; 
23.
24.
	zufallszahl(n); 
25.
        system("pause"); 
26.
	return 0; 
27.
}  
28.
 
29.
void zufallszahl(int max) 
30.
31.
	int i, zufall, j, found; 
32.
	int resultat[6], geworfen[6]; 
33.
		 
34.
	for (i = 0; i < 6; i++) 
35.
		resultat[i] = 0; 
36.
	for (i = 0; i < 6; i++) 
37.
38.
		srand(time(NULL) + i); 
39.
		geworfen[i] = zufall = rand() % max+1; 
40.
		for(j = 0, found = 0; j < 6; j++) 
41.
42.
			if (zufall == geworfen[j]) 
43.
				found++; 
44.
45.
		if (found > 1) 
46.
			i--; 
47.
		else 
48.
			resultat[i] = zufall; 
49.
50.
		 
51.
	printf("\nZufallszahlen:\n\n"); 
52.
	for (i = 0; i < 6; i++)  
53.
		printf("%d ", resultat[i]); 
54.
	printf("\n\n"); 
55.
}
Es läuft auch, alles supää...ich habe noch Struktogramm (ich weiss man sollte es vorher und nicht nachher machen) zu diesem Programm geschrieben und bin mir bei einigen Sachen nicht ganz sicher (vorallem wegen der Funktion).
Ich habe 2 Struktogrämme gemacht, weiss eben nicht, ob man in einem das machen kann. Würde mich sehr freuen, wenn mir jemand helfen könnte.

Liebe Grüsse, Kristina

main:
53694aeda4162f59a9425f02ad2e7852-main - Klicke auf das Bild, um es zu vergrößern

zufallszahl:
154039ea0adc1fbca6ed539900f5abc6-zufallszahl - Klicke auf das Bild, um es zu vergrößern
....................................................................................................................................................




Hallo Miteinander, ich möchte ein Programm schreiben, in dem man die höchste Zahl selber eingeben kann und 6 Zufallszahlen sollen dabei ausgegeben. Die vorgeschlagene Zahl sollte nicht zweites mal vorkommen.
Dies sollte ich mit einer Funktion machen.

Name der Funktion: Zufallszahl
Eingabe: n /*höchste zu "würfelnde Zahl*/
Ausgabe Resultat /*Array für 6 Zahlen*/

Die Zufallszahl sollte mit:

srand(time(0));
z=rand();

erzeugt werden.

Ich habe nicht wirklich eine Ahnung, wie ich das genau programmieren soll. Ich habe aber einfach ein Programm wie eine Skizze geschrieben, das nicht läuft.
Ich hoffe sehr, dass mir jemand helfen könnte.

Liebe Grüsse, Kristina

01.
#include <stdio.h> 
02.
#include <stdlib.h> 
03.
#include <math.h> 
04.
 
05.
int n; Resultat [7]; 
06.
 
07.
int main() { 
08.
 
09.
printf ("\nModul 118: Zahlenlotto"); 
10.
printf ("\n\nBitte hoechste zu wuerfelnde Zahl n eingeben: "); 
11.
scanf ("%i", &n); 
12.
printf ("\n\nEingegeben: %i", n); 
13.
Zahlenlotto(&Resultat); 
14.
printf ("6 Zufallszahlen: %u", Resultat); 
15.
 
16.
system ("PAUSE"); 
17.
return 0; 
18.
 
19.
20.
 
21.
int Zufahlszahl(int n, int Resultat) { 
22.
     
23.
    srand((unsigned)time(0));  
24.
                              for (int x=1, x<=6; x++) { 
25.
                                      int z=rand()%n;   
26.
                                      printf ("%u", z); 
27.
28.
29.
 
EDIT

01.
#include <stdio.h> 
02.
#include <stdlib.h> 
03.
#include <math.h> 
04.
 
05.
int main() { 
06.
 
07.
int n, zufallszahl; 
08.
int resultat[6]; 
09.
 
10.
 
11.
printf ("\nModul 118: Zahlenlotto"); 
12.
printf ("\n\nBitte hoechste zu wuerfelnde Zahl n eingeben: "); 
13.
scanf ("%i", &n); 
14.
 
15.
zufallszahl(resultat); 
16.
resultat[x]=z; 
17.
 
18.
printf ("6 Zufallszahlen: %u", resultat); 
19.
 
20.
system ("PAUSE"); 
21.
return 0; 
22.
 
23.
24.
 
25.
void zufallszahl(int* n, int* resultat) { 
26.
     
27.
    srand((unsigned)time(0));  
28.
                              do { 
29.
                                 int z=rand()*n;   
30.
                                 printf ("%u", z); 
31.
32.
                              while (x<6); 
33.
}
Mitglied: filippg
08.06.2007 um 12:21 Uhr
Hallo,

nur so ein paar Anmerkungen dazu:

1. Resultat[7] scheint mir für 6 Zahlen zuviel zu sein...
2. in deiner Methode/Funktion Zufallszahl: die soll einen int returnen. Ich sehe aber keine return-Anweisung. Warum nicht void als Rückgabetyp?
3. Geschmacksfrage: die for-Schleife läuft von 1 bis 6. Üblich ist eigentlich von 0 bis x < 6 (also bis 5), da eigentlich immer ab 0 gezählt wird (z.B. auch beim Array)
4. Eine for-Schleife ist eher ungeeignet. Du solltest innerhalb der Schleife noch überprüfen, ob die Zahl schonmal getippt wurde, dann kann es sein, dass du mehr als 6 Durchläufe für 6 Zahlen brauchst. Natürlich könntest du, wenn eine bereits getippte Zahl nochmal hast einfach x dekrementieren, aber das ist unsauber. Besser: eine do-while-Schleife, mit while(x < 6), x wird vor Eintritt in die Schleife auf 0 gesetzt und innerhalb der Schleife bei jeder akzeptierten Zahl inkrementiert.
5. du gibst in der for-Schleife jede gefundene Zahl sofort aus. Andererseits hast du in Main auch noch eine Ausgabe "printf ("6 Zufallszahlen: %u", Resultat);". Soll das die Ausgabe sein? Dann solltest du die Werte auch in dem Array Resutat ablegen, also "Resultat[x] = z".
6. Du hast in main() einen Funktionsaufruf "Zahlenlotto(&Resultat);". Soll das die Methode "Zufahlszahl" sein (btw: Zufall schreibt man anders)? Zufahlszahl hat nicht nur einen anderen Namen, sondern eine andere Signatur, erwartet nämlich zwei Parameter. Daneben soll "Resultat" ein int sein, ist aber ja eigentlich ein int*. Ob ein C++-Compiler das schluckt weiß ich nicht mehr, ein int* ist ja formal gesehen auch nur ein int. Ebenso bin ich mir nicht sicher, ob du bei der Übergabe &Resultat oder nur Resultat angeben musst.
7. Daneben sollest du nochmal in der Doku schauen, in welchem Bereich die von rand() gelieferten Zahlen liegen. Meist sind das Zahlen im Bereich von 0 bis 1, damit nützt dir dein %n natürlich nicht viel (besser wäre ein *n).
8. Warum sind n und Resultat eigentlich globale Variablen? Die kannst du doch auch lokal in main() halten. Und warum wird Resultat groß geschrieben, alle anderen Variablen aber klein?

Filipp
Bitte warten ..
Mitglied: Butterblume
08.06.2007 um 14:04 Uhr
Danke für deine grosse Hilfe, ich weiss zwar nicht, wie man die Fuktion genau benutzt oder besser gesagt einbinden kann. Das würde ich sehr gern wissen.
LG, Kristy
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Zufallszahl begrenzen!
gelöst Frage von FrexedBatch & Shell2 Kommentare

Hallo Leute, Ich möchte in folgendem Code ein Problem lösen. (Eine Zufallszahl begrenzen, z.B.: Die Kommandozeile soll eine Zufallzahl ...

Batch & Shell
Quickie: Zufallszahl via bash wird nicht ausgegeben
gelöst Frage von FA-jkaBatch & Shell5 Kommentare

Ich möchte in einem bash-Script eine Zufallszahl zwischen 10 und 99 generieren: $zufallszahl=$((RANDOM % 90 +10)) echo "Zufallszahl: $zufallszahl" ...

C und C++
Von C auf C++ umsteigen
Frage von jangruC und C++3 Kommentare

Sehr geehrte Community, wie Sie meiner Überschrift bereits entnehmen konnten, habe ich vor von C auf C umzusteigen. Da ...

C und C++
Fehlendes verständiss von C und C++
Frage von zelamediaC und C++8 Kommentare

Hallo, ich wollte mich in nächster zeit mit C auseinandersetzen habe aber vorher eine frage die mich schon immer ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 15 StundenMikroTik RouterOS6 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 15 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 18 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 22 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Festplatten, SSD, Raid
USB Stick recovery
Frage von petereFestplatten, SSD, Raid15 Kommentare

Hallo, ich habe einen defekten USB-Stick, der nicht mehr lesbar ist. Er wird in WIN als unbekanntes Volume mit ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...