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

Найти несоответствия – транзакции, которые присутствуют в обоих списках, но имеют разную сумму

02.12.2021, 22:15. Показов 928. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ну вот такая задача, она не сложная(не спорю), но все таки не до конца понимаю как сделать (примерную логику понял, а вот как написать на C#). Заранее спасибо.

Сначала вводится число 1, которое означает начало первого списка.

После этого вводится любое количество строк формата:
5400005076 3,28

Он завершается, когда на вход подается число 2.
Соответственно, после числа 2 на вход подается другой список в том же формате.

Он завершается, когда на вход подается число 3.


Несоответствия – транзакции, которые присутствуют в обоих списках, но имеют разную сумму.
Сначала выводится значение из первого списка, затем из второго.

Несоответствия:

1400005080 = 1,25 1400005080 = 2,25
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2021, 22:15
Ответы с готовыми решениями:

Массив: Найти количество таких элементов, которые присутствуют в обоих массивах.
Нужна помощь с заданием, только начинаю изучать язык программирования. Ограничение по времени: 2 секунды Ограничение по памяти: 64...

Найти элементы которые присутствуют в нескольких экземплярах в массиве А, либо в массиве В или в обоих массивах
Здравсвуйте нужно дано два одномерных массива А и В которые заполняются рандомно, нужно найти элементы, которые присутствуют в нескольких...

Найти элементы которые присутствуют в нескольких экземплярах в массиве А, либо в массиве В или в обоих массивах
Здравсвуйте нужно дано два одномерных массива А и В которые заполняются рандомно, нужно найти элементы, которые присутствуют в нескольких...

6
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
02.12.2021, 22:44
Лучший ответ Сообщение было отмечено WilsonRich как решение

Решение

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
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Threading;
 
const double EPSILON = 0.001d;
 
var ruCulture = new CultureInfo("ru-RU");
Thread.CurrentThread.CurrentCulture = ruCulture;
Thread.CurrentThread.CurrentUICulture = ruCulture;
 
Console.ReadLine(); // Ignore 1
var firstList = ReadUntil("2");
var secondList = ReadUntil("3");
 
foreach ((string id, double sum) in firstList)
{
    if (secondList.TryGetValue(id, out var secondSum)
        && Math.Abs(sum - secondSum) > EPSILON)
    {
        Console.WriteLine($"{id} = {sum} {id} = {secondSum}");
    }
}
 
static Dictionary<string, double> ReadUntil(string line)
{
    var result = new Dictionary<string, double>();
    while (true)
    {
        var input = Console.ReadLine();
        if (input == line)
        {
            break;
        }
 
        var parts = input.Split(' ');
        var id = parts[0];
        var sum = double.Parse(parts[1]);
 
        result.Add(id, sum);
    }
 
    return result;
}
2
1 / 1 / 0
Регистрация: 07.12.2018
Сообщений: 9
02.12.2021, 23:09  [ТС]
I2um1, а тут еще так вопрос по твоему коду, что значит метод ReadUntil ?


и тут еще нужно сделать вот это сделать, я так понимаю можно через list.Contains сделать(ну повторы), а потери как ?
Повторы списка 1 – любые повторяющиеся транзакции в списке 1.
Потери списка 1 – любые транзакции, которые присутствуют в списке 1, но отсутствуют в списке 2.
Повторы списка 2 – любые повторяющиеся транзакции в списке 2.
Потери списка 2 – любые транзакции, которые присутствуют в списке 2, но отсутствуют в списке 1.
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
02.12.2021, 23:40
Цитата Сообщение от WilsonRich Посмотреть сообщение
что значит метод ReadUntil ?
Читать транзакции в словарь из консоли до строки, которую передали в метод.

Если так сильно хочется список, то можно и список. Два последних пункта по аналогии.
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading;
 
const double EPSILON = 0.001d;
 
var ruCulture = new CultureInfo("ru-RU");
Thread.CurrentThread.CurrentCulture = ruCulture;
Thread.CurrentThread.CurrentUICulture = ruCulture;
 
Console.ReadLine(); // Ignore 1
List<Transaction> firstList = ReadUntil("2");
List<Transaction> secondList = ReadUntil("3");
 
IEnumerable<(Transaction first, Transaction second)> intersection =
    from first in firstList
    join second in secondList on first equals second
    where Math.Abs(first.Sum - second.Sum) > EPSILON
    select (first, second);
 
foreach ((Transaction first, Transaction second) in intersection)
{
    Console.WriteLine($"{first} {second}");
}
 
 
Console.WriteLine("Повторы списка 1 – любые повторяющиеся транзакции в списке 1.");
IEnumerable<Transaction> repeatsInFirstList = firstList
    .GroupBy(transaction => transaction)
    .Where(group => group.Count() > 1)
    .Select(group => group.Key);
 
foreach (Transaction transaction in repeatsInFirstList)
{
    Console.WriteLine(transaction);
}
 
 
Console.WriteLine("Потери списка 1 – любые транзакции, которые присутствуют в списке 1, но отсутствуют в списке 2.");
IEnumerable<Transaction> uniquesInFirstList = firstList.Except(secondList);
 
foreach (Transaction transaction in uniquesInFirstList)
{
    Console.WriteLine(transaction);
}
 
 
static List<Transaction> ReadUntil(string line)
{
    var result = new List<Transaction>();
    while (true)
    {
        var input = Console.ReadLine();
        if (input == line)
        {
            break;
        }
 
        var parts = input.Split(' ');
        var id = parts[0];
        var sum = double.Parse(parts[1]);
 
        result.Add(new Transaction(id, sum));
    }
 
    return result;
}
 
sealed class Transaction
{
    public Transaction(string id, double sum)
    {
        Id = id;
        Sum = sum;
    }
 
    public string Id { get; }
 
    public double Sum { get; }
 
    public static bool operator ==(Transaction left, Transaction right)
        => left?.Equals(right) ?? false;
 
    public static bool operator !=(Transaction left, Transaction right) => !(left == right);
 
    public override bool Equals(object obj)
        => obj is Transaction transaction && transaction.Id == Id;
 
    public override int GetHashCode() => Id.GetHashCode();
 
    public override string ToString() => $"{Id} = {Sum}";
}
Добавлено через 1 минуту
Можно и без Linq, но будет слишком многословно.
1
1 / 1 / 0
Регистрация: 07.12.2018
Сообщений: 9
02.12.2021, 23:42  [ТС]
I2um1, Так понял спасибо за код, а как вы учили C# какие то курсы или что то еще ?
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
02.12.2021, 23:50
WilsonRich, универ -> работа. Работа - отличное место увидеть как можно, но не следует писать на C#.

C#
1
public static bool operator !=(Transaction left, Transaction right) => !(left == right);
Я учел, что null == null дает false, но здесь не учел, что null != null тоже дает false. На такое задание по хорошему нужны тесты, я устал вбивать данные в консоль.
0
1 / 1 / 0
Регистрация: 07.12.2018
Сообщений: 9
02.12.2021, 23:54  [ТС]
I2um1, Ну вот как раз это задание из универа, 1 курс, писал на Python ЕГЭ(всеми любимое) вот и как то втянулся в программирование, а C# дают в универе довольно странно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.12.2021, 23:54
Помогаю со студенческими работами здесь

Напечатать те элементы, которые присутствуют в обоих массивах
Даны два массива А и В. Напечатать те элементы, которые присутствуют в обоих массивах. я решил задачу, но ответ(одинаковые элементы)...

Вывод элементов, которые имеются в обоих списках
CL-USER 1 &gt; (defun inters (x y) (remove nil (mapcar #'(lambda (z) (if (member z y) z nil)) x))) INTERS CL-USER 2 &gt; (inters ‘(a s...

Сформировать массив из элементов, которые присутствуют в обоих исходных массивах
Даны два массива. Сформировать третий массив, состоящий из тех элементов, которые: присутствуют в обоих массивах;

Переписать в третий файл числа, которые присутствуют в обоих файлах
Помогите, пожалуйста, перевести из Паскаль в С++ Заранее буду очень благодарен! uses crt; const n=12; var f,g,h:text; ...

Выведите число уникальных элементов, которые встречаются в обоих списках
Поочередно вводится две последовательности целых чисел, разделенных пробелом. Выведите число уникальных элементов, которые встречаются...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Переходник 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
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
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 и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru