WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   schaltjahr oder nicht-schaltjahr? (http://www.wcm.at/forum/showthread.php?t=52789)

flocky 10.04.2002 21:39

grad hab ich gesehn... ich hab den pfad sowieso als string eingelesen, sollte eigentlich kein problem sein, ises aber !

Hier ist der ganze Teil:

printf("Hier koennen Sie einen Kontoauszug drucken.\nGeben Sie den Pfad an, in dem der Kontoauszug\ngespeichert werden soll(z.B. C://...+ auszug.txt): ");
scanf("%s",& k.path);
konto=fopen(k.path,"r");
fscanf(konto, "%lf",& k.kost);
fclose(konto);
auszug=fopen("k.path","w");
fprintf(auszug,"Ihr Kontostand betraegt: %lf Euro",k.kost);
fclose(auszug);
printf("Ihr Kontoauszug wurde erfolgreich erstellt !");
Sleep(2000);break;

kanns daran liegen, dass alle deklarationen in einer struktur sind?? instanz ist natürlich vorhanden (k.path...)

PS: das ganze soll ein Bankomat sein :lol:

irrsinn 10.04.2002 21:47

das darf nichts ausmachen, ob die variablen in einer struktur sind oder nicht. du hast bei auszug=fopen("k.path") als string drinnen stehn. kein wunder, dass er dir eine datei mit namen k.path im aktuellen verzeichnis anlegt. nimm einfach die anführungszeichen weg. dann sollts funktionieren

flocky 10.04.2002 22:04

jetz gehts auf einmal...
dabei hab ich das schon vorher mal umgeändert, da ises nciht gegangen !

trotzdem danke !!

hast du jetz ICQ/MSN?
will mich ja nicht aufdrängen, is ein angebot :)

suka 10.04.2002 22:09

thx! stimmt das so? (ich frag nur weil ich sowas komplexes noch nie gsehn hab :eek:)
Code:

case 02:
  if (bool istSchaltjahr(int jahr)
        {
        if(jahr%400==0)
          return true;
        if(jahr%100==0)
          return false;
        if(jahr%  4==0)
          return true;
        return false;
        };)
    max_tage = 28
  else
    max_tage = 29


irrsinn 10.04.2002 22:12

schaut vernünftig aus

irrsinn 10.04.2002 22:18

tschuldige. stimmt leider doch nicht.

wenn du die funktion istSchaltjahr definierst, brauchst du nachher ind er if abfrage nur mehr zu schreiben:

if (istSchaltjahr(irgendeine variable))
{
max_tage=29;
}
else
{
max_tage=28;
}

die funktion istSchaltjahr sollte so ausschaun:



bool istSchaltjahr(int jahr)
{
bool schaltjahr=false;
if(jahr%4==0)
{
schaltjahr=true;
if(jahr%100==0)
{
schaltjahr=false;
if(jahr%400==0)
{
schaltjahr=true;
};
};
};
return schaltjahr;
}

wobei du in ansi c keinen datentyp bool hast. du kannst aber ohne probleme unsigned short verwenden, oder dir einen bool typ erzeugen. wen du unsigned shorts verwendest, musst du statt true und false 1 und 0 schreiben. es sei denn du hast das irgendwo als define stehn.

jetzt sollts aber wirklich funktionieren

luschn 11.04.2002 17:56

ein schaltjahr iss durch 4 teilbar, also was hat der code bitte für einen sinn:

if(jahr%400==0)
return true;
if(jahr%100==0)
return false;
if(jahr% 4==0)
return true;
return false;

es reicht doch, wenn du nur folgendes stattdessen schreibst:

if(jahr% 4==0)
return true;
return false;

oder hab ich da etwas missverstanden?

irrsinn 11.04.2002 18:28

da hast leider was mißverstanden, weil alle 100 jahre kein schaltjahr, alle 400 jahre aber doch wieder ein schalt jahr ist. klingt komisch - is aber so

luschn 12.04.2002 08:55

was echt? mein allgemeinwissen lässt anscheinend wirklich zu wünschen übrig...g*...hab auch einen link gefunden mit den hintergründen des schaltjahres inkl. VB-Code....http://vb-tec.de/schltjhr.htm

Flink 12.04.2002 09:34

Zitat:

Original geschrieben von irrsinn
wenn du einen string einlesen willst, muss es
scanf("%s" &irgendwas);
heißen.

falsch!

char irgendwas[200];
scanf("%s", irgendwas);

Ein String ist ein (char *) bzw. (char []) und gilt bereits als Adresse.


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag