Stránka 1 z 1

Úloha

Napsal: 27 dub 2021 23:18
od Bonny125
Zdravím potrebujem pomoc s úlohou. :)

Potrebujem to v C.

Napíšte funkciu, ktorá vyráta druhú mocninu daného čísla. (napr. druhá mocnina čísla 5 je 5 × 5 = 25.)
S pomocou tejto funkcie vypíšte druhé mocniny čísel od 1 do 20.

Re: Úloha

Napsal: 28 dub 2021 01:50
od LuCaCZ
Google nefunguje?
Hledej "sqrt()" a "for"

Re: Úloha

Napsal: 28 dub 2021 04:36
od Bonny125
#include<stdio.h>
#include<conio.h>

int mocnina(int x) {

return x*x;

}

int main(){

int i = 0;

clrscr();

for(i = 1; i <= 20; i++) {

printf("%d^2 = %d\n",i ,mocnina(i));

}

getch();
return 0;
}

Ja to mám, ale neviem či dobre :D

Re: Úloha

Napsal: 28 dub 2021 07:16
od faraon
Zkompilovat to a spustit tě nenapadlo? ;)

Pár poznámek:

Ten kód máš stažený odněkud z netu, nebo ti conio.h poradili ve škole? To je totiž starožitnost z doby MS-DOSu a dnes (v tomhle století) už nemá v programu co pohledávat. Navíc tvůj program je s ním nepřenositelný, na jiném systému nebo s jiným překladačem nepůjde přeložit. Pro smazání obrazovky (pokud to opravdu musíš udělat!) použij buď multiplatformní knihovnu nebo jednoduché escape sekvence podle standardu ANSI, například:

Kód: Vybrat vše

printf ("\033c");
nebo komplexnější:

Kód: Vybrat vše

printf("\033[H\033[J");
Dnes už ANSI zvládají snad všechny existující terminály, i když ten windowsí pořád ještě nekompletně a chybně. Vyzkoušej to, u mě fungují obě. Další sekvence, například pro obarvení písma a jiné vopičky, najdeš zagooglením. Ale nepřeháněj to s nimi, někdy mohou být spíš na škodu.

To platí i pro funkci getch(), také není součástí normy. Kromě toho, je špatné když se program jen tak zastaví a čeká na pokyn uživatele, který ale neví co má v tu chvíli udělat. Samotný blikající kurzor - pokud se vůbec zobrazí - je zoufalý nedostatek informací, může znamenat že program pracuje nebo že se zasekl v nekonečné smyčce... Program musí uživatele vést (protože uživatel je ještě větší blbec než programátor) a napovídat mu, například takhle:

Kód: Vybrat vše

printf("Stiskni ENTER pro ukončení programu.");
getchar();


K formátování, nemíchej v odsazení mezery a tabulátory. Buď používej jedno nebo druhé ale nikdy oboje. Kromě toho, podle statistik programátoři používající mezery mívají vyšší plat než ti tabulátoroví, nikdo neví čím to je, ale je to tak. Také se používá vertikální odsazení, například mezi jednotlivými souvisejícími bloky kódu uvnitř funkce jeden prázdný řádek, mezi funkcemi tři prázdné řádky. Ono to dost zvyšuje přehlednost.

A ještě pár detailů, mezi příkazem a závorkou se dělá mezera: for (;;), naopak mezi názvem funkce a závorkou se NEdělá mezera: int main(void). To void znamená že funkce má prázdný vstup, je to informace pro překladač že nepotřebuje žádné argumenty.

P.S. Doufám že tohle není všechno co ses za tenhle školní rok naučil, takovýhle úkol bych čekal někdy v říjnu, maximálně v listopadu, ne dva měsíce před prázninami :-o

Re: Úloha

Napsal: 28 dub 2021 12:04
od Bonny125
Neviem ako, čo myslíš vieš mi to prerobiť tak, aby bolo dobre ?

Re: Úloha

Napsal: 28 dub 2021 13:18
od zeus
Nepochybuji, ze faraon vie. A zaroven nepochybuji, ze ti to neprerobi, protoze by to nebylo vychovne. Spise te posune, trosku detailneji, nez LuCaCZ.

Re: Úloha

Napsal: 28 dub 2021 15:17
od Clorky
Nikdo ti tady nebude zhotovovat domácí úkoly.

S čím konkrétně si nevíš rady?

Re: Úloha

Napsal: 29 dub 2021 07:03
od faraon
Zkusil jsi to zkompilovat a spustit? Sám uvidíš co ten program provádí a jak výsledek vypadá.

Napsal jsem ti konkrétní věci které bys (podle mého mínění) měl změnit, a také jsem napsal jak to máš provést. Prakticky ti stačí těmi řádky ode mne nahradit konkrétní řádky v programu.

Ještě jsem nezmínil jednu velmi užitečnou věc - komentáře. Nestyď se je používat, vytiskni si ten program na papír a ke každému řádku tužkou napiš co provádí. Pokud to nebudeš vědět, použij manuál nebo prostě zagoogli. Tak najdeš například funkci mazající obrazovku, kterou máš nahradit escape sekvencí.

Další informace najdeš tady: https://www.abclinuxu.cz/faq/aplikace/udelate-za-me-ukol Je to tam napsané lépe, než bych to vyjádřil já.