Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 10340 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...