• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czy da się jakoś zoptymalizować jakoś ten program?

VPS Starter Arubacloud
0 głosów
260 wizyt
pytanie zadane 8 maja 2019 w C i C++ przez MrChick888 Obywatel (1,020 p.)

Jak w tytule.

#include <iostream>

using namespace std;

void setTriangle(double *x, double *y, double *z);
void triangle(double x, double y, double z);

int main()
{
	double a, b, c;
	setTriangle(&a,&b,&c);
	triangle(a, b, c);
}
void setTriangle(double* x, double* y, double* z)
{
	cout << "Podaj dlugosci bokow trojkata: " << endl;
	cout << "1 - ";
	cin >> *x;
	cout << "2 - ";
	cin >> *y;
	cout << "3 - ";
	cin >> *z;
	system("cls");
}
void triangle(double x, double y, double z)
{
	if (x > y && x > z)
	{
		if (x < y + z) cout << "Z odcinkow dlugosci " << x << ", " << y << ", " << z << " mozna zbudowac trojkat." << endl;
		else cout << "Z odcinkow dlugosci " << x << ", " << y << ", " << z << " nie mozna zbudowac trojkat." << endl;
	}
	else if (y > x && y > z)
	{
		if (y < x + z) cout << "Z odcinkow dlugosci " << x << ", " << y << ", " << z << " mozna zbudowac trojkat." << endl;
		else cout << "Z odcinkow dlugosci " << x << ", " << y << ", " << z << " nie mozna zbudowac trojkat." << endl;
	}
	else
	{
		if (z < x + y) cout << "Z odcinkow dlugosci " << x << ", " << y << ", " << z << " mozna zbudowac trojkat." << endl;
		else cout << "Z odcinkow dlugosci " << x << ", " << y << ", " << z << " nie mozna zbudowac trojkat." << endl;
	}
}
komentarz 8 maja 2019 przez Secrus Nałogowiec (32,880 p.)
Co masz na myśli, mówiąc o optymalizacji?
komentarz 9 maja 2019 przez DeBos123 Nałogowiec (44,950 p.)

Optymalizacja chyba w każdym programie znaczy to samo: https://pl.wikipedia.org/wiki/Optymalizacja

komentarz 9 maja 2019 przez Secrus Nałogowiec (32,880 p.)
ten program nie ma nawet 50 linii, co tu chcesz optymalizowac?
komentarz 9 maja 2019 przez DeBos123 Nałogowiec (44,950 p.)
Ja tylko odpowiedziałem na twoje pytanie, ale jakby ktoś naprawdę chciał to można trochę zoptymalizować.
komentarz 9 maja 2019 przez mrspock1 Mądrala (6,420 p.)
Tu nie ma żadnej pętli. Jak program działa poprawnie, a widać że zapis nie jest skomplikowany, to nie ma sensu tego zmieniać.

2 odpowiedzi

+2 głosów
odpowiedź 9 maja 2019 przez k222 Nałogowiec (30,150 p.)
wybrane 12 maja 2019 przez MrChick888
 
Najlepsza

Zauważalnie się nie da, ale na siłę jak chcesz to możesz:

  • użyć prontf zamiast cout, '\n' zamiast endl, scanf zamiast cin
  • usunąć napisy, zastąpić je jednym, krótkim, na samym początku - nie muszę wiedzieć którą liczbę wpisuję, a zawsze kilka taktów na wypisywanie tego wszystkiego zaoszczędzisz
  • w funkcji triangle przesłać zmienne przez referencję (dla doubli nie zrobi różnicy, ale jak w przyszłości będziesz miał większe typy - klasy, to już tak, tylko pamiętaj o słówku const)
  • zmienić te wszystkie ify na:
    if (x < y + z && y < x + z && z < x + y)

    jest to krótsze, czytelniejsze, lepiej oddaje co ta funkcja robi a złożoność pozostaje w sumie taka sama (pamiętaj, że jak pierwszy warunek w && nie będzie spełniony, to pozostałę nie są sprawdzane)

Muszę przyznać że jest to mocno na siłę, bo w twoim programi nie ma co ulepszać, ale moooże jak to poprawisz, przepuścisz przez baaardzo długą pętlę i zmierzysz czas wykonania programu, to coś się poprawi.  

 

Btw,
Jak mówimy o optymalizacji to pamiętaj, ze sam kompilator może już duło pomóc, możesz sobie poczytać o tych flagach https://www.rapidtables.com/code/linux/gcc/gcc-o.html , generalnie jak kompilujesz przy pomocy konsoli, lub znajdziesz w środowisku w ustawieniach ustawienia kompilacji, to dodając flagę -O3 kompilacja potrwa dłużej, ale kompilator zrobi wszystko żeby zoptymalizować czas wykonania.

+3 głosów
odpowiedź 8 maja 2019 przez Grzegorz Pustułka Początkujący (470 p.)
zamiast endl dawaj '\n'

Podobne pytania

0 głosów
1 odpowiedź 166 wizyt
pytanie zadane 14 stycznia 2017 w C i C++ przez Milesq Nałogowiec (32,020 p.)
0 głosów
1 odpowiedź 141 wizyt
pytanie zadane 17 marca 2022 w C i C++ przez BKantur Nowicjusz (160 p.)

92,973 zapytań

141,936 odpowiedzi

321,171 komentarzy

62,301 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...