effy_ 5 Napisano 7 Grudnia 2014 Udostępnij Napisano 7 Grudnia 2014 Cześć wszystkim. Mam problem z zadaniem.. i potrzebuję Waszej pomocy. :< http://i.imgur.com/X3UoZHj.png?1 Zadanie pierwsze już mam: http://www.wklejto.pl/217365 Gdyby ktoś mi pomógł z drugim zadaniem, byłoby mi bardzo miło. Cytuj Link to post Share on other sites
Famas_94 18 Napisano 7 Grudnia 2014 Udostępnij Napisano 7 Grudnia 2014 Do posortowania tablicy polecam sortowanie bąbelkowe (jest chyba najprostsze) składa się z dwóch pętli for i warunku if. Tutaj masz to łądnie rozpisane http://www.algorytm.edu.pl/algorytmy-maturalne/sortowanie-babelkowe.html Cytuj Link to post Share on other sites
PLSBX 319 Napisano 7 Grudnia 2014 Udostępnij Napisano 7 Grudnia 2014 A ja bym polecał pokombinować z pętlami. Gotowe rozwiązanie sortowania ci nic nie pomorze a tak sam spróbujesz coś zrobić/wymyślić. Cytuj Link to post Share on other sites
effy_ 5 Napisano 7 Grudnia 2014 Autor Udostępnij Napisano 7 Grudnia 2014 Haha, dzięki za podpowiedzi... Spróbuję coś pokombinować. sam spróbujesz coś zrobić/wymyślić. SAMA*! xd Cytuj Link to post Share on other sites
egzopro 1 Napisano 27 Grudnia 2014 Udostępnij Napisano 27 Grudnia 2014 (edytowane) Gdy elementów do posortowania jest mało wybór algorytmu sortującego praktycznie nie ma znaczenia. Np. funkcja sortująca do zmodyfikowania 1 zadania: void Sortowanie( float tablica[], int rozmiar ) { for( int i = 0; i < rozmiar; i++ ) { int p = i; //Do tej zmiennej zapisujemy najmniejsza znaleziona wartosc tablicy zaczynajac od i for( int j = i + 1; j < rozmiar; j++ ) //Przechodzimy po kolejnych wartosciach nieposortowanych w tablicy { if( tablica[p] > tablica[j] ) //Gdy znajdziemy mniejszy element p = j; //Podmiana wartosci ktora przechowuje wczesniejszy indeks tablicy na indeks tablicy zawierajacy mniejsza wartosc } //Podmiana obecnej wartosci tablicy na kolejna najmniejsza wartosc if( p != i ) //Aby nie przepisywac tego samego elementu { int t = tablica[i]; //Kopia zapasowa wartosci tablicy tablica[i] = tablica[p]; //Przepisanie najmniejszej kolejnej wartosci tablicy na odpowiadajace mu miejsce tablica[p] = t; //Przepisanie wartosci z kopii zapasowej na miejsce wszesniej przypisanej innemu elementowi wartosci tablicy } } } Jest to chyba najprostsze sortowanie i najmniej efektywne ale do małej ilości elementów się sprawdzi. Wywołanie funkcji w main: Sortowanie( waluta, dni ); Przykładowa funkcja mediany: void Mediana( float tablica[], int rozmiar ) { if( rozmiar % 2 ) //Sprawdzenie czy wartosc jest parzysta czy nieparzysta cout << "Mediana wynosi: " << (tablica[rozmiar/2-1] + tablica[rozmiar/2])/2 << endl; //2 elementy ze srodka (rozmiar/2-1 [-1] ze wzgledu na indeksowanie od 0) else cout << "Mediana wynosi: " << tablica[ rozmiar / 2 - 1 ] << endl; } Wywołanie funkcji w main: Mediana( waluta, dni ); Lepiej używać funkcji niż cały kod wykonywać w main, kod jest bardziej przejrzysty, a w razie potrzeby ponownego wykorzystania danego kodu wystarczy wywołać ponownie funkcje. No i najważniejsze jest to zalecane a nawet wymagane. Przykładowo jak mogłaby wyglądać funkcja main w oparciu o podany kod: int main() { int dni; float *waluta; cout << "Ile dni ma podany okres: "; cin >> dni; waluta = new float [dni]; WpisanieDoTablicy( waluta, dni ); PokazTablice( waluta, dni ); SumaiSrednia( waluta, dni ); Sortowanie( waluta, dni ); PokazTablice( waluta, dni ); Mediana( waluta, dni ); delete [] waluta; return 0; } Edytowane 27 Grudnia 2014 przez egzopro 1 Cytuj Link to post Share on other sites
piotr.potulski 39 Napisano 28 Grudnia 2014 Udostępnij Napisano 28 Grudnia 2014 Jak to jest jeszcze aktualne, to proponuję zerknąć na std::sort() - zapodajesz tablicę i ci ją sortuje. Mediana to wartość środkowego wyrazu ciągu, więc możesz sobie wziąć odpowiedź z postu wyżej. BTW - czy was pokręciło, żeby proponować komuś własnoręczne pisanie sortowania?!! I to jeszcze używając sortowania przez wybieranie... Cytuj Link to post Share on other sites
egzopro 1 Napisano 28 Grudnia 2014 Udostępnij Napisano 28 Grudnia 2014 Sortowanie przez wybieranie jest chyba najbardziej naturalne, a szczególnie gdy chodzi o rozwiązywanie podstawowych przykładów w trakcie nauki programowania (gdy sami mamy wymyślić sposób rozwiązania danego zadania). Chciałem tylko właśnie taki prosty przykład implementacji funkcji dla danego zadania przedstawić i tylko tyle. Jeżeli ten przykład jest naprawdę aż tak bardzo słaby czy też żenujący to mogę go usunąć Oczywiście znam bardziej wydajne metody sortowania aczkolwiek wiem że nie ma sensu utrudniać komuś zadania w trakcie nauki składni języka programowania skomplikowanymi i trudniejszymi w zrozumieniu algorytmami gdyż w razie potrzeby sięgnie do odpowiednich bibliotek lub materiałów z tym związanych. Natomiast myślę że std::sort() nie jest odpowiednim rozwiązaniem tego zadania gdyż "Napisz program, który: " chyba raczej wymaga własnej implementacji kodu danego zadania niż pójście na skróty i użycie bibliotecznej funkcji. I wydaje mi się że są to zadania dla osoby uczącej się programowania a więc bardziej sprawdzenie kreatywności danej osoby niż optymalnie napisanego kodu. Cytuj Link to post Share on other sites
piotr.potulski 39 Napisano 4 Stycznia 2015 Udostępnij Napisano 4 Stycznia 2015 Idąc twoim tokiem rozumowania można by dojść do konieczności napisania własnego kompilatora. Gdyby w takiej głupocie trzeba było dołączać jakieś zewnętrzne biblioteki, to bym się zastanowił, ale użycie funkcji z biblioteki standardowej.... A jeśli już od kogoś wymagają napisania sortowania, to zdążyli już wspomnieć o jakichś podstawowych metodach. Implementacja Quick Sort nie jest jakąś czarną magią. Cytuj Link to post Share on other sites
effy_ 5 Napisano 5 Stycznia 2015 Autor Udostępnij Napisano 5 Stycznia 2015 egzopro - Trochę po czasie... ale bardzo dziękuję za naprawdę wyczerpujące rozwiązanie. ;D Przyda się. W sumie teraz mam kolejne pytanie. XDDDD http://i.imgur.com/Aw071gZ.png?1 Chodzi o tę drugą część zadania, z literą. x; Cytuj Link to post Share on other sites
Naleśniczek 4 Napisano 7 Stycznia 2015 Udostępnij Napisano 7 Stycznia 2015 #include <algorithm> std::string napis = "jakis tam napis ktory zawiera litery, moze nawet wiecej niz jedno a"; size_t ile_wystapien_a = std::count(napis.begin(), napis.end(), 'a'); Cytuj Link to post Share on other sites
effy_ 5 Napisano 9 Stycznia 2015 Autor Udostępnij Napisano 9 Stycznia 2015 Dzięki! Ale trochę za późno. : / Ogólnie wykonaliśmy to za pomocą funkcji. XD Mam kolejne pytanko. xD http://i.imgur.com/4HsyneE.png?1 Mógłby mi ktoś powiedzieć co tu dokładnie zastosować? XDXD Cytuj Link to post Share on other sites
szatkus 282 Napisano 9 Stycznia 2015 Udostępnij Napisano 9 Stycznia 2015 Jakiś SQLite? iksde Cytuj Link to post Share on other sites
effy_ 5 Napisano 10 Stycznia 2015 Autor Udostępnij Napisano 10 Stycznia 2015 Haha, aż tak szaleć nie można. :'( Cytuj Link to post Share on other sites
Karister 843 Napisano 10 Stycznia 2015 Udostępnij Napisano 10 Stycznia 2015 Jeżeli ta "baza" to kolekcja trzymająca obiekty klasy Książka, to można wygooglować tego typu rzeczy (po ang.). Przykładowa klasa Książka (+ coś o wyszukiwaniu): http://stackoverflow.com/questions/12737171/using-stdfind-with-a-custom-book-class Przykład kolekcji Vector trzymającej obiekty własnego typu i sortowanie: http://stackoverflow.com/questions/1380463/sorting-a-vector-of-custom-objects Cytuj Link to post Share on other sites
egzopro 1 Napisano 11 Stycznia 2015 Udostępnij Napisano 11 Stycznia 2015 Wszystko zależy od tego czy można korzystać z dodatkowych bibliotek aby rozwiązać zadanie czy też nie, przykład podany przez Karister wymaga użycia biblioteki <vector>, natomiast jeżeli w zadaniu nie można korzystać z bibliotek w dość znacznym stopniu ułatwiającym zadanie polecam skorzystać z list jednokierunkowych/dwukierunkowych. Podobny przykład z wykorzystaniem listy jednokierunkowej: http://www.algorytm.org/klasyczne/lista/lista-1-c.html Cytuj Link to post Share on other sites
Karister 843 Napisano 11 Stycznia 2015 Udostępnij Napisano 11 Stycznia 2015 To nie jest żadna biblioteka "Vector" tylko klasa należąca do standardu języka. A jak ktoś zabrania używać standardu, to niech się puknie w łeb a potem skoczy z mostu, żeby uwolnić innych od swojej głupoty. Równie dobrze można zabronić używać tablic, wskaźników i ifów. Cytuj Link to post Share on other sites
egzopro 1 Napisano 11 Stycznia 2015 Udostępnij Napisano 11 Stycznia 2015 "Podaj rozwiązanie bez tablic pomocniczych." - z treści zadania. To zadanie nie jest raczej jakimś projektem w znaczeniu bardziej profesjonalnym, to raczej zadanie które ma pomóc zrozumieć c++ i nauczyć się go od podstaw a część zagadnień trzeba poznać bardziej od środka . Dobrze wiemy że nikt programistą się nie rodzi tylko dochodzi do tego ciężką pracą a upraszczanie wszystkiego na poziomie nauki języka nie jest najlepszą drogą do jego poznania. Cytuj Link to post Share on other sites
Karister 843 Napisano 12 Stycznia 2015 Udostępnij Napisano 12 Stycznia 2015 (edytowane) To nie wyklucza zdania "bez tablicy pomocniczej". Zmienna pomocnicza to dodatkowy twór do ułatwienia implementacji czegoś. Na przykład przepisywanie z jednej tablicy do drugiej w celu sortowania/wyszukiwania. Ale jedna lista/tablica/cokolwiek tak czy siak będzie w tym programie. A czy to będzie własna lista, Vector, tablica- mój wybór. W treści nie jest napisane, że celem zadania jest zaimplementowanie swojej listy, tylko przetworzenie pewnych danych. Edytowane 12 Stycznia 2015 przez Karister Cytuj Link to post Share on other sites
Naleśniczek 4 Napisano 13 Stycznia 2015 Udostępnij Napisano 13 Stycznia 2015 Normalnie, wykorzystac liste Cytuj Link to post Share on other sites
effy_ 5 Napisano 26 Stycznia 2015 Autor Udostępnij Napisano 26 Stycznia 2015 Dobra, mam następne pytanie. XD Da się jakoś zaradzić niezgodności kompilatorów? o; Program jest wykonany w C++ Builder xe7, a chciałabym, żeby kompilował się w kompilatorze Dev. Cytuj Link to post Share on other sites
szatkus 282 Napisano 26 Stycznia 2015 Udostępnij Napisano 26 Stycznia 2015 (edytowane) Pisać tak, żeby kompilował się w obu No i oczywiście obadać flagi tych kompilatorów (bo np. jeden może obsługiwać pewne cechy jezyka domyślnie, a drugi dopiero z jakimś parametrem). W każdym razie żadne dwa kompilatory nie są ze sobą w 100% zgodne. Rozjazdy są czasem nawet między poszczególnymi wersjami, dlatego np. Firefox OS używa starego GCC. Edytowane 26 Stycznia 2015 przez szatkus Cytuj Link to post Share on other sites
effy_ 5 Napisano 28 Stycznia 2015 Autor Udostępnij Napisano 28 Stycznia 2015 Ok, dzięki za odpowiedź! Cytuj Link to post Share on other sites
effy_ 5 Napisano 7 Marca 2015 Autor Udostępnij Napisano 7 Marca 2015 (edytowane) ________ Siema, znów mam problem. Tym razem z Javą... ;_; Zadanie jest ogólnie banalne, a ja nie wiem jak to za bardzo zrobić. xdddd Mam proste zadanie; ma być zmienna 'a' o wybranej wartości i proste działanie. Strukturalnie to ogarniam, ale obiektowo nie bardzo. Napisałam coś takiego: public class zad { double a; public double obl() { return a*2; } public static double main(String[] args) { zad zad_ = new zad(); zad.a=5; System.out.println(zad.obl()); } } Pewnie padniecie przez to... Ale muszę się dowiedzieć jak to powinno wyglądać. :'( ////// Dobra, problem już sama rozwiazałam. xd Edytowane 7 Marca 2015 przez effy_ Cytuj Link to post Share on other sites
effy_ 5 Napisano 7 Maja 2015 Autor Udostępnij Napisano 7 Maja 2015 I znów ja... </3 Tym razem mam problem... ale z asemblerem. ;_; Mam napisać symulator do wyznaczania średniej geometrycznej i arytmetycznej z 10 liczb całkowitych wprowadzanych przez użytkownika, przy czym liczby, które będzie wprowadzał użytkownik mogą być dodatnie i ujemne. Czy jest ktoś, kto ogarnia asemblera? xDDD Cytuj Link to post Share on other sites
wirher 112 Napisano 7 Maja 2015 Udostępnij Napisano 7 Maja 2015 Pierwsza kwestia, to powiedz jakie assembly. Druga, to pokaż co już masz i z czym masz problem. Cytuj Link to post Share on other sites
Recommended Posts
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.