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

Skalowanie tablicy C++

Cloud VPS
0 głosów
622 wizyt
pytanie zadane 22 lutego 2023 w C i C++ przez pijawki_leczom Początkujący (300 p.)
Witam, dałby ktoś jakąś implementację skalowania elementów tablicy? Chodzi o to, że, jeśli mam tablicę tab[] = {1, 10, 100000000000, 5, 9}, to żeby zmodyfikować ja tak, żeby wyglądała tak: {1, 4, 5, 2, 3}, czyli, żeby zależności, między nimi pozostały (np. pierwszy nadal jest mniejszy od np. drugiego elementu), ale, żeby wartości były jak najmniejsze, ale jednocześnie dodatnie.

Wiem, że trzeba jakoś użyć std::pair albo własnej struktury, ale nie wiem własnie jak. Pomozecie? Dzieki z gory

1 odpowiedź

+1 głos
odpowiedź 22 lutego 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
wybrane 23 lutego 2023 przez pijawki_leczom
 
Najlepsza
Sortujesz liczby w strukturze, trzymając wartość oraz idx. I teraz łatwo możesz odtworzyc wynik, bo np jeśli najmniejsza liczba (już posortowana) ma idx 5, to jeśli tablica wyn trzyma wyn, to wyn[5] = 1, i tak idziesz sobie od najmniejszych. O(N lg N), ze względu na konieczność sortowania.
komentarz 22 lutego 2023 przez pijawki_leczom Początkujący (300 p.)

udalo mi sie cos takiego zrobic na razie, ale nie rozumiem troche o co chodzi z ta tablica wyn.

#include <iostream>
#include <algorithm>

using namespace std;

struct Element
{
	int war, idx;

	bool operator < (Element &element)
    {
		if (war == element.war)
			return (idx < element.idx);
		return (war < element.war);
	}
};

Element a[100];
int n;

int main()
{
	cin >> n;

	for (int i = 1; i <= n; i++)
    {
		cin >> a[i].war;
		a[i].idx = i;
	}

	sort(a + 1, a + n + 1);
}

 

komentarz 22 lutego 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
Tablica wyn, to to co chcesz uzyskać, zwrócić jako wynik.
1
komentarz 22 lutego 2023 przez pijawki_leczom Początkujący (300 p.)
ahahh, dobra juz kumam, bo wiesz, potrzebuje tego do zadania radiotelegraf
1
komentarz 22 lutego 2023 przez pijawki_leczom Początkujący (300 p.)
i juz zaczynam implementacje
komentarz 22 lutego 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
no właśnie, to jest ten proces skalowania.
komentarz 23 lutego 2023 przez Oscar Nałogowiec (29,360 p.)
Zamiast dopisywać pole  można zastosować oddzielną tablice intów, traktowanych jako indeksy tablicy wyjściowej i posortować te inty. Coś jak klucze w bazach danych. Oryginalna tablica jest nie zmieniana. Można mieć wiele takich tablic sortujących, według różnych kryteriów.

Podobne pytania

0 głosów
1 odpowiedź 721 wizyt
pytanie zadane 22 stycznia 2021 w C i C++ przez Capablanka Początkujący (320 p.)
0 głosów
0 odpowiedzi 102 wizyt
pytanie zadane 31 grudnia 2024 w Inne języki przez niezalogowany
+1 głos
2 odpowiedzi 332 wizyt
pytanie zadane 14 sierpnia 2021 w HTML i CSS przez Dawidziu Bywalec (2,630 p.)

93,466 zapytań

142,459 odpowiedzi

322,730 komentarzy

62,846 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

Kursy INF.02 i INF.03
...