Kvadratická rovnice – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kvadratická rovnice – C / C++ – Fórum – Programujte.comKvadratická rovnice – C / C++ – Fórum – Programujte.com

 

Kaalc0
Duch
10. 12. 2017   #1
-
0
-

Zdravím, nevím si rady s tímto zadáním. 
Áčko sem zvládl a částečně i B, ale tam mám problém, že se mi do pole koef[] zapíše pouze jedna hodnota. Cčko funguje jak má.
Dčko mám napsanou rovnici pro výpočet kořenů, ale výsledek mi hází  [0] -nan(ind) double.
S Éčkem není problém. Nevíte někdo jak na to? Drbal sem se s tím celej včerejšek, ale nic co by fungovalo mě nenapadlo.
 

Připojen obrázek.

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include<string.h>
#define RE 0
#define IM 1
#define D(A, B, C) ((B*B)-(4*A*C))
double cti(double aKoef[]);
void koreny(double  aKoef[], double aX1[], double aX2[], double disk);
int main()
{
	double koef[3] = { 0 };
	double x1[2] = { 0 };
	double x2[2] = { 0 };
//	double r=cti(koef);
	double s = D(koef[0], koef[1], koef[2]);
	koreny(koef, x1, x2, s);


		return 0;
}

double cti(double aKoef[])
{
	printf("Zadej koeficienty rovnice:\n");
	scanf("%lf", aKoef);
	return (strlen(aKoef));
}

void koreny(double  aKoef[], double aX1[], double aX2[], double disk)
{
	double vysledek;
	if (RE >= disk)
	{
		aX1[0] = ((-aKoef[1] + sqrt(disk)) / 2 * aKoef[0]);
		aX2[0] = ((-aKoef[1] - sqrt(disk)) / 2 * aKoef[0]);
	}
	else
	{
		aX1[0] = ((-aKoef[1] + sqrt(-disk)) / 2 * aKoef[0]);
		aX2[0] = ((-aKoef[1] - sqrt(-disk)) / 2 * aKoef[0]);
	}
}
Nahlásit jako SPAM
IP: 83.240.61.–
KIIV
~ Moderátor
+43
God of flame
10. 12. 2017   #2
-
0
-

#1 Kaalc
Kdyz nacitas jednu hodnotu, tak se pochopitelne jedna hodnota i nacte.

Nahlásit jako SPAM
IP: 81.30.230.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kaalc0
Duch
10. 12. 2017   #3
-
0
-

To je mi jasné, ale já potřebuju načíst 3 čísla do toho pole. A to se mi právě nedaří. Když napíšu např 3 2 1, tak se mi zapíše pouze 3. A nevím jak udělat to, aby se načetli i ty 2 zbylé hodnoty.

Nahlásit jako SPAM
IP: 83.240.61.–
KIIV
~ Moderátor
+43
God of flame
10. 12. 2017   #4
-
0
-

Ja nevim, treba tak, ze reknes scanfu, ze chces tri cisla?

int pocet_nactenych = scanf("%lf%lf%lf", aKoef, aKoef+1, aKoef+2);
Nahlásit jako SPAM
IP: 81.30.230.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kaalc0
Duch
10. 12. 2017   #5
-
0
-

Super. Díky moc. Tohle sem zkoušel, ale nenapadlo mě dát +1 a +2. 

Nahlásit jako SPAM
IP: 83.240.61.–
KIIV
~ Moderátor
+43
God of flame
10. 12. 2017   #6
-
0
-

aKoef je pointer na prvni prvek v poli, proto kdyz se pak pouzije +1 tak to ukazuje na druhy prvek, a +2 ukazuje na treti. Prvni prvek je mimochodem to same jako  aKoef+0  nebo napriklad  &aKoef[0] a podobne

Nahlásit jako SPAM
IP: 81.30.230.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kaalc0
Duch
10. 12. 2017   #7
-
0
-

Jojo. Toto sem pochytil, že i nula je v Céčku číslo :D 

Nahlásit jako SPAM
IP: 83.240.61.–
KIIV
~ Moderátor
+43
God of flame
10. 12. 2017   #8
-
0
-

#7 Kaalc
ono je to hlavne tim, ze index je branej jako offset, takze neni rozdil mezi:

pole[i]  a    *(pole+i)

dokonce se da pouzit i:

i[pole]

nicmene to uz je extremni priklad a poslouzil by spis na zneprehledneni programu, kdyz uz k nicemu jinemu.

Adresa prvniho prvku je na offsetu 0, proste na te adrese a az dalsi prvky se pak musi posunout o spravny pocet bajtu (o coz se zase stara pointerova aritmetika podle typu ukazatele)

Nahlásit jako SPAM
IP: 81.30.230.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 7 hostů

Podobná vlákna

Kvadraticka rovnice — založil Yurda

Kvadratická rovnice — založil rdckONE

Kvadraticka rovnice — založil Hanmir1

Kvadratická rovnice — založil Patrik Hlobil

Kvadratická rovnice — založil Kolis

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ý