Sumowanie wartości z indeksów tablic //DO OCENY

0

Chciałbym zsumować wartości dwóch tablic w taki sposób aby działanie było wykonywane na tych samych indeksach.
Napisałem na początku jeden, potem drugi a na koniec trzeci program. Ale wciąż nie jestem pewien który z nich jest zarazem piękny do czytania i zarazem krótki wraz z małą ilością operacji. Nie wiem czy lepiej wrzucić wszystkie operacje do jednej funkcji(mniej operacji), czy może rozbudować tak żeby Kowalski wiedział która funkcja za co jest odpowiedzialna.

Na wejściu podawana jest wartość długości tablic, a później cyfry zawarte w kontenerach.

Wypisywanie liczb mogę zastosować przez funkcję zwracającą Stringa, tak żeby w programie łączył liczby i dodawał później spację.

static String sumowanie(){
            String s="";
            int n=in.nextInt();
            for(int i=0;i<n;i++){
                s=s+in.nextInt()+in.nextInt()+" ";
            }
            return s;
        }

A też mogę wyświetlić tablicę zsumowanych już elementów, ale uprzednio powinienem napisać dodatkową funkcję wyświetlającą te elementy.

        static int[]tab;
        static Scanner in=new Scanner(System.in);
        
        static void wczytaj_rozmiar(){
            int rozmiar=in.nextInt();
            tab=new int[rozmiar];
        }
        
        static void wczytaj_zsumuj(){
            for(int i=0;i<tab.length;i++){
            tab[i]=in.nextInt()+in.nextInt();    
            }
        }
        
         static String zwroc(){
            String s="";        
            for(int i:tab){
            s=s+i+" ";              
            }
            return s;        
         }

W funkcji wczytaj_zsumuj powinienem chyba wyjąć dodawanie i zostawić tam tylko wczytywanie.

Wiem, że miałem dodać do siebie dwie tablice a operuję tylko na jednej ale uważałem za zbędne utworzenie nowej tablicy i w wyniku mieć kod na dużo więcej linijek.

1
  1. Stosuj konwencję nazywania obiektów (metod).
  2. Jeżeli pytasz użytkownika o coś, to wypada go poinformować o co pytasz. Zwłaszcza gdy odpowiedź ma duże konsekwencje dla niego, nieostrzeżony może podać rozmiar tablicy = 1000.
  3. Nie używaj operatora konkatenacji w pętli - taki kod jest bardzo niewydajny.
        static int[] tab1;
        static int[] tab2;
        static int[] sumy;
        static int rozmiar;
        static Scanner in = new Scanner(System.in);

        public static void main(String[] args)
        {
              wczytajRozmiar();
              tab1 = new int[rozmiar];
              tab2 = new int[rozmiar];
              sumy = new int[rozmiar];
              wczytajElementy();
              zsumuj();
              System.out.println(opiszTablice(tab1));
              System.out.println(opiszTablice(tab2));
              System.out.println(opiszTablice(sumy));
              //biblioteczny sposób wyświetlania tablic
              System.out.println(Arrays.toString(tab1));
              System.out.println(Arrays.toString(tab2));
              System.out.println(Arrays.toString(sumy));
        }
 
        static void wczytajRozmiar(){
            System.out.print("Rozmiar tablicy: ");
            rozmiar =  in.nextInt();
        }
 
        static void wczytajElementy(){
            for(int i=0;i<rozmiar;i++){
                System.out.print("Liczba nr "+(i+1)+": ");
                int n = in.nextInt();
                tab1[i] = n;
                tab2[rozmiar-1-i] = n;
            }
        }

        static void zsumuj()
        {
             for(int i=0;i<rozmiar;i++)
             {
                  sumy[i] = tab1[i] + tab2[i];
             }
        }
 
         static String opiszTablice(int[] tab){
            StringBuffer sb = new StringBuffer("");        
            for(int i:tab){
                sb.append(i+" ");              
            }
            return sb.toString();        
         }

Program sumuje dwie tablice, druga z nich to pierwsza "do góry nogami".

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