Co zrobić, by program liczył poprawnie. long long int. switch.

0

Witam. Jestem Bardzo początkujący w dziedzinie programowania. Mam pewien problem, otóż mam za zadanie napisać programik, który po podaniu pesla wypisze miesiąc urodzenia. Aby wyodrębnić numer miesiąca najpierw dzielę pesel przez 10000000 co powinno dać nam liczbę czterocyfrową tj rok i miesiąc urodzenia. w moim przypadku jest to 8805. Problem pojawia się już w tym momencie, ponieważ po wpisaniu mojego pesla (88051100818) i wpisaniu komendy wypisania tego "p" program drukuje mi liczbę 215. W myśl mojego rozumowania powinny zostać wydrukowane cztery pierwsze cyfry numeru pesel. Proszę o pomoc czego tak się dzieje, co mogłem zrobić źle?
Drugi problem jest taki, czy później mogę wyodrębnić sobie numer miesiąca (m) za pomocą komendy: p%100==m;, tj. reszta z dzielenia liczby p przez 100 da nam właśnie numer miesiąca który zostanie wpisany do jednego z przypadków w instrukcji switch. Jest to może banalne, ale jak juz wcześniej pisałem, dopiero rozpoczynam swoją przygodę z programowaniem. Z góry dzięki za pomoc.
Oto mój program:

#include<stdio.h>
main()
{
long long int pesel;
int p, m;
printf("\n Podaj pesel:");
scanf("%i64d", &pesel);
p=pesel/10000000;
p%100==m;
switch(m)
{
	case 1: printf("styczeń");
	break;
	case 2: printf("luty");
	break;
	case 3: printf("marzec");
	break;
	case 4: printf("kwiecien");
	break;
	case 5: printf("maj");
	break;
	case 6: printf("czerwiec");
	break;
	case 7: printf("lipiec");
	break;
	case 8: printf("sierpien");
	break;
	case 9: printf("wrzesien");
	break;
	case 10: printf("pazdziernik");
	break;
	case 11: printf("listopad");
	break;
	case 12: printf("grudzien");
	break;
	default: printf("bledny pesel");
	break;
}
}
	
0

Może lepszym pomysłem byłoby traktowanie peselu jako string?

1

Dzień dobry.
Zrób jak mówi Pan wyżej albo wczytuj

scanf("%lld", &pesel);

wtedy działa.

0

Rzeczywiście działa, dzięki wielkie. Mam jeszcze pytanie co do komendy

p%100==m;
 

Jak mogę wyodrębnić numer miesiąca, tak aby działało, bo tak coś nie chce za bardzo hulać.

0
m = p%100;
0

Wszystko działa jak powinno. Nie chciałem używać "stringów", bo ćwiczenie nie wskazywało na ich użycie. Serdeczne dzięki za pomoc.

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