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

Если первое число массива положительное, то последующие умножить на это число, если отрицательное, то поделить

14.11.2016, 17:27. Просмотров 396. Ответов 14
Метки нет (Все метки)

Из массива А(12) составить новый, включив в него числа, принадлежащие интервалу [-8;2], причем, если первое число оказалось положительным, то все последующие умножить на это число, если отрицательным, то поделить. Результат в консоле.

Добавлено через 46 секунд
Первая часть есть,помогите остальное
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Lbbb3
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = new int[10];
            Random rnd = new Random();
            Console.WriteLine("Первый массив:");
            for (int i = 0; i < 10; i++)
            {
                arr[i] = rnd.Next(-10, 10);
                Console.Write(arr[i] + " ");
            }
            Console.WriteLine("\nВторой массив");
            var newArr = arr.Where(a => a >= -8 && a <= 2).ToArray();
            foreach (int s in newArr) Console.Write(s + " ");
            Console.ReadLine();
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2016, 17:27
Ответы с готовыми решениями:

Вывести положительное это число, отрицательное или нуль
Здравствуйте, я только начинаю программировать в c# помогите решить следующую...

Дано целое число n. преобразовать это число так, что если ...
Дано целое число n. преобразовать это число так что если подрят встречаются 2...

Если число больше семи, вывести это число суммой 3 и 5
Даны 2 числа 3 и 5. Пользователь вводит число. И если это число больше семи....

Заменить первое число на 0, если оно меньше или равно второму
Доброго времени суток. Я не разбираюсь в C#, но сдать эти задачи по учёбе...

Выяснить, какое число встречается раньше – положительное или отрицательное
Здравствуйте. Помогите з кодом пожалуйста. using System; using...

14
ByMedion
17 / 17 / 10
Регистрация: 19.07.2015
Сообщений: 83
15.11.2016, 23:26 2
Так разве не подойдет? Код конечно не самый рациональный, но это первое, что пришло в голову...
C#
1
2
3
4
5
for (var i = 1; i < newArr.Count; i++)
{
    if (newArr[0] > 0) newArr[i] *= newArr[0];
    if (newArr[0] < 0) newArr /= newArr[0];
}
0
Voley
1 / 1 / 0
Регистрация: 30.01.2015
Сообщений: 81
17.11.2016, 08:30  [ТС] 3
В чем ошибка?
0
Миниатюры
Если первое число массива положительное, то последующие умножить на это число, если отрицательное, то поделить  
Diamante
1271 / 1026 / 650
Регистрация: 14.08.2016
Сообщений: 3,556
Завершенные тесты: 1
17.11.2016, 15:08 4
у массива нету свойства Count, есть Length, ну либо метод Count(), но лучше всё ж свойство
0
Voley
1 / 1 / 0
Регистрация: 30.01.2015
Сообщений: 81
17.11.2016, 17:30  [ТС] 5
Почему в полной мере программа не работает, т.е не делит если отрицательное, и не умножает если положительное, последующие элементы. Чего не хватает?
0
Миниатюры
Если первое число массива положительное, то последующие умножить на это число, если отрицательное, то поделить  
Voley
1 / 1 / 0
Регистрация: 30.01.2015
Сообщений: 81
17.11.2016, 17:59  [ТС] 6
Diamante, почти сделал, помогите исправить
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Lbb3
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            int[] arr = new int[10];
            Console.WriteLine("Первый массив:");
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = rnd.Next(-10, 10);
                Console.Write(arr[i] + " ");
            }
 
            Console.WriteLine("\nВторой массив");
            int[] newArr = arr.Where(a => a >= -8 && a <= 2).ToArray();
            int first = newArr[0];
            bool positiveFirst = first >= 0;
            
            for (var i = 0; i <newArr.Length; i++)
            {
                if (positiveFirst) newArr[i] *= first;
                else newArr[i] /= first;
            }
            foreach (var s in newArr) Console.Write(s + " ");
            Console.ReadLine();
 
        }
    }
}
0
Diamante
1271 / 1026 / 650
Регистрация: 14.08.2016
Сообщений: 3,556
Завершенные тесты: 1
17.11.2016, 18:21 7
25ю строку, с выводом массива поставьте после цикла фор, в котором вы собссно и производите деление/умножение, просто вы выводите "второй" массив до манипуляций с ним

