• 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
213 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ź 145 wizyt
pytanie zadane 14 stycznia 2017 w C i C++ przez Milesq Nałogowiec (32,020 p.)
0 głosów
1 odpowiedź 125 wizyt
pytanie zadane 17 marca 2022 w C i C++ przez BKantur Nowicjusz (160 p.)

92,452 zapytań

141,261 odpowiedzi

319,074 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...