A jenom jsem se chtěl zeptat, nešlo by to celý udělat přes string? protože velká čísla to nevezme. Popřípadě jak :) díky.
Příspěvky odeslané z IP adresy 78.102.189.–
Vím co myslíš, ale já se musel držet zadání a v zadání stálo ukončit program, pokud trojúhelníková nerovnost není splněna. Pokud se špatně chápeme tak to kašlete, stejně už je tento př. za mnou.
Čaute.
Ale je asi ty komenty budu dělat jinak, protože takovou šikanu jsem nečekal.
Tam jde právě o to, že ten stroj ověřuje i vstupy a výstupy :) (jen pro informaci jmenuje se progtest) a také efektivitu a všelijaké jiné kraviny. Kdo by řekl, že může být tak chytrý :) .
BTW.
Ono stačí si do tvého programu dosatit např. a=1, b=2, c=10 a uvidíš jak ti to spadne na výpočtu S.
Strany trojúhelníku splňují trojúhelníkové nerovnosti:
Součet dvou libovolných stran je vždy delší než strana třetí, neboli
a + b > c
.
.
.
Takže by to logicky nemělo jít ne? :)
Nechtěl jsem po někom kód, pokud jsi si všiml tak jsem ho tu dal a chtěl jsem jenom připomínky k efektivnosti. A proto jsem tu dál svůj kód. Ok poznámky jsou přehnané ale každý má svůj styl, pro mně je to tak přehlednější :-) ale ok vezmu to jako kritiku, která není adekvátní tématu. Celkem mi komentář od Honzc přijde od věci, protože mi to stroj zhodnotil na 100%. Ale i tak díky všem za čas. Mějte se...
#3 DB
Tak tohle jsme zplodil, nedalo by se to udělat ještě nějak efektivněji nebo si myslíte, že mi to projde ve škole ? :D
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double a = 0, b = 0, c = 0;
double s = 0, S = 0;
cout << "Zadejte delky stran:\n";
cin >> a >> b >> c;
if (!cin.good() || a<=0 || b<=0 || c<=0) {
cout << "Špatný vstup.\n";
return 0;
} //if (!cin.good() || a<=0 || b<=0 || c<=0)
s = (a+b+c)/(2);
S = sqrt(s*(s - a)*(s - b)*(s - c));
if (S <= 0 || (a+b<c) || (a+c<b) || (b+c<a) ) {
cout << "Trojuhelnik nelze sestrojit.\n";
return 0;
} //if (S <= 0 || (a+b<c) || (a+c<b) || (b+c<a) )
else {
cout << "Trojuhelnik lze sestrojit, obsah je: " << S << endl;
} //else
return 0;
} //int main()
Zdravím, mám malý dotaz. Neví někdo náhodou jak napsat vzorec pro výpočet obsahu trojúhelníku, pokud znám všechny tři strany a, b, c ? Trošku si nevím rady :) . Předem díky.
#2 vitamin
Jo to by asi nějak i šlo :-) . Když tam mám break; tak to vrátí cyklus jenom na začátek a nebo vynuluje hodnoty (například jak tam mám proměnou j) na defaultní?
A ještě takový malý dotaz, kdyby na vstupu byly čísla
a=0
b=10
tak pokaždé, když jsme si to algoritmizoval na papír tak by mi podle mých výpočtu na výstup vyšly hodnoty:
2
3
4
5
6
7
8
9
10
a ne:
2
3
5
7
což by měl být správný výstup. Nějak špatně chápu ten cyklus. Pokaždé mi vyšlo že if(j == i) .
Nějak se nemohu spokojit s tím, že to jenom funguje :-) můj nutkavý pocit to pochopit mi nedá spát :D
Ahojte,
tvořil jsme zrovna program pro výpis prvočísel z intervalu. Našel jsem si podmínku na internetu a po nějaké té hodince, co jsem na to koukal a nepochopil, jak je možné, že to vůbec funguje, jsem se rozhodl napsat na forum.
Kód:
#include <iostream>
using namespace std;
int main(){
int a = 0;
int b = 0;
int i, j;
cout << "Zadejte interval:\n";
cin >> a >> b;
if (!cin.good() || a>b) {
cout << "Nespravny vstup.\n";
return 0;
} //if (!cin.good() || a>b)
for (i=a; i<=b; i++) {
for (j=2; j<=i; j++) {
if (!(i%j)&&(i!=j)) {break;}
if (j==i) {cout << i << endl;}
} //for (int j = 2; j <= i; j++)
} // for (int i = a; i <= b; i++)
return 0;
} // int main()
Nechápu tu část, kde začíná druhý cyklus for a to včetně první podmínky if (!(i%j)&&(i!=j)) {break;}
, když jsem si celý program rozepsal na papír (a to několikrát) hodnoty mi vycházejí jinak, takže to trošku nechápu. Mohl by mi někdo stručně popsat (trošku jako pro blbce?) Byl bych za to hodně vděčný, už se nemám čeho chytnout.
Děkuji moc.
Daniel.
Zkus http://www.codeblocks.org/ mě fungoval na Macu i na Unixu.
Zdravím všechny,
momentálně jsem tvořil jeden program a zasekl jsem se na jednom bodě, jaksi nemůžu dál. Potřeboval bych aby program vypisoval nuly a to stylem:
Na vstupu například zadáme číslo: 5
Výpis
0 0 0 0 0
0 0 0 0
0 0 0
0 0
0
Podařilo se mi udělat cyklus, který hodnoty vypisuje opačně a to od nejmenšího po největší a to následovně:
Vstup: 5
Výstup:
0
0 0
0 0 0
0 0 0 0
0 0 0 0 0
// Výpis hvezdicek na radky
int a=0;
int b=0;
string hvezdica = "* ";
cout << "Zadej číslo v rozmezí od 1 do 10: ";
cin >> cislo;
if (cislo<1 || cislo>10)
{
cout << "Nesprávný vstup\n";
return 0;
}
while (cislo>a)
{
cout << hvezdica;
hvezdica = hvezdica + "* ";
a++;
while (a>b) {cout << "\n"; b++;}
}
Tady je kód.
Bohužel opačně mi to prostě nejde, proto bych byl rád za jakoukoli radu :-) Děkuji všem .
Daniel