Перейти к содержанию
Сумма модулей элементов массива, расположенных после первого отрицательного
Просмотров 4.6к. Обновлено 20 октября 2021
Поиск первого отрицательного:
Сначала находим первый отрицательный элемент и запоминаем его индекс (например, в переменной neg). На случай, если в массиве вообще не будет отрицательных элементов, до цикла поиска присваиваем neg значение, выходящее за границы диапазона индексов данного массива.
В цикле осуществляем проверку элементов на отрицательность. Как только попадается первый такой элемент, его индекс присваивается переменной neg, а цикл следует прервать (с помощью команды break).
Вычисление суммы модулей:
Если neg содержит выходящее за границы диапазона значение, то выводим сообщение, что в массиве нет отрицательных элементов. Иначе считаем сумму модулей элементов, расположенных после первого отрицательного. Начинать следует с элемента с индексом на 1 больше, чем у найденного первого отрицательного.
Для хранения суммы вводим переменную (например, s) и присваиваем ей 0. В цикле перебираем массив от элемента с индексом neg+1 и до конца, находим абсолютное значение каждого элемента и добавляем его к sum. После выполнения цикла выводим значение sum на экран.
Pascal
const N = 10;
var
arr: array[1..N] of integer;
i,neg: byte;
sum: integer;
begin
randomize;
for i:=1 to N do begin
arr[i] := random(30)-5;
write(arr[i]:4);
end;
writeln;neg := 0; // ищем первый отрицательный
for i:=1 to N do
if arr[i] < 0 then begin
neg := i;
break;
end;if neg = 0 then
writeln('Отрицательных элементов нет')
else begin
writeln('Номер первого отрицательного: ', neg);
sum := 0; // считаем сумму модулей после первого отрицательного
for i:=neg+1 to N do
sum := sum + abs(arr[i]);
writeln('Сумма модулей элементов после него: ', sum);
end;
end.
17 4 11 9 -5 -2 22 3 8 0
Номер первого отрицательного: 5
Сумма модулей элементов после него: 35
Язык Си
#include < stdio.h>
#define N 10
main() {
int arr[N], sum;
char i,neg;
srand(time(NULL));
for (i=0; i< N; i++) {
arr[i] = rand()%30 - 5;
printf("%d ", arr[i]);
}
printf("n");neg = -1;
for (i=0; i < N; i++) {
if (arr[i] < 0) {
neg = i;
break;
}
}if (neg == -1) printf("нет отрицательныхn");
else {
printf("номер I-го отриц.: %dn", neg+1);
sum = 0;
for (i=neg+1; i< N; i++) sum += abs(arr[i]);
printf("сумма: %dn", sum);
}
}
Python
from random import random
N = 10
arr = []
for i in range(N):
arr.append(int(random() * 30) - 5)
print(arr)neg = -1
for i in range(N):
if arr[i] < 0:
neg = i
breakif neg == -1:
print('Отрицательных нет')
else:
print('Номер первого отриц.:', neg+1)
s = 0
for i in range(neg+1,N):
s += abs(arr[i])
print('Сумма: ', s)
КуМир
алг сумма после перв отриц
нач
цел N = 10
цел таб arr[1:N]
цел i,neg,sum
нц для i от 1 до N
arr[i] := irand(-5,30)
вывод arr[i]:4
кц
вывод нсneg := 0
нц для i от 1 до N
если arr[i] < 0 то
neg := i
выход
все
кцесли neg=0 то
вывод "отриц. нет"
иначе
вывод "первый отриц.: ", neg, нс
sum := 0
нц для i от neg+1 до N
sum := sum + iabs(arr[i])
кц
вывод "сумма модулей после = ", sum
все
кон
Basic-256
N = 10
dim arr(N)
for i=0 to N-1
arr[i] = int(rand*30) - 5
print arr[i] + " ";
next ineg=-1
for i=N-1 to 0 step -1
if arr[i] < 0 then
neg = i
endif
next iif neg = -1 then
print "Нет отриц."
else
print "Номер перв. отриц.: " + (neg+1)
sum = 0
for i=neg+1 to N-1
sum = sum + abs(arr[i])
next i
print sum
endif
В языке basic256 нет команды break. Поэтому поиск первого отрицательного элемента массива осуществляется перебором массива с конца.
0 / 0 / 0 Регистрация: 27.05.2010 Сообщений: 23 |
|
1 |
|
Сумма модулей элементов массива27.05.2010, 19:06. Показов 2906. Ответов 7
в одномерном массиве, состоящем из n вещественных элементов, вычислить: Буду очень благодарна Вам, если мне поможете решить.
0 |
Qwerty_coder 29 / 29 / 6 Регистрация: 14.12.2009 Сообщений: 79 |
||||
28.05.2010, 17:21 |
2 |
|||
Держи код..
1 |
0 / 0 / 0 Регистрация: 27.05.2010 Сообщений: 23 |
|
28.05.2010, 19:27 [ТС] |
3 |
извините пожалуйста,он пишит ошибку в первой строчке
0 |
Qwerty_coder 29 / 29 / 6 Регистрация: 14.12.2009 Сообщений: 79 |
||||
28.05.2010, 19:45 |
4 |
|||
тусся,
можно убрать или попробуй сделать так: Чтобы все заработало, создай новый проект (console application), после чего появится окошко, нажми Next и в пункте “Additional options” поставь галку на “Precompiled header”. После чего вставляй туда мой код.
0 |
0 / 0 / 0 Регистрация: 27.05.2010 Сообщений: 23 |
|
28.05.2010, 20:02 [ТС] |
5 |
но у меня visual studio6.0, скажите пожалуста, что мне делать
0 |
Qwerty_coder 29 / 29 / 6 Регистрация: 14.12.2009 Сообщений: 79 |
||||
28.05.2010, 20:07 |
6 |
|||
тусся, ладно, будет действовать попроще. Для начала создайте пустой консольный проект (empty project) и вставьте туда вот этот вот код. Я его немного подправил, поэтому теперь должно все отлично запускаться:
1 |
0 / 0 / 0 Регистрация: 27.05.2010 Сообщений: 23 |
|
28.05.2010, 20:19 [ТС] |
7 |
СПАСИБО БОЛЬШОЕ, ПОЛУЧИЛОСЬ=)))))))))))
0 |
29 / 29 / 6 Регистрация: 14.12.2009 Сообщений: 79 |
|
28.05.2010, 20:20 |
8 |
Рад за вас =)
1 |
Нахождение суммы модулей элементов массива размещённых после ноля
На чтение 2 мин Просмотров 100 Опубликовано 22.11.2012
Обновлено 30.01.2023
В этой статье я расскажу вам как найти сумму элементов массива, которые размещены после ноля (ну или любого другого символа).
Прежде всего отмечу, что мы не будем использовать никаких сторонних библиотек. Эта задача проста и не трубет особо громоздкого кода.
#include <iostream> using namespace std;
В главной функции программы оприделим наш массив:
int a[10] = {1,-3,5,0,-5,6,8,9,-8,6};
Зарезервируем переменную для суммы:
int summa = 0;
Теперь в цикле будем проходить массив до нахождения необходимого элемента:
for (int i=0; i<10; i++){ if (a[i]==0) { for (i=i+1; i<10; i++) ////обратите внимание, что проход начинается со следующего элемента! Ноль проходить нам ненужно.. summa += (a[i] > 0) ? a[i]: -a[i]; break; } }
После нахождения необходимого элемента добавляем в переменную суммы модули элементов.
Модуль числа можно найти при помощи функции abs(), но это очень просто реализовать при помощи тернарного оператора. Рассмотрим его суть.
(a[i]>0) ? a[i] : -a[i];
Если будет выполнено условие (a[ i ] > 0) т.е. число положительное, то к сумме будет добавлен элемент a[ i ]; если элемент отрицателен (a[ i ] > 0) — необходимо изменить знак ( -a[ i ] ).
После прохода вложенного массива необходимо остановить проход проход главного. Это делается при помощи ключевого слова break.
Теперь осталось только вывести на экран результат:
cout << «Cумма элементов после 0 = » << summa;
У меня после компиляции получилось вот так:
Cумма элементов после 0 = 42
Наша программа готова.
Похожий код:
Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.
Николай Веселуха
Высший разум
(334025)
11 лет назад
// _69761031
#include <iostream>
using namespace std;
int main()
{
int a[] = {-3, 2, -8, 2, 0, -4, 4, -6, -5, 7, 9, -1};
int min = a[0], summa = 0;
for (int n = 0; n < sizeof(a) / sizeof(int); n++)
{
if (min > a[n]) min = a[n];
summa += abs(a[n]);
}
cout << “n Minimum = ” << min << “n Summa = ” << summa;
cin.get();
return 0;
}
ra
Высший разум
(113206)
11 лет назад
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main() {
int a[10], c, min, sum = 0;
printf(“random array:”);
srand(time(NULL));
/* инициализация массива случайными числами */
for (c = 0; c < 10; ++c) {
printf(” %d”, a[c] = rand() % 101 – 50);
}
/* поиск минимума */
min = a[0];
for (c = 1; c < 10; ++c) {
if (min > a[c]) {
min = a[c];
}
}
/* подсчет суммы модулей */
printf(“nmin: %d”, min);
for (c = 0; c < 10; ++c) {
sum += a[c] < 0 ? -a[c] : a[c];
}
printf(“nsum: %dn”, sum);
return 0;
}
Задача — Сумма модулей элементов массива, расположенных после первого отрицательного
— программирование на Pascal, Си, Кумир, Basic-256, Python
Вычислить сумму модулей элементов массива, расположенных после первого отрицательного элемента.
Например, в массиве [5, 3, -1, 8, 0, -6, 1] первый отрицательный элемент является третьим по счету, а сумма модулей стоящих после него элементов массива будет составлять 8 + 0 + 6 + 1 = 15.
Поиск первого отрицательного:
Сначала находим первый отрицательный элемент и запоминаем его индекс (например, в переменной neg). На случай, если в массиве вообще не будет отрицательных элементов, до цикла поиска присваиваем neg значение, выходящее за границы диапазона индексов данного массива.
В цикле осуществляем проверку элементов на отрицательность. Как только попадается первый такой элемент, его индекс присваивается переменной neg, а цикл следует прервать (с помощью команды break).
Вычисление суммы модулей:
Если neg содержит выходящее за границы диапазона значение, то выводим сообщение, что в массиве нет отрицательных элементов. Иначе считаем сумму модулей элементов, расположенных после первого отрицательного. Начинать следует с элемента с индексом на 1 больше, чем у найденного первого отрицательного.
Для хранения суммы вводим переменную (например, s) и присваиваем ей 0. В цикле перебираем массив от элемента с индексом neg+1 и до конца, находим абсолютное значение каждого элемента и добавляем его к sum. После выполнения цикла выводим значение sum на экран.
Pascal const N = 10;
var
arr: array[1..N] of integer;
i,neg: byte;
sum: integer;
begin
randomize;
for i:=1 to N do begin
arr[i] := random(30)-5;
write(arr[i]:4);
end;
writeln;
neg := 0; // ищем первый отрицательный
for i:=1 to N do
if arr[i] < 0 then begin
neg := i;
break;
end;
if neg = 0 then
writeln(’Отрицательных элементов нет’)
else begin
writeln(’Номер первого отрицательного: ‘, neg);
sum := 0; // считаем сумму модулей после первого отрицательного
for i:=neg+1 to N do
sum := sum + abs(arr[i]);
writeln(’Сумма модулей элементов после него: ‘, sum);
end;
end. 17 4 11 9 -5 -2 22 3 8 0
Номер первого отрицательного: 5
Сумма модулей элементов после него: 35 Язык Си #include <stdio.h>
#define N 10
main() {
int arr[N], sum;
char i,neg;
srand(time(NULL));
for (i=0; i<N; i++) {
arr[i] = rand()%30 — 5;
printf(“%d “, arr[i]);
}
printf(“n”);
neg = -1;
for (i=0; i < N; i++) {
if (arr[i] < 0) {
neg = i;
break;
}
}
if (neg == -1) printf(“нет отрицательныхn”);
else {
printf(“номер I-го отриц.: %dn”, neg+1);
sum = 0;
for (i=neg+1; i<N; i++) sum += abs(arr[i]);
printf(“сумма: %dn”, sum);
}
} Python from random import random
N = 10
arr = []
for i in range(N):
arr.append(int(random() * 30) — 5)
print(arr)
neg = -1
for i in range(N):
if arr[i] < 0:
neg = i
break
if neg == -1:
print(’Отрицательных нет’)
else:
print(’Номер первого отриц.:’, neg+1)
s = 0
for i in range(neg+1,N):
s += abs(arr[i])
print(’Сумма: ‘, s) КуМир алг сумма после перв отриц
нач
цел N = 10
цел таб arr[1:N]
цел i,neg,sum
нц для i от 1 до N
arr[i] := irand(-5,30)
вывод arr[i]:4
кц
вывод нс
neg := 0
нц для i от 1 до N
если arr[i] < 0 то
neg := i
выход
все
кц
если neg=0 то
вывод “отриц. нет”
иначе
вывод “первый отриц.: “, neg, нс
sum := 0
нц для i от neg+1 до N
sum := sum + iabs(arr[i])
кц
вывод “сумма модулей после = “, sum
все
кон
В языке КуМир функция abs() возвращает вещественное число. Поэтому ее нельзя использовать в выражении добавления значения к переменной sum (последняя целочисленная). Кроме abs() в языке предусмотрена функция iabs(), возвращающая целочисленное значение.
Basic-256 N = 10
dim arr(N)
for i=0 to N-1
arr[i] = int(rand*30) — 5
print arr[i] + ” “;
next i
print
neg=-1
for i=N-1 to 0 step -1
if arr[i] < 0 then
neg = i
endif
next i
if neg = -1 then
print “Нет отриц.”
else
print “Номер перв. отриц.: ” + (neg+1)
sum = 0
for i=neg+1 to N-1
sum = sum + abs(arr[i])
next i
print sum
endif
В языке basic256 нет команды break. Поэтому поиск первого отрицательного элемента массива осуществляется перебором массива с конца.
Did you find apk for android? You can find new Free Android Games and apps.