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

Найти номер первого нечетного элемента в массиве

17.10.2014, 10:15. Показов 5166. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:
В массиве А из 12 целых чисел найти номер первого нечетного элемента. Все четные элементы этого массива заменить их индексами.
Я что то сделал, но не то что надо.. Посмотрите пожалуйста мой код

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
72
73
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class WhileTest
    {
        static void Main()
        {
            int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0;
 
            Console.WriteLine("ЗАДАНИЕ:" + "\n");
            Console.WriteLine("В массиве А из 12 целых чисел найти номер первого нечетного элемента. Все четные элементы этого массива заменить их индексами." + "\n");
            Console.WriteLine("РЕШЕНИЕ:" + "\n");
            Console.WriteLine("Введите 12 элементов массива:" + "\n");
 
            Console.WriteLine("Значение 0:");
            a = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 1:");
            b = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 2:");
            c = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 3:");
            d = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 4:");
            e = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 5:");
            f = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 6:");
            g = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 7:");
            j = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 8:");
            k = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 9:");
            l = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 10:");
            m = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 11:");
            n = int.Parse(Console.ReadLine());
 
            int[] array = { a, b, c, d, e, f, g, j, k, l, m, n };
 
            Console.WriteLine("\n" + "ЭЛЕМЕНТЫ МАССИВА:");
            Console.WriteLine("\n");
 
            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine("{0}-й элемент массива = {1}", i, array[i]);
            }
 
            bool flag = true;
            for (int i = 0; i < array.Length; i++)
            {
 
                if (array[i] % 2 == 1 & flag)
                
                {
                }
                else if (array[i] % 2 == 0)
                array[i] = 0;
                    Console.WriteLine("\n");
                    Console.WriteLine("ОТВЕТ:");
                    Console.WriteLine("Индекс первого нечетного элемента:" + i);
                
            }
 
            Console.ReadKey();
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.10.2014, 10:15
Ответы с готовыми решениями:

В массиве целых чисел найти номер первого нечетного элемента
В массиве B из 12 целых чисел найти номер первого нечетного элемента. Все четные элементы этого массива заменить их индексами.

Найти номер первого максимального элемента в массиве
Доброго времени суток, уважаемые Форумчане! Вынуждена просить Вашей помощи в решении нескольких задач, так как сама на данный момент не...

В целочисленном массиве найти номер первого минимального элемента
В одномерном массиве, состоящем из n целых элементов, вычислить 1. Номер первого минимального элемента массива. 2. Сумму элементов...

16
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
17.10.2014, 10:36
Лучший ответ Сообщение было отмечено Влад Я как решение

Решение

Это задание в универ? Просто программа здесь очень не оптимизирована
Вместо переменной-флага сделал выход из цикла, используя break:
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
72
73
74
75
76
77
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class WhileTest
    {
        static void Main()
        {
            int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0;
 
            Console.WriteLine("ЗАДАНИЕ:" + "\n");
            Console.WriteLine("В массиве А из 12 целых чисел найти номер первого нечетного элемента. Все четные элементы этого массива заменить их индексами." + "\n");
            Console.WriteLine("РЕШЕНИЕ:" + "\n");
            Console.WriteLine("Введите 12 элементов массива:" + "\n");
 
            Console.WriteLine("Значение 0:");
            a = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 1:");
            b = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 2:");
            c = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 3:");
            d = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 4:");
            e = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 5:");
            f = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 6:");
            g = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 7:");
            j = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 8:");
            k = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 9:");
            l = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 10:");
            m = int.Parse(Console.ReadLine());
            Console.WriteLine("Значение 11:");
            n = int.Parse(Console.ReadLine());
 
            int[] array = { a, b, c, d, e, f, g, j, k, l, m, n };
 
            Console.WriteLine("\n" + "ЭЛЕМЕНТЫ МАССИВА:");
            Console.WriteLine("\n");
 
            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine("{0}-й элемент массива = {1}", i, array[i]);
            }
            Console.WriteLine("\n");
            // Поиск первого нечетного элемента
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i] % 2 == 1)
                {
                    Console.WriteLine("Индекс первого нечетного элемента:" + i);
                    break; // Выход из цикла
                }
            }
            Console.WriteLine("\n");
            Console.WriteLine("ОТВЕТ:");
            // Ищем четные элементы и заменяем
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i] % 2 == 0)
                {
                    array[i] = i;
                }
                Console.WriteLine("{0}-й элемент массива = {1}", i, array[i]);
            }
            Console.ReadKey();
        }
    }
}
Если нужно через флаг - скажите, переделаем. Если Вы пишите конкретно для себя - скажите, оптимизируем
1
0 / 0 / 1
Регистрация: 24.09.2014
Сообщений: 29
17.10.2014, 11:26  [ТС]
Вроде то что надо, если не сложно объясните немножко код, как находиться первое число, как заменялось индексом. И как вообще определить индекс числа.

Добавлено через 32 минуты
Что то все таки не так, первое не четное число вывелось 2.
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
17.10.2014, 11:28
Когда мы ищем первый нечетный элемент, объявляем цикл из чисел от 0 до общего кол-ва элементов в массиве:
C#
1
for (int i = 0; i < array.Length; i++)
В этом вышеописанном цикле переменная i - это счетчик, он же индекс. Т.е. мы перебираем массив, путем изменения этого индекса, постоянно увеличивая его на единицу. Получается, что выражение array[i] означает текущий проверяемый элемент. Далее проверяем: Делится ли текущий элемент на 2 с остатком?
C#
1
if (array[i] % 2 == 1)
Если да, значит оно не четное. Все, нашли самый первый нечетный элемент. Теперь нам нужно узнать индекс текущего элемента, а это и есть переменная i! Ну а теперь просто выводим переменную i (индекс) на экран:
C#
1
Console.WriteLine("Индекс первого нечетного элемента:" + i);
...и выходим из цикла, так как больше нам не нужно искать "Первый нечетный":
C#
1
break; // Выход из цикла
Таким же образом теперь меняем четные элементы на индекс Сначала цикл:
C#
1
for (int i = 0; i < array.Length; i++)
И теперь проверяем: если (if) текущий элемент массива (array[i]) делится на 2 без остатка (% 2 == 0)
C#
1
if (array[i] % 2 == 0)
Что делаем? Присваиваем текущему элементу (array[i]) его же индекс (=i)
C#
1
array[i] = i;
Добавлено через 1 минуту
Цитата Сообщение от Влад Я Посмотреть сообщение
Что то все таки не так, первое не четное число вывелось 2.
Не забывайте, что мы говорим не о числе, а об индексе этого числа!
1
0 / 0 / 1
Регистрация: 24.09.2014
Сообщений: 29
17.10.2014, 11:30  [ТС]
найти номер первого нечетного элемента. разве тут нужен индекс числа ?
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
17.10.2014, 11:30
Влад Я, извините, я ошибся. Исправьте эту строчку
Цитата Сообщение от BroDIK Посмотреть сообщение
if (array[i] % 2 == 1)
на эту:
C#
1
if (array[i] % 2 != 0)
0
Заблокирован
17.10.2014, 11:31
Влад Я, BroDIK, что за заполнение массива? Вводите элементы сразу в массив в цикле.
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
17.10.2014, 11:32
Влад Я, а разве номер и индекс это не одно и то же?

Добавлено через 1 минуту
Ev_Hyper, ТС сюда не оптимизировать пришел. Нужно рассказать все "на пальцах"
0
0 / 0 / 1
Регистрация: 24.09.2014
Сообщений: 29
17.10.2014, 11:38  [ТС]
Ясно) Спасибо, хорошо объяснили - все понял)


может быть 1if (array[i] % 2 != 1)? после того как поменял первое нечетное стало всегда 0

Добавлено через 1 минуту
даже с 1 всегда 0 получаеться
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
17.10.2014, 11:43
Влад Я, а Вы первым элементом какой число вводите? Единицу? Попробуйте всегда вводить двойки, кроме седьмого раза, например.

Добавлено через 1 минуту
ЭЛЕМЕНТЫ МАССИВА:

0-й элемент массива = 2
1-й элемент массива = 2
2-й элемент массива = 2
3-й элемент массива = 2
4-й элемент массива = 2
5-й элемент массива = 2
6-й элемент массива = 1
7-й элемент массива = 2
8-й элемент массива = 2
9-й элемент массива = 2
10-й элемент массива = 2
11-й элемент массива = 2

Индекс первого нечетного элемента: 6
0
0 / 0 / 1
Регистрация: 24.09.2014
Сообщений: 29
17.10.2014, 11:54  [ТС]
да получилось.. я что то тупанул получается.. индекс 1-го числа то 0...

Добавлено через 4 минуты
хотя нет если вводить рандомные числа то почему то опять 0 выходит

Добавлено через 4 минуты
каждый раз разный ответ, то 0 выводит постоянно то пишет то 5 меньший элемент хотя есть и 3
0
0 / 0 / 1
Регистрация: 24.09.2014
Сообщений: 29
22.10.2014, 09:42  [ТС]
Помогите пожалуйста сделать эту же задачку только что бы ввод чисел был другим, болие простым.
0
Заблокирован
22.10.2014, 09:53
Влад Я, проверяйте:
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
 Console.WriteLine("ЗАДАНИЕ:" + "\n");
            Console.WriteLine("В массиве А из 12 целых чисел найти номер первого нечетного элемента. Все четные элементы этого массива заменить их индексами.");
 
            int[] array = new int[12];
            Console.WriteLine("РЕШЕНИЕ:" + "\n");
            Console.WriteLine("Введите 12 элементов массива:");
            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine("Значение {0}:", i + 1);
                array[i] = int.Parse(Console.ReadLine());
            }
            Console.WriteLine("\n" + "ЭЛЕМЕНТЫ МАССИВА:");
            for (int i = 0; i < array.Length; i++)
                Console.WriteLine("{0}-й элемент массива = {1}", i, array[i]);
 
            Console.WriteLine("\n");
            // Поиск первого нечетного элемента
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i] % 2 != 0)
                {
                    Console.WriteLine("Индекс первого нечетного элемента: {0}",i);
                    break; // Выход из цикла
                }
 
            }
            Console.WriteLine("ОТВЕТ:");
            // Ищем четные элементы и заменяем
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i] % 2 == 0)
                    array[i] = i;
 
                Console.WriteLine("{0}-й элемент массива = {1}", i, array[i]);
            }
            Console.ReadKey();
0
XI
0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 3
22.10.2014, 09:58
Начальный исходник до боли напомнил это:
http://govnokod.ru/212
0
0 / 0 / 1
Регистрация: 24.09.2014
Сообщений: 29
22.10.2014, 11:23  [ТС]
Как это все делать под одним циклом? Так как он повторяется
for (int i = 0; i < array.Length; i++)
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
22.10.2014, 13:03
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication10
{
    class Proga
    {
        static void Main()
        {
            int[] array = new int[12];
            bool flag = false;
            int nomer = -1;
 
            Console.WriteLine("ЗАДАНИЕ:\n");
            Console.WriteLine("В массиве А из 12 целых чисел найти номер первого нечетного элемента. Все четные элементы этого массива заменить их индексами.\n");
            Console.WriteLine("РЕШЕНИЕ:\nВведите 12 элементов массива:\n");
 
            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine("Значение " + i.ToString() + ":");
                array[i] = int.Parse(Console.ReadLine());
                if (array[i] % 2 != 0)
                    if (!flag)
                    {
                        flag = true;
                        nomer = i;
                    }
                else
                    array[i] = i;
            }
            Console.WriteLine("\nНомер первого нечетного элемента: {0}", nomer);
            for (int i = 0; i < array.Length; i++)
                Console.WriteLine("{0}-й элемент массива = {1}", i, array[i]);
            Console.ReadKey();
        }
    }
}
0
0 / 0 / 1
Регистрация: 24.09.2014
Сообщений: 29
22.10.2014, 17:15  [ТС]
первый цикл идет для ввода чисел? а второй для нахождения первого нечетного числа и для ответа так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2014, 17:15
Помогаю со студенческими работами здесь

Найти номер первого по счету нечетного элемента массива
Найти номер первого по счету нечетного элемента массива.

Двумерные массивы. Найти номер первого нечетного элемента
ВотЪ:

Найти номер первого по счету нечетного элемента массива
Найти номер первого по счету нечетного элемента массива, если известно, что в массиве есть хотя бы один нечетный элемент.

Дан массив целых чисел. Найти номер первого нечетного элемента
Дан массив целых чисел. Найти номер первого нечетного элемента. Помогите

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru