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

Получить из двух массивов, где есть повторения словарь

05.03.2023, 12:05. Показов 325. Ответов 5
Метки с# (Все метки)

Author24 — интернет-сервис помощи студентам
Допустим есть массив А, в котором записаны номера телефонов, которые повторяются и массив Б, в котором записаны суммы к оплате (за звонки, за аренду линий связи и т.п.). N-ый элемент Б является суммой, которую должен оплатить n-ый номер. Надо сделать так, чтобы получился словарь, в котором был номер n и итоговая сумма, которую должен номер n. Можно подсказать решение сути задачи иным способом, используя не словарь. Надеюсь всё понятно объяснил.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2023, 12:05
Ответы с готовыми решениями:

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

Получить файл G, где все компоненты файла F, которые есть парными числами, и те, что есть квадратами целых чисел
Заданый файл F, компонентами которого есть целые числа. Получить файл G, где все компоненты файла...

Получить массив из двух исходных массивов
Требуется получить два массива: yL = из двух массивов xsL = и xoL = и yP = из двух ...

Из двух массивов получить третий по правилу
задача №5 на фото пытался решить, но не получается const n=10;var a,b:array of real; c:array...

Найти массив, который есть суммой двух массивов
Найти массив, который есть суммой двух одномерных массивов А(8) и В(8). Определить мах элементов...

5
Эксперт по электронике
2900 / 1945 / 529
Регистрация: 04.09.2018
Сообщений: 6,638
Записей в блоге: 4
05.03.2023, 12:36 2
Цитата Сообщение от AlexZlato Посмотреть сообщение
Можно подсказать решение сути задачи иным способом, используя не словарь
Сделай класс или структуру с двумя полями: номер телефона и сумма к оплате. Затем создай массив из этих структур..
0
0 / 0 / 0
Регистрация: 10.10.2021
Сообщений: 5
05.03.2023, 16:06  [ТС] 3
Не понял ответа. Никогда не работал со структурами. Не понимаю как массивы засунуть в структуру и из структуры получить массив и как в этом массиве будут уживаться номера и суммы (может номера будут чётными, а суммы нечётными). И как это в итоге решит задачу.
0
635 / 332 / 137
Регистрация: 19.10.2013
Сообщений: 1,198
05.03.2023, 16:16 4
AlexZlato, а как массивы A и b между собой связаны? а, невнимательно прочел. исходные данные есть какие нибудь?
0
Эксперт по электронике
2900 / 1945 / 529
Регистрация: 04.09.2018
Сообщений: 6,638
Записей в блоге: 4
05.03.2023, 17:52 5
AlexZlato,
Структура Абонента
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Структура Абонента
struct Abonent
{
    public long TelNumber { get; set; }
    public Payments Payments { get; set; }
    public Abonent(long telnum, Payments paym)
    {
        TelNumber = telnum;
        Payments = paym;
    }
    public override string ToString()
    {
        return $"Абонент с номером {TelNumber} должен оплатить сумму {Payments.TotalSum()} денег.";
    }
}

Структура Платежей
C#
1
2
3
4
5
6
7
8
9
10
11
12
//Структура Платежей
struct Payments
{
    public decimal Cells { get; set; }  //Платежи за звонки
    public decimal RentLine { get; set; }  //Платежи за аренду линий связи
    public Payments(decimal cells, decimal rentLine)
    {
        Cells = cells;
        RentLine = rentLine;
    }
    public decimal TotalSum() => Cells + RentLine;
}

Основная программа
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Создаем массив Абонентов:
Abonent[] Abonents = 
{
    new Abonent(89001005577, new Payments(250.0m, 1003.0m)),
    new Abonent(89202307496, new Payments(745.0m, 980.0m)),
    new Abonent(89634501022, new Payments(300.0m, 420.0m)),
    new Abonent(89585206363, new Payments(502.0m, 341.0m)),
};
 
//Выводим всех абонентов и их долги в консоль:
foreach (var ab in Abonents)
{
    Console.WriteLine(ab);
}
 
Console.Read();
Вывод
Console
Абонент с номером 89001005577 должен оплатить сумму 1253,0 денег.
Абонент с номером 89202307496 должен оплатить сумму 1725,0 денег.
Абонент с номером 89634501022 должен оплатить сумму 720,0 денег.
Абонент с номером 89585206363 должен оплатить сумму 843,0 денег.
1
Эксперт по электронике
2900 / 1945 / 529
Регистрация: 04.09.2018
Сообщений: 6,638
Записей в блоге: 4
05.03.2023, 18:56 6
Лучший ответ Сообщение было отмечено AlexZlato как решение

Решение

AlexZlato, применительно к твоей задаче, можно так:
Изначально даны массивы с номерами и суммами:
C#
1
2
3
4
5
6
7
8
9
10
//Исходные массивы:
long[] TelNumbers = { 500, 100, 100, 
                        200, 300, 500, 
                        400, 700, 200, 
                        100, 300, 800 }; //Условные номера телефонов
 
decimal[] Payments = { 120.0m, 235.5m, 100.0m, 
                        640.3m, 234.0m, 145.0m, 
                        500.1m, 302.4m, 430.0m, 
                        110.2m, 200.0m, 736.5m };   //Суммы
Номера телефонов в массиве номеров повторяются. Каждому номеру соответствует некоторая сумма из массива Платежей.
Перепишем структуру Абонента под этот случай:
Структура Абонента
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
//Структура Абонента
struct Abonent
{
    public long TelNumber { get; set; }
    public List<decimal> Payments { get; set; }
    public Abonent(long telnumb)
    {
        TelNumber = telnumb;
        Payments = new();
    }
    public override string ToString() =>
        $"Абонент с номером {TelNumber} должен оплатить сумму {Payments.Sum()} денег.";
}

И в основной программе:
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
//Создаем список Абонентов:
List<Abonent> Abonents = new List<Abonent>();
 
//Заносим телефоны и суммы в список:
for (int i = 0; i < TelNumbers.Length; i++)
{
    //Ищем текущий номер в списке
    int idx = Abonents.FindIndex(x => x.TelNumber == TelNumbers[i]);
 
    //Если такой номер уже есть, складываем текущую сумму к нему
    if (idx != -1) Abonents[idx].Payments.Add(Payments[i]);
 
    //Если такого номера еще не было, добавляем в список
    else
    {
        Abonent ab = new Abonent(TelNumbers[i]);
        ab.Payments.Add(Payments[i]);
        Abonents.Add(ab);
    }
}
 
 
//Выводим готовый список абонентов:
foreach (Abonent ab in Abonents)
    Console.WriteLine(ab);
 
Console.Read();
Теперь все абоненты собраны в список, со своими общими суммами, без повторений.
Миниатюры
Получить из двух массивов, где есть повторения словарь  
1
05.03.2023, 18:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2023, 18:56
Помогаю со студенческими работами здесь

Нужно получить уникальные числа из двух массивов
Например массивы а и б в б чила 1 2 3 4 5 а в а 7 8 3 4 5 Уникальными числами должны быть 1 2 7 8...

Из двух массивов получить третий по заданной формуле
Нужно создать матрицу (вектор), или несколько матриц (векторов) одинаковой размерности (указана...

Из двух массивов, упорядоченных по возрастанию, получить третий
Из двух массивов A(N) и B(M), упорядоченных по возрастанию, получить за один просмотр массив С(К),...

По заданной формуле из двух массивов получить третий
Помогите пожалуйста с данной задачей. Не могли бы написать программу с решением массива. Даны...

Из двух массивов одинакового размера получить третий
Даны два массива одного размера. Получить третий массив, каждый элемент которого равен:...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru