Как найти сумму нечетных чисел информатика



Ученик

(199),
на голосовании



8 лет назад

PROGRAM FG;

var a,i,n,sum:integer;

begin

writeln(‘Введи N(колличество чисел) ‘);

readln(n);

writeln(‘Введи числа’);

for i:=1 to n do begin

readln(a);

if a>0 then sum:=sum+a;

end;

writeln(‘сум. нечет чисел =’,sum);

end.

Голосование за лучший ответ

Адам Мизаушев

Мыслитель

(5384)


8 лет назад

Вы не задали n целых чисел, а n раз задали значение переменной а.
Вот:
Var
a: array of integer;
n, c: integer;
Begin
Write(‘Введите n: ‘);
Read(n);
Writeln(‘Введите n целых чисел: ‘);
For c:= 1 to n do Read(a[c]);
sum:= 0;
For c:= 1 to 50 do
If a[c] mod 2 = 1 do
sum:= sum + a[c];
Writeln(‘Сумма нечетных чисел = ‘, sum);
End.

Студворк — интернет-сервис помощи студентам

Всем привет
Ребят, помогите пожалуйста доработать программу:
С клавиатуры вводятся натуральные числа. Признак конца ввода – отрицательное число. Посчитать сумму всех нечетных чисел.

У меня на данный момент есть код:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
Program lab4;
var n, sum: integer;
begin
write('Введите числа: ');
readln(n);
sum := 0;
while n > 0 do begin
sum := sum + n mod 10;
n := n div 10
end;
writeln('Сумма цифр = ', sum);
end.

Но данный код как-бы вводит не несколько чисел, а все числа в одну строку. Нужно чтобы можно было ввести первое число, и далее новое число вводить с новой строки, признак конца ввода любое отрицательное число. Когда пользователь введет отрицательное число, программа должна подсчитывать сумму всех НЕЧЕТНЫХ введенных чисел до отрицательного числа. На данный момент этот код считает сумму всех любых введенных чисел..

Цикл с параметром (FOR)

Оператор цикла for называют цикл с параметром. Цикл с параметром используется в том случае, когда требуется выполнить заданное количество шагов цикла. Нужно сказать, что for Pascal не слишком гибок (в отличие, например, от С), так как параметр цикла (или счетчик) изменяется на величину, равную единице. Таким образом, когда требуется выполнить дробный шаг необходимо использовать цикл типа while. Существует две разновидности цикла for: с увеличением и с уменьшением значений счетчика (или параметра).

Синтаксис:

for счетчик := начальное значение to конечное значение do
begin
      {Операторы}
end;
 
for счетчик := конечное значение downto начальное значение do
begin
      {Операторы}
end;

· Оператор for состоит из заголовка и тела цикла. Составной оператор, находящийся в теле цикла, должен быть заключен в операторные скобки begin и end.

· В качестве идентификатора счетчика обычно используется «i».

· Переменная счетчика должна быть порядкового типа. Например, целочисленного типа: byte, integer.

· Начальное и конечное значения параметра цикла нельзя изменять во время выполнения цикла.

· Оператор for используется для организации циклов с фиксированным, заранее известным или определяемым во время выполнения программы числом повторений.

Блок-схема

for

(В данной блок схеме: M — начальное значение счетчика, N — конечное значение счетчика)

Пример №1

  1. Постановка задачи:

Определить сумму нечетных натуральных чисел до 100. Условный оператор не использовать.

  1. Блок-схема:

pr_f_1

  1. Кодирование
program fornech;
var
      i:byte;
      s:word;
begin
s := 0;
for i := 1 to 50 do
      s := s + (2 * i - 1);
writeln('S = ', s)
end.
  1. Тестирование

Дано: |

———————————

Результат | S = 2500

Пример №2

  1. Постановка задачи:

Вычислить факториал числа n (n! = 1·2·3· … ·n).

  1. Входные данные: n — целое число, n > 0.
  2. Выходные данные: переменная f — большое целое
  3. Блок-схема:

