• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Решение в Java

serij-68tmb

Ученик
Почётный участник
Регистрация
23 Авг 2012
Сообщения
1,801
Реакции
58
Баллы
0
Решение в Java

Здравствуйте! Помогите, пожалуйста, не знаю, как записать решение.

В общем, задача такая:

sin(a)+sin(a^2)+sin(a^3)+...+sin(a^n)
Нужно получить результат для определенных a и n.
Во первых, я не влип в смысл этой задачи, а во вторых, не знаю как написать решение.

Как я понимаю, здесь a представляется в радианах?

Заранее благодарен.
Вдвойне благодарен за подробно расписанное решение.
 
Рад бы помочь, но, увы, в Яве ни бум-бум. Поэтому всё, что могу - это выложить решение на Паскале, авось с алгоритмом будет понятнее.
Код:
Var
 a,b,Sum:real;
 n,i:Integer;
Begin
 Write('a= ');
 Readln(a);
 Write('n= ');
 Readln(n);
 Sum:=0;
 b:=1;
 For i:=1 to n do
  begin
   b:=b*a;
   Sum:=Sum+Sin(b);
  end;
 Writeln('Result: ',Sum:0:5);
 Readln
End.
И да, геометрическая интерпретация абстрактных аргументов тригонометрических функций это, разумеется, радианы. Непонятно выразился? Поясню. В математике существуют функции Sin(x), Cos(x), Tg(x) и т.д., причем они, вообще говоря, ни с какой геометрией (углами) не связаны. Они сами по себе, так же, как и, например, Exp(x), Ln(x) и т.п. Если же нужно перейти к геометрии, то, конечно, аргументы следует интерпретировать, как радианы.
 
Рад бы помочь, но, увы, в Яве ни бум-бум. Поэтому всё, что могу - это выложить решение на Паскале, авось с алгоритмом будет понятнее.

Паскаль мы даже не начинали изучать, поэтому я могу его знать только на уровне интуиции)

И да, геометрическая интерпретация абстрактных аргументов тригонометрических функций это, разумеется, радианы. Непонятно выразился? Поясню. В математике существуют функции Sin(x), Cos(x), Tg(x) и т.д., причем они, вообще говоря, ни с какой геометрией (углами) не связаны. Они сами по себе, так же, как и, например, Exp(x), Ln(x) и т.п. Если же нужно перейти к геометрии, то, конечно, аргументы следует интерпретировать, как радианы.

Хорошо, спасибо!

Завтра со свежей головой попробую код перевести в Java, авось что-то да получится...
 
Паскаль мы даже не начинали изучать, поэтому я могу его знать только на уровне интуиции)
Жаль. Ну тогда так.
1. Объявляются переменные a, n, Sum (будущая искомая сумма), i (переменная цикла), b (вспомогательная).
2. Вводятся значения a и n.
3. Присваиваются исходные значения: Sum=0, b=1.
4. Организуется цикл в n шагов, на каждом из которых:
а) число b домножается на a.
б) к Sum прибавляется Sin(b).
Если поразмыслить, то станет ясно, что это и будет суммированием синусов возрастающих степеней a.
5. Выводится результат.
 
Жаль. Ну тогда так.
1. Объявляются переменные a, n, Sum (будущая искомая сумма), i (переменная цикла), b (вспомогательная).
2. Вводятся значения a и n.
3. Присваиваются исходные значения: Sum=0, b=1.
4. Организуется цикл в n шагов, на каждом из которых:
а) число b домножается на a.
б) к Sum прибавляется Sin(b).
Если поразмыслить, то станет ясно, что это и будет суммированием синусов возрастающих степеней a.
5. Выводится результат.

Завтра попробую что-нибудь начертать) Спасибо!)
 
Не-а, не получается... Ввод n, Ввод данных в градусах, затем преобразование в радианы, нахождение значения синуса и всё... А как цикл написать, чтобы значения всех полученных синусов суммировались, не знаю...
 
Не-а, не получается... Ввод n, Ввод данных в градусах, затем преобразование в радианы, нахождение значения синуса и всё... А как цикл написать, чтобы значения всех полученных синусов суммировались, не знаю...
Еще раз - в Яве не разбираюсь абсолютно, но что-то типа
Код:
for (int i = 1; i <= n; i++) {   
 b = b*a;
 Sum = Sum + Sin(b); 
}
За корректность не ручаюсь - тут Вам видней.
 
Как можно задать первоначальное значение для переменной Sum?
Сначала ведь её значение - 0, затем при n=1 - sin(a), затем при n=2 - sin(a)+sin(a^2)...
Если в начале программы поставить double Sum=0, то программа везде будет считать, что Sum=0?

Блин, пока я тут программу пробовал писать, у меня блинчики на кухне сгорели(((( Буду без завтрака(((
 
Если в начале программы поставить double Sum=0, то программа везде будет считать, что Sum=0?
Почему это? В цикле значение этой переменной как раз и будет изменяться, как надо.
Блин, пока я тут программу пробовал писать, у меня блинчики на кухне сгорели(((( Буду без завтрака(((
А вот это совсем не годится. Завтрак - дело святое.
 
А вот это совсем не годится. Завтрак - дело святое.

Не спорю, но я их съел)

Почему это? В цикле значение этой переменной как раз и будет изменяться, как надо.

Но так не сходится! допустим, a=30 градусов, переводится в радианы, затем считается значение синуса, получается 1/2. Цикл идет по второму кругу, значение а=30*30=900, sin(900)=sin(180)=0. Результат должен быть равен 0.5, а там бред какой-то получается... Буду ещё копаться...
 
Ахаха, получилось) Как оказалось, я не ту переменную подставлял) Вот код программы, вдруг понадобится такому же студенту, как я)

System.out.println("Введите n:");
int n=reader.nextInt();
double b=1;
System.out.println("Введите a:");
double a=reader.nextInt();
double r=(Math.PI/180);
double s=0;
for (int i=1;i<=n;i++){
b=b*a;
s=s+Math.sin(r*b);
}

System.out.println(s);
 
Всем здравия желаю!

Опять понадобилась помощь... На этот раз - с массивами.

Задача точно не помню, скажу по памяти. Дан массив с несколькими элементами. Нужно в нем найти максимальный элемент, и вывести его значение и порядковый номер в массиве на экран. Если таких элементов несколько, то вывести порядковые номера всех этих элементов.

Эту задачу нужно решить с помощью цикла for и условия if. Хотя бы составить алгоритм действий.

Заранее благодарен!
С Уважением, Сергей.
 
Хотя бы составить алгоритм действий.
Да алгоритм элементарный:
1. Вводите и заполняете массив (например, генерируя случайные числа).
2. Вводите переменную Max и присваиваете ей значение нулевого элемента массива.
3. Оператором FOR "проходите" массив начиная с i=1, проверяя для каждого элемента выполнение условия A(i)>Max, и если это условие выполнено, то Max=A(i).
4. Вновь "проходите" массив, и если выполняется условие A(i)=Max, то выводите i и Max.
Всё!
 
Да алгоритм элементарный:

Благодарю! Смысл у меня такой же в голове, просто не знал, как записать)))

И ещё. Дан двухмерный массив (матрица). Нужно найти среднее арифметическое всех элементов. Тут, как я понял, нужно тоже через for, одна переменная - номер строки, вторая - номер столбца, и нужно сделать так, чтобы значение первой переменной увеличивалось на 1, когда значение второй переменной дошло до крайнего элемента в строке? И суммировать эти элементы. Так?
 
Всё-таки написал программы. Выкладываю их сюда, может, кому-нибудь понадобятся, либо кто-то захочет их уменьшить)

1 задача:
int a[]={1,3,5,122,7,9,2,4,6,8,0,10,122};
int b=a.length;
int max=a[0];
for (int i=1; i<b; i++){
if (a>max)
max=a;}

for (int i=1; i<b; i++){
if (a==max)
System.out.println(i);
}
System.out.println(max);


2 задача:
double a[][];
a=new double[4][4];
a[0][0]=5;
a[0][1]=4;
a[0][2]=3;
a[0][3]=2;
a[1][0]=2;
a[1][1]=4;
a[1][2]=5;
a[1][3]=3;
a[2][0]=5;
a[2][1]=3;
a[2][2]=4;
a[2][3]=2;
a[3][0]=2;
a[3][1]=4;
a[3][2]=3;
a[3][3]=5;
int b=a.length;
int i=0;
int j=0;
double sum=0;
for (i=0; i<b; i++){
sum=sum+a[j];
if (i==(b-1))
j++;
}
for (i=0; i<b; i++){
sum=sum+a[j];
if (i==(b-1))
j++;
}
for (i=0; i<b; i++){
sum=sum+a[j];
if (i==(b-1))
j++;
}
for (i=0; i<b; i++){
sum=sum+a[j];
if (i==(b-1))
j++;
}
double d=sum/(b*b);
System.out.println(d);


Числа можно подставлять любые, необязательно те, которые уже стоят)
 
Назад
Сверху