Tablice w java - problem z informacjami.

0

Cześć,
chciałbym napisań program w java, który :

  • przechowuje jakieś liczby w tablicy
  • pyta użytkownika jakie liczby chce uzyskać z tej tablicy.
  • przykładowe wywołanie jest takie, że user podaje np. 2,5,9 a program ma wypisać 3,4,6,7,8
    Tablica zawiera w sobie same int'y posortowane do min do max. Zapewne trzeba tutaj operować na indexach tablicy, ale gdzie można znaleźć jakieś fajne źródło informacji na ten temat ? Mam zrobioną tablicę, która się sortuje tylko nie wiem w jaki sposób zrealizować wypisanie tych liczb..
    Żeby nie było to nie jest zadanie do szkoły czy na studia tylko zadanie rekrutacyjne :)

Z góry dziękuję za wszystkie podpowiedzi :)

0

Hej zadanie rekrutacyjne ? Znajomość tablic to podstawa ale ok przejdźmy do twojego pytania :).
Rozumiem, że chcesz w tablicy przechowywać wartości i po wpisaniu wartość uzyskać indeks do niej ? Ogólnie przejrzyj jakikolwiek poradnik dotyczący tablic w javie :) bo bez tego ani rusz do przodu. Pierwszy lepszy link z google (https://javastart.pl/static/podstawy-jezyka/tablice-jednowymiarowe/) . Powinieneś również umieć korzystać z pętli for aby uzyskać to co chcesz :) ale zachęcam do przeczytania jakieś książki kursu programowania :)

0

Rozumiem, że chcesz w tablicy przechowywać wartości i po wpisaniu wartość uzyskać indeks do niej ?

Właśnie nie wiem jak to rozwiązać.. Mam jakąś tablicę z wartościami posortowanymi, nie muszą być to liczby 1,2,3,4.. tylko może być np: 2,5,7,12,14,20 i jeżeli użytkownik wpisze 2 i 5 to ma wypisać 3,4. Przynajmniej tak to zrozumiałem, bo nie jest to moje zadanie tylko kolegi.

0

dobra załóżmy że twoja tablica wygląd tak:

int[] tab = new int[10];
tab[0]=2;
tab[1]=5;
tab[2]=7;
tab[3]=12;
tab[4]=14;
tab[5]=20;

W takim razie jeśli użytkownik poda 2 i 5 to jeśli chcesz indeksy to powinno zwrócić 0 i 1 jak sam widzisz? Chyba że chodzi o wypisanie brakujących liczb tylko dalej nie rozumiem konkretnie co program ma robić. Bo jedyne co mi przychodzi do głowy to dopisywanie brakujących liczb czyli jak podałeś 2 i 5 to między nimi brakuje w tablicy 3 i 4.

1

Ale czemu ma wypisać 3, 4 przy wejściu 2, 5 i tablicy z wartościami 2,5,7,12,14,20 (jak wydaje mi się losowymi)?
W ogóle to czemu przy 2, 5, 9 ma wypisać 3,4,6,7,8?
W ogóle to o co chodzi, jaki to ma związek?
title

0

Panowie nie ja to wymyśliłem :D tak, chodzi o wypisanie brakujących wartości

0

Przeoczyłem że to zadania rekrutacyjne. Chciałbyś też żeby ktoś za Ciebie poszedł na rozmowę kwalifikacyjną? Siadasz w spokoju, bierzesz kartkę, myślisz jak mogłoby to wyglądać, idziesz do kompa i jedziesz z koksem. Widocznie jak nie potrafisz zrobić takiego zadania to i nie nadajesz się na to stanowisko. Przecież nawet jak nie potrafisz to wystarczy chwilę pogooglować...

0

Spokojnie, pokaż co masz już zrobione. Jak ktoś Ci tu napiszę od początku do końca jak to ma działać to sam się niczego nie nauczysz (wiem, beznadziejne sprawa :P ). Pokaż do czego doszedłeś sam a dalej spróbujemy Ci jakoś pomóc. W pierwszym pości pytałeś jak się po takiej tablicy przemieszczać, najprostszy sposób wygląda mniej więcej tak:

for(int i =0;i<tab.length;i++){
		System.out.println(tab[i]);  //tab leci od indeksu 0 do ostatniego czyli przemieszczasz się po wszystkich elementach tab
	}

i teraz w tym for musisz wrzucić sobie warunki (np. najprostsze if-y), które będą filtrowały i przepuszczały tylko te liczby jakie chcesz

0

@Pieter24 , dzięki :) Poniżej jest mój kod. Wczytuje rozmiar od użytkownika następnie użytkownik wpisuje liczby do tablicy. Miałem w zadaniu, że tablica jest z góry posortowana, ale zrobiłem też sortowanie. Zrobiłem też pętlę w której użytkownik jest pytany które liczby chce wypisać, ale nie wiem jak zrobić żeby użytkownik mógł wpisać kilka liczb..No i oczywiście żeby nie wypisywało tych liczb tylko liczby pomiędzy :/

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sr = new Scanner(System.in);
        System.out.println("Ile liczb wprowadzisz ? ");
        int liczbaPomiarow = sr.nextInt();
        double[] tablicaPomiarow = new double[liczbaPomiarow];

        for(int i = 0; i < tablicaPomiarow.length; i++){
            System.out.println("Wprowadz " + i + " wartosc : ");
            tablicaPomiarow[i] = sr.nextDouble();
        }

        //sortowanie
        System.out.println("Przed: " + Arrays.toString(tablicaPomiarow));
        int mini;
        double tmp;
        for (int i = 0; i < tablicaPomiarow.length; i++) {
            mini = i;
            for (int j = i; j < tablicaPomiarow.length; j++) {
                if (tablicaPomiarow[j] < tablicaPomiarow[mini]) {
                    mini = j;
                }
            }
            tmp = tablicaPomiarow[i];
            tablicaPomiarow[i] = tablicaPomiarow[mini];
            tablicaPomiarow[mini] = tmp;
        }

        System.out.println("Po   : " + Arrays.toString(tablicaPomiarow));

        //int indeks = 0;
        int ile;
        System.out.println("Ktore liczby chcesz wypisać : ");
        ile = sr.nextInt();

        for(int indeks = 0; indeks < ile ; indeks++){
            System.out.println(tablicaPomiarow[indeks]);
            indeks++;
        }
