Problem z obliczeniem sumy elementów tablicy, które dzielą się przez indeks.

0

Witam następujące zadanie:
Pobierz od użytkownika rozmiar tablicy i utwórz tablicę elementów typu
int. Elementy tablicy losujesz z przedziału <-10, 20>, jeżeli element
tablicy znajduje się pod indeksem parzystym lub z przedziału <30,50>,
jeżeli element tablicy znajduje się pod indeksem nieparzystym. Oblicz
sumę elementów tablicy, które dzielą się przez indeks, pod którym się
znajdują

public class Zad6Tab {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        Random rnd = new Random();
        int size;

        System.out.println("Enter the size of arrays");
        size = sc.nextInt();
        sc.nextLine();

        int[] tab = new int[size];

        for (int i = 0; i < size; i++) {
            if(i % 2 == 0){
                tab[i] = rnd.nextInt(31)-10;
            }else{
                tab[i] = rnd.nextInt(21)+30;
            }
                }
            int sum= 0;
            for(int i = 0; i< size; i++){
                if((tab[i] % i) == 0 ){
                    sum += tab[i];
                }
                System.out.print("The sum is:" + sum);
            }
    }
}

Napisałem taki program lecz ciągle wywala błąd: java.lang.ArithmeticException: / by zero

Siedzę już godzinę i nie mogę sobie z tym poradzić. Czy ktoś mógłby zerknąć okiem . Dzięki i pozdrawiam

0

Nie można użyć operatora modulo a % b dla b = 0.
Ten fragment Oblicz sumę elementów tablicy, które dzielą się przez indeks, pod którym się znajdują jest źle sformułowany - nie wiadomo co zrobić z elementem tab[0].

0

Chyba wychodzi na to, że należy go pominąć.Skoro nie da się podzielić przez 0.
Poza tematem. Nie chcę się użalać nad sobą aczkolwiek, uczę się programowania około 2 miesiący. I powoli zaczynam wątpić w swoje zdolności intelektualne/ predyspozycje.Gdyż zadanie jest chyba dosyć proste a ja nie mogę sobie z nim poradzić i jest to której zadanie z kolei które mi idzie dość topornie ? I ciągle się tym dołuje. Bardzo bym chciał pracować w przyszłości jako programista, jednak nie wiem czy się nadaje, mając problemy z tak prostymi rzeczami. A co będzie potem?
Czy istnieje szansa poprzez nabywanie doświadczenia iż moje zdolności rozwiązywania problemów się zwiększą? Co o tym sądzicie doświadczeni koledzy?
Przepraszam za offtop. Aczkolwiek to mi nie daje spokoju i nie pozwala dalej się uczyć. Gdyż wydaję mi się, że po prostu jestem delikatnie mówiąc za głupi?

0

no dzielenia przez 0 nie wykonasz w matematyce...

co do nauki - poddawanie się i załamywanie to pierwszy krok do porażki... tylko systematyczne ćwiczenia pozwolą na opanowanie czegokolwiek

0

Jeśli ominę element zerowy, to program jest napisany właściwie? Co można w nim poprawić. Dzięki za słowa otuchy. :)

1

ominięcie elementu zerowego nie sprawi że program jest rozwiązany ok. Możesz np. tworzyć tablicę o wielkości +1 jaka została podana i zapisywać elementy od pola w tablicy 1 a nie 0 np:

 
System.out.println("Podaj wielkosc tablicy: ");
int wielkosc =Integer.parseInt(in.nextLine());

int[] tab = new int[wielkosc + 1];

//losowanie zapisujesz od tab[1]
1

Wygląda dobrze. Jeśli koniecznie chcesz coś poprawiać, to zamień Enter the size of arrays na Enter the size of array.

0

Dzięki za wsparcie, biorę się dalej do roboty. Pozdr ;)

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