Программа которая вычисляет сумму чисел от 1 до n

C#. Решение задач на одномерные массивы. Совмещение оператора цикла с оператором условия

Поиск на других ресурсах:

1. Нахождение суммы положительных элементов массива из n целых чисел

Задан массив A из 10 целых чисел. Найти сумму положительных элементов массива

1.1. Реализация с помощью цикла for

В данном примере пропущен ввод массива A

// Нахождение суммы положительных элементов массива const int MaxN = 10; int[] A = new int[MaxN]; // заданный массив int i; // ввод массива A // . // вычисление суммы int sum = 0; for (i=0; iif (A[i]>0) sum = sum + A[i];

1.2.

Реализация с помощью цикла while

// Нахождение суммы положительных элементов массива const int MaxN = 10; int[] A = new int[MaxN]; // заданный массив int i; // дополнительная переменная int sum = 0; // результат // ввод массива A // . // вычисление суммы i=0; while (i0) sum+=A[i]; i++; >

1.3. Реализация с помощью цикла do…while

// Нахождение суммы положительных элементов массива const int MaxN = 10; int[] A = new int[MaxN]; // заданный массив int i; // дополнительная переменная int sum = 0; // результат // ввод массива A // . // вычисление суммы i=0; do < if (A[i]>0) sum+=A[i]; i++; > while (i

2. Найти сумму элементов массива, которые размещаются на парных индексах

Сумма чисел от 1 до 100

В данном примере вычисляются суммы элементов массива A , индексы которых есть парными: 0, 2, 4, … Чтобы определить есть ли число (индекс массива) парным, нужно выполнить проверку

if ((i%2)==0) < // действия, если число парное // . >

Реализация решения данной задачи тремя видами цикла (ввод массива A пропущен).

// Нахождение суммы элементов массива, имеющих парные индексы (0, 2, 4. ) const int MaxN = 10; int[] A = new int[MaxN]; // заданный массив int i; // дополнительная переменная int sum1, sum2, sum3; // результаты вычислений разными видами циклов // ввод массива A // . // вычисление суммы, цикл for sum1 = 0; for (i=0; iif ((i%2)==0) // определение парности числа sum1+=A[i]; // вычисление суммы, цикл while sum2 = 0; i=0; while (iif ((i%2)==0) sum2+=A[i]; i++; > // вычисление суммы, цикл do. while sum3 = 0; i=0; do < if ((i%2)==0) sum3+=A[i]; i++; > while (i

3. Найти произведение элементов массива, которые больше заданного числа

В примере находится произведение элементов массива A , которые больше числа, которое размещается в переменной number .
Реализация задачи с использованием цикла for :

// произведение элементов массива, которые больше заданного числа const int MaxN = 10; int[] A = new int[MaxN]; // заданный массив int number; // заданное число int i; // дополнительная переменная int res; // результат — произведение // ввод массива A for (i=0; i // задание числа number number = 5; // поиск произведения — цикл for res = 1; for (i=0; iif (A[i]>number) res = res * A[i]; // res = 3024

Если размерность массива большая, то результат произведения целесообразно держать в переменной типа double ( float ). Это связано с тем, что результатом произведения могут быть очень большие или очень маленькие числа. При использовании целых типов может возникнуть переполнение.

ЭТО ТАК ПРОСТО! Найти сумму чисел от 1 до 50 ! #порешайсомной#математика#егэ#огэ

Фрагмент реализации данной задачи с использованием цикла while

Читайте также:
Как настроить программу офис

. // поиск произведения — цикл while res = 1; i=0; while (iif (A[i]>number) res = res * A[i]; i++; > // res = 3024

Реализация с помощью цикла do…while

// поиск произведения — цикл do. while res = 1; i=0; do < if (A[i]>number) res = res * A[i]; i++; > while (i// res = 3024

4. Определение наличия (отсутствия) заданного символа в массиве символов (тип char )

Пусть задан массив символов M . Определить, есть ли заданный символ sym в массиве M . В данном примере пропущен этап ввода массива M и символа sym . Реализация алгоритма с использованием цикла for .

char[] M = new char[10]; // заданный массив char sym; int i; bool f; // ввод массива M // . // вычисление f = false; for (i = 0; i < 10; i++) if (M[i] == sym) f = true;

5. Определение наличия (отсутствия) заданного числа в массиве чисел. Массив имеет n целых чисел

Задан массив A целых чисел. Определить, есть ли заданное число num в массиве A .
Реализация с использованием цикла while (ввод массива A и переменных n , num пропущен).

// определение наличия (отсутствия) заданного числа в массиве чисел int[] A = new int[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int num; // искомое число int i; // дополнительная переменная bool f; // результат: f=true — число есть в массиве, иначе f=false // ввод A, n, num // . // вычисление f = false; i=0; while (iif (A[i] == num) f = true; i++; >

6. Поиск позиции последнего вхождения элемента k в массиве из n целых чисел

Способ 1 (медленный).

В данном алгоритме результирующая переменная pos определяет позицию последнего вхождения элемента k в массиве из n целых чисел. Если такого символа нет в массиве, то pos = -1. Реализация с помощью цикла do…while

// поиск позиции последнего вхождения элемента k в массиве из n целых чисел int[] A = new int[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int k; // искомое число int i; // дополнительная переменная int pos; // результат — номер позиции, если pos=-1, то числа k не найдено в массиве A // ввод A, n, k // . // вычисление, реализация с помощью цикла do. while pos = -1; i=0; do < if (A[i] == k) pos = i; i++; > while (i

Способ 2 (быстрый).

Если перебирать (пересматривать) индексы массива от конца к началу, то первый элемент равен k будет позицией последнего вхождения. В этом случае реализация алгоритма (цикл do…while ) будет следующей

// поиск позиции последнего вхождения элемента k в массиве из n целых чисел int[] A = new int[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int k; // искомое число int i; // дополнительная переменная int pos; // результат — номер позиции, если pos=-1, то число k не найдено в массиве A // ввод A, n, k // . // вычисление, реализация с помощью цикла do..while pos = -1; i=n-1; do < if (A[i] == k) < pos = i; i=-1; // выход из цикла > else i—; > while (i>=0);

7. Поиск позиции первого вхождения элемента k в массиве из n целых чисел

Как было показано в предыдущем пункте, эту задачу можно решать разными способами. В нижеследующем коде массив пересматривается от начала к концу. Как только встречается элемент k , происходит запоминание позиции элемента k и выход из цикла.
Реализация задачи с использованием цикла for .

Читайте также:
Оптимизация производственной программы предприятия это

// поиск позиции первого вхождения элемента k в массиве из n целых чисел int[] A = new int[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int k; // искомое число int i; // дополнительная переменная int pos; // результат — номер позиции, если pos=-1, то число k не найдено в массиве A // ввід A, n, k // . // вычисление, реализация с помощью цикла for pos = -1; for (i=0; iif (A[i]==k) < pos = i; break; // выход из цикла >

8. Подсчет количества элементов k в массиве из n целых чисел

В нижеследующем коде пропущен ввод массива A и значений n , k .

// подсчет количества элементов k в массиве A int[] A = new int[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int k; // искомое число int i; // дополнительная переменная int count; // результат — количество найденных элементов // ввод A, n, k // . // вычисление, реализация с помощью цикла while count=0; i=0; while (iif (A[i++]==k) count++;

9. Подсчет количества элементов в массиве из n вещественных чисел, которые меньше заданного значения k

Реализация с помощью цикла do…while

// подсчет количества элементов, которые меньше заданного k int[] A = new int[50]; // заданный массив A int n; // текущая размерность массива n = 1..50 int k; // сравниваемое значение int i; // дополнительная переменная int count; // результат // ввод A, n, k // . // вычисление, реализация с помощью цикла while count=0; i=0; do < if (A[i] while (i

10. Подсчет количества элементов в массиве из n вещественных чисел, значение которых находится в пределах диапазона [ a .. b ].

// подсчет количества элементов, которые лежат в заданном диапазоне double[] M = new double[50]; // заданный массив M int n; // текущая размерность массива n = 1..50 double a, b; // сравниваемые значения int i; // дополнительная переменная int count; // результат // ввод A, n, a, b // . // вычисление, реализация с помощью цикла for count=0; for (i=0; iif ((M[i]>=a)(M[i]<=b)) count++;

11. Подсчет количества парных элементов в массиве из n целых чисел

// подсчет количества парных элементов в массиве целых чисел int[] A = new int[50]; // заданный массив A int n; // текущая размерность массива n = 1..10 int i; // дополнительная переменная int count; // результат — количество парных элементов // ввод A, n // . // вычисление, реализация с помощью цикла for count=0; for (i=0; iif ((A[i]%2)==0) count++;

Связанные темы

  • Одномерные массивы. Циклы for, while , do..while
  • C# . Одномерные массивы. Примеры решения задач на одномерные массивы. Массивы структур. Массивы классов

Источник: www.bestprog.net

Задача «Сумма чисел»

Задано натуральное число n . Найти сумму чисел от 1 до n включительно.

Вход. Натуральное число n , не большее 10000 .

Выход. Сумма чисел от 1 до n включительно.

Пример входа

Пример выхода

Решение. Элементарные вычисления.

Сумму чисел можно найти в цикле, последовательно складывая числа от 1 до n . Но такая реализация не оптимальна по времени. На реальном соревновании за такое решение получим Time Limit. Следует воспользоваться формулой суммы арифметической прогрессии. Результатом будет

res = (1 + n) * n / 2

Для целочисленных операций в Паскале над большими числами можно использовать вещественный тип . А результат выводить без знаков после запятой. По условию максимальное n равно 10000, значит результат равен (1+10000)*10000 / 2 = 50005000, а он не помещается в тип integer .

Реализация алгоритма

Читаем входное значение n и вычисляем сумму res согласно приведенной выше формуле. Аккуратно следует обращаться с преобразованием типов. Писать res := n *(n-1)/2.0 нельзя, так как в этом случае числа n и n-1 имеют тип integer , и при их произведении произойдет переполнение, что приведет к неверному результату.

Читайте также:
Устройство занято пожалуйста закройте все запущенные программы что делать

Ожидаемые ошибки

1. При использовании целочисленных типов в Паскале ( integer или word ) невозможно вычислить результат, так как произойдет переполнение. Один из вариантов решения проблемы – использование действительного типа.

2. Действительным типом может быть real , double или extended . Предпочтительней использовать double , так как он 8 байтный – хорошо подходит для выполнения на сопроцессоре. 4 байтный тип real все равно преобразуется в 8 байтный, если у Вас в компьютере есть сопроцессор. Использование double увеличивает точность вычислений, сводя к минимуму ошибки вычислений при округлениях.

3. Сумму следует считать при помощи формулы суммы арифметической прогрессии. Все вычисления следует производить оптимально. То есть можно было бы написать следующую правильную циклическую программу, но она была бы не оптимальна по времени:

Источник: inf5.ru

Решение задач на С++

Задача A. Сумма квадратов
По данному натуральному n вычислите сумму 1 2 +2 2 +. +n 2 .

  1. int n, s = 0;
  2. cin >> n;
  3. for ( int i = 1 ; i
  4. s += i*i;
  5. cout

Задача C. Факториал
Вычислите N! («эн-факториал») – произведение всех натуральных чисел от 1 до N ( N!=1∙2∙3∙…∙ N ).
N – натуральное, не превосходит 12.

  1. int n, nf = 1;
  2. cin >> n;
  3. for ( int i = 2 ; i
  4. nf *= i;
  5. cout

Задача D. Степень
Выведите число 2 N . N не превосходит 30.

  1. const int count = 2;
  2. int n, rez = 1;
  3. cin >> n;
  4. for ( int i = 1 ; i
  5. rez *= count;
  6. cout
  1. int n;
  2. cin>>n;
  3. cout

Задача E. Число сочетаний
По данным натуральным n и k вычислите значение Cn k = n! / (k!(n-k)!) (число сочетаний из n элементов по k).

  1. long long n,k;
  2. cin>>n>>k;
  3. long long res = 1;
  4. for ( int i=1;i <=k;i++)
  5. res *= (n-k+i);
  6. res /= i;
  7. >
  8. cout

Задача G. Геометрическая прогрессия
По данному действительному числу a и натуральному n вычислите сумму 1+a+a 2 +. +a n , не используя формулу суммы геометрической прогрессии. Время работы программы должно быть пропорционально n.

  1. double a;
  2. int n;
  3. cin >> a >> n;
  4. double sum = 1 , an = 1;
  5. for ( int i = 1 ; i
  6. an *= a;
  7. sum += an;
  8. >
  9. printf( «%0.8f» ,sum);

Задача H. Сумма – 1
По данному числу n вычислите сумму 1+1/2 2 +1/3 2 +. +1/n 2 . Вводится одно число n, не превосходящее 100000.

  1. int n;
  2. cin >> n;
  3. double sum = 0;
  4. for ( long long i = 1 ; i
  5. sum += 1.0/(i*i);
  6. printf( «%0.8f» ,sum);

Задача I. Сумма – 2
По данному числу n вычислите сумму 4(1-1/3+1/5-1/7+. +(-1) n /(2n+1)). Вводится одно число n, не превосходящее 100000.

  1. int n;
  2. cin >> n;
  3. double sum = 1.0;
  4. int sign = -1;
  5. for ( int i = 1 ; i
  6. sum += sign / ( 2.0 * i + 1 );
  7. sign = -sign;
  8. >
  9. printf( «%0.8f» , 4 * sum);

Задача J. Сумма степеней
Вычислите 1+2+2 2 +2 3 +…+2 N . N – натуральное, не превосходит 30.

  1. const int osn = 2;
  2. int n;
  3. cin >> n;
  4. int step = 1, sum = 1;
  5. for ( int i = 1 ; i
  6. step *= osn;
  7. sum += step;
  8. >
  9. cout
  1. int n;
  2. cin >> n;
  3. int step = 1, sum = 1;
  4. for ( int i = 1 ; i
  5. step
  6. sum += step;
  7. >
  8. cout

Задача K. 1/0!+1/1!+1/2!+.
По данному натуральному числу N найдите сумму чисел 1+1/1!+1/2!+1/3!+. +1/N!. Количество действий должно быть пропорционально N.

  1. int n;
  2. cin >> n;
  3. int step = 1, sum = 1;
  4. for ( int i = 1 ; i
  5. step
  6. sum += step;
  7. >
  8. cout

1 комментарий:

Источник: cpptasksolver.blogspot.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru