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

C Programm bleibt beim Starten stehen

Frage Entwicklung C und C++

Mitglied: JimK

JimK (Level 1) - Jetzt verbinden

17.10.2008, aktualisiert 19.10.2008, 4707 Aufrufe, 9 Kommentare

Hallo,

versuche C/C++ zu lernen und gehen grad ein Buch durch.
Arbeite mit dem Programm Visual C++ 2008 Express.

Nun zu meinem Problem über das ihr sicherlich schmunzeln werdet.
Habe ein kleines Beispielprogramm geschrieben doch irgendwas haut nicht hin, obwohl es genau dem Buch entspricht.
Hier ist der Quellcode:

01.
 
02.
#include <stdio.h> 
03.
#include <stdlib.h> 
04.
 
05.
void main() 
06.
07.
	int jahr; 
08.
	 
09.
 
10.
	printf("Bitte geben sie das Jahr ein: "); 
11.
	scanf("%d \n", &jahr); 
12.
 
13.
	if (jahr % 4 != 0) 
14.
15.
		printf("%d ist kein Schaltjahr! \n"); 
16.
		 
17.
18.
 
19.
	else 
20.
21.
		if (jahr % 100 != 0) 
22.
23.
		printf("%d ist ein Schaltjahr! \n"); 
24.
25.
 
26.
		else 
27.
28.
			if(jahr % 400 == 0) 
29.
30.
				printf("%d ist ein Schaltjahr!", jahr); 
31.
32.
			else 
33.
34.
				printf("%d ist kein Schaltjahr!", jahr); 
35.
36.
37.
38.
}
Der kompiliert das alles ohne Fehler anzuzeigen, aber wenn ich das Programm starte kommt es über das „Bitte geben sie das Jahr ein:“ nicht hinaus. Es bleibt einfach stehen.
Ich hoffe, dass ihr mir helfen könnt es zu verstehen.

Mit freundlichen Grüßen
JimK

Quelle: C/C++ Das umfassende Lehrbuch
Mitglied: Arano
17.10.2008 um 21:51 Uhr
Zu erst bitte einmal deinen Beitrag bearbeiten und deinen Quelltext in Code-Tags setzen, Danke !

Vielleicht liegt es an diesem Teil:
01.
if (jahr % 4 != 0) 
02.
03.
printf("%d ist kein Schaltjahr! \n"); 
04.
}
...genauer gesagt an an der "printf()"-Funktion, da fehlt die Übergabe des Jahres als Parameter.

~Arano

__Edit:__
Diesen Fehler hast noch ein zweites mal gemacht ;)
Bitte warten ..
Mitglied: JimK
17.10.2008 um 22:08 Uhr
Danke für deinen Rat Arano!
Hab die kleine Unaufmerksamkeit gleichmal abgeändert. Leider hat es nicht geholfen.
Es passiert einfach nichts nach der Jahreseingabe in der cmd und der Compiler findet auch keine Fehler.

PS:
Wenn dieser Fehler behoben ist, dann kommen gleich noch ein paar Fragen auf euch zu. ;)
Bitte warten ..
Mitglied: Arano
18.10.2008 um 01:28 Uhr
Sodale, habe es nun einfach selber mal probiert/Compiliert. Allerdings mit dem BCC32.
Das selbe Problem wie du es beschriebst kam zum Vorscheinen.
Als ich das dann allerdings im Notepad++ betrachtet habe (wegen dem Syntaxhighlight) und dabei war alles einzurücken, viel mir folgendes auf:

"int jahr;" <-- type = integer/ganzzahlen
"scanf("%d \n",&jahr);" <!-- type = character/zeichenkette

Und das ist auch der Fehler, hiermit funktionierte es dann
"scanf("%d",&jahr);"

Verstehe sowieso nicht warum du der eingegebenen Zahl noch eine Leerzeichen und einen Zeilenumbruch angefügt hast/wolltest !?

Und wegen den anderen Fragen, mal sehen... bin auch nicht besonders bewandert in dieser Sprache, eher weniger ;)

Gruß Arano
Bitte warten ..
Mitglied: JimK
18.10.2008 um 11:06 Uhr
Danke Arano!!!!
Jetzt funktionier es.

ok, jetzt zu meinem anderen Problem.
Quellcode:

01.
# include <stdio.h> 
02.
# include <stdlib.h> 
03.
 
04.
void main() 
05.
06.
int weiche1, weiche2, weiche3, weiche4; 
07.
int position; 
08.
int kugel; 
09.
 
10.
printf("Bitte geben sie die Weichenstellung ein: "); 
11.
scanf("%d %d %d %d", &weiche1, &weiche2, &weiche3, &weiche4); 
12.
fflush(stdin); 
13.
printf("Bitte geben sie die Anzahl der Kugel ein: "); 
14.
scanf("%d", &kugel); 
15.
 
16.
for (;kugel > 0; kugel = kugel - 1) 
17.
18.
 
19.
if(weiche1 == 1) 
20.
position =1; 
21.
 
22.
else 
23.
position = 2; 
24.
 
25.
weiche1 = 1 - weiche1; 
26.
 
27.
if(position == 1) 
28.
29.
if(weiche2 == 1) 
30.
position = 4; 
31.
 
32.
else 
33.
position = 3; 
34.
weiche2 = 1 - weiche2; 
35.
36.
 
37.
else 
38.
39.
if(weiche3 == 1) 
40.
position =3; 
41.
 
42.
else 
43.
position =5; 
44.
weiche3 = 1 - weiche3; 
45.
46.
 
