Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Informatik in der Schule (http://www.informatikerboard.de/board/board.php?boardid=21)
--- C: Programm zu Schaltjahren stürzt ab (http://www.informatikerboard.de/board/thread.php?threadid=1000)


Geschrieben von mCPBA am 29.07.2011 um 11:43:

  C: Programm zu Schaltjahren stürzt ab

Hallo,

ich habe das Vergnügen, ein Programm in C schreiben zu dürfen, welches mir zu jeder beliebigen Jahreszahl angibt, ob es sich um ein Schaltjahr handelt. Leider verabschiedet sich mein Programm immer nach Eingabe der Jahreszahl:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
#include<stdio.h>

//Festlegen der Jahreszahl
int main(){
	int jahr=0;
	do{
		printf("Bitte positive Jahreszahl eingeben: ");
		scanf("%d", jahr);
	}while(jahr<=0);
	
//Eigentlicher Test
	if(jahr %4 == 0)
	{
		if(jahr %100 == 0)
		{
			if(jahr %400 == 0)
				printf("%d ist ein Schaltjahr.\n", jahr);
			else
				printf("%d ist kein Schaltjahr.\n", jahr);
		}
		else
			printf("%d ist ein Schaltjahr.\n", jahr);
	}
	else
		printf("%d ist kein Schaltjahr. \n", jahr);

	return 0;
}


Starten mit Debugger liefert folgendes:


"Schaltjahr.exe": "C:\Users\mCPBA\Documents\Visual Studio 2010\Projects\Schaltjahr\Debug\Schaltjahr.exe" geladen, Symbole wurden geladen.
"Schaltjahr.exe": "C:\Windows\SysWOW64\ntdll.dll" geladen, Cannot find or open the PDB file
"Schaltjahr.exe": "C:\Windows\SysWOW64\kernel32.dll" geladen, Cannot find or open the PDB file
"Schaltjahr.exe": "C:\Windows\SysWOW64\KernelBase.dll" geladen, Cannot find or open the PDB file
"Schaltjahr.exe": "C:\Windows\SysWOW64\msvcr100d.dll" geladen, Symbole wurden geladen.
Eine Ausnahme (erste Chance) bei 0x5f29effe (msvcr100d.dll) in Schaltjahr.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00000000.
Unbehandelte Ausnahme bei 0x5f29effe (msvcr100d.dll) in Schaltjahr.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00000000.

Vllt kann mir einer von Euch bei der Fehlersuche behilflich sein Wink

Schöne Grüße



Geschrieben von anonym am 29.07.2011 um 18:59:

 

Debugge doch mal Schritt für Schritt durch, dann siehst du, wo der Fehler ist.



Geschrieben von nattydread am 29.07.2011 um 19:07:

 

du hast bei scanf das "&" bei jahr vergessen Augenzwinkern

abgesehn davon: versuche mal etwas an der effektivität deines programmes zu optimieren..da sind noch einige operationen drin,die man so nicht unbedingt benötigt Augenzwinkern


Forensoftware: Burning Board, entwickelt von WoltLab GmbH