Problem z dwoma łatwymi zadankami

0

Witam,
Jestem nowy także moje pytania mogą się wydawać głupie ale bądźcie wyrozumiali przecież każdy kiedyś zaczynał przygody z javą ;)
Mam do zrobienia jakies 6 zadań z czego 3 zrobilem, kolejne mysle ze sam zrobie to kwestia czasu ale z dwoma w ogóle nie moge sobie poradzic :
Pierwsze to :

Napisać program, który:

tworzy i inicjuje z użyciem inicjatora klamrowego tablicę ltab liczb całkowitych,
wylicza sumę jej elementów o parzystych indeksach,
tworzy tablicę łańcuchów znakowych txt, każdy z których składa się z l powtórzeń litery x, gdzie l - kolejny element tablicy ltab, x kolejna litera, poczynając od 'a'.
przestawia miejscami w tablicy txt elementy parzyste i nieparzyste (czyli - uwaga! - pierwszy z drugim, trzeci z czwartym, etc.)
wyprowadza na konsolę w kolejnych wierszach kolejne elementy tablicy txt.
Przykład:
jeżeli tablica ltab zawiera elementy 2, 5, 3, 1, 7 to sumaParzystych = 12.
txt jest tablicą o elementach "aa", "bbbbb", "ccc", "d", "eeeeeee"
wynik dzialania programu:
"bbbbb"
"aa"
"d"
"ccc"
"eeeeeee"

Uwaga: każde z w/w części zadania (oprócz pierwszego) należy oprogramować jako odrębną metodę.

I drugie zadanie :

Napisać program, który wczytuje napisy podawane przez użytkownika (dopóki nie zrezygnuje on z ich wprowadzania), a następnie podaje liczbę wystąpień wszystkich wprowadzonych napisów. Np. po wprowadzeniu napisów Aaa, Bbb, Aaa, Ccc, Aaa, Bbb powinniśmy otrzymać raport: Aaa 3, Bbb 2, Ccc 1.

W celu zliczania liczby wystąpień takich samych napisów użyć tablicy (koniecznie).
Spróbować uwzględnić możliwość wystąpienia całkowicie dowolnej liczby napisów.

0

CO jest trudnego w pierwszym?
Tworzysz tablicę :

int[] ltab = {0,1,2,3,4,5};

Metoda sumująca?

public int suma(){
   int suma = 0;
   for(int i = 0; i< this.ltab.length; i +=2){
      suma +=this.ltab[i];
  }
  return suma;
}

Czy coś jeszcze?

0
  1. Deklarujesz sobie tablicę stringów o powiedzmy 100 elementach, oraz tablicę intów tego samego rozmiaru. Po wczytaniu słowa sprawdzasz, czy jest już ono w tablicy, jeżeli tak to w tablicy intów zwiększasz liczbę wystąpienia tego słowa, jeżeli nie to dodajesz je do tablicy stringów. Jak użytkownik wprowadzi więcej niż 100 słow to deklarujesz nowe tablie o większym rozmiarze i kopiujesz zawartość ze starych.
    Pozdrawiam
0

ok dzieki wielkie zaraz to sprawdze tylko tego 2 za bardzo nie kumam jak to zrobic aby np. sprawdzalo czy slowo juz bylo albo dodawalo do tablicy strongow czy intow :/

0

Chodzi o to, że tworzysz dwie tablice: jedna to tablica Stringów, druga intów. W tablicy stringów przechowujesz słowa, które już wczytałeś. W tablicy intów przechowujesz, ile razy dane słowo wystąpiło. Chodzi o to, że tablicaIntow[i] wskazuje, ile razy wystąpił tekst tablicaStringow[i]. Powinno to tak wyglądać:

String[15] tablica;
int[15] tablicaIntow;

tablica[0] = "Aaa";
tablica[1] = "Bbb";

I teraz jak chcesz sprawdzić, ile razy wczytałeś Bbb, to najpierw wyszukujesz ten ciąg w tablicy i zapamiętujesz indeks (czyli powinieneś w tym wypadku otrzymać 1). Następnie z tablicy intów pobierasz ilosć wystąpień tego stringa - wypisujesz tablicaIntow[1];
Mam nadzieję, że teraz jest trochę jaśniej. Jeszcze tylko przykładowy (niepełny) kod:

String tekst;
while(true){
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //Do wczytywania
   tekst = Br.readLine(); //Wczytujemy String
   for(int i=0;i<15;++i){
     if(tablica[i].equals(tekst)){
       tablicaIntow[i]++;
       //W powyższych linijkach chodzi o to, że najpierw sprawdzamy, czy taki string już wczytaliśmy. Jeżeli tak, to w tablicy intow w komórce o tym samym indeksie, co szukany string zwiększamy wartość o 1.
     }else{
       //Takiego stringa jeszcze nie było, więc dodajemy go do tablicy
     }
   }
}

Dawno pisałem w Javie, więc mogą być błędy składniowe. Trzeba jeszcze troszkę przerobić dodawanie stringów, ale ogólnie tak to wygląda. W razie czego napisz, to postaram się wytłumaczyć to jeszcze inaczej, albo napiszę pełny kod.
Pozdrawiam

0

Chodzi o to, że tworzysz dwie tablice: jedna to tablica Stringów, druga intów. W tablicy stringów przechowujesz słowa, które już wczytałeś. W tablicy intów przechowujesz, ile razy dane słowo wystąpiło. Chodzi o to, że tablicaIntow[i] wskazuje, ile razy wystąpił tekst tablicaStringow[i]. Powinno to tak wyglądać:

String[15] tablica;
int[15] tablicaIntow;

tablica[0] = "Aaa";
tablica[1] = "Bbb";

I teraz jak chcesz sprawdzić, ile razy wczytałeś Bbb, to najpierw wyszukujesz ten ciąg w tablicy i zapamiętujesz indeks (czyli powinieneś w tym wypadku otrzymać 1). Następnie z tablicy intów pobierasz ilosć wystąpień tego stringa - wypisujesz tablicaIntow[1];
Mam nadzieję, że teraz jest trochę jaśniej. Jeszcze tylko przykładowy (niepełny) kod:

String tekst;
while(true){
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //Do wczytywania
   tekst = Br.readLine(); //Wczytujemy String
   for(int i=0;i<15;++i){
     if(tablica[i].equals(tekst)){
       tablicaIntow[i]++;
       //W powyższych linijkach chodzi o to, że najpierw sprawdzamy, czy taki string już wczytaliśmy. Jeżeli tak, to w tablicy intow w komórce o tym samym indeksie, co szukany string zwiększamy wartość o 1.
     }else{
       //Takiego stringa jeszcze nie było, więc dodajemy go do tablicy
     }
   }
}

Dawno pisałem w Javie, więc mogą być błędy składniowe. Trzeba jeszcze troszkę przerobić dodawanie stringów, ale ogólnie tak to wygląda. W razie czego napisz, to postaram się wytłumaczyć to jeszcze inaczej, albo napiszę pełny kod.
Pozdrawiam

0

Dzieki piekne,
niby wszystko wporzadku rozumiem mniej wiecej ale program dalej nie dziala :/

0

A konkretniej? Jak nie chce Ci się bawić, to stwórz klasę, której polami będą string i int określający ilość wystąpień tego słowa i potem tylko tablica i już z górki.
Pozdrawiam

0

wstukał byś cały kod ? bo dalej nie moge sobie z tym poradzic :( bym był bardzo wdzięczny

0

Nie wiem co w 1 zrobilem zle zle tez nie chce dzialac :( pomozcie jutro zaliczenie :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0