Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
PacificABCNET
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 99
1

Неверный вывод при возведении в степень массива

25.06.2018, 23:03. Просмотров 1193. Ответов 9
Метки нет (Все метки)

При попытке возвести в степень получается неверный рассчет. При возведении массива в 3 степень возводится в 6. Объясните, пожалуйста, что не так?

C#
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
       
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp2
{
    class Program
    {
        public static void Main()
        {
            var arrayToPower = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            PrintArray(GetPoweredArray(arrayToPower, 1));
            PrintArray(GetPoweredArray(arrayToPower, 2));
            PrintArray(GetPoweredArray(arrayToPower, 3));
            PrintArray(GetPoweredArray(new int[0], 1));
            PrintArray(GetPoweredArray(new[] { 42 }, 0));
        }
 
        public static int[] GetPoweredArray(int[] arr, int power)
        {
            var res = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                    res = (int)Math.Pow(arr[i], power);
                    arr[i] = res;
            }
            return arr;
 
        }
 
        static void PrintArray(int[] arr)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                Console.Write(arr[i] + "{0}", i < arr.Length - 1 ? " " : "");
            }
            Console.WriteLine();
        }
 
    }
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2018, 23:03
Ответы с готовыми решениями:

Ошибки при возведении экспоненты в степень
Подскажите, пожалуйста, почему при попытке выполнить программу using System; using...

Ошибка при возведении в степень по модулю 33
ошибка при возведении в степень по модулю 33 пробую 15^17 по модулю должен вывести 27 14^17...

При возведении в степень возвращается неправильный ответ
Дорый день. Если взять: MessageBox.Show((Math.Pow(3, 7).ToString())); Получим 2187. А если же...

Как в string вывести текст с цифры в верхнем регистре (как при возведении в степень)
Здравствуйте. Необходимо (в EditText выводить) получить строку со значением давления в кг/см^2....

Неверный вывод из массива
for (int i = 0; i &lt;= adress.Length - 1; i++) { if (adress != 0) ...

9
VladPVS
183 / 162 / 99
Регистрация: 14.03.2018
Сообщений: 426
Завершенные тесты: 2
25.06.2018, 23:10 2
PacificABCNET, элементы массива к тому времени уже возведены во вторую степень и они ещё возводятся в третью. Итого, получается шестая относительно изначальных чисел.
0
PacificABCNET
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 99
25.06.2018, 23:24  [ТС] 3
VladPVS, а как сделать сброс, чтобы изначальные элементы возвелись в третью степень?
0
VladPVS
183 / 162 / 99
Регистрация: 14.03.2018
Сообщений: 426
Завершенные тесты: 2
25.06.2018, 23:32 4
Вот так можно:
C#
1
arrayToPower = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
0
25.06.2018, 23:32
PacificABCNET
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 99
25.06.2018, 23:35  [ТС] 5
Всё дело в том, что исходный массив при этом должен остаться неизменным. То есть мне надо сделать всё в методе GetPoweredArray.
0
VladPVS
183 / 162 / 99
Регистрация: 14.03.2018
Сообщений: 426
Завершенные тесты: 2
25.06.2018, 23:44 6
Лучший ответ Сообщение было отмечено PacificABCNET как решение

Решение

PacificABCNET, тогда замените метод GetPoweredArray на следующий:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        public static int[] GetPoweredArray(int[] arr, int power)
        {
            int[] array = new int[arr.Length];
            arr.CopyTo(array, 0);
 
            var res = 0;
            for (int i = 0; i < array.Length; i++)
            {
                res = (int)Math.Pow(array[i], power);
                array[i] = res;
            }
            return array;
        }
1
PacificABCNET
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 99
25.06.2018, 23:46  [ТС] 7
VladPVS, спасибо)
Пока гадал в чём дело, тоже решил, но по-другому
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        public static int[] GetPoweredArray(int[] arr, int power)
        {
            var i = 0;
            var res = 0;
            var array = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            for (; i < arr.Length; i++)
            {
                if (array[i] <= arr.Length)
                {
                    res = (int)Math.Pow(array[i], power);
                    arr[i] = res;
                }
            }
            return arr;
 
        }
0
VladPVS
183 / 162 / 99
Регистрация: 14.03.2018
Сообщений: 426
Завершенные тесты: 2
25.06.2018, 23:53 8
Исходный массив таким образом меняется. Кроме того, в коде прописывается частный случай.
0
PacificABCNET
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 99
25.06.2018, 23:55  [ТС] 9
VladPVS, да, действительно, что-то я протупил немного. Совсем забыл об этом условии. Спасибо, что напомнили, значит моё решение не подходит по условию, хоть и ответ получается верным.
0
VladPVS
183 / 162 / 99
Регистрация: 14.03.2018
Сообщений: 426
Завершенные тесты: 2
25.06.2018, 23:59 10
А вообще нормальный код метода GetPoweredArray выглядит примерно так:
C#
1
2
3
4
public static int[] GetPoweredArray(int[] arr, int power)
{
      return arr.Select(e => (int)Math.Pow(e, power)).ToArray();
}
Но не всем приемлемо использовать LINQ.
0
25.06.2018, 23:59
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2018, 23:59

Ошибка NAN при возведении в степень
Ребята помогите пожалуйста в чем проблема у меня в результатах пишет -NAN вот задание ...

Длинная арифметика при возведении в степень
Ребята как можно вводить тип с 10^1000000 емкостью?

Найти последнюю цифру при возведении в степень
найти последную цифру A^B. 1&lt;=A&lt;=1000 и 1&lt;=B&lt;=10^9 ввод данных 24 9 ввод данных 4


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru