Skocz do zawartości

jakubkwa

Użytkownik
  • Liczba zawartości

    101
  • Rejestracja

  • Ostatnia wizyta

Odpowiedzi dodane przez jakubkwa

  1. Co do silni to znalazłem przed chwilą gotową funkcję i wzór jest jeszcze inaczej ;)

     

    double silnia (double n)
    {
       if (n==0) return 1;
       if (n==1) return 1;
    
       return silnia (n-1)*n;
    }

    No tak, to jest funkcja rekurencyjna, tylko jeśli chciałbyś jej użyć w tym programie i w każdej iteracji wywoływać silnia(i), to stanowczo Ci to odradzam, bo w tym wypadku za każdym razem wartość funkcji liczona jest od nowa. Lepiej wykorzystać fakt, że tu jest już jakaś iteracja i przy okazji sobie obliczać silnię.

     

    Ja ten program - bazując na Twoim rozwiązaniu - napisałbym tak:

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main()
    {
    
    double x, eps, sil, pot, sum;
    cout << "Podaj x:" << endl;
    cin >> x;
    cout << "Podaj epsilon:" << endl;
    cin >> eps;
    
    if (eps > 1) cout << 1; // przypadek brzegowy -> dla i=0 wartość x^i/i! = 1 dla dowolnego x, a więc jeśli eps > 1 to eps > x^i/i!, więc warunek zakończenia pętli jest spełniony i nie ma po co w nią wchodzić
    else
    {
    	sum = sil = 1.0; // wartości początkowe są takie, jakie byłyby w przypadku policzenia x^i/i! dla i=0
    	pot = x; // j.w.
    	for (int i=1; pot/sil >= eps; i++) // wartości dla i=0 mamy ustawione jako początkowe, więc pętlę zaczynamy od i=1
    	{
    		pot = pot*x; // nie wiem jak dokładnie działa pow(), ale podejrzewam że liczy wszystko od nowa podobnie jak rekurencyjna silnia, a więc tu - podobnie - liczymy sobie kolejne potęgi po drodze, mniejsza złożoność obliczeniowa gwarantowana
    		sil = sil*i;
    		sum += (pot/sil); // dodajemy do sumy kolejne jej składniki
    	}
    	cout << sum << endl;
    }
    
    return 0;
    }

  2. Powinien być, ale AFAIR to kompilatory se radzą bez niego :>

     

    A co do kodu - silnię się jednak z tego co pamiętam liczy trochę inaczej - w kolejnych iteracjach robimy s=s*i (oczywiście trzeba uważać z wartością początkową i=0, albo trza walnąć ifa, albo jakoś sprytniej to zapisać), bo z s=s*(s+1) to nie wiem co wyjdzie ;) Druga rzecz - chwilowo w ogóle nie liczysz sumy, tylko jej kolejne składniki, a chyba nie o to chodzi.

  3. LISTA ZMIAN:

     

    Polska:

    • zmiany w sztabach szkoleniowych wszystkich klubów z Ekstraklasy i 1. ligi polskiej, aktualne na dzień 10.02.2009;
    • wszelkie zmiany transferowe wśród piłkarzy Ekstraklasy i 1. ligi polskiej, aktualne na dzień 10.02.2009;
    • zmiany atrybutów wielu zawodników Ekstraklasy i 1. ligi polskiej;
    • zmiany w kontraktach wielu zawodników;
    • dodanie kilku nowych postaci, np. Radosław Matusiak;
    • dodanie polskich znaków diakrytycznych w nazwiskach zawodników;

    Świat:

    • wszelkie zmiany w sztabach szkoleniowych wszystkich klubów aktualne na dzień 10.02.2009;
    • wszelkie zmiany transferowe wśród piłkarzy aktualne na dzień 10.02.2009 z większości lig europejskich;
    • dodanie wielu nowych postaci, np. Evans Chikwaikwai;
    • zmniejszenie/zwiększenie atrybutów niektórych zawodników;
    • aktualizacja trenerów reprezentacji;

    Dodatek wykonany został przez zespół Revolution Update Team, w którego skład wchodzą współpracownicy CM Revolution - GeedieZ, Qqlkan, Fudi i Messinho - oraz kilku redaktorów naszego serwisu. Podziękowania dla Vetra za wyrażenie zgody na użycie pliku Vetr CFM Fake Patch v.2.1.

     

    FM 2009 Revolution Update v1.0

  4. Po wielu miesiącach pracy i przygotowań możemy w końcu zaprosić również na angielską wersję naszej strony, która dzisiaj oficjalnie startuje. Znaleźć ją można pod adresem http://www.football-manager.info/, zapraszamy!

     

    A jeśli ktoś z Was czuje się na siłach pomóc nam w dalszym rozwoju angielskiej wersji językowej serwisu, prosimy zgłaszać się do Reapera (reaper@cmrev.com) - drzwi Rewolucyjnego Ministerstwa Spraw Zagranicznych są wciąż otwarte ;)

  5. Profesorowi chodziło raczej, o to jak wygląda Marynia i jakie może zostawić ślady w psychice ludzi z manifestów, czyt. to Marynia jest "inna, psychiczna" itp. Przynajmniej ja tak to rozumiem.

    Rzeczywiście, można to i tak odczytać, i mam nadzieję, że o to właśnie Profesorowi chodziło ;) Niemniej traktując autora jako przedstawiciela grupy udzielających się w Maryni udało mi się zinterpretować to inaczej, widać nietrafnie :zawstydzony: Profesor - przepraszam za przeinaczenie intencyj.

  6. Po pierwsze - to jest już sprawa naszych użytkowników i ich wola, gdzie chcą na dany temat dyskutować. Jeśli ktoś woli rozmawiać o tym na forum niż w komentarzach pod swoim manifestem - proszę bardzo, nie bronimy tego, ale nie będziemy też do tego zmuszać.

    Po drugie - prosiłbym jednak nie obrażać naszych czytelników i nie wiązać faktu odwiedzania naszej strony z występowaniem u takich osobników urazów psychicznych (alternatywnie - o przedstawienie badań lub konkretnych dowodów na istnienie takiego powiązania).

  7. A no fakt, kropki na przecinki zmienią się tylko w Stringu linia_tekstu, z którym nic potem nie robimy. Trzeba by to zapisywać do jakiegoś nowo utworzonego pliku, a po skończonej całej operacji zamknąć oba obiekty plikowe i zmienić nazwę naszego nowego pliku na nazwaPliku która jest argumentem funkcji (być może uprzednio usuwając stary plik pod tą nazwą). Pewnie można to zrobić prościej, ale nic mi nie przychodzi do głowy :P

  8. package zaliczenie2;
    
    import java.util.*;
    
    public class OrderedArrayList extends ArrayList
    {
    ArrayList<Double> lista = new ArrayList<Double>();
    
    public boolean add(double value)
    {
    		int i=1;
    		while (lista.get(i)<value) i++;
    		lista.add(i,value);
    		return true;
    	}
    
    public boolean addFirst(double value)
    {
    	lista.add(0, value);
    	return true;
    }
    }

    tak zrobilem te klase, ale przy uruchomieniu programu wywala wyjatek IndexOutOfBoundsException, ktorego nie potrafie naprawic :/

     

    Jak dodasz pierwszy element, to jego indeks wynosi 0. Chcąc dodać kolejny wywołujesz funkcję w funkcji add lista.get(i) dla i=1, próbujesz pobrać nieistniejący element, stąd wyjątek.

     

    Ja bym to napisał tak:

    public void add(double value)
    {
    int i = 0;
    while (i < lista.size() && value >= lista.get(i)) i++;
    list.add(i, value);
    }

    I jest to jedna funkcja do dodawania każdego elementu, nie ma potrzeby dodawania funkcji addFirst, która jest IMO dosyć dziwnym rozwiązaniem. Lepszy też w tym wypadku jest zwracany typ void, bo skoro zawsze masz zwracać true, to po co boolean, skoro nie niesie to za sobą żadnej informacji?

     

    PS Nie testowałem tego kodu, co go napisałem, więc błędy są wielce prawdopodobne ;)

     

    druga rzecz, przy ktorej program sie wysypuje to metoda zamieniajaca przecinki na kropki

    // public static void zamienPrzecinkiNaKropki(String nazwaPliku) throws IOException
    {
    	BufferedReader odczyt = new BufferedReader(new FileReader(nazwaPliku));
    	String linia_tekstu;
    	while ((linia_tekstu = odczyt.readLine()) != null)
    	{
    		(linia_tekstu = odczyt.readLine()).replace(",",".");
    	}
    }

    tutaj tez program sie skompiluje, ale podobnie jak wczesniej, przy uruchomieniu wywala sie wyjatek, tym razem jest to NullPointerException i rowniez nie wiem jak temu zaradzic

     

    Tutaj jedyne co mi przychodzi na myśl to to, że błąd bierze się z tego, że wywołujesz readLine() po raz drugi już w ciele pętli. To jest chyba w ogóle niepotrzebne - w końcu tu: while ((linia_tekstu = odczyt.readLine()) != null) przypisujesz zmiennej linia_tekstu odpowiednią wartość, jeśli wywołujesz potem znowu readLine() w ciele pętli, to tak naprawdę zmienisz co drugą linię tekstu. A na koniec, kiedy readLine() zwróci nulla w ciele pętli, a nie w jej nagłówku, to nie ma żadnej kontroli i próbujesz wywołać metodę replace na nullu, skąd NullPointerException. Tak mi się przynajmniej wydaje ;)

  9. Nie znam klasy StreamTokenizer, ale wygląda na to, że to w jej użyciu tkwi błąd. Mianowicie pobierasz w pętli token, a następnie przypisujesz jego wartość liczbową zarówno zmiennej a, jak i b. Współrzędna y nie jest więc wcale zmieniana, tylko ustawiana na taką samą jak x już na początku. Musisz wywołać metodę nextToken() jeszcze raz przed drugim pobraniem wartości atrybutu nval.

  10. Jestem pewien, że swego czasu Svijanska Desitka była dostępne we Wrocku na ulicy Szczęśliwej w bardzo dobrze wyposażonym sklepie o wdzięcznej nazwie Browarek. Jak sytuacja wygląda teraz - nie wiem, dawno tam nie byłem.

     

    Co do sklepów w centrach handlowych, to również w Arkadach Wrocławskich i tamtejszym Alma Markecie sytuacja z piwami wygląda ciekawie, głównie jednak z importowanymi. Widziałem tam ostatnio m.in. poszukiwaną przeze mnie od dłuższego czasu Schlenkerlę Maerzen - piwo wędzone. Bardzo interesujące, nieporównywane doznania smakowe ;)

     

    Swoją drogą będąc ostatnio w Spiżu muszę z przykrością stwierdzić, że tamtejsze pszeniczne strasznie obniżyło loty :/ Długo tam nie byłem i chyba po ostatniej wizycie prędko znów nie zagoszczę. Jakieś to takie kwaśne, zero posmaków charakterystycznych dla pszenicy. Ble.

  11. Z moich wielce zaawansowanych obliczeń wynika, że lada dzień będę mógł podpisać kontrakt z CMF Basket Team, więc jeśli znajdzie się jeszcze dla mnie miejsce, to czekam na ofertę ;)

  12. Przede wszystkim - masz rację co do użycia metody equals. Jeśli chcesz porównywać napisy, a nie referencje do nich, musisz używać equals ;) Użycie tej metody nie jest trudne, zamiast np.

    nazw != osoba[i].nazwisko

    piszesz po prostu

    !nazw.equals(osoba[i].nazwisko)

    [CIACH - tu były bzdety, sorka ;)]

    Poza tym - druga pętla while i literówka: (osoba[j] instanceof Pracownik && nazw2 != osoba[i].nazwisko) j++;

    Trzecia pętla, tym razem for, to również literówki:

    for(int k=0; i<liczba; i++)

    if (osoba[k] instanceof Pracownik)

    if (((Pracownik)osoba[k]).pensja < pensja1)

    ((Pracownik)osoba[k]).pensja *= 1.1;

    To tak na pierwszy rzut oka

  13. Gwoli ścisłości - Heban jest już tylko podtrzymywaną przez Juranda marką, bo sam browar z tego co wiem padł jakiś czas temu. Piwo produkowane jest jeśli się nie mylę w Czechach (Budziejowice). No chyba że trafiłeś na rzeczywiście jakąś ostatnią partię olsztyńską, ale nie wydaje mi się (generalnie jeśli butelka ma złotko na szyjce, to znaczy że to czeski Heban, jeśli zaś krawatkę, to wprost z Olsztyna).

  14. Wydaje mi się, że działa Ci to źle dlatego, że robisz to dla całej macierzy, czyli zamieniasz ze sobą dane pola dwukrotnie, co w efekcie sprawia, że wracają do swoich pierwotnych stanów :>

    Wystarczy to wykonać dla połowy elementów znad lub spod głównej przekątnej, np.

     

    void transponowanieMacierzy()
    {
    int p=0;
    	for (int i=0; i<rozmiar; i++)
    		for (int j=0; j<i; j++) // tu jedyna modyfikacja - j<i zamiast j<rozmiar
    			{
    				p = tablica[i][j];
    				tablica[i][j] = tablica[j][i];
    				tablica[j][i] = p;
    			}
     }

  15. No argumentacja powalająca, nie ma co :)

    Gdyby nasi byli tacy mocni, to nie Robinson, tylko Kuszczak by bronił w Tottenhamie, a nie grzał ławkę, to samo z Fabiańskim.

    Gdyby nasi byli tacy mocni, to nie Pawełek, tylko Kuszczak by bronił w Wiśle, a nie grzał ławkę, to samo z Fabiańskim (oczywiście, tak jak Ty, przemilczę w jakich klubach i z jakimi rywalami te ławki grzeją, faktem jest, że Wisła woli Pawełka od nich!).

     

    Przecież hasło, że każdy z naszej trójki reprezentacyjnej jest lepszy od trójki angielskiej, to bzdura. ;) Wystarczy spojrzeć na to, jak siedzą na ławce w klubach nasi, a jak bronią Anglicy - Robinson i Green

    Na podstawie tego argumentu KAŻDY grający w pierwszym składzie bramkarz jest lepszy od KAŻDEGO siedzącego na ławce. To jest dopiero bzdura.

     

    BTW ja nie twierdzę, że duet Kuszczak-Fabiański jest lepszy od duetu Robinson-Green ani też że jest na odwrót - według mnie kunszt bramkarski to nie są wartości tak łatwo porównywalne, jak niektórzy tutaj starają się to przedstawić.

  16. Coś się musiało spsuć. Wysyłam ponownie.
    Jakubkwa, kliknij po wejściu do 'My Crib' na '0 new contracts' i pojawi Ci się oferta od CMF Team.

     

    No niestety, dalej nic :> Wita mnie jakże urocze Sorry, no pending contracts available. Najwyraźniej ktoś z wyższej góry niż Jabol nie widzi mnie w CMF Basket Team :]

×
×
  • Dodaj nową pozycję...