–
Ученик
(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 | ||
|
Но данный код как-бы вводит не несколько чисел, а все числа в одну строку. Нужно чтобы можно было ввести первое число, и далее новое число вводить с новой строки, признак конца ввода любое отрицательное число. Когда пользователь введет отрицательное число, программа должна подсчитывать сумму всех НЕЧЕТНЫХ введенных чисел до отрицательного числа. На данный момент этот код считает сумму всех любых введенных чисел..
Цикл с параметром (FOR)
Оператор цикла for называют цикл с параметром. Цикл с параметром используется в том случае, когда требуется выполнить заданное количество шагов цикла. Нужно сказать, что for Pascal не слишком гибок (в отличие, например, от С), так как параметр цикла (или счетчик) изменяется на величину, равную единице. Таким образом, когда требуется выполнить дробный шаг необходимо использовать цикл типа while. Существует две разновидности цикла for: с увеличением и с уменьшением значений счетчика (или параметра).
Синтаксис:
for счетчик := начальное значение to конечное значение do
begin
{Операторы}
end;
for счетчик := конечное значение downto начальное значение do
begin
{Операторы}
end;
· Оператор for состоит из заголовка и тела цикла. Составной оператор, находящийся в теле цикла, должен быть заключен в операторные скобки begin и end.
· В качестве идентификатора счетчика обычно используется «i».
· Переменная счетчика должна быть порядкового типа. Например, целочисленного типа: byte, integer.
· Начальное и конечное значения параметра цикла нельзя изменять во время выполнения цикла.
· Оператор for используется для организации циклов с фиксированным, заранее известным или определяемым во время выполнения программы числом повторений.
Блок-схема
(В данной блок схеме: M — начальное значение счетчика, N — конечное значение счетчика)
Пример №1
- Постановка задачи:
Определить сумму нечетных натуральных чисел до 100. Условный оператор не использовать.
- Блок-схема:
- Кодирование
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.
- Тестирование
Дано: |
———————————
Результат | S = 2500
Пример №2
- Постановка задачи:
Вычислить факториал числа n (n! = 1·2·3· … ·n).
- Входные данные: n — целое число, n > 0.
- Выходные данные: переменная f — большое целое
- Блок-схема:
- Кодирование
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.
- Тестирование
Дано: | n = 5
———————————
Результат | 5! = 120
(Примечание: в данной задаче число n не может превышать 12, так как произойдет переполнение для данного типа)
Пример №3
- Постановка задачи:
Вычислить n-е число Фибоначчи.
- Формализация
Последовательность чисел Фибоначчи Fn определяется следующим образом: F1 = 1, F2 = 1, Fn = Fn–2 + Fn–1, n = 3, 4, … .
- Входные данные: n — переменная целого типа, n > 2.
- Выходные данные: переменная f — целого типа (n-е число Фибоначчи)
- Блок-схема:
- Кодирование
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.
- Тестирование
Дано: | n = 10
———————————
Результат | 10-е число Фибоначчи = 55
0 / 0 / 1 Регистрация: 20.11.2021 Сообщений: 74 |
|
1 |
|
25.11.2021, 12:42. Показов 1175. Ответов 4
вычислить
__________________ 0 |
ram876 678 / 388 / 197 Регистрация: 19.12.2016 Сообщений: 1,554 |
||||
25.11.2021, 13:07 |
2 |
|||
Кликните здесь для просмотра всего текста
0 |
long399 Модератор 2269 / 1606 / 874 Регистрация: 16.10.2013 Сообщений: 4,751 Записей в блоге: 12 |
||||
25.11.2021, 13:07 |
3 |
|||
0 |
hrobay 54 / 32 / 24 Регистрация: 26.09.2020 Сообщений: 133 |
||||
25.11.2021, 14:57 |
4 |
|||
0 |
Байт Диссидент 27277 / 17013 / 3760 Регистрация: 24.12.2010 Сообщений: 38,291 |
||||
25.11.2021, 15:59 |
5 |
|||
Арихметика, блин! Арифметические прогрессии 0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
25.11.2021, 15:59 |
Помогаю со студенческими работами здесь Используя оператор while определить сумму всех нечетных чисел в диапазоне от 1 до 99 Рекурсия: вычислить сумму нечетных чисел в диапазоне от 1 до N Вычислить сумму нечетных чисел в заданном диапазоне Написать программу, которая находит сумму всех целых нечетных чисел в заданном диапазоне Вычислить сумму чётных чисел и произведение нечётных в определённом диапазоне Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном пользователя. Составьте программу на С, которая выводит сумму всех нечетных чисел в фиксированном диапазоне, заданном в тексте програм Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 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
13.3k12 золотых знаков41 серебряный знак70 бронзовых знаков
задан 11 ноя 2022 в 6:22
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
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
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 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
Пример 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 справедлива оценка |Sn—S|≤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 классов. Чтобы получить дополнительную информацию по
интересующей теме, воспользуйтесь автоматическим поиском в этой же категории,
чтобы ознакомиться с ответами на похожие вопросы. В верхней части страницы
расположена кнопка, с помощью которой можно сформулировать новый вопрос,
который наиболее полно отвечает критериям поиска. Удобный интерфейс
позволяет обсудить интересующую тему с посетителями в комментариях.