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

Skalowanie tablicy C++

Object Storage Arubacloud
0 głosów
334 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,320 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ź 539 wizyt
pytanie zadane 22 stycznia 2021 w C i C++ przez Capablanka Początkujący (320 p.)
+1 głos
2 odpowiedzi 275 wizyt
pytanie zadane 14 sierpnia 2021 w HTML i CSS przez Dawidziu Bywalec (2,610 p.)
0 głosów
0 odpowiedzi 274 wizyt

92,656 zapytań

141,546 odpowiedzi

319,987 komentarzy

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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...