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

Provnání hodnot – C / C++ – Fórum – Programujte.comProvnání hodnot – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Keyzio
~ Anonymní uživatel
40 příspěvků
25. 10. 2012   #1
-
+1
-
Zajímavé

Ahoj, mam porovnat dva trojúhelníky jestli jsou schodné tzn. jestli jsou ve stejném poměru přičemž se nemůžu spoléhat na pořadí zadaných stran.

Zatím jsem vymyslel toto ale testování podobnosti mi stále chybí a nevím jak na něj.

#include <stdio.h>

main()
{
double A;
double B;
double C;
double D;
double E;
double F;

printf("Zadejte velikost stran prveho trojuhelniku:\n");
scanf("%lf%lf%lf", &A, &B, &C);

if ( A + B <= C || A + C <= B || B + C <= A || A <= 0 || B <= 0 || C <= 0 ) {
  printf("Nespravny vstup.\n");
}
else {
  printf("Zadejte velikost stran druheho trojuhelniku:\n");
  scanf("%lf%lf%lf", &D, &E, &F);
   if ( D + E <= F || D + F <= E || E + F <= D || D <= 0 || E <= 0 || F <= 0 ) {
   printf("Nespravny vstup.\n");
  }
   else {
    printf("rozhodnuti o podobnosti trojuhelniku");
  }
}
}

Nahlásit jako SPAM
IP: 78.80.54.–
Reklama
Reklama
Lukas
~ Anonymní uživatel
275 příspěvků
25. 10. 2012   #2
-
0
-

Přesně toto jsem řešil minulí týden. Záleži jestli půjdou strany po sobě nebo ne :) příklad: 2,3,4 je podobný s 4,6,8 pokud jdou strany po sobe. Pokud nejdou tak je podobny i 2,3,4 s 6,4,8 :)

Nahlásit jako SPAM
IP: 89.103.102.–
Keyzio
~ Anonymní uživatel
40 příspěvků
25. 10. 2012   #3
-
0
-

#2 Lukas
no prave a jeste k tomu maji byt podobné i pri rozdilu jedno desetiny...nevite jak na to ?

Nahlásit jako SPAM
IP: 78.80.54.–
Lukas
~ Anonymní uživatel
275 příspěvků
25. 10. 2012   #4
-
0
-

Nejsi nahodou z FITu? :) jinak musis zjistit vsechny mozny kombinace pro ktery to plati :)

(A/D==B/E==C/F) nebo (A/F==B/D==C/E) nebo (A/F==B/E==C/D) nebo (A/D==B/F==C/E) nebo (A/E==B/D==C/F)(A/E==B/F==C/D)....

Co se týká zaokrouhlení použij floor...př: floor(x*10)/10 ti zaokrouhlí na desetiny :)

Nahlásit jako SPAM
IP: 89.103.102.–
Keyzio
~ Anonymní uživatel
40 příspěvků
25. 10. 2012   #5
-
0
-

#4 Lukas
j jsem z FITu a zjistil jsem co je za peklo progtest :D jdu na to mrknout Díky

Nahlásit jako SPAM
IP: 78.80.54.–
vitamin+8
Grafoman
25. 10. 2012   #6
-
0
-

#4 Lukas
toto (a aj ostatne vyrazy):

(A/D==B/E==C/F)

nerobia to co by si chcel :)

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Keyzio
~ Anonymní uživatel
40 příspěvků
25. 10. 2012   #7
-
0
-

Tak mě napadlo je, že porovnám - k ∈ Z \ 0 - ( A == k*B && B == k*E || A == k*B && B == k*F ||A == k*B && C == k*E || A == k*B && C == k*F || atd..................ale nevim jak to zapsat....tím myslím - k ∈ Z \ 0 -

Nahlásit jako SPAM
IP: 78.80.54.–
Lukas
~ Anonymní uživatel
275 příspěvků
25. 10. 2012   #8
-
0
-

#6 vitamin
takhle ne no...chtel jsem jen ukazat jaky jsou mozny kombinace :)... jinak by to bylo asi takhle? nebo teda takhle podobne to mam ja : (A/D==B/E)&&(B/E==C/F)&&(A/D==E/F) atd...

Nahlásit jako SPAM
IP: 89.103.102.–
Keyzio
~ Anonymní uživatel
40 příspěvků
26. 10. 2012   #9
-
0
-

A jak tedy porovnám 3 hodnoty mezi sebou ? Tím myslím např. A/D = B/E = C/F = nějaká konstanta ?

Nahlásit jako SPAM
IP: 78.80.54.–
vitamin+8
Grafoman
26. 10. 2012   #10
-
0
-

   

(A/D == k && B/E == k && C/F == k)
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Keyzio
~ Anonymní uživatel
40 příspěvků
26. 10. 2012   #11
-
0
-

#10

už mi asi zbývá jen, jak vyřešit zaokrouhlení...nemůžu najít syntaxi pro floor. Chtěl bych něco jako:

	double ad = A/D;
	double floor(ad*10)/1000; /* zde potřebuji zaokrouhlit na tisíciny
Nahlásit jako SPAM
IP: 78.80.54.–
vitamin+8
Grafoman
26. 10. 2012   #12
-
+1
-
Zajímavé
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Keyzio0
Newbie
26. 10. 2012   #13
-
0
-

#12 vitamin
No dobře, googli jsem a častou jsou uvedené příklady na tento způsob:

double ad = A/D;
ad = round(ad*1000)/1000; //vložení výsledku do proměnné

ale, ať jsem deklaroval třeba i novou proměnou typu double a zkusil to vložit do ní.

Stále mi to píše tuto chybu:

zkouska2.c:(.text+0x1c4): undefined reference to `round'
collect2: ld returned 1 exit status

 

Nahlásit jako SPAM
IP: 78.80.54.–
vitamin+8
Grafoman
26. 10. 2012   #14
-
+1
-
Zajímavé

sry, round je az v c++11, takze ti asi bude musiet stacit floor/ceil :)

edit: tak nie, je aj v c99, je mozne ze math.h vyzaduje prilinkovat kniznicu

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Keyzio0
Newbie
26. 10. 2012   #15
-
0
-

#14 vitamin
Moc děkuji za snahu, ale dělám tam psí kusy a nic platné.

Možná je to dáno nějakou souvislostí, kterou ještě neznám, tak zkusím zveřejnit celý kód jestli není chyba jinde:

#include <stdio.h>
#include <math.h>

main()
{
	double A;
	double B;
	double C;
	double D;
	double E;
	double F;

	printf("Zadejte velikost stran prveho trojuhelniku:\n");
	scanf("%lf%lf%lf", &A, &B, &C);

	if ( A + B <= C || A + C <= B || B + C <= A || A <= 0 || B <= 0 || C <= 0 ) {
		printf("Nespravny vstup.\n");	
	}
	else {
		printf("Zadejte velikost stran druheho trojuhelniku:\n");
		scanf("%lf%lf%lf", &D, &E, &F);
			if ( D + E <= F || D + F <= E || E + F <= D || D <= 0 || E <= 0 || F <= 0 ) {
			printf("Nespravny vstup.\n");
		}
			else {
				double ad = A/D;
				ad = floor(ad*1000)/1000;

		}
	}
}
Nahlásit jako SPAM
IP: 78.80.54.–
vitamin+8
Grafoman
26. 10. 2012   #16
-
+1
-
Zajímavé

Musis prilinkovat kniznicu k math.h

V gcc je na to prepinac -lm

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Keyzio0
Newbie
28. 10. 2012   #17
-
0
-

Tak přepínač - lm jsem přidal a nic ...dávám k dispozici co jsem s čím prováděl

gcc -std=c99 -Wall -pedantic -g -lm zkouska.c -o zkouska

/*
chybové hlášení je:
/tmp/ccNmdyFZ.o: In function `main':
/home/keyzio/Dokumenty/ccko/zkouska2.c:27: undefined reference to `floor'
collect2: ld returned 1 exit status
*/

//a kód vypadá:

#include <stdio.h>
#include <math.h>

int main()
{
	double A;
	double B;
	double C;
	double D;
	double E;
	double F;

	printf("Zadejte velikost stran prveho trojuhelniku:\n");
	scanf("%lf%lf%lf", &A, &B, &C);

	if ( A + B <= C || A + C <= B || B + C <= A || A <= 0 || B <= 0 || C <= 0 ) {
		printf("Nespravny vstup.\n");	
	}
	else {
		printf("Zadejte velikost stran druheho trojuhelniku:\n");
		scanf("%lf%lf%lf", &D, &E, &F);
			if ( D + E <= F || D + F <= E || E + F <= D || D <= 0 || E <= 0 || F <= 0 ) {
			printf("Nespravny vstup.\n");
		}
			else {
				double ad = A/D;
				ad = floor(ad*1000)/1000;
				printf("%lf", ad);

		}
	}
}

				
Nahlásit jako SPAM
IP: 78.80.54.–
Keyzio0
Newbie
28. 10. 2012   #18
-
0
-

#17 Keyzio
Aha, tak jsem na to přišel. Na této stránce: http://www.fit.vutbr.cz/~martinek/clang/gcc.html prezentovali přepínač -lm před soubor.c a ve skutečnosti jsem našel zroj , kde psali přepínač za souborem.c

Takže jsem měl špatně:
 

gcc -std=c99 -Wall -pedantic -g -lm zkouska2.c -o zkouska

a mělo to být:

gcc -std=c99 -Wall -pedantic -g zkouska2.c -lm -o zkouska
Nahlásit jako SPAM
IP: 78.80.54.–
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, 81 hostů

Podobná vlákna

Porovnavanie hodnot — založil olgo

Součet hodnot. — založil Luckaa

Porovnávání hodnot — založil jula

Moderátoři diskuze

 

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