Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216

Вставить конкретный элемент после второго положительного

21.06.2019, 19:29. Показов 1038. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В линейный массив после второго положительного элемента(могут быть отрицательны) вставить заданный элемент
дан целочисленный линейны массив. Вставить в него заданное число после второго положительного элемента.

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
 
 
namespace ConsoleApp16
{
    class Program
    {
        static Random rnd = new Random();
        static void create(ref int n,ref int []a)//создание массива
        {
            Console.WriteLine("Размер массива?");
            n = Convert.ToInt32(Console.ReadLine());
            a = new int[n];
            for (int i = 0; i < n; i++)
                a[i] = rnd.Next(10, 101);
            Console.WriteLine("");
                }
        static void print (int n, int[] a)//вывод массива
        {
            int i;
            for (i = 0; i < n; i++)
                Console.WriteLine("{0}", a[i]);
            Console.WriteLine("");
        }
        static int poisk( int n,  int[] a)
        {
            int i;
            int k = 0;
            
            for (i = 0; i < n; i++)
            {
                if (a[i] > 0) k++;
                if (k == 2) k = i; break;
            }  //else Console.WriteLine("второго положительного элемента не существует");
            
            return k;
        }
        static void insert(ref int n, ref int[] a, int c, int v)
        {
            int i;
            for (i = n + 1; i < v - 1; i--)
            { a[i] = a[i - 1]; }
               a[v + 1] = c;
            
        }
 
 
        
            
        
        static void Main(string[] args)
        {
            int n = 0;
            int[] a = null;
            create(ref n,ref a);
            print(n, a);
            int c;
            Console.WriteLine("введите число");
            c = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("");
            //int b = 0;
            int h = poisk(n, a);
            insert(ref n, ref a, c, h);
            print(n,  a);
            Console.ReadLine();
        }
    }
}
Проблема в том, что 1) не знаю, куда вставить предупреждение, что нет второго положительного элемента
2)затирается значение, на место которого надо вставить элемент, подозреваю, что ошибка где-то в функции insert, но не могу найти. Помогите, пожалуй та

Добавлено через 24 секунды
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*дан целочисленный линейны массив. Вставить в него заданное число после второго положительного элемента.*/
 
 
using System;
 
 
namespace ConsoleApp16
{
    class Program
    {
        static Random rnd = new Random();
        static void create(ref int n,ref int []a)//создание массива
        {
            Console.WriteLine("Размер массива?");
            n = Convert.ToInt32(Console.ReadLine());
            a = new int[n];
            for (int i = 0; i < n; i++)
                a[i] = rnd.Next(10, 101);
            Console.WriteLine("");
                }
        static void print (int n, int[] a)//вывод массива
        {
            int i;
            for (i = 0; i < n; i++)
                Console.WriteLine("{0}", a[i]);
            Console.WriteLine("");
        }
        static int poisk( int n,  int[] a)
        {
            int i;
            int k = 0;
            
            for (i = 0; i < n; i++)
            {
                if (a[i] > 0) k++;
                if (k == 2) k = i; break;
            }  //else Console.WriteLine("второго положительного элемента не существует");
            
            return k;
        }
        static void insert(ref int n, ref int[] a, int c, int v)
        {
            int i;
            for (i = n + 1; i < v - 1; i--)
            { a[i] = a[i - 1]; }
               a[v + 1] = c;
            
        }
 
 
        
            
        
        static void Main(string[] args)
        {
            int n = 0;
            int[] a = null;
            create(ref n,ref a);
            print(n, a);
            int c;
            Console.WriteLine("введите число");
            c = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("");
            //int b = 0;
            int h = poisk(n, a);
            insert(ref n, ref a, c, h);
            print(n,  a);
            Console.ReadLine();
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.06.2019, 19:29
Ответы с готовыми решениями:

Вставить в массив заданное число после второго положительного элемента
Дан целочисленный линейный массив. Вставить в него заданное число после второго положительного элемента. В чём ошибка? using System; ...

Вставить новый элемент после последнего положительного
В общем нужно сделать сдвиг массива,чтобы занести новый эл-нт.Я запутался с циклом моего &quot;сдвига&quot;.Он работает,но не очень...

Вставить в массив новый элемент после последнего положительного
Помогите подправить сдвиг массива. Задача: вставить новый элемент после последнего положительного.) class Program { ...

5
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216
22.06.2019, 05:47  [ТС]
Помогите, пожалуйста
0
291 / 193 / 104
Регистрация: 14.11.2017
Сообщений: 489
22.06.2019, 07:34
dreems, увеличиваем длину массива на единицу, куда и впихаем наше значение. Без изменения размера массива никак не сделать. Ибо тогда в любом случае какое-то значение прийдется "затирать".
Исправил ваши ошибки и сделал рефакторинг кода для лучшей читаемости:

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System;
 
namespace ConsoleApp16
{
    class Program
    {
        static Random rand = new Random();
 
        static void Create(ref int[] array)//создание массива
        {
            Console.Write("Размер массива: ");
            int length = Convert.ToInt32(Console.ReadLine());
            array = new int[length];
            for (int i = 0; i < array.Length; i++)
                array[i] = rand.Next(-100, 100);
        }
 
        static void Print(int[] a)//вывод массива
        {
            for (int i = 0; i < a.Length; i++)
                Console.Write("{0} ", a[i]);
            Console.WriteLine();
        }
 
        static bool Search(ref int position, int[] a)
        {
            position = 0;
            for (int i = 0; i < a.Length; i++)
            {
                if (a[i] > 0) position++;
                if (position == 2)
                {
                    position = i + 1;
                    return true;
                }
            }
            return false;
        }
 
        static void Insert(int toInsert, ref int[] array, int position)
        {
            Array.Resize(ref array, array.Length + 1);
            for (int i = array.Length - 1; i > position; i--)
            {
                array[i] = array[i - 1];
            }
            array[position] = toInsert;
        }
 
        static void Main(string[] args)
        {
            int[] array = null;
            Create(ref array);
            Print(array);
            Console.Write("Введите число: ");
            int toInsert = Convert.ToInt32(Console.ReadLine());
            int position = 0;
            if (Search(ref position, array))
            {
                Insert(toInsert, ref array, position);
                Print(array);
            }
            else Console.WriteLine("Нету второго положительного элемента");
            Console.ReadKey();
        }
    }
}
0
18 / 16 / 0
Регистрация: 03.01.2018
Сообщений: 208
Записей в блоге: 1
22.06.2019, 09:22
Цитата Сообщение от Eduard Nanaki Посмотреть сообщение
static void Create(ref int[] array)
Нужно ли ссылку на массив передавать, когда массив является ссылочным типом данных?
0
291 / 193 / 104
Регистрация: 14.11.2017
Сообщений: 489
22.06.2019, 10:13
letsmail9, сделал так, потому что иначе кидало NullReference. Но после вашего вопроса самого заинтересовало в чем же дело. Гугл конкретного ответа не дал, поэтому я даже создал топик.
Мои догадки: при передаче массива передаётся копия ссылки (а у нас это null - тобишь ссылка на на что). И инициализируется как раз таки эта копия, а не "оригинал". В следствии чего этот же оригинал остается ссылатся и далее на null (тоесть ни на что)
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216
22.06.2019, 11:39  [ТС]
Eduard Nanaki, спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.06.2019, 11:39
Помогаю со студенческими работами здесь

Вставить заданный элемент после последнего положительного элемента массива
Очень нужно!!!

В массиве размером [10] вставить заданный элемент р после последнего положительного значения
В массиве размером вставить заданный элемент р после последнего положительного значения С комментариями пожалуйста! Заранее благодарю.

Вставить новый элемент после последнего положительного
Помогите с задачкой разобраться,а то я что-то навертела,теперь понять не могу(( Вставить новый элемент после последнего положительного...

Вставить нулевой элемент после последнего положительного
Ошибка тут vec.insert(vec.pos, 0); #include &quot;iostream&quot; #include &quot;algorithm&quot; #include &quot;vector&quot; using namespace std; int...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru