Gdzie jest błąd w programie do porównywania dat...

0

Witam wszystkich!
Mam napisać program do porównywania dat, który oceni - która data jest wcześniej w kalendarzu.
Napisałem i skompilowałem program, ale po uruchomieniu i wprowadzeniu pierwszej danej, program się zamyka, bo system windows napotkał błąd...
Zaznaczam że dopiero zaczynam przygodę z programowaniem, więc żadne logiczne wyjaśnienie nie przychodzi mi do głowy...

Z góry dzięki za pomoc!!!

napisałem coś takiego:
#include<stdio.h>
main()
{
      int dzien1, dzien2, mies1, mies2, rok1, rok2;
      
      printf("Podaj dzien daty pierwszej: ");
      scanf("%d\n", dzien1);
                  if (dzien1 > 31 || dzien1 < 0)
                     { puts("miesiąc ma od 1 do 31 dni");
                     return (main()); }  
                    else           
                  printf("\ndzien to: %d\n", dzien1);  
      printf("\nPodaj miesiac daty pierwszej: ");
      scanf( "%d\n", mies1);
                  if (mies1>12 || mies1<0)
                     {puts("jest 12 miesięcy");
                     return (main());}
                  else 
                       printf("miesiąc to: %d", mies1);
      printf("\nPodaj rok daty pierwszej: ");
      scanf("%d\n", rok1);
                  printf("Twoja data to (dd.mm.rrrr): %d.%d.%d", dzien1, mies1, rok1);
      puts("Podaj dzien daty drugiej: ");
      scanf("%d\n", dzien2);
                    if (dzien2 > 31 || dzien2 < 0)
                     { puts("miesiąc ma od 1 do 31 dni");
                     return (main()); }  
                    else           
                        printf("\ndzien to: %d\n", dzien2);
      printf("\nPodaj miesiac daty drugiej: ");
      scanf( "%d\n", mies2);
                  if (mies2>12 || mies2<0)
                     {puts("jest 12 miesięcy");
                     return (main());}
                  else 
                       printf("miesiąc to: %d", mies2);
      printf("\nPodaj rok daty drugiej: ");
      scanf("%d\n", rok2);
                  printf("Twoja data to (dd.mm.rrrr): %d.%d.%d", dzien2, mies2, rok2);
      
      if (rok1>rok2 || (rok1==rok2 && mies1>mies2) || (rok1==rok2 && mies1==mies2 && dzien1>dzien2))
                 puts("data pierwsza jest pozniej w kalendarzu, czyli druga data jest wcześniejsza");
           else
             if ((rok1==rok2) && (mies1==mies2) && (dzien1==dzien2))
                          puts("obie daty są równe");  
                           else
                            puts("data druga jest pozniej w kalendarzu, czyli pierwsza data jest wcześniejsza");
}
1

Źle używasz scanf, powinno być:

scanf("%d\n", &dzien1);

itd.

1

Staraj się zawsze redukować problem do najprostszej możliwej formy - czyli komentujesz linie od końca i sprawdzasz czy program dalej się wywala. W ten sposób w końcu zauważyłbyś że program wywala się już na pierwszym scanf i prawdopodobnie doszedł do przyczyny błędu (@adf88 podał rozwiązanie, nie będę dublował)

0

Dzięki, mój błąd!
Teraz działa!

1 użytkowników online, w tym zalogowanych: 0, gości: 1