First a small tip: Don't use swedish names in your code like that, make it a habit to use english everywhere since all companies in sweden that I've worked for uses english as the default language for code and documentation.
For code tags, click on the faq found in the top right of this page
#include <iostream>#include <string>#include <iomanip>using namespace std;void datuminmatning (int &ar, int &man, int &dag);//Reads the date you enter and sends it to the next functionsvoid skrivmanad(int nr);//Writes out the month (ex. January, February etc.)void skrivdatum(int &ar, int &manad, int &dag);//Writes out the datevoid skrivveckodag (int dagnummer);//Writes out the weeks day (ex. Monday, Tuesday)int antdagar(int ar, int man, int dag);//Counts the number of days starting from 1900int antdagarimanad(int ar, int man);//Counts the number of days in the specific month, loop years included.void almanacka(int &ar, int &manad);//Writes out the calendervoid main(){//ar = Year, man = Month, dag= Day, Manad = Month2 int ar=0, man=0, dag=0, manad=0; while (true) { datuminmatning(ar, man, dag); if (ar<1900) break; else if (man>12) cout << "ogiltig" << endl; else{ skrivdatum(ar, man, dag); almanacka(ar, man);} }}void datuminmatning(int &ar, int &man, int &dag){ cout << "skriv in en datum" << endl << "Året: ";//Asks you to enter a date, starting with Year cin >> ar; cout << "Månaden: ";//Month cin >> man; cout << "Dagen: ";//Day cin >> dag;}void skrivmanad(int nr){ switch(nr) { case 1: cout << "Januari"; return; case 2: cout << "Februari"; return; case 3: cout << "Mars"; return; case 4: cout << "April"; return; case 5: cout << "Maj"; return; case 6: cout << "Juni"; return; case 7: cout << "Juli"; return; case 8: cout << "Augustus"; return; case 9: cout << "September"; return; case 10: cout << "Oktober"; return; case 11: cout << "November"; return; case 12: cout << "December"; return; default: cout << "ogiltig"; return; }//Speaks for it's own, January - December}void skrivdatum(int &ar, int &manad, int &dag){ cout << "Datum är: "; skrivveckodag(antdagar(ar, manad, dag)%7); cout << " " << dag << " "; skrivmanad(manad); cout << " " << ar << endl;}void skrivveckodag(int dagnummer){ switch(dagnummer) { case 0: cout << "Söndag"; return; case 1: cout << "Måndag"; return; case 2: cout << "Tisdag"; return; case 3: cout << "Onsdag"; return; case 4: cout << "Torsdag"; return; case 5: cout << "Fredag"; return; case 6: cout << "Lördag"; return; default: cout << "ogiltig"; return; }//Sunday - Saterday, Ogiltig = invalid}int antdagar(int ar, int man, int dag){ int dagnummer=0; for (int nr=1900; nr<ar-1; ++nr) { dagnummer=dagnummer+365; if (ar%4==0) dagnummer=dagnummer+1; } for (int nr=1; nr<man-1; ++nr) { dagnummer=dagnummer+antdagarimanad(ar, man); } dagnummer=dagnummer+dag; return dagnummer;//Dagnummer= Daynumber}int antdagarimanad(int ar, int man){ int dagar=0; int yr=ar%4; if (yr==0){ switch (man) { case 1: dagar=31; return 31; case 2: dagar=28; return 29; case 3: dagar=31; return 31; case 4: dagar=30; return 30; case 5: dagar=31; return 31; case 6: dagar=30; return 30; case 7: dagar=31; return 31; case 8: dagar=31; return 31; case 9: dagar=30; return 30; case 10: dagar=31; return 31; case 11: dagar=30; return 30; case 12: dagar=31; return 31; default: cout << "ogiltig"; return 0; }} else{ switch (man) { case 1: dagar=31; return 31; case 2: dagar=29; return 28; case 3: dagar=31; return 31; case 4: dagar=30; return 30; case 5: dagar=31; return 31; case 6: dagar=30; return 30; case 7: dagar=31; return 31; case 8: dagar=31; return 31; case 9: dagar=30; return 30; case 10: dagar=31; return 31; case 11: dagar=30; return 30; case 12: dagar=31; return 31; default: cout << "ogiltig"; return 0; }}//dagar = Days}void almanacka(int &ar, int &manad){ int dagen=0; for(float nr=0;++nr<=1;) { cout << setw(8) << "sön" << setw(8) << "mån" << setw(8) << "tis" << setw(8) << "ons" << setw(8) << "tor" << setw(8) << "fre" << setw(8) << "lör"; cout << endl; } for(float nr=0;++nr<=1;) { for (float i=-1;++i<=6;){ if (i==antdagar(ar, manad, 1)%7){ dagen=1; } else if (i>antdagar(ar, manad, 1)%7) dagen=dagen+1; if (dagen==0){ cout << setw(8) << "";} else cout << setw(8) << dagen; } cout << endl; } for(float nr=0;++nr<=5;) { for (float i=-1;++i<=6;){ dagen=dagen+1; cout << setw(8) << dagen; if (dagen==antdagarimanad(ar, manad)) break; } cout << endl; if (dagen==antdagarimanad(ar, manad)) break; }}
I haven't looked through the complete code but one thing that I think is missing is that it's not true that every 4:th year have an extra day.
The rule is every fourth years EXCEPT every hundred years EXCEPT evey 400 hundred years.
The function I use:
bool hasExtraDay(const unsigned int year){ if ((year & 3) != 0) return false; if ((year % 400) == 0) return true; if ((year % 100) == 0) return false; return true;}