Ученик
(182),
закрыт
9 лет назад
Дополнен 9 лет назад
Еще можно скриптом в VB? Я не знаю просто как закончить скрипт.
Private Sub S4_Click()
Dim n As Integer
n = 0
Do
n = n + 2
If Then Exit Do
Loop
MsgBox n
End Sub
Мозг
Просветленный
(45393)
9 лет назад
Посчитать нужно сумму только чётных чисел.
Тогда a0 = 2 (первое чётное число из этого ряда)
an = 1000 (последнее чётное число из этого ряда)
n = 1000 / 2 = 500 (количество чётных чисел, каждое второе – чётное) .
Тогда сумма N = (a0 + an) / 2 * n
(a0 + an) / 2 – так мы найдём среднее арифметическое значение для этой последовательности, умножив на количество чисел в последовательности, найдём сумму.
N = (2 + 1000) / 2 * 500
N = 250500
Никаких VB я не знаю вообще.
У тебя цикл начинается с Do, дальше прибавляется очередной член арифметической прогрессии (n = n +2). Затем должна идти проверка очередного числа на превышение значения в 1000.
Может и неправильно синтаксически напишу (понятия не имею, как это пишется на VB):
Dim n As Integer // здесь будем хранить сумму
Dim x As Integer // здесь будем хранить очередное число, которое должно быть
прибавлено
n = 0
x = 0
Do
n = n + x // сумму с учётом этого очередного числа
x = x + 2 // очередное число для сложения
If (x > 1000) Then Exit Do
Loop
MsgBox n
End Sub
На будущее – математика в помощь!
kiosker1
Ученик
(189)
7 лет назад
Эта задача в учебнике за 5 класс. Прогрессий там еще не учат. Каждое четное число больше на единицу нечетного. Соответственно сумма четных будет больше на 500, чем сумма нечетных. А среднее арифметическое соответственно на 1.
I just began coding the other day and I’m going through coding dojo’s free beginner algorithm course. I had no trouble with the intro lesson predicting outputs, but now I am writing code my thoughts don’t seem to translate well.
The task is to write a function that would get the sum of all the even numbers from 1 to 1000. They mentioned I could use the modulus operator, but I think that operator is a little contrived. Instead I figured it easier and more efficient to run a For loop, starting at 0 and adding 2 each loop. After each loop the new number would be added to the previous which would be the current sum variable. I have attached my attempted solution:
function sum_even_numbers(){
var sum = 0;
for(var x=2; x!=1000; x+2)
{
sum+=x;
}
return sum;
}
Unfortunately this only freezes my browser until I stop script (I guess it’s on an infinite loop). Most of the previous lesson work involved outputs using console.log() and I’m not even sure why I can’t use it instead of the return operator. Can tell me if my way of going about solving the problem is valid or not and if it is, what’s wrong with the code. And if it’s not, where the flaw is in my logic. I have included the suggested solution below.
function sum_even_numbers(){
var sum = 0;
for(var x = 1; x < 1001; x++){
if(x % 2 === 0){
sum += x;
}
}
return sum;
}
Thanks all
Also if you have time, why does a semicolon after the If operator change the answer so much? I still don’t know the hard rules of semicolon use.
Edit: Thanks guys, what a great community!
asked Jul 14, 2016 at 3:04
1
Your for loop is incorrect.
You have
for(var x=2; x!=1000; x+2)
Where you should do
for(var x=2; x<=1000; x = x+2)
Currently, your loop never updates x so it has the same value all the time. Statement 3 in the for loop is executed as it is so your code just executes x+2 which is just some number. The code I suggested above updates x to be equal to x+2.
Your condition terminates the loop once x is equal to 1000 so 1000 is not added to the sum. You need to either break the loop when x is equal to 1002 or better use
x<=1000
Putting a semi-colon after the if condition means that you want to do nothing if that condition is satisfied. If you don’t put a “{” after the if then only one statement following the if statement is executed when your condition is satisfied. When you put a semi-colon, then you execute an empty statement.
answered Jul 14, 2016 at 3:07
Ahmed FathyAhmed Fathy
5294 silver badges20 bronze badges
4
Really, there’s no reason you actually have to run the loop, since this function always returns the same number.
function get_the_sum()
{
//Sum of even numbers <= 1000
//=(1000+0 + 998+2 + 996+4 ... + 0+1000) / 2
return 500*501;
}
answered Jul 14, 2016 at 3:21
Matt TimmermansMatt Timmermans
51.6k3 gold badges44 silver badges85 bronze badges
3
No need for looping at all. With an O(1) function that sums the range from 1 to N, you can easily derive the even and odd sums as well:
function Adjust(n) {
return n % 2 === 0 ? n : --n;
}
function SumRange(n, m) {
if (n > m)
return 0;
var sum = (m * ++m) >> 1;
return n > 1 ? sum - SumRange(0, --n) : sum;
}
function SumRangeEven(n, m) {
var sum = SumRange(Adjust(n), m >> 1);
return sum + sum;
}
function SumRangeOdd(n, m) {
return SumRange(n, m) - SumRangeEven(n, m);
}
console.log(SumRange(0,101)) //5151
console.log(SumRangeEven(0,101)) //2550
console.log(SumRangeOdd(0,101)) //2601
console.log(SumRangeEven(0,101) + SumRangeOdd(0,101)) //5151
answered Nov 16, 2019 at 22:39
WesleyACWesleyAC
5246 silver badges11 bronze badges
You have to make sure you increment the loop properly. Other than that, your reasoning seems perfectly right.
You are doing:
for(x=0;x!=1000;x+2)
whereas you should be doing something like:
for(x=0;x<=1000;x+=2)
Here, a += b
is a shortcut for a = a + b
. Also, <=1000
includes 1000 in the sum as well.
As for your second question, a semicolon after an if statement invalidates an if statement as if no {}
are placed after an if statement, it only executes the condition on the statements till it encounters its first semicolon.
If you have more than 1 line of code to execute in if statement you may implement it like this:
if(condition) {
code line 1;
code line 2;
code line 3;
}
answered Jul 14, 2016 at 3:07
3
Все категории
- Фотография и видеосъемка
- Знания
- Другое
- Гороскопы, магия, гадания
- Общество и политика
- Образование
- Путешествия и туризм
- Искусство и культура
- Города и страны
- Строительство и ремонт
- Работа и карьера
- Спорт
- Стиль и красота
- Юридическая консультация
- Компьютеры и интернет
- Товары и услуги
- Темы для взрослых
- Семья и дом
- Животные и растения
- Еда и кулинария
- Здоровье и медицина
- Авто и мото
- Бизнес и финансы
- Философия, непознанное
- Досуг и развлечения
- Знакомства, любовь, отношения
- Наука и техника
7
1 ответ:
0
0
2 4 6 ……… 996 998 1000
2+1000=1002
4+998=1002
6+996=1002
таких пар 250,так как всего чисел 500
1002*250=250 500
Читайте также
67 &&-%%68’®[{=¢£©™[{=
Определим объем одного слова. Слово можно представить как
abbbbbc
где a принимает одну из восьми букв, а c – одну из четырёх. Буквы b принимают одно из 32 значений.
Получается, что у нас:
a – объем 3 бит, т.к. 2^3 = 8
b – объем 5 бит, т.к. 2^5 = 32
c – объем 2 бит, т.к. 2^2 = 4
То есть объем всего слова равен 3+5*5+2 = 30 бит.
Всего 10 слов, без учета пробелов объем фразы будет равен 30*10 = 300 бит.
G$5*$A12 , знак $ необходим для закрепления ячейки в формуле , в
<span>D$5 закрепляется строка , а столбец , при переносе формулы изменяется
ну и аналогично с </span><span>$A10.</span><span><span>Столбец</span> закрепляется , а строка изменяется . </span>
Г)Комбинация символов,записываемых в начальной области диска
<span />
F:/DOCUM/LENA/letter.doc
F:/DOCUM/LENA/Tables.xls
F:/DOCUM/IVAN/my.doc
F:/ARCHIV/MAIN/letter.doc
F:/ARCHIV/MAIN/my.doc
F:/ARCHIV/1.zip
Найти сумму четных чисел в промежутке от 1 до 1000 (3 способа).
На этой странице находится вопрос Найти сумму четных чисел в промежутке от 1 до 1000 (3 способа)?. Здесь же – ответы на него,
и похожие вопросы в категории Информатика, которые можно найти с помощью
простой в использовании поисковой системы. Уровень сложности вопроса
соответствует уровню подготовки учащихся 5 – 9 классов. В комментариях,
оставленных ниже, ознакомьтесь с вариантами ответов посетителей страницы. С
ними можно обсудить тему вопроса в режиме on-line. Если ни один из
предложенных ответов не устраивает, сформулируйте новый вопрос в поисковой
строке, расположенной вверху, и нажмите кнопку.
-
Келестина
27 марта, 22:56
0
var i, s:integer;
{1}begin
s:=0;
for i:=1 to 1000 do
if i mod 2=0 then s:=s+i;
end.
{2}begin
for i:=1 to 1000 do
if odd (i) then s:=s+i;
{3}a:array[1 … 500] of integer;
n:integer;
for i:=1 to 1000 do
if odd (i) then a[i]:=i;
n:=i;
for i:=1 to n do
s:=a[i]+s;
end.
- Комментировать
- Жалоба
- Ссылка
Найдите правильный ответ на вопрос ✅ «найти сумму четных чисел в промежутке от 1 до 1000 (3 способа) …» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Новые вопросы по информатике
Главная » Информатика » найти сумму четных чисел в промежутке от 1 до 1000 (3 способа)