Výpočet dnů v roce – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Výpočet dnů v roce – C / C++ – Fórum – Programujte.comVýpočet dnů v roce – C / C++ – Fórum – Programujte.com

 

Michal
~ Anonymní uživatel
683 příspěvků
15. 2. 2015   #1
-
0
-

Zdravím.

Měl bych takový dotaz. S kamarádem jsme se hrály s programem na výpočet dnů v roce. První funkci se nám nějak podařilo dát do kopy. Věděl by někdo poradit po případně dopsat - Část 2 - do konce roku ?

Díky za ochotu

// dnyvroce.cpp
// program na vypocet dnu v roce

#include <iostream>
using namespace std;

int pocetdni[12]={31,28,31,30,31,30,31,31,30,31,30,31};

int uplynulo(int a, int b);
int zbyva(int c, int d);

int main()
{
	int den, mesic;
	cout << "*** Dny v roce ***\n";
	cout << "Zadejte den v mesici (1 az 31): ";
	cin >> den;
	cout << "Zadejte mesic v roce (1 az 12): ";
	cin >> mesic;

	int v = uplynulo (den, mesic);
	int z = zbyva(den,mesic);
	cout << "Od zacatku roku po " << den << "." << mesic << ". uplynulo " << v << " dni." << endl;
	cout << "Do konce roku od " << den << "." << mesic << ". zbyva " << z << " dni." << endl;

	system("pause");
	return 0;


	
	
}

int zbyva(int c, int d)
{
	int dokonce = 365;
	int o=d-1;
	for (int x=0; x<o; x++)
	{
		dokonce-=pocetdni[x];
	}

	return dokonce-=c;
}


int uplynulo(int a, int b)
	{
		int celkem = 0;
		int o= b-1;
		for (int x=0; x<o; x++)
		{
			celkem+=pocetdni[x];
		}

		return celkem+=a;

	}
Nahlásit jako SPAM
IP: 46.13.112.–
oxidián0
Grafoman
15. 2. 2015   #2
-
0
-

Myslím že tam máte chybu. Únor nemá vždy 28 dnů, někdy má 29 a myslím že je to co 4 roky.  2008 02/29 2012 02/29  2016 02/09 vychází to každý pátý rok má únor 29 dnů respektive je to perioda 4 let. Použij modulo k opravě výsledku.

Nahlásit jako SPAM
IP: 78.45.199.–
KIIV
~ Moderátor
+43
God of flame
16. 2. 2015   #3
-
0
-

#2 oxidián
technicky vzato je to kazdy 4. rok, vyjimku tvori kazdy sty rok, a vyjimku z vyjimky kazdy ctyrsty :) napriklad 2000 byl prestupny, 2100 nebude ikdyz je delitelny 4, ale je taky delitelny stem

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
16. 2. 2015   #4
-
0
-

#3 KIIV

2100 nebude ikdyz je delitelny 4

zaplať pánbuh, že se toho nedožiju   

hu

Nahlásit jako SPAM
IP: 2001:67c:1222:800:94f8:ef...–
oxidián0
Grafoman
16. 2. 2015   #5
-
0
-

Je krásné vědět, že někdo vyvíjí programy na 100 let dopředu :-)

Nahlásit jako SPAM
IP: 78.45.199.–
16. 2. 2015   #6
-
0
-

#5 oxidián
to možná ne, ale třeba by chtěl uživatel vědět, co bude v kalendáři za 100 let. Ale ani to nemá jistý, možná tam bude hvězdné datum 2. 48,56   

hu

Nahlásit jako SPAM
IP: 2001:67c:1222:800:94f8:ef...–
P
~ Anonymní uživatel
212 příspěvků
16. 2. 2015   #7
-
0
-

Kdyz uz mas hotovou funkci uplynulo, tak zbyva = celkem dni v roce - uplynulo.

Celkem dni v roce - viz ingo o prestupnych rocich.

Nahlásit jako SPAM
IP: 85.93.116.–
P
~ Anonymní uživatel
212 příspěvků
16. 2. 2015   #8
-
0
-

#7 P
info, ne ingo

Nahlásit jako SPAM
IP: 85.93.116.–
ondrej39+1
Věrný člen
16. 2. 2015   #9
-
0
-

#1 Michal
 

#include <iostream>
#include <string>

using std::cout;
using std::cin;
using std::endl;

int uplynulo(int den, int mesic, int rok);
int zbyva(int den, int mesic, int rok);
bool je_prestupny(int rok);

int gBezny[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int gPrestup[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

int main(void)
{
	int den, mesic, rok;

	cout << "Zadejte den ..: "; cin >> den;
	cout << "Zadejte mesic : "; cin >> mesic;
	cout << "Zadejte rok ..: "; cin >> rok;

	auto pocet = uplynulo(den, mesic, rok);
	auto ubehne = zbyva(den, mesic, rok);

	cout << endl;
	cout << "Od zacatku roku uplynulo " << pocet << " dni." << endl;
	cout << "Do konce roku zbyva      " << ubehne << " dni." << endl;
	cout << endl;

	system("PAUSE");	

	return 0;
}

bool je_prestupny(int rok)
{
    return (((rok % 4) == 0) && (((rok % 100) != 0) || ((rok % 400) == 0)));
}

int uplynulo(int den, int mesic, int rok)
{
	if (je_prestupny(rok))
	{
		int pocetDni = 0;
		for (int i = 0; i < mesic - 1; ++i) pocetDni += gPrestup[i];
		return (pocetDni += den);
	}
	else
	{
		int pocetDni = 0;
		for (int i = 0; i < mesic - 1; ++i) pocetDni += gBezny[i];
		return (pocetDni += den);
	}
}

int zbyva(int den, int mesic, int rok)
{
	if (je_prestupny(rok))
	{
		return (366 - uplynulo(den, mesic, rok));
	}
	else
	{
		return (365 - uplynulo(den, mesic, rok));
	}
}

Nahlásit jako SPAM
IP: 46.39.172.–
Inject all the dependencies!
pkaaa
~ Anonymní uživatel
3 příspěvky
16. 2. 2015   #10
-
0
-

ahoj dotaz trochu mimo, kde lze otevřít nějakou přílohu, která má být u příspěvku?

Nahlásit jako SPAM
IP: 2001:718:1e03:a01::39b...–
RomanZ
~ Anonymní uživatel
272 příspěvků
17. 2. 2015   #11
-
0
-

#10 pkaaa
Nevim jiste, ale prilohy mohou otvirat asi jen registrovani uzivatele. Pokud to tak je, je to hloupe, ale co. Ja se prece nebudu registrovat, abych mohl nekomu odpovidat na jeho problem ;)

Nahlásit jako SPAM
IP: 79.127.137.–
Michal
~ Anonymní uživatel
683 příspěvků
17. 2. 2015   #12
-
0
-

Děkuji všem :) konečně se můžu dostat dál :)

Nahlásit jako SPAM
IP: 46.13.112.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 35 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý