Array22. Дан массив размера $$N$$ и целые числа $$K$$ и $$L$$ ($$1 \lt K \leq L \leq N$$). Найти сумму всех элементов массива, кроме элементов с номерами от $$K$$ до $$L$$ включительно.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <stdio.h> int main(void) { int a[10]; int n,k,l; printf("N: "); scanf("%i",&n); printf("K: "); scanf("%i",&k); printf("L: "); scanf("%i",&l); int i; for (i=0; i<n; ++i){ printf("a[%i] : ",i); scanf("%i",&a[i]); } int sum=0; for (i=0; i<k-1; ++i) sum+=a[i]; for (i=l; i<n; ++i) sum+=a[i]; printf("%i\n: ",sum); return 0; } |
Другие задачи из раздела Array можно посмотреть здесь.
C++
__________________________
void main()
{
const int array_size = 10;
int array[array_size] = { 10, 10, 5, 5, 9, 5, 10, 10, 10, 10 };
int sum = 0;
int k = 2;
int l = 5;
for (int idx = 0; idx < array_size; idx++)
if (idx l)
sum += array[idx];
cout << sum << endl;
}
почему-то «обгрызлась» строчка при отправке комментария:
if (idx l)
опять ((
иф (инд меньше К ИЛИ инд больше Л)
Так?
Ну конеш алгоритм в данном задании работает, но не рационально использует ресурсы. 🙂
Я бы не хотел что бы это юзалось в моём компьютере например для подсчёта яркости боковых пикселей на мониторе . 🙂
да, так. Но все же void main() — если уж совсем, чтобы было так ))) ну и без ретурна в конце, соответственно
QT жутко матом ругается что так делать не комильфо :)… ща поправлю…
т.к. я совсем начинающий (иначе, Абрамяна бы не решал), поэтому за быстродействие еще ничего не знаю )) пардоньте ))
Да не стоит извиняться 🙂 я пишу, комменты к решениям только в надежде, что это кому то интересно. И они отображают лично моё внутреннее ощущение. 🙂
Кстати, если есть, где можно почитать про быстродействие — буду благодарен за ссылку. Но только именно «для чайников», т.к. на каких-то сложных примерах могу не понять пока что, ибо — «чайник» )))
п.с. жаль, что не приходят уведомления об ответе на комментарий. Я чисто случайно зашел сюда снова после публикации своего комментария. Так что если где-то не отвечу — это именно по этой причине.
п.п.с. и отдельное спасибо за данный ресурс. Из того, что находил в сети, мне кажется, что он лучший.
Спасибо за лестный отзыв … это очень помогает в поддержании этого ресурса. 🙂
Уведомления не приходят! Это фича. Пока пользователь не авторизован и не подтвердил адрес, в строке почты может быть что угодно.
Теперь по Алгоритмам… Всё это по сути мат методы и вычислительные методы. Есть серия книг Искусство программирования. Там очень умые чуваки что то пишут. 🙂 Но в этих книгах весёлых человечков уже не будет. :,( Но полистать время от времени бывает полезным.
Вот здесь меня в комментах понесло по поводу использования дополнительных переменных :
http://coolcode.ru/reshaem-zadachi-abramyan-na-paskale-boolean22/
Спасибо!
А по решению… я к тому, что если k=2 а l=n-1, и n =100. То циклу придётся перебрать все 100 чисел и на каждом сравнить if (idx < k || k > l).
Для того, что бы не перебирать всё, я в своём решении пускаю два цикла:
for (i=0; i < k-1; ++i) sum+=a[i]; for (i=l; i < n; ++i) sum+=a[i]; Но в принципе в некоторых случаях это будет не столь критично... например если k и l находятся "рядом"(относительно длинны массива)
понял. Спасибо. Согласен с вами. Я о таких нюансах пока не задумывался )))
Есть такая проблема… надо пробелов понапихать между знаками < и > иначе они воспринимаются как тег.