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

Найти произведение максимального и второго по счёту отрицательного элемента файла

02.04.2018, 20:16. Показов 988. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решить задачу с использованием структуры «бинарный файл» (в файле хранятся целочисленные данные)
Найти произведение максимального и второго по счёту отрицательного элемента. Если искомого элемента нет, сообщить об этом.
Как исправить задачу, чтобы работало условие, если второй отрицательный элемент совпадёт с максимальным???? Помогите пожалуйста

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
using System;
using System.IO;
 
namespace zadacha1
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, m = 0, ot1 = 0, ot2 = 1, n, t;
            Console.Write("Введите n:");
            n = Convert.ToInt32(Console.ReadLine());
            int[] a = new int[n];
            for (i = 0; i < n; i++)
            {
                Console.Write("Введите a[{0}]:", i);
                a[i] = Convert.ToInt32(Console.ReadLine());
            }
 
            const string fileName = "temp.dat";
 
            using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create)))
            {
                for (i = 0; i < n; i++)
                    writer.Write(a[i]);
            }
 
 
            using (BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open)))
            {
 
                while (reader.PeekChar() > -1)
                {
                    t = reader.ReadInt32();
 
                    if (i == 0)
                        m = t;
                    else
 
                    if (t > m)
                        m = t;
                    if ((t < 0) && (ot1 == 0))
                        ot1 = t;
                    else if ((t < 0) && (ot2 == 1))
                        ot2 = t;
                    i++;
                }
 
                if (ot2 == 1) Console.WriteLine("Второго отрицательного элемента нет");
                Console.WriteLine("Произведение:{0}", m * ot2);
            }
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.04.2018, 20:16
Ответы с готовыми решениями:

Найти произведение максимального и второго по счёту отрицательного элемента
I. Решить задачу с использованием структуры «файл» (в файле хранятся целочисленные данные). Найти произведение максимального и второго...

Найти сумму максимального и второго по счёту отрицательного элемента
Помогите пожалуйста с задачей! Тема: массивы. Найти сумму максимального и второго по счёту отрицательного элемента. Если искомого...

Файл: Найти сумму минимального и второго по счёту отрицательного элемента
Решить задачу с использованием структуры «файл» (в файле хранятся целочисленные данные) Найти сумму минимального и второго по счёту...

10
02.04.2018, 20:30
 Комментарий модератора 
Candic, 1) Темам следует давать осмысленные и разные названия. Название "Задача" к таким не относится.

2) Код следует заключать в теги
0
 Аватар для Syrax
28 / 19 / 16
Регистрация: 09.12.2009
Сообщений: 135
02.04.2018, 20:31
Также счетчиком, какой ты используешь для проверки первого нулевого элемента.

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
using System;
using System.IO;
 
namespace zadacha1
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, m = 0, ot1 = 0, ot2 = 1, n, t;
            Console.Write("Введите n:");
            n = Convert.ToInt32(Console.ReadLine());
            int[] a = new int[n];
            for (i = 0; i < n; i++)
            {
                Console.Write("Введите a[{0}]:", i);
                a[i] = Convert.ToInt32(Console.ReadLine());
            }
 
            const string fileName = "temp.dat";
 
            using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create)))
            {
                for (i = 0; i < n; i++)
                    writer.Write(a[i]);
            }
 
 
            using (BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open)))
            {
                int k = 1;
                while (reader.PeekChar() > -1)
                {
                    t = reader.ReadInt32();
                    
                    if (i == 0)
                        m = t;
                    else
 
                    if (t > m)
                        m = t;
                    if (t < 0 && k != 2)
                        k++;
                    else if (t < 0)
                        ot2 = t;
                    i++;
                }
                if (ot2 == 1) Console.WriteLine("Второго отрицательного элемента нет");
                Console.WriteLine("Произведение:{0}", m * ot2);
            }
            Console.ReadLine();
        }
    }
}
0
-1 / 0 / 2
Регистрация: 27.09.2015
Сообщений: 92
02.04.2018, 20:52  [ТС]
не могу понять, как именно это сделать

Добавлено через 13 минут
Syrax, помогите пожалуйста
0
 Аватар для Syrax
28 / 19 / 16
Регистрация: 09.12.2009
Сообщений: 135
02.04.2018, 21:02
Цитата Сообщение от Candic Посмотреть сообщение
не могу понять, как именно это сделать
Я ж готовый код скинул. о__О

Посмотри, внимательно, на цикл while (reader.PeekChar() > -1) -- перед ним инициализация переменной k, а затем вот такое условие:
C#
1
2
3
4
if (t < 0 && k != 2)
    k++;
else if (t < 0)
    ot2 = t;
И готово!
0
-1 / 0 / 2
Регистрация: 27.09.2015
Сообщений: 92
02.04.2018, 21:22  [ТС]
Тогда произведение вадаёт 0

Добавлено через 50 секунд
а должен наверно выдавать число (второе отрицательное, оно же максимальное)

Добавлено через 6 минут
Syrax, не могли бы вы в этом помочь разобраться?
0
 Аватар для Syrax
28 / 19 / 16
Регистрация: 09.12.2009
Сообщений: 135
02.04.2018, 22:16
Цитата Сообщение от Candic Посмотреть сообщение
Тогда произведение вадаёт 0
На каких данных оно выдает 0?

Цитата Сообщение от Candic Посмотреть сообщение
а должен наверно выдавать число (второе отрицательное, оно же максимальное)
Постановка задачи была "найти произведение максимального и второго по счёту отрицательного элемента". Значит, сначала мы ищем максимальное число, а затем следующим ищем второе отрицательное. А теперь сравниваем исходный код с тем, что прислал я. Кажется, я забыл про то, что второго отрицательного числа может и не быть. Но это уже другая история...
0
-1 / 0 / 2
Регистрация: 27.09.2015
Сообщений: 92
02.04.2018, 22:18  [ТС]
Ну например вводишь четыре числа (-5,-2,-8,-9).Выдаёт 0
0
 Аватар для Syrax
28 / 19 / 16
Регистрация: 09.12.2009
Сообщений: 135
02.04.2018, 22:43
Цитата Сообщение от Candic Посмотреть сообщение
Ну например вводишь четыре числа (-5,-2,-8,-9).Выдаёт 0
Я тоже дурак. -)
Во-первых, после того, как переменная i используется в первом цикле, там, где данные записываются в файл, ее значение остается равным "4". Соответственно, первая проверка в момент чтения из файла if (i == 0) не проходит, а, значит, и первый элемент никогда не станет максимальным. Эту переменную нужно обнулить там же, где идет инициализация переменной k.
Во-вторых, уже я слегка накосячил в условии. Вот исправленный код.
C#
1
2
3
4
5
6
7
if (t < 0 && k != 2)
    k++;
else if (t < 0 && k == 2)
    {
        ot2 = t;
        k++;
    }
0
-1 / 0 / 2
Регистрация: 27.09.2015
Сообщений: 92
17.04.2018, 12:01  [ТС]
Все равно выводит произведение 0
0
-1 / 0 / 2
Регистрация: 27.09.2015
Сообщений: 92
22.04.2018, 21:18  [ТС]
Решить задачу с использованием структуры «бинарный файл» (в файле хранятся целочисленные данные)
Найти произведение максимального и второго по счёту отрицательного элемента. Если искомого элемента нет, сообщить об этом.

Почему не работает условие, если второй отрицательный элемент совпадает с максимальным элементом?

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
using System;
using System.IO;
 
namespace zadacha1
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, m = 0, ot1 = 0, ot2 = 1, n, t;
            Console.Write("Введите n:");
            n = Convert.ToInt32(Console.ReadLine());
            int[] a = new int[n];
            for (i = 0; i < n; i++)
            {
                Console.Write("Введите a[{0}]:", i);
                a[i] = Convert.ToInt32(Console.ReadLine());
            }
 
            const string fileName = "temp.dat";
 
            using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create)))
            {
                for (i = 0; i < n; i++)
                    writer.Write(a[i]);
            }
 
 
            using (BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open)))
            {
 
                while (reader.PeekChar() > -1)
                {
                    t = reader.ReadInt32();
 
                    if (i == 0)
                        m = t;
                   
                    if (t > m)
                        m = t;
                    if ((t < 0) && (ot1 == 0))
                        ot1 = t;
                    else if ((t < 0) && (ot2 == 1))
                        ot2 = t;
                    i++;
                }
 
                if (ot2 == 1) Console.WriteLine("Второго отрицательного элемента нет");
                Console.WriteLine("Произведение:{0}", m * ot2);
            }
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.04.2018, 21:18
Помогаю со студенческими работами здесь

Произведение максимального и второго отрицательного
Ребят, хелп: Найти произведение максимального и второго по счёту отрицательного элемента. турбо пролог

Найти сумму максимального и предпоследнего отрицательного элемента файла
Помогите пожалуйста решить задачу Решить задачу с использованием структуры файл. Найти сумму максимального и предпоследнего...

Найти номер второго по счету элемента массива, равного х
Найти номер второго по счету элемента массива, равного х. Если в массиве меньше двух таких элементов – вывести об этом сообщение.

Найти индекс максимального отрицательного элемента массива (используя указатели)
Дан массив целых чисел состоящий из N элементов (N = 20). Найти индекс максимального отрицательного элемента. Примечания: Данные вводятся...

Последовательно вводятся числа, найти их произведение. Ввод остановить после ввода второго отрицательного значения
Стоит задача Последовательно вводятся числа, найти их произведение. Ввод остановить после ввода второго отрицательного значения. ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru