Jump to content

Mavo

Members
  • Posts

    12
  • Joined

  • Last visited

    Never

Mavo's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. Za trzecim warunkiem masz niepotrzebny ; i powinno być else if
  2. Wcześniej wspomniałem o użyciu zapisu tablicowego w kontekście wskażników, najlepiej pokaże na przykładzie: double wyznacznik(double** tab, int i, int j) { return tab[i][j] = 1000; } Tak jest czytelniej niż tak: double wyznacznik(double** tab, int i, int j) { return *(*(tab+i)+j)=1000; } Można też pozbyć się całkowicie wskaźników i pracować na samych tablicach. Aby przekazać taka tablicę do funkcji musisz określić wcześniej jej wielkość, przykład: double usatwTab(double tab[10][10], int i, int j) { return tab[i][j] = 2.5; }
  3. Odwołanie które chcesz zrobić będzie wyglądało tak: *(*(tab+i)+j) = 1000; Ale polecam nauczyć się zapisu tablicowego (jest czytelniejsz): tab[i][j] = 1000;
  4. A, że temat mnie zainteresował, to dla ciekawych wrzucam jeszcze to. Kod nie jest doskonały i proszę się nie czepiać :) pisany był w pośpiechu i nie było czasu na zmiany. import java.util.*; import java.util.Map.Entry; /** * @author Grzegorz */ public class RozkladWykladniczy { private Random t; public HashMap<String, Integer> map; public RozkladWykladniczy() { this.t = new Random(); this.map = new HashMap<>(); } public double generuj(double lambda) { return -(1/lambda)*Math.log(1 - t.nextDouble()); } public void setHistogram(){ /* * tworzony jest obiekt DecimalFormat, * aby łatwo można było formatować generowane wartości * i przy tym obserwować zmiany na histogramie - szoda, * że nie graficznym :) */ java.text.DecimalFormat df = new java.text.DecimalFormat(); df.setMaximumFractionDigits(2);// największa ilość miejsc po przecinku df.setMinimumFractionDigits(2);// najmniejsza ilość miejsc po przecinku String tmp; int value; for(int i=0; i<200; i++) { tmp = df.format(generuj(2)); if(!map.containsKey(tmp)) { map.put(tmp, 1); } else { value = map.get(tmp); map.replace(tmp, value, ++value); } } } public void showHistogram() { if(map.isEmpty()) { System.out.println("Wartość: 0, Wystąpienia : 0"); } else { for (Entry<String, Integer> entry : map.entrySet()) { System.out.println("Wartość : " + entry.getKey() + " Wystąpienia : "+ entry.getValue()); } } } /* * Metodę dodałem, aby łatwiej przeanalizować wyniki */ public void sortujPoWystapieniach() { List list = new LinkedList(map.entrySet()); Collections.sort(list, new Comparator() { public int compare(Object o1, Object o2) { return ((Comparable) ((Map.Entry) (o2)).getValue()) .compareTo(((Map.Entry) (o1)).getValue()); } }); HashMap sortedHashMap = new LinkedHashMap(); for (Iterator it = list.iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry) it.next(); sortedHashMap.put(entry.getKey(), entry.getValue()); } map = sortedHashMap; } public static void main(String[] args) { RozkladWykladniczy test = new RozkladWykladniczy(); test.setHistogram(); test.sortujPoWystapieniach(); test.showHistogram(); } }
  5. Najlepiej przygotować metodę, która zwróci wartość, a później wywołać ją w pętli np: public class RozkladWykladniczy { Random t = new Random(); public double generuj(double lambda) { double losowa = t.nextDouble(); return -(1/lambda)*Math.log(1-losowa); } public static void main(String[] args) { RozkladWykladniczy test = new RozkladWykladniczy(); for(int i=0; i<100; i++) { System.out.println(test.generuj(2)); } } }
  6. Jest kilka sposobów na odczytanie Twojej liczby. Wszystko zależy od tego jak zapiszesz dane do pliku. Najprostrzy sposób, to zapisać godzin odjazdów autobusów w liniach przyporządkowanych do godzin, tak aby linia 1 to piersza w nocy , 2 linia = 2 godzina i tak dalej. Dane z pliku odczytujesz w pętli, do tego wstawiasz licznik, który będzie odliczał linie. I na kniec if -a, w którym będziesz porównywał godzinę podaną przez użytkownika z linią w pliku. Jeśli to ma być 10 godzina, to odczytasz linię 10 z pliku, w której zapiszesz wszystkie godziny odjazdów autobusów od 10 do 11. Oczywiście są jeszcze inne sposoby odczytania szukanej przez Ciebie liczby, ale na początek ten jest dobry.
  7. Komunikacja na pewno przez sockety i trzeba dołączyć obsługę wątków. Aby każdy klient był obsługiwany przez osobny wątek. http://www.oracle.com/technetwork/java/socket-140484.html Jeżeli ma być opcja "voice chat" lepiej wybrać protokół UDP.
  8. Fajnie, że masz już swój kod teraz można go stopniowo poprawiać. Przede wszystkim trzeba pozbyć się tego długiego warunku w if, a najlepiej całego if - a. Miałeś dobry pomysł, aby przyjrzeć się funkcji isspace. Zwraca ona wartość różną od zera gdy argument, który został przekazany do funkcji jest "białym znakiem". W praktyce będzie to wyglądało tak: while(!isspace(tab_tekstow[i-1][0]) && tab_tekstow[i-1][0] != NULL); Warunek składa się z dwóch części, gdyż dodatkowo trzeba zadbać o przycisk enter
  9. Pytanie błache, ale problem już nie :) Przykładowo, jeżeli masz ciąg znaków w stumieniu, to musisz je sprawdzać znak po znaku (!) i jeżeli trafisz na "biały znak" to przerywasz sprawdzanie. Albo zapisujesz cały strumień w zmiennej i już na niej dokonujesz sprawdzenie. Proponuję zapoznać się z cin.get(), cin.getline(). A! znaki może rzutować na int-y, wtedy łatwo się je sprawdza np. spacja to 32.
  10. ... hm dziwne zadanie, jak na początek nauki. Ten kod kompiluje się bez błędów może Ci pomoże public class Akwarium { private static class CzyDoplynie { public static boolean rybka1( boolean[][] tablica ) { // todo return false; } } public static void main(String[] args) { // próba wywołania CzyDoplynie.rybka1(new boolean[1][1]); } }
  11. Mavo

    iloczyn logiczny

    Część warunkowa w Twoim wyrażeniu jest poprawna, czyli koniunkcja jest dobrze napisana. Błąd jest w składni wyrażenia, gdyż brakuje elementu, który będzie wykonany jeśli warunek nie będzie spełniony. Poprawna forma wygląda następujoco: warunek ? wyrażenie1 : wyrażenie2 Jak widzisz u Ciebie brakuje ostatniej części, jak ją dopiszesz to nie będziesz miał błędu.
  12. public class Prostopadloscian { private int bokA; private int bokB; private int bokC; public Prostopadloscian(int bokA, int bokB, int bokC) { this.bokA = bokA; this.bokB = bokB; this.bokC = bokC; } public void pole() { int s = 2 * ((bokA * bokB) + (bokB *bokC) + (bokA * bokC)); System.out.println("Pole powierzchni = " + s); } public void objetosc() { int v = bokA * bokB * bokC; System.out.println("Objetosc = " + v); } public static void main(String[] args) { Prostopadloscian figura = new Prostopadloscian(3,3,3); figura.pole(); figura.objetosc(); } }
×
×
  • Create New...