Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2020, 20:44   #1
Екатерина2020
Новичок
Джуниор
 
Регистрация: 27.04.2020
Сообщений: 3
Сообщение C# Задание на массивы

Код:
using System;

public class Test
{
	public static void Main()
	{
		// your code goes here
	}
	private void button1_Click(object sender, EventArgs e)
        {
            int i,j, n,t, sum;
            string spisok;
            int[] a = new int[1000];
            n = Convert.ToInt32(comboBox1.Text);
            spisok = "";
            listBox1.Text = "";
            Random rnd = new Random();
            for (i = 0; i < n-1; i++)
            {
                a[i] = rnd.Next(-100, 100);
                spisok = spisok + Convert.ToString(i) + ")" + Convert.ToString(a[i]) + "" + Environment.NewLine;
            }
            label3.Text = spisok;
            for (j = 0; j < n - i - 1; j++)
                if (a[j]) > a[j + 1];
            { t = a[j + 1];
                a[j + 1] = a[j];
                a[j] = t;
            }
}
Задание после каждой пары элементов массива А(n), расположенных в порядке возрастания, вставить их сумму.
Помогите пожалуйста, я не знаю как сделать это задание( я начала но это не то.
прошу умоляю
Изображения
Тип файла: png Безымянный.png (17.5 Кб, 15 просмотров)

Последний раз редактировалось Екатерина2020; 27.04.2020 в 21:12.
Екатерина2020 вне форума Ответить с цитированием
Старый 28.04.2020, 02:44   #2
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

Тут до конца не понятно как брать пары.
Вариант 1: (0 и 1) (2 и 3) (4 и 5) (6 и 7)
Вариант 2: (0 и 1) (1 и 2) (2 и 3) (3 и 4) (4 и 5) (5 и 6) (6 и 7)

Я выбрал второй вариант (если я не прав то поправте меня)

Для второго варианта решение в лоб.

Код:
            int n = Convert.ToInt32(comboBox1.Text);
            int[] a = new int[n * 2]; //Создаём массив чтобы в него поместились все элементы а также вставленные суммы

            string spisok = "";
            Random rnd = new Random();
            for (int i = 0; i < n; i++)
            {
                a[i] = rnd.Next(-100, 100);
                spisok = spisok + i + ")" + a[i] + "\n";
            }
            spisok = spisok + "\n==>\n\n";
            for (int i = n - 1; i >= 1; i--)
            {
                if (a[i - 1] < a[i])
                {
                    for (int j = n; j > i + 1; j--) //Сдвигаем элементы для вставки
                        a[j] = a[j - 1];
                    a[i + 1] = a[i] + a[i - 1]; //Записываем сумму
                    n++; //Т.к. мы встевили элемент то теперь увеличиваем переменную хранящую число валидных элементов в массиве
                }
            }

            for (int i = 0; i < n; i++)
                spisok = spisok + i + ")" + a[i] + "\n";

            label3.Text = spisok;
но на само деле это не самый быстрый алгоритм (при большом количестве элементов в массиве)
При желании этот алгоритм можно сделать намного быстрее, но боюсь для вас это алгоритм будет не так очевиден. (второй алгоритм я достаточно не тестировал, используйте аккуратно т.к. могут быть ошибки)

Код:
            int n = Convert.ToInt32(comboBox1.Text);
            int[] a = new int[n * 2]; //Создаём массив чтобы в него поместились все элементы а также вставленные суммы

            string spisok = "";
            Random rnd = new Random();
            for (int i = 0; i < n; i++)
            {
                a[i] = rnd.Next(-100, 100);
                spisok = spisok + i + ")" + a[i] + "\n";
            }
            spisok = spisok + "\n==>\n\n";
            int numToInsert = 0;

            for (int i = n - 1; i >= 1; i--)
                if (a[i - 1] < a[i])
                    numToInsert++;

            {
                int i = n + numToInsert - 1;
                int j = n - 1;

                while (i > j)
                {
                    if (a[j] > a[j - 1])
                    {
                        a[i] = a[j] + a[j - 1];
                        i--;
                    }
                    a[i] = a[j];
                    j--;
                    i--;
                }
                n += numToInsert;
            }
            for (int i = 0; i < n; i++)
                spisok = spisok + i + ")" + a[i] + "\n";

            label3.Text = spisok;

Результат работы алгоритма

0)-30
1)22
2)40
3)-65
4)11
5)-4
6)-33
7)45
8)67
9)-96

==>

0)-30
1)22
2)-8
3)40
4)62
5)-65
6)11
7)-54
8)-4
9)-33
10)45
11)12
12)67
13)112
14)-96


update: Посмотрел ваше другой пост. Вы там что-то говорите про сортировку. Я понял задание так что сортировку делать не нужно. Если всё же сортировку нужно делать, то напишите.
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."

Последний раз редактировалось val_nnm; 28.04.2020 в 02:50.
val_nnm вне форума Ответить с цитированием
Старый 28.04.2020, 15:06   #3
Екатерина2020
Новичок
Джуниор
 
Регистрация: 27.04.2020
Сообщений: 3
По умолчанию

Я написала в личные сообщения тебе��
Екатерина2020 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задание массивы TikTak93 Помощь студентам 1 12.12.2013 07:29
массивы,не понятное задание.... ReFF Паскаль, Turbo Pascal, PascalABC.NET 3 20.12.2011 15:16
задание на массивы Yulyasha_ Паскаль, Turbo Pascal, PascalABC.NET 0 24.11.2011 02:30
C (Си) - задание на массивы. MR_Andrew Общие вопросы C/C++ 28 28.11.2009 13:48
Задание на массивы Алексей777911 Фриланс 12 04.11.2009 14:31