BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// создаем массив, заносим в него числа
int[] house = new int[15];
for(int i=0;i<house.length; i++){
house[i]=Integer.parseInt(reader.readLine());
}
// создаем массив четных индексов и нечетных.
int[] ch = new int[8];
int[] nech = new int[7];
for(int i=0; i<house.length; i++){
if (i%2==0) {
ch[i] = house[i];
}
else
nech[i] = house[i];
}
//считаем суммы значений массивов
int sumCh = 0;
for(int i=0;i<ch.length; i++){
sumCh += ch[i];
}
int sumNech = 0;
for(int i=0; i<nech.length; i++){
sumNech += nech[i];
}
//сравниваем переменные сумм и выводим на экран
if(sumCh > sumNech) {
System.out.println("В домах с четными номерами проживает больше жителей.");
}
else
System.out.println("В домах с нечетными номерами проживает больше жителей.");
ak
22 уровень
что не так?
Архивный
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
21 марта 2020, 12:56
У тебя получается, что в массиве ch должны быть только четные индексы (0, 2, 4, 6...), а в nech - только нечетные.
Но на самом-то деле индексы идут подряд - 0, 1, 2...
0
ak
21 марта 2020, 18:00
почему? если индекс делится без остатка на 2 значит четное.
если 0%2 = 0
1%2 != 0
2%2 = 0
3%2 != 0
4%2 = 0
.......
14%2 = 0.
или я опять с этими % все неправильно понимаю?
0
Ksenia VolkovaJava Developer в DXCMaster
21 марта 2020, 18:23
Дело не в %, а в индексах массивов.
Вот твой массив ch:
В нем 8 ячеек, с индексами от 0 до 7 включительно.
Теперь ты туда пытаешься положить элементы с индексами 0, 2, 4, 6, 8... но там нет индекса 8!
При попытке сделать
ты ловишь ошибку.
0
ak
22 марта 2020, 13:12
мое понимание алгоритма:
for(int i=0; i<house.length; i++){
//при i=0:
ch[0] = house[0];
//при i=1
// 1%2 != 0
neCh[0] = house[1];
//при i=2
// 2%2 == 0
ch[1] = house[2];
//при i=3
// 3%2 != 0
neCh[1] = house[3];
//при i=4
// 4%2 == 0
ch[2] = house[4];
.....
//при i=13
// 13%2 != 0
neCh[6] = house[13];
//при i=14
// 14%2 == 0
ch[7] = house[14];
0
ak
22 марта 2020, 13:47
Вобщем решил через умножение и сложение.
int[] ch = new int[8];
for(int i=0; i<ch.length; i++){
ch[i] = house[i*2];
}
int[] nech = new int[7];
for(int i=0; i<nech.length; i++){
nech[i] = house[i*2+1];
}
Но я так понял что можно было и с помощью "%" но я н
0
Ksenia VolkovaJava Developer в DXCMaster
22 марта 2020, 14:19
Как у тебя может получиться в одном случае индекс 0, а вдругом - индекс 1, если и там, и там стоит одна переменная - i.
Конечно, можно было с помощью %, только без всяких лишних массивов.
+1
ak
22 марта 2020, 14:39
Интересно. т.е как я понял логика такая:
if (i%2==0) {
sumCh = [0]+[2]+[4]+...+[14]
}
else {
sumNech = [1]+[3]+[5]+...+[13]
}
0