Jump to content
  • 0

pomoc Domáca úloha na VŠ


LINE UP

Dotaz

Zdravím je tu niekto zbehlý v c++? Dostal som na VŠ zadanie a c++ zatial moc neviem. Vedeli by ste mi s tým pomôcť?

Musím spraviť konzolovu aplikáciu a napísať zdrojový kód no a ešte si potom musím spraviť vývojový diagram.

 

Vytvorte program a vývojový diagram, ktorý vypočíta súčet číselného radu S = 1 + 1/2 + 1/4 + 1/8 + 1/16 ... + 1/(2^N).

Link to comment
Share on other sites

11 odpovědí na tuto otázku

Recommended Posts

  • 0

Zdravím, to "N" je nejaký parameter, ktorý má zadať užívateľ? Ak áno, znie to ako úloha na precvičenie for cyklu, ktorý n-krát pripočíta k nejakej premennej (akumulátoru) hodnotu i-tého člena postupnosti (i je riadiaca premenná cyklu). 

Link to comment
Share on other sites

  • 0

Určite for cyklom (počet opakovaní cyklu je známy - n). Ako hovorím, pred cyklom si inicializuješ nejakú premennú na 0, do ktorej budeš v cykle pripočítavať prvky postupnosti. Musíš už len vymyslieť, ako jednotlivé prvky postupnosti vypočítať. Hint: Existuje operátor << (bitový posun vľavo), x << y = x * 2y .

Link to comment
Share on other sites

  • 0
int result = 0;

for (int c = 0; c < n; c++) {
  result += 1 / (2 ^ c);
}

cout << result< " GG IZI";

Mal som za to, že ^ je operátor pre XOR a nie pre mocninu. Aj keby vykonával mocninu, výsledok by bol na konci vždy 1. (Inty sa podelia celočíselne, 1/1 = 1, 1/2 = 0, 1/4 = 0...). Takže si nie som istý, či to bude najšťastnejšie riešenie. Možno sa mýlim.

  • Líbí se mi to! (+1) 2
Link to comment
Share on other sites

  • 0

Pri tom pow mi vypisuje chybu ambiguous call to overloaded function

Inak som ten cyklus vyskúšal a to funguje aj všetko ostatné. Hore som dal knižnicu math.h ale aj tak mi to nejde zatiaľ

Link to comment
Share on other sites

  • 0

Keď už chceme zverejňovať riešenia..
Chcel som ťa nasmerovať na niečo takéto (vyhneš sa potrebe includovať math):

 

#include <iostream>

int main() {
	std::cout << "Zadaj počet členov, ktoré chceš sčítať." << std::endl;
	int n;
	std::cin >> n;
	double sum = 0.0;

	for (int i = 0; i < n; ++i) {
		sum += 1.0 / (1 << i);
	}

	std::cout << "Súčet prvých " << n << " členov postupnosti je: " << sum;
	return 0;
}

 



Prípadne na niečo takéto (vyhneš sa operátoru <<, ak mu nerozumieš):

 

#include <iostream>

int main() {
	std::cout << "Zadaj počet členov, ktoré chceš sčítať." << std::endl;
	int n;
	std::cin >> n;
	double sum = 0.0;
	double last = 1.0;

	for (int i = 0; i < n; ++i) {
		sum += last;
		last /= 2;
	}

	std::cout << "Súčet prvých " << n << " členov postupnosti je: " << sum;
	return 0;
}


 

 

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0
  • Hlavní moderátor

Keď už chceme zverejňovať riešenia..

Chcel som ťa nasmerovať na niečo takéto (vyhneš sa potrebe includovať math):

 

 

#include <iostream>

int main() {
	std::cout << "Zadaj počet členov, ktoré chceš sčítať." << std::endl;
	int n;
	std::cin >> n;
	double sum = 0.0;

	for (int i = 0; i < n; ++i) {
		sum += 1.0 / (1 << i);
	}

	std::cout << "Súčet prvých " << n << " členov postupnosti je: " << sum;
	return 0;
}

 

 

 

Prípadne na niečo takéto (vyhneš sa operátoru

 

 

#include <iostream>

int main() {
	std::cout << "Zadaj počet členov, ktoré chceš sčítať." << std::endl;
	int n;
	std::cin >> n;
	double sum = 0.0;
	double last = 1.0;

	for (int i = 0; i < n; ++i) {
		sum += last;
		last /= 2;
	}

	std::cout << "Súčet prvých " << n << " členov postupnosti je: " << sum;
	return 0;
}


 

 

Tvůj záměr nikdo nezpochybňuje, řešení přes ten bitový operátor se mi (a nejen mně) líbí, ale řeknu ti 2 důvody, proč je to nevhodné:

 

1. Jestli to zadali jako domácí úlohu či projekt začátečníkovi, asi budou předpokládat použití pow. Když tam uvidí tohle, mohli by se začít ptát, zda tomu rozumí, jinými slovy by mohli zpochybnit, zda to byl jeho nápad. Záleží to na škole, na počtu studentů i na tom, jak moc studují zdrojáky, ale stát se to může.

 

2. NEOX s tím očividně začíná a vzhledem k tomu, že se operátory >> a

  • Líbí se mi to! (+1) 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...