Добавлено через 6 минут
у вас целочисленное деление( почитайте об этом), измените типы ваших массивов на дабл
0
Voley
1 / 1 / 0
Регистрация: 30.01.2015
Сообщений: 81
17.11.2016, 18:25  [ТС] 8
Diamante, Можете помочь это сделать
0
Diamante
1271 / 1026 / 650
Регистрация: 14.08.2016
Сообщений: 3,556
Завершенные тесты: 1
17.11.2016, 18:31 9
Кликните здесь для просмотра всего текста
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Lbb3
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            double[] arr = new double[10];
            Console.WriteLine("Первый массив:");
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = rnd.Next(-10, 10);
                Console.Write(arr[i] + " ");
            }
 
            Console.WriteLine("\nВторой массив");
            double[] newArr = arr.Where(a => a >= -8 && a <= 2).ToArray();
            double first = newArr[0];
            bool positiveFirst = first >= 0;
 
            for (var i = 0; i < newArr.Length; i++)
            {
                if (positiveFirst) newArr[i] *= first;
                else newArr[i] /= first;
            }
            foreach (var s in newArr) Console.Write(s + " ");
            Console.ReadLine();
 
        }
    }
}

если нужно округлять
C#
1
            foreach (var s in newArr) Console.Write(Math.Round(s,3) + " ");
это до 3х знаков после запятой
0
Voley
1 / 1 / 0
Регистрация: 30.01.2015
Сообщений: 81
17.11.2016, 18:58  [ТС] 10
Diamante, Все равно не правильно работает, т.к. в новом массиве первый элемент постоянно единица
0
Diamante
1271 / 1026 / 650
Регистрация: 14.08.2016
Сообщений: 3,556
Завершенные тесты: 1
17.11.2016, 19:27 11
ну так если он больше 0, то его делим на него самого же?! или как?
0
ByMedion
17 / 17 / 10
Регистрация: 19.07.2015
Сообщений: 83
17.11.2016, 20:00 12
А вообще, для тех, кто начинает, очень поможет тулза ReSharper. Помогает сделать рефакторинг кода, умеет преобразовывать в Linq выражения. Рекомендую!
0
Voley
1 / 1 / 0
Регистрация: 30.01.2015
Сообщений: 81
18.11.2016, 06:07  [ТС] 13
Diamante, Если больше нуля, то последующие числа умножаем на это число. Если меньше, то последующие делим на это число

Добавлено через 3 минуты
Diamante, Вот на форме все правильно работает, надо то же самое, только на консоле
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
45
using System;
using System.Data;
using System.Linq;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void btCalculate_Click(object sender, EventArgs e)
        {
            Random r = new Random();
 
            int[] input = new int[12];
            for (int i = 0; i < input.Length; i++)
                input[i] = r.Next(-10, 10);
 
            int[] result = input.Where(i => i >= -8 && i <= 2).ToArray();
 
            int first = result[0];
            bool positiveFirst = first >= 0;
 
            for (int i = 1; i < result.Length; i++)
            {
                if (positiveFirst) result[i] *= first;
                else result[i] /= first;
            }
 
            string message = "Исходный массив: \n";
            foreach (var item in input)
                message += $"{item.ToString()}\n";
 
            message += "Результат: \n";
            foreach (var item in result)
                message += $"{item.ToString()}\n";
 
            MessageBox.Show(message);
        }
    }
}
0
ByMedion
17 / 17 / 10
Регистрация: 19.07.2015
Сообщений: 83
18.11.2016, 23:24 14
а в чем проблема заменить MessageBox на Console.WriteLine?
0
Serg34
90 / 90 / 33
Регистрация: 20.09.2014
Сообщений: 427
Записей в блоге: 3
Завершенные тесты: 1
19.11.2016, 12:27 15
Цитата Сообщение от Voley Посмотреть сообщение
Diamante, почти сделал, помогите исправить
Voley, Очень не красиво просить о помощи в личку, создавать одинаковые темы а потом выставлять мой код за свои заслуги.
В следующий раз если нужна будет помощь кого-то конкретного, то пишите ему в личку, что Вы создали тему и просите его о помощи.
0
19.11.2016, 12:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2016, 12:27

Уменьшить первое введенное число в два раза, если оно больше второго введеного числа по абсолютной величине
Составить программу, которая уменьшает первое введенное число в два раза, если...

Составить программу, которая уменьшает первое введенное число в два раза, если оно больше второго введенного числа по абсолютной величине.
Составить программу, которая уменьшает первое введенное число в два раза, если...

Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из
Дано целое число. Если оно является положительным, то прибавить к нему 1; если...


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

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

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