Výpočet diskirminantu a kořenů k-rovnice – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Výpočet diskirminantu a kořenů k-rovnice – C / C++ – Fórum – Programujte.comVýpočet diskirminantu a kořenů k-rovnice – C / C++ – Fórum – Programujte.com

 

Montezo
~ Anonymní uživatel
188 příspěvků
12. 12. 2021   #1
-
0
-

http://kod.djpw.cz/rzed

Zdravím, mám tento kód - abych zase neposlouchal, že sem cpu moc dlouhý kódy, nacpal jsem to do zkracovátka pro web stránky - mi to pořád nějak blbne na řádku " int dis = Sqrt(int dis); "... mele to plno keců, viz screen. Kde je chyba? Ty zelené chyby vyřeším, až pořeším to okolo toho diskriminantu. 

https://postimg.cc/Ny17TQs4

Nahlásit jako SPAM
IP: 178.255.168.–
gna
~ Anonymní uživatel
1891 příspěvků
12. 12. 2021   #2
-
0
-

   

double odmocninadis = Math.Sqrt(dis);
Nahlásit jako SPAM
IP: 213.211.51.–
BDS+3
Věrný člen
12. 12. 2021   #3
-
0
-

#1 Montezo
Mele to plno keců?? VS jasně píše kde je chyba!

Další chyba je v tom, že příspěvky týkající se C# píšeš do C/C++. C# patří do .NET

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
Montezo
~ Anonymní uživatel
188 příspěvků
12. 12. 2021   #4
-
0
-

VS jasně píše kde je chyba!

> to je mi k ho*nu, když to z toho nevyluštím.

Jo, a na správné umístění dotazu budu myslet. 

Nahlásit jako SPAM
IP: 178.255.168.–
BDS+3
Věrný člen
12. 12. 2021   #5
-
0
-

#4 Montezo

//Tady jsi definoval dis:
int dis = (koeb * koeb) - 4 * (koea * koec); //první definování
//proto tady píše, že dis je už definované
int dis = Sqrt(int dis); //další definování

Sqrt(int dis) je samozřejmě nesmysl, proto ti to hlásí chybu syntaxe
navíc metodu Sqrt(int) nemáš nikde definovanou, takže ji buď nadefinuješ, nebo upřesníš umístění (viz příspěvek gna)
Proto píše: "Název Sqrt v aktuálním kontextu neexistuje".
odmocninadis zrovna tak není nikde definována.

U chyb je vypisováno i číslo řádku.

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
Montezo
~ Anonymní uživatel
188 příspěvků
12. 12. 2021   #6
-
0
-

"proto tady píše, že dis je už definované"

Hmmm. a to jako nelze vzít proměnnou, nadefinovat ji, a pak s ní provést nějaké výpočet, a pak, po tom, co výpočet proběhne, tak tu novou hodnotu zpět do té proměnné uložit...? 

Nahlásit jako SPAM
IP: 178.255.168.–
BDS+3
Věrný člen
12. 12. 2021   #7
-
0
-

#6 Montezo
To samozřejmě lze. Ale nelze ji znovu definovat.

int dis = 4;

říká: vytvoř proměnnou (objekt) z jedinečným identifikátorem dis a do ní dosaď hodnotu 4

kdyby jsi udělal něco takového:
int dis = 1;
int dis = 2;
Console.WriteLine(dis); jaké číslo by program pak vypsal??

proto nelze opakovat definici

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
Montezo
~ Anonymní uživatel
188 příspěvků
12. 12. 2021   #8
-
0
-

Console.WriteLine(dis); jaké číslo by program pak vypsal??

> vypsal  by číslo 2

Okej, ale jak to teda obejít, abych dosáhl toho, co chci? A to jest, tu jednu proměnnou "ušetřit".

Nahlásit jako SPAM
IP: 178.255.168.–
BDS+3
Věrný člen
12. 12. 2021   #9
-
0
-

#8 Montezo
int dis = 8; //definice (může být i dosazení hodnoty)

...

dis = 1000;  // dosazení jiné hodnoty

...

dis = 555;    // dosazení jiné hodnoty

            int dis = (koeb * koeb) - 4 * (koea * koec);
            Console.WriteLine("Hodnota diskriminantu je: {0} ...", dis);
            int odmocnina = (int)Math.Sqrt(dis);
            int kor1 = (-koeb + odmocninadis) / 2;
            int kor2 = (-koeb - odmocninadis) / 2;
Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
12. 12. 2021   #10
-
0
-

Matematická pozn.: diskriminant a také kořeny rovnice mohou být reálná čísla. Typ int je tedy zcela nevhodný.

Osobně bych si zvolil 3 proměnné pro koeficienty rovnice (a, b, c), jednu proměnnou pro diskriminant a dvě proměnné pro kořeny (může to být i pole). Pokud bych během výpočtu potřeboval pomocnou proměnnou, vytvořil bych si lokální uvnitř metody, nemyslím si, že je to tento případ.

hu

Ještě pozn: na systému, který má několik GB paměti bych neřešil jestli potřebuji o jednu proměnnou o velikosti několika B navíc. Tyhle předčasné optimalizace jsou většinou k ničemu.

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:85af:26cd:9d98:6b97...–
BDS+3
Věrný člen
12. 12. 2021   #11
-
0
-

hlucheucho má pravdu, vyměň inty za double

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
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, 85 hostů

Podobná vlákna

Výpočet rovnice — založil MaxDJs

Rovnice — založil Kája

Help kv .rovnice — založil Darkkiller

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ý