47.
if(position == 3) 
48.
49.
if(weiche4 == 1) 
50.
position = 4; 
51.
 
52.
else 
53.
 
54.
position = 5; 
55.
weiche4 = 1 - weiche4; 
56.
57.
 
58.
printf("Auslauf: %d ,", position); 
59.
printf("neue Weichenstellung %d %d %d %d\n",  
60.
	   &weiche1, &weiche2, &weiche3, &weiche4); 
61.
62.
}
Hier geht es darum, dass eine Kugel 3 Weichen passieren muss. Sobalt eine Kugel durchläuft verstellt sie die weichen auf 0 oder 1 und fällt bei 4 oder 5 wieder heraus.

Alles schön und gut. Mein Programm errechnet richtig die Ausgänge, aber bei den weichen Stellung macht es immer Fehler.
Statt 0 oder 1 zu schreiben entstehen so wirre Zahlen wie 1245024 und ich weiß einfach nicht, wie das Programm auf diese Zahl kommt oder wo es sich diese Faktoren herholt. Alles total verrückt!!! ;)
Bitte warten ..
Mitglied: Arano
18.10.2008 um 14:27 Uhr
SO, also ich habe die Lösung !
Aber bitte, setze deinen Quelltext in Code-Tags.
Bitte warten ..
Mitglied: JimK
18.10.2008 um 16:05 Uhr
Einen wunderschönen!!!

Danke erstmal für deine Hilfe Arano. Ich weiß jetzt was die ganzen kleinen Probleme verursacht. Das Buch beinhalte C und C++ und ich Compiliere es mit Visual C++ 2008. Hab das ganze dann mal in C++ umgewandelt und man siehe da, es funktioniert.

Danke nochmal.

mfg
JimK
Bitte warten ..
Mitglied: Arano
18.10.2008 um 16:15 Uhr
Ja klar, kein Problem !
Aber du hättest deine Beiträge trotzdem noch mal bearbeiten könne, dann ist das einfach lesbarer und vor allem kann man es dann einfacher kopieren !

Hm... hätte nicht gedacht, dass das auch so lösbar ist !
Meiner Meinung nach lag das Problem an der Stelle der Ausgabe:
"printf("neue Weichenstellung %d %d %d %d\n", &weiche1, &weiche2, &weiche3, &weiche4);"
Durch das Und-Zeichen übergibst du die Adresse des Speicherbereiches in dem der Wert der Variable gespeichert ist.
Nach entfernen der Und-Zeichen hat es bei mit sofort funktioniert weil anstelle der Speicheradresse nun der Wert ausgegeben wird.

~Arano

__Edit:__
So wie ich das gelesene habe, ist C++ die Weiterentwicklung von C. Und wenn man es lernen möchte solle man auch mit C anfangen und später um C++ ergänzen.

Und so wie ich das jetzt einschätze hast du hier aber ein C-Programm, weswegen du es auch als solches Compilieren solltest. Das ich mich hier irre ist nicht ausgeschlossen da ich selber ja auch noch Anfänger bin ;)
Bitte warten ..
Mitglied: JimK
18.10.2008 um 18:14 Uhr
Hi Arano!

Hab ich leider auch feststellen müssen, dass das Buch erstmal eine kleine Einführung in C macht. Hoffe das ändert sich noch, denn bis jetzt kann ich das noch alles in C++ umschreiben, weil so langsam die Erinnerungen an die Programmierstunden in der Schule zurück kommen. Leider fand ich das damals nicht so interessant wie heut, aber der Lehrer war auch nicht gut.

Wie hast du eigentlich damit angefangen? Vielleicht kannst du mir ja ein paar Tipps geben!?

mfg JimK
Bitte warten ..
Mitglied: Arano
19.10.2008 um 02:59 Uhr
Nabend

Wie hast du eigentlich damit angefangen? Vielleicht kannst du mir ja ein paar Tipps geben!?
Naja, eigentlich arbeite ich mit PHP also der Webprogrammierun - von HTML, CSS und Javascript über Perl zu PHP.
Zu C++ bin ich gekommen weil ich ein kleines Programm brauchte mit dem ich eine LED am Druckerkabel (LPT1) ein- und ausschalten kann (zur Emailbenachrichtigung (der Rest läuft über ein PHP-Script ^^)).
Nach etwas suchen habe ich dann diese Seite gefunden und einfach angefangen: http://ladedu.com
Muss aber ehrlich sagen das ich mir das leichter vorgestellt hatte da ich ja schon Erfahrung in PHP habe, vor allem die Variablentypen (int, char, ...) machens mir schwer, das geht in PHP fast automatisch.

Einen schönen Sonntag noch
Arano
Bitte warten ..
Ähnliche Inhalte
Windows 7
(Netzwerk)Drucker druckt nur eine Seite und bleibt dann stehen (5)

Frage von harald.schmidt zum Thema Windows 7 ...

Windows Server
Win 2008 R2 - CMD bleibt stehen (4)

Frage von emeriks zum Thema Windows Server ...

Batch & Shell
TXT Datei bleibt nach Erstellung leer - woran liegt es? (7)

Frage von Komoran12 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(1)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

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

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Windows 10
Windows 10 Home "Netzlaufwerk nicht bereit" (11)

Frage von Oggy01 zum Thema Windows 10 ...

SAN, NAS, DAS
+100tb Storagelösung (10)

Frage von Data-Fabi zum Thema SAN, NAS, DAS ...