for(int c = 0; c < alley.length; c++){
if(c % 2 == 0){
for(int a = 0; a < chet.length; a++){
chet[a] = chet[a] + alley[c];
Мне может конечно поспать надо.. и все само придет, но..
Объясните на пальцах пожалуйста вот эту строку.
chet[a] = chet[a] + alley[c];
Я завис где то на грани понимания..
Vlad Kaa
7 уровень
Помогите понять одну строку.
Архивный
Комментарии (9)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
boyarin
1 марта 2019, 12:00полезный
chet[a] = chet[a] + alley[c]; здесь ты берешь текущее значение chet[a] и прибавляешь к нему новое значение alley[c]. Можно заменить на chet[a] += alley[c];
А если chet[a] = alley[c]; Здесь каждый раз chet[a] присваиваешь новое значение alley[c]. Сложение не выполняется.
+1
Vlad Kaa
1 марта 2019, 13:23
Спасибо!
0
hooray Software Developer в Grid Dynamics
28 февраля 2019, 14:48
но, полагаю, что массив chet[] это дома с четными номерами
соответственно ты проходишь в цикле for по всем индексам массива (номерам домов), если остаток от деления на 2 равняется нулю, то дом четный и ты добавляешь его в массив, если нет, то добавляешь в другой массив по индексу элемента
0
hooray Software Developer в Grid Dynamics
28 февраля 2019, 14:41
полностью код выложи
0
Vlad Kaa
28 февраля 2019, 15:06
А для чего весь код? Задача решена.
Я застопорился на этой строке, вот ее я честно подсмотрел. проблема была только в ней.
я хочу понять почему надо писать именно так.
chet[a] = chet[a] + alley[c];
До подсмотра этой строки, моя строка выглядела так:
chet[a] = alley[c];
и считывались данные последней строки, четные или нечетные числа.
0
hooray Software Developer в Grid Dynamics
28 февраля 2019, 19:00
потому что непонятно что и какая переменная/массив означает, не видно задания, приходится искать задачу и смотреть условия, а также угадывать что означает вырванный из программы кусок кода.
0
Vlad Kaa
1 марта 2019, 04:01
public class Solution {
public static void main(String[] args) throws Exception {
int[] alley = new int[15];
int[] chet = new int[15];
int[] nechet = new int[15];
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
for(int i = 0; i < alley.length; i++){
alley[i] = Integer.parseInt(reader.readLine());
}
for(int c = 0; c < alley.length; c++){
if(c % 2 == 0){
for(int a = 0; a < chet.length; a++){
chet[a] = chet[a] + alley[c];
}
}
}
for(int n = 0; n < alley.length; n++){
if(n % 2 == 1){
for(int b = 0; b < nechet.length; b++){
nechet[b] = nechet[b] + alley[n];
}
}
}
int symc = 0;
int symn = 0;
for(int d = 0; d < chet.length; d++){
symc = chet[d];
}
for(int e = 0; e < nechet.length; e++){
symn = nechet[e];
}
if
(symc > symn)
System.out.println("В домах с четными номерами проживает больше жителей.");
else
System.out.println("В домах с нечетными номерами проживает больше жителей.");
}
}
0
Kovis
9 марта 2019, 12:03
незачем было использовать массивы для четных/нечетных домов. тем более их не по 15, а 8 и 7 соответственно (и по заданию это не требовалось)
достаточно было использовать две переменные под нарастающие суммы. Вы правильно придумали проверять четность делением на 2. там же можно было просто плюсовать текущий дом "направо" или "налево"...
0
Kovis
9 марта 2019, 12:06
как-то так:
for(int i = 0; i < 15; i++){
house[i] = Integer.parseInt(bufferedReader.readLine());
if (i%2 == 0) evenHousesResidentsSum += house[i];
else oddHousesResidentsSum += house[i];
}
0