• 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?

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
167 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,960 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,960 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,400 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,130 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ź 124 wizyt
pytanie zadane 14 stycznia 2017 w C i C++ przez Milesq Nałogowiec (31,490 p.)
0 głosów
1 odpowiedź 85 wizyt
pytanie zadane 17 marca w C i C++ przez BKantur Nowicjusz (160 p.)
0 głosów
3 odpowiedzi 11,049 wizyt
pytanie zadane 6 maja 2016 w C i C++ przez Mick_SQ6IYV Użytkownik (960 p.)

89,777 zapytań

138,386 odpowiedzi

309,503 komentarzy

59,681 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 1088p. - Argeento
  2. 1032p. - nidomika
  3. 1024p. - rucin93
  4. 1020p. - Michal Drewniak
  5. 1014p. - Łukasz Eckert
  6. 1006p. - Mikbac
  7. 988p. - TheLukaszNs
  8. 963p. - JMazurkiewicz
  9. 960p. - adrian17
  10. 945p. - Jarosław Roszyk
  11. 941p. - Hubert Chęciński
  12. 920p. - Mawrok
  13. 914p. - overcq
  14. 859p. - ssynowiec
  15. 848p. - Adam Salamon
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...