//        if(indeks < ile)
//        do{
//            System.out.println(tablicaPomiarow[indeks]);
//            indeks++;
//        }while (indeks < ile);



        double max = -1;
        for(double pomiar : tablicaPomiarow){
            if(pomiar > max){
                max = pomiar;
            }
        }
        System.out.println("Wartość mkasymalna wynosi : " + max);

        double suma = 0;
        for (double pomiar : tablicaPomiarow){
            suma = suma + pomiar;
        }
        System.out.println("Suma wszystkich pomiarów : " + suma);

        double srednia = 0;
        System.out.println("Srednia pomiarow : " + suma/tablicaPomiarow.length);
    }
}
1

Zerknij tutaj:
https://stackoverflow.com/a/15575578
Pobierz od użytkownika liczby, np. 3, 8, 11, 15, potem utwórz tablicę z wartościami od 3 do 15, a następnie pobaw się kolekcjami jak w linku tak żeby pozostały Ci te liczby pomiędzy, czyli 4, 5, 6, 7, 9, itd...
Chyba dobrze zrozumiałem zadanie?

Btw. jak przygotowujesz się do rekrutacji i ćwiczysz rozwiązywanie algorytmów to trzymaj:
https://techiedelight.quora.com/500-Data-Structures-and-Algorithms-practice-problems-and-their-solutions?share=1
Świetna sprawa

0

O ładnie. To teraz tak. Fajnie byłoby jakbyś używał kolekcji np. ArrayList no chyba, że masz wymóg używania tablic ?? Kolekcję bardzo ułatwiają pracę dostarczając wiele funkcji jak np. sortowanie. Przykład:


List<Integer> lista = new ArrayList<Integer>();
//Dodawanie elementów do listy
lista.add (1); //doda 1 do listy
lista.add(8) // doda 8 do listy 
lista.add(jakasWartosc) //doda jakiegoś innego Inta

//sortowanie jest jeszcze prostsze
lista.sort( (a,b) -> a.compareTo(b) );

Po drugie problem z podaniem liczb jakie użytkownik chce wypisać możesz rozwiązać na co najmniej 2 sposoby. Pierwszy z nich to tak jak robisz wyżej czyli najpierw pytasz użytkownika o ilość liczb jakie będzie chciał podać, robisz tablicę o takim rozmiarze i wpisujesz te liczby do niej (i taki kod już napisałeś) a drugi to stworzenie do-while, który będzie działał do momentu wystąpienia np. znaku x.

String comand;
Integer ile=null;
ArrayList<Integer> numbers = new ArrayList<>();
        
 do{
	 System.out.println("Ktore liczby chcesz wypisać,  [x] - zakoncz: ");
comand = sr.next().trim();
if(comand.equalsIgnoreCase("x")) break;
numbers.add(Integer.parseInt(comand));
 }while(!comand.equalsIgnoreCase("x"));

W drugim przypadku korzystam z ArrayList do trzymania wybranych liczb , gdyż wykorzystując kolekcję nie musisz inicjalizować ich rozmiaru (powiększają się same). Resztę operacji na kolekcjach jak możesz z nich wyrzucić dane elementy przedstawił @Rizorz
No chyba, ze jednak musem są te tablice to napisz to będziemy kombinować dalej

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