Задача: Даны натуральные числа [latex]i, n[/latex], действительные числа [latex] a_{1}, … ,a_{n} (i\leq n) [/latex]. Найти среднее арифметическое всех чисел [latex]a_{1}, … ,a_{n}[/latex] кроме [latex] a_{i} [/latex].
Т.к в условии задачи указано, что [latex] (i\leq n) [/latex] , то сделаем проверку, также выберем для [latex] i, n [/latex] тип unsigned int, т.к они натуральные ( [latex] >0 [/latex] )
n | i | a[0] | a[1] | a[2] | a[3] | a[4] | a_m |
5 | 2 | 1 | 2 | 3 | 4 | 5 | 3 |
5 | 6 | 2 | 3 | 4 | 5 | 44 | — |
Решение:
Ссылка на ideone C++: http://ideone.com/URjsSJ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> using namespace std; int main() { unsigned int i, n; cin>>n>>i; if (i<=n) { double a, s, a_m; for (int j = 0; j < n; j++) { cin>>a; if (j != i) {s+=a;} } a_m = s/(n-1); cout<<"Ответ: "<<a_m; } else {cout<<"Условие задачи не выполнено";} } |
Ссылка на ideone Java: http://ideone.com/TLfjVZ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int i, n; n=in.nextInt(); i=in.nextInt(); if (i<=n) { double a, s=0, a_m; for (int j = 0; j < n; j++) { a=in.nextDouble(); if (j != i) {s+=a;} } a_m = s/(n-1); System.out.printf("Ответ: %.1f", a_m); } else {System.out.printf("Условие не выполнено");} } } |
Сделаем цикл по [latex]j [/latex]. Если [latex]j\neq i [/latex], то суммируем [latex]a [/latex] в переменную [latex]s [/latex]
— В начале текста «unsigned int» не нужно оформлять как математическую формулу. Если хочется выделить текст как код программы, то это делают при помощи тегов pre. И поставьте пробел между словами.
— Это не «Поисковые задачи» а «Потоковая обработка». Как следствие никаких массивов использовать нельзя (да и не нужно). Зачем Вы запоминаете все числа если никогда больше ими не пользуетесь?
Исправил.
Принято
Засчитана Java-версия (8 баллов из 10)!
Вы даже исправили ошибку C++версии (забыли инициализировать сумму). Правда, все же немного придерусь: можно согласиться с наименованием переменных i, n , j — не то, чтобы это хороший стиль, но во многом это решено за Вас. Можно даже согласиться с названиями a и s, хотя наверное лучше что-то вроде ai и sum. Но расшифровать название a_m еще сложнее — лучше его сменить. Не совсем понятно, почему решили вывести ответ с 1 знаком после запятой (впрочем, это Ваш выбор).
Поправите стиль именования переменных — поставлю максимальный балл.