[c] wyznazenie wielkanocy Metoda Meeusa

Awatar użytkownika
hellsing
Użytkownik
Użytkownik
Posty: 191
Rejestracja: 30 mar 2006, o 14:09
Płeć: Mężczyzna
Lokalizacja: Z kątowni
Podziękował: 11 razy
Pomógł: 16 razy

[c] wyznazenie wielkanocy Metoda Meeusa

Post autor: hellsing »

Kod: Zaznacz cały

 #include <stdio.h>


void wielkanoc( int rok, int dn, int ms)
{ /*kozystajac z Metoda Meeusa wyznaczam dzien i miesiac w jakim wypadnie wielkanoc*/
/*w zadanym roku.*/
    int a,b,c,d,e,f,g,h,i,k,l,m,p;
    int dzien,miesiac;
    a=rok%19;
    b=rok/100;
    c=rok%100;
      d=b/4;
      e=b%4;
      f=(b+8)/25;
        g=(b-f+1)/3;
          h=(19*a+b-d-g+15)%30;
      i=c/4;
      k=c%4;
        l=(32+2*e+2*i-h-k)%7;
          m=(a+11*h+22*l)/451;
      p=(h+l-7*m+114)%31;
            dzien=p+1;
            miesiac=(h+l-7*m+114)/p;
    dn=dzien;
    ms=miesiac;
}

int main( void){
int rok;
int swieta[23]; 
 printf("podaj rok
");
 scanf("%d",&rok);
                  wielkanoc(rok, swieta[0], swieta[1]);
                  printf("%d.%d", swieta[0], swieta[1]);
getchar();
system("pause");
return 0;    
}
Zwraca mi jakies licczby z kosmosu, chyba przekracza zakres inta. Może mi ktoś wskazac błędy??
Awatar użytkownika
wafello
Użytkownik
Użytkownik
Posty: 35
Rejestracja: 7 sty 2009, o 21:50
Płeć: Mężczyzna
Lokalizacja: Józefina
Pomógł: 6 razy

[c] wyznazenie wielkanocy Metoda Meeusa

Post autor: wafello »

zdaje mi się ze gdy chcesz modyfikować zmienne które przekazujesz jako argumenty powinieneś użyć referencji...

EDIT:
coś takiego :

Kod: Zaznacz cały

void wielkanoc( int rok, int &dn, int &ms)
Awatar użytkownika
hellsing
Użytkownik
Użytkownik
Posty: 191
Rejestracja: 30 mar 2006, o 14:09
Płeć: Mężczyzna
Lokalizacja: Z kątowni
Podziękował: 11 razy
Pomógł: 16 razy

[c] wyznazenie wielkanocy Metoda Meeusa

Post autor: hellsing »

Wtedy program nie chce sie zkompilowac. Kompilator wskazuje na bład w funkcji wielkanoc: BezNazwy2.c syntax error before '&' token.
Awatar użytkownika
wafello
Użytkownik
Użytkownik
Posty: 35
Rejestracja: 7 sty 2009, o 21:50
Płeć: Mężczyzna
Lokalizacja: Józefina
Pomógł: 6 razy

[c] wyznazenie wielkanocy Metoda Meeusa

Post autor: wafello »

a jakiego kompilatora używasz?
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

[c] wyznazenie wielkanocy Metoda Meeusa

Post autor: smiechowiec »

Wkradła się jedna literówka do zapisu miesiac = (h + l - (7 * m) + 114) / 31;
Po poprawce działa prawidłowo

Kod: Zaznacz cały

#include <stdio.h>

void wielkanoc(int rok, int swieta[]) {
  /* kozystajac z Metoda Meeusa wyznaczam dzien i miesiac 
  w jakim wypadnie wielkanoc w zadanym roku. */ 
  int a, b, c, d, e, f, g, h, i, k, l, m, p;
  int dzien, miesiac;
  a = rok % 19;
  b = rok / 100;
  c = rok % 100;
  d = b / 4;
  e = b % 4;
  f = (b + 8) / 25;
  g = (b - f + 1) / 3;
  h = ((19 * a) + b - d - g + 15) % 30;
  i = c / 4;
  k = c % 4;
  l = (32 + (2 * e) + (2 * i) - h - k) % 7;
  m = (a + (11 * h) + (22 * l)) / 451;
  p = (h + l - (7 * m) + 114) % 31;
  dzien = p + 1;
  miesiac = (h + l - (7 * m) + 114) / 31;
  swieta[0] = dzien;
  swieta[1] = miesiac;
}

int main( void) {
  int rok;
  int swieta[2];
  printf("podaj rok ");
  scanf(" %d", &rok);
  wielkanoc(rok,  swieta);
  printf("Wielkanoc w %d roku wypada %d.%d (według kalendarza gregoriańskiego).",  rok, swieta[0],  swieta[1]);
  return 0; 
}
ODPOWIEDZ