pr_f_2

  1. Кодирование
program factor;
var
      i,n:integer;
      f:longint;
begin
write('Введите число n = '); readln(n);
f := 1;
for i := 1 to n do
      f := f * i;
writeln(n, '! = ', f)
end.
  1. Тестирование

Дано: | n = 5

———————————

Результат | 5! = 120

(Примечание: в данной задаче число n не может превышать 12, так как произойдет переполнение для данного типа)

Пример №3

  1. Постановка задачи:

Вычислить n-е число Фибоначчи.

  1. Формализация

Последовательность чисел Фибоначчи Fn определяется следующим образом: F1 = 1, F2 = 1, Fn = Fn–2 + Fn–1, n = 3, 4, … .

  1. Входные данные: n — переменная целого типа, n > 2.
  2. Выходные данные: переменная f — целого типа (n-е число Фибоначчи)
  3. Блок-схема:

pr_f_3

  1. Кодирование
program fibo;
var
      i,n:integer;
      f,f1,f2:longint;
begin
write('Введите число n = '); readln(n);
f1 := 1; f2 := 1;
for i := 3 to n do
begin
      f := f1 + f2;
      f1:=f2;
      f2:=f
end;
writeln(n, '-е число Фибоначчи = ', f)
end.
  1. Тестирование

Дано: | n = 10

———————————

Результат | 10-е число Фибоначчи = 55

0 / 0 / 1

Регистрация: 20.11.2021

Сообщений: 74

1

25.11.2021, 12:42. Показов 1175. Ответов 4


вычислить
суммы всех нечетных чисел в диапазоне от 10 до 100:
с использованием оператора while и с оператором do-while

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

ram876

678 / 388 / 197

Регистрация: 19.12.2016

Сообщений: 1,554

25.11.2021, 13:07

2

Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
int main()
{
    int sum = 0;
    int num = 10;
    while(num++ < 100)
    {
        sum += num++;
    }
    std::cout << sum;
    return 0;
}

0

long399

Модератор

2269 / 1606 / 874

Регистрация: 16.10.2013

Сообщений: 4,751

Записей в блоге: 12

25.11.2021, 13:07

3

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
int main() {
    int sum = 0;
    int i = 11;
    while (i < 100) {
        sum += i;
        i += 2;
    }
    std::cout << sum;
    return 0;
}

0

hrobay

54 / 32 / 24

Регистрация: 26.09.2020

Сообщений: 133

25.11.2021, 14:57

4

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int main()
{
    int value = 11;
    int sum = 0;
    
    do{
        sum += value;
        value += 2;
    } while (value < 100);
    
    std::cout << sum;
}

0

Байт

Диссидент

Эксперт C

27277 / 17013 / 3760

Регистрация: 24.12.2010

Сообщений: 38,291

25.11.2021, 15:59

5

C++
1
cout << 50*50 - 5*5;

Арихметика, блин! Арифметические прогрессии

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

25.11.2021, 15:59

Помогаю со студенческими работами здесь

Используя оператор while определить сумму всех нечетных чисел в диапазоне от 1 до 99
Оператор while

Рекурсия: вычислить сумму нечетных чисел в диапазоне от 1 до N
Помогите пожалуйста найти где ошибся.
Вычислить сумму нечетных чисел в диапазоне от 1 до N. N…

Вычислить сумму нечетных чисел в заданном диапазоне
Здравствуйте. Помогите пожалуйста решить домашку по теме функции. А то я чет наваляла но результат…

Написать программу, которая находит сумму всех целых нечетных чисел в заданном диапазоне
Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном…

Вычислить сумму чётных чисел и произведение нечётных в определённом диапазоне
Написать функцию, которая принимает два числовых параметра. Нужно вычислить сумму парных чисел в…

Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном пользователя.
#include &lt;iostream&gt;
using namespace std;
void main(){
int a,b;
cout&lt;&lt;&quot;OT &quot;;
cin&gt;&gt;a;…

Составьте программу на С, которая выводит сумму всех нечетных чисел в фиксированном диапазоне, заданном в тексте програм
Составьте программу на С, которая выводит сумму всех нечетных чисел в фиксированном диапазоне,…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

5

Составьте программу вычисления суммы нечётных чисел в диапазоне от 1 до 100.

1+3+5 + … + 99

Pascal ABC

Найди верный ответ на вопрос ✅ «Составьте программу вычисления суммы нечётных чисел в диапазоне от 1 до 100. 1+3+5 + … + 99 Pascal ABC …» по предмету 📙 Информатика, а если ответа нет или никто не дал верного ответа, то воспользуйся поиском и попробуй найти ответ среди похожих вопросов.

Искать другие ответы

Главная » ⭐️ Информатика » Составьте программу вычисления суммы нечётных чисел в диапазоне от 1 до 100. 1+3+5 + … + 99 Pascal ABC

Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном пользователе.

#include<iostream>:
using namespace std;
int main()

setlocale(LC_ALL, "rus");
int val1; // начало диапазона
int val2; // конец диапазона
int sum = 0; // переменная хранящая сумму
cout << "Укажите диапозон чисел:nПервое число: " << endl;
cin >> val1;
cout << "Второе число: " << endl;
cin >> val2;
while (val1 <= val2)
{
    if (val1 % 2 != 0)
    {
        sum += val1;
    }
    val1++;
}

cout << "Результат: " << sum;

Как сделать так чтобы не каждый раз проверять четность числа, а проверить это перед циклом один раз, если четное, то прибавить единицу. А в цикле уже ничего не проверять, а просто прибавлять двойку к числу? Так можно оптимизировать код, но я не знаю как это сделать

Kromster's user avatar

Kromster

13.3k12 золотых знаков41 серебряный знак70 бронзовых знаков

задан 11 ноя 2022 в 6:22

Валерий's user avatar

4

int sum(int a, int b)
{
    a = (a-(a&1))/2;
    b = (b+(b&1))/2;
    return b*b - a*a;
}

Передавать в функцию значения так, чтоб a <= b

ответ дан 11 ноя 2022 в 7:52

Harry's user avatar

HarryHarry

211k15 золотых знаков116 серебряных знаков226 бронзовых знаков

4

Если действительно нужно оптимизировать, то вспомним, как в 7 классе изучали арифметическую прогрессию. И циклов не надо.

val1 += (1 - val1 & 1);
val2 -= (1 - val2 & 1);
return (val2 - val1 + 2) * (val1 + val2) / 4;

Первые строчки меняют чётные числа на большее и меньшее нечётные.

ответ дан 11 ноя 2022 в 7:10

MBo's user avatar

MBoMBo

46.6k1 золотой знак15 серебряных знаков37 бронзовых знаков

4

#include<iostream>:
using namespace std;

setlocale(LC_ALL, "rus");
int val1; // начало диапозона
int val2; // конец диапозона
int sum = 0; // переменная хранящая сумму
cout << "Укажите диапозон чисел:nПервое число: " << endl;
cin >> val1;
cout << "Второе число: " << endl;
cin >> val2;
if(val1%2!=0)
{
    val1++
}
while (val1 <= val2)
{
    if (val1 % 2 != 0)
    {
        sum += val1;
    }
    val1++;
}

cout << "Результат: " << sum;

ответ дан 11 ноя 2022 в 6:33

Utsiye 's user avatar

Utsiye Utsiye

1658 бронзовых знаков

3

   #include<iostream>:
using namespace std;

void main()
{
    setlocale(LC_ALL, "rus");
    int val1; // начало диапозона
    int val2; // конец диапозона
    int sum = 0; // переменная хранящая сумму
    cout << "Укажите диапозон чисел:nПервое число: " << endl;
    cin >> val1;
    cout << "Второе число: " << endl;
    cin >> val2;
    if (val1 % 2  == 0)
    {
        val1++;
    }
    while (val1 <= val2)
    {
            sum += val1;
            val1 += 2;
    }

    cout << "Результат: " << sum;
    
    
}

Я нашел правильный ответ

ответ дан 11 ноя 2022 в 6:47

Валерий's user avatar

Пример 3. Определить, содержится ли цифра digit в целом числе n.

#include<stdio.h>

int Search(int n, int digit)

{

int d; /* очередная цифра числа n */ do

{

d = n % 10; n /= 10;

}

while (n != 0 && d != digit); return d == digit;

}

int main( )

{

int n, digit;

scanf(“%d%d”, &n, &digit);

printf(“%sn”, Search(n, digit) ? “yes” : “no”); return 0;

}

Пример 4 (Факторизация). Составить программу, печатающую разложение на простые множители заданного целого числа n

> 0.

В следующем алгоритме используется такое утверждение: пусть a – некоторое целое число, причем a > 1, тогда существует

единственное

разложение

на

простые множители вида

a = pk1

pk

2

pkn , где k

, k , .…, k – целые положительные числа, p

, p

,

1

2

n

1

2

n

1

2

.…, pn – простые числа и p1 < p2 < … < pn. #include <stdio.h>

41

int main( )

{

unsigned int n,

/* исходное число n */

i;

/* множитель числа n */

printf(«n = «);

scanf(«%u», &n);

/* вводим n */

i = 2;

/* ищем множители, начиная с числа 2 */

while (n != 1)

{

while (n % i != 0) i++;

printf(«%un», i); /* выводим очередной множитель i */

n /= i; /*делим n на множитель i, чтобы его больше не учитывать*/

}

return 0;

}

Используем тот факт, что если натуральное число имеет собственный делитель, то есть делитель, отличный от самого числа и единицы, то значение этого делителя не превосходит корня из данного числа. Поэтому можно так модифицировать программу:

#include <stdio.h> int main( )

{

unsigned int n, i; printf(«n = «); scanf(«%u», &n); i = 2;

while (n != 1)

{

if (n % i == 0)

{

printf(“%un”, i); n /= i;

}

else

42

if (i*i > n) /* проверка, остались ли собственные делители */ i = n;

else i++;

}

return 0;

}

Пример 5 (Проверка на простоту). Проверить, является ли заданное целое неотрицательное число n простым.

Напомним, что целое число называется простым, если оно имеет ровно два делителя. Поэтому число 1 простым не является.

Для написания алгоритма используем такое утверждение: если целое неотрицательное число n можно представить в виде произведения целых чисел a и b (n = ab), причем a ≥ 2 и b ≥ 2, тогда либо a ≤ [ n ], либо b ≤ [ n ], где [] – целая часть числа. Поэтому будем искать делители числа n в диапазоне от 2 до [ n ].

#include <math.h>

/* логическая функция проверки целого числа на простоту */ int Prime (unsigned int n)

{

if (n == 0 || n == 1) return 0; else

{

int bound = sqrt((double)n); /* bound = [ n ] */ int i = 1;

while (++i <= bound && n % i != 0)

;

return (i > bound);

}

}

Заметим, что можно искать делители числа n в диапазоне от 2 до [ n ] без использования функции извлечения квадратного корня и искать делители только среди нечетных чисел, предварительно проверив делимость на 2:

43

int Prime (unsigned int n)

{

if (n == 2) return 1;

else if (n == 0 || n == 1 || n % 2 == 0) return 0;

else

{

unsigned int i = 3;

while (i*i <= n && n % i != 0) i += 2;

return (i*i > n);

}

}

Пример 6 (алгоритм Евклида). Даны целые положительные числа n и m. Найти их наибольший общий делитель (НОД), используя следующие соотношения:

НОД(n, 0) = НОД(0, n) = n;

НОД(n, m) = НОД(n – m, m), если n m; НОД(n, m) = НОД(n, m – n), если m > n.

unsigned int Nod(unsigned int n, unsigned int m)

{

while (n != 0 && m != 0)

if (n >= m)

n -= m;

/* вычитаем из n значение m */

else

m -= n;

/* вычитаем из m значение n */

if (m == 0) return n; else return m;

}

Данный вариант алгоритма Евклида можно модифицировать, если учесть такие соотношения:

НОД(n, m) = НОД(n, n % m), если m ≠ 0 и НОД(n, 0) = n.

44

unsigned int Nod(unsigned int n, unsigned int m)

{

while (n != 0 && m != 0) if (n >= m)

n %= m; /* в n сохраняем остаток от деления числа n на m */ else

m %= n; /*в m сохраняем остаток от деления числа m на n */ if (m == 0) return n;

else return m;

}

Пример 7. Дано целое число n>0. Определить, является ли оно степенью числа 5. Ниже представлены два варианта логической функции, проверяющие исходное число на степень числа 5.

int Deg_of5(unsigned long a)

{

unsigned long b = 1; if (a == 0)

return 0; while (b < a)

b *= 5; return a == b;

}

int Deg_of5(unsigned long a)

{

if (a == 0) return 0;

while (!(a % 5)) a /= 5;

return a == 1;

}

Пример 8. Дано натуральное число n. Найти значение числа, полученного следующим образом: из записи числа n выбросить цифры 0 и 5, оставив прежним порядок остальных цифр.

unsigned long Number(unsigned long a)

{

unsigned long p = 1, b = 0, digit; while (a)

{

digit = a % 10;

if (digit != 0 && digit != 5)

{

45

b += digit * p; p *= 10;

}

a /= 10;

}

return b;

}

3.6. Вычисление значений элементарных функций

Говорят, что функция f(x) на интервале (-R, R) может быть разложена в степенной ряд, если существует степенной ряд, сходящийся к f(x) на интервале (-R, R). Из курса математического анализа хорошо известно, что элементарные функции имеют следующие разложения:

При этом первые три разложения сходятся на всей числовой оси, а четвертое – на полуинтервале (-1,1]. Для любого фиксированного значения x (для последнего ряда x принадлежит полуинтервалу (- 1,1]) последние три ряда являются числовыми рядами Лейбница, поэтому для любого n справедлива оценка |SnS|≤an, где an n-ый член ряда, Sn n-ая частичная сумма ряда, S – сумма ряда. Исходя из этого можно очень легко вычислить приближенное значение sin(x), cos(x) или ln(1+x) с наперед заданной точностью ε. В этом случае суммирование происходит до тех пор, пока модуль очередного члена ряда не станет меньше чем ε. Ниже приведены примеры вычисления значений синуса и косинуса в точке x с точностью ε.

double Sin(double x, double eps)

double Cos(double x, double eps)

46

{

int i;

double p, /*очередной член ряда */ rez; /* результат */

{

int i;

double p, /*очередной член ряда */ rez; /* результат */

i = 1;

i = 0;

rez = p = x;

rez = p = 1;

while(fabs(p) >= eps)

while(fabs(p) >= eps)

{

{

i += 2;

i += 2;

p *= -(x*x)/((i-1)*i);

p *= -(x*x)/((i-1)*i);

rez += p;

rez += p;

}

}

return rez;

return rez;

}

}

Ниже также представлена функция, вычисляющая приближенное значение ex, использующая n итераций. В качестве параметра n достаточно брать 1000, например Exp(2, 1000).

double Exp(double x, int n)

{

int i, flag = 1; double p, rez; if (x < 0)

x = -x; else flag = 0; rez = p = 1;

for(i = 1; i <= n; i++)

{

p *= x/i; rez += p;

}

return flag ? 1.0/rez : rez;

}

3.7. Задачи

47

1.Найти сумму всех нечетных (s1) и сумму всех четных (s2) целых чисел в диапазоне от 1 до 100.

2.Напечатать все двузначные целые положительные числа, кратные трем, без использования условного оператора.

3.Дано натуральное n, вычислить n! ( 0! = 1, n! = n(n – 1)!).

4.Дано целое число n > 0. Определить, является ли оно степенью числа 3.

5.Дано целое число n > 0. Найти наименьшее целое положительное число k, квадрат которого превосходит n: k2 > n. Функцию извлечения квадратного корня не использовать.

6.Дано целое число n > 0. Определить, представимо ли число n в виде n = k3, где k – некоторое целое число.

7.Для двух целых положительных чисел a и b найти их наименьшее общее кратное (НОК).

8.Подсчитать количество трехзначных натуральных чисел, в записи которых есть две одинаковые цифры.

9.Подсчитать количество трехзначных натуральных чисел, в записи которых все три цифры различны.

10.Определить, имеются ли в записи целого числа n нечетные цифры.

11.Определить, является ли целое число n > 0 симметричным в десятичной записи.

12.Дано натуральное число n. Найти значение числа, полученного следующим образом: из записи числа n выбросить цифры 1 и 2, оставив прежним порядок остальных цифр.

13.Дано действительное число x и целое число n > 0. Используя один цикл, найти сумму 1 + x + x2 + x3 + … + xn.

14.Дано действительное число x и целое число n>0. Найти значе-

ние выражения x x3/(3!) + x5/(5!) – … + (–1)n·x2n+1/((2n+1)!).

15.Последовательность Фибоначчи определяется следующим об-

разом: x0 = 0, x1 = 1, xn = xn-1 + xn-2 при n ≥ 2. Пусть дано натуральное число n. Вычислить xn.

16.Даны целые положительные числа n и k. Используя только операции сложения и вычитания, найти целую часть и остаток от деления n на k.

48

17.Определить, можно ли заданное натуральное число n представить в виде суммы двух квадратов натуральных чисел.

18.Составить программу, печатающую все различные простые множители заданного целого числа n > 0.

19.Пусть дано натуральное число n. Напечатать квадраты всех чи-

сел от 1 до n, не используя операцию умножения (использовать равенство (n + 1)2 = n2 + 2n + 1).

49

4. ОБРАБОТКА ПОСЛЕДОВАТЕЛЬНОСТЕЙ

Последовательность данных не всегда нужно сохранять в памяти. Последовательность можно обрабатывать по мере поступления ее элементов: при чтении файла, при вводе некоторых данных

склавиатуры и т.д.

Вданном разделе рассматриваются задачи, в которых элементы числовой последовательности по одному вводятся с клавиатуры. Признаком завершения числовой последовательности будем считать число 0, которое не является ее элементом.

4.1. Примеры

Пример 1. Подсчитать количество минимальных элементов последовательности действительных чисел.

#include <stdio.h>

int main( )

{

double a,

/* значение текущего элемента последовательности */

min;

/* минимальный элемент последовательности

*/

int n = 0;

/* количество минимальных элементов

*/

printf(«a = «);

scanf(«%lf», &a);

min = a;

/* начальное значение минимального элемента

*/

while (a != 0)

{

if (a == min) n++;

else

if (a < min)

{

/* если введенный элемент оказался меньше всех предыдущих */ /* элементов последовательности, тогда переопределяем min и n */ min = a;

n = 1;

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Найти сумму двузначных нечетных чисел.

Вывести сумму.

А также выводить на экран сколько вводилось двузначных чисел и сколько из них было нечетных.

То есть всего должно быть 3 вывода.

Помогите пожалуйста!

На этой странице сайта, в категории Информатика размещен ответ на вопрос
Найти сумму двузначных нечетных чисел?. По уровню сложности вопрос рассчитан на учащихся
10 – 11 классов. Чтобы получить дополнительную информацию по
интересующей теме, воспользуйтесь автоматическим поиском в этой же категории,
чтобы ознакомиться с ответами на похожие вопросы. В верхней части страницы
расположена кнопка, с помощью которой можно сформулировать новый вопрос,
который наиболее полно отвечает критериям поиска. Удобный интерфейс
позволяет обсудить интересующую тему с посетителями в комментариях.

Добавить комментарий