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

Дан линейный массив. Найти третий с конца элемент и в качестве ответа вернуть его индекс

11.04.2018, 13:25. Показов 1660. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, пожалуйста, помогите найти и исправить ошибку. Заранее спасибо.
Задача: Дан линейный массив. Найти третий с конца элемент и в качестве ответа вернуть его индекс.
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
static int Eltri(int n, int[] a)
        {
            int s = 0, p = 0, i=n;
          //  for (int i = 0; i < n; i++)
           // {
                while ((i > 0) && (s < 3))
                {
                    if (Math.Abs(a[i] % 3) == 0)
                    {
                        s = s + 1;
                        i = i - 1;
                    }
                    if (s == 0)
                    {
                        p = 0;
                    }
                    else
                    {
                        p = i + 1;
                    }
                }
          //  }
            return p;
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.04.2018, 13:25
Ответы с готовыми решениями:

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

Дан одномерный массив и целое число M. Найти элемент и его индекс, который ближе всего к M
Помогите написать программу. Дан одномерный массив А из N элементов и целое число M. Найти элемент и его индекс, который ближе всего к M....

Найти третий с конца матрицы положительный элемент и его место положение
Дано: Массив A(N,M).Найти 3 с конца положительный элемент и его место положение.(без подпрограмм)

11
4 / 4 / 2
Регистрация: 23.03.2018
Сообщений: 27
11.04.2018, 17:08
Как по мне, изи:
(Приведён пример, где массив - int[] mas{...})
C#
1
2
3
int masLenght;
masLenght = int.Parse(mas.Length);
int indx = masLenght - 4;
0
0 / 0 / 0
Регистрация: 10.04.2018
Сообщений: 7
11.04.2018, 17:26  [ТС]
Ой, кажется ошибка в задаче, нужно найти третий с конца элемент кратный трём и вывести его индекс, если искомого элемента нет, сообщить об этом.
0
4 / 4 / 2
Регистрация: 23.03.2018
Сообщений: 27
11.04.2018, 17:48
Цитата Сообщение от Sielka Посмотреть сообщение
третий с конца элемент кратный трём
Это как? Третий с конца или кратный трём? Или третий с конца и кратный трём?
Если второе, нужно конвертировать запрошенное число в double и проверить остаток...
Код (исправлено):
C#
1
2
3
4
int ni = int.Parse(mas[indx]);
double nd = double.Parse(mas[indx]);
if((double.Parse(ni/3))==(nd/3)) Console.WriteLine(indx);
else Console.WriteLine("ERROR");
0
44 / 45 / 41
Регистрация: 28.06.2017
Сообщений: 133
11.04.2018, 17:52
C#
1
2
3
4
5
6
7
8
            if ((array.Length >= 3) && (array[array.Length - 3] % 3 == 0))
            {
                Console.WriteLine("Индекс элемента = {0}, со значением {1}", array.Length - 3, array[array.Length - 3]);
            }
            else
            {
                Console.WriteLine("Нет элемента удовлетворяющего условие задачи");
            }
0
4 / 4 / 2
Регистрация: 23.03.2018
Сообщений: 27
11.04.2018, 17:58
Цитата Сообщение от Taurusfk Посмотреть сообщение
array.Length - 3
array.Length вернёт от 1 до n, и если это сравнивать с системой индексации массивов, то это как от 0 до n-1

Добавлено через 1 минуту
Я это к тому, что отнять надо 4
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
11.04.2018, 18:02
Цитата Сообщение от REKTOR_RG Посмотреть сообщение
Я это к тому, что отнять надо 4
1-й с конца Length - 1
2-й с конца Length - 2
3-й с конца Length - 3
0
44 / 45 / 41
Регистрация: 28.06.2017
Сообщений: 133
11.04.2018, 18:06
Цитата Сообщение от REKTOR_RG Посмотреть сообщение
array.Length вернёт от 1 до n, и если это сравнивать с системой индексации массивов, то это как от 0 до n-1
правильно. Если бы индекс и Length совпадали, то надо было бы отнимать 2, то-есть, для 5 элементов, 3м с конца будет как раз 3й элемент, для 10 элементов - 8й. А поскольку индекс меньше Length на 1, то -3, не 4.
0
4 / 4 / 2
Регистрация: 23.03.2018
Сообщений: 27
11.04.2018, 18:09
Taurusfk, спасибо, совсем запутался.
Sielka,
Вообщем фикс моего кода:
C#
1
2
3
4
5
6
7
int masLenght;
masLenght = int.Parse(mas.Length);
int indx = masLenght - 3;
int ni = int.Parse(mas[indx]);
double nd = double.Parse(mas[indx]);
if((double.Parse(ni/3))==(nd/3)) Console.WriteLine(indx);
else Console.WriteLine("ERROR");
0
44 / 45 / 41
Регистрация: 28.06.2017
Сообщений: 133
11.04.2018, 18:43
REKTOR_RG, зачем изобретать велосипед? Массив то интовый "по логике вещей", а Вы с ним пытаетесь работать как с массивом строк парся значения. Даже свойство Length засунули в парс, зачем, ведь оно интовое?

Код попросту не рабочий.
0
4 / 4 / 2
Регистрация: 23.03.2018
Сообщений: 27
11.04.2018, 18:55
Цитата Сообщение от Taurusfk Посмотреть сообщение
REKTOR_RG, зачем изобретать велосипед? Массив то интовый "по логике вещей", а Вы с ним пытаетесь работать как с массивом строк парся значения. Даже свойство Length засунули в парс, зачем, ведь оно интовое?
Код попросту не рабочий.
Боюсь, что там при компиляции ошибки полезут, что мол значение не в таком формате. Я ведь код набираю не в Visual Studio а прям тут, на форуме. (Ибо лень создавать проект) Я думаю, на форуме сидят люди не глупые, и лишнее смогут убрать. Я лишь продвигаю идею, предлагая "каркас". И я не спорю с тем, что Ваш код, возможно, работает лучше.

Добавлено через 3 минуты
Вроде лишний парсинг убрал. Возможно я не правильно конвертирую типы данных, прошу меня поправить, если есть более рациональный способ. Я знаю только Parse.
C#
1
2
3
4
5
6
int masLenght = mas.Length;
int indx = masLenght - 3;
int ni = mas[indx];
double nd = double.Parse(mas[indx]);
if((double.Parse(ni/3))==(nd/3)) Console.WriteLine(indx);
else Console.WriteLine("ERROR");
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
11.04.2018, 22: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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp3
{
    class Program
    {
        static int Foo(int[] array)
        {
            var cnt = 0;
            for(int i = array.Length - 1; i >= 0; i--)
            {
                if(array[i] % 3 == 0)
                    if(cnt == 2) return i;
                    else cnt++;
            }
            return -1;
        }
        static void Main(string[] args)
        {
            var array = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
            Console.WriteLine(Foo(array));
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2018, 22:24
Помогаю со студенческими работами здесь

Дан массив. Поменять местами его первый элемент со вторым, третий - с четвертым и т.д.
Скоро экзамен , кто чем может ) Помоги ближнему , ибо смех продлевает жизнь...) 16. Дан массив размера N (N — четное число)....

Дан целочисленный линейный массив. Уменьшить каждый его элемент на значение, противоположное первому элементу
Дан целочисленный линейный массив. Уменьшить каждый его элемент на значение, противоположное первому элементу.

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

Дан одномерный массив случайных целых чисел. Разделить каждый элемент массива на его индекс
Дан одномерный массив W из 10 случайных целых чисел, каждое из которых лежит в пределах от 1 до 100. Получите новый массив R, где каждый...

Дан линейный вещественный массив. Найти сумму его элементов по заданному условию
Дан линейный вещественный массив a. Найти : a^2_1+a^2_4+a^2_9+...+a^2_{k^2}+...; (Перемещено из Pascal ABC.NET)


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru