Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
42 / 15 / 1
Регистрация: 06.12.2019
Сообщений: 429
.NET 4.x

Что делать, выводит нет такого ключа в словаре?

06.01.2020, 02:33. Показов 2018. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нумерология Кнопочки
Как и многие другие коротышки, малышка Кнопочка верит во всякие чудеса, обожает разные гадания и нумерологию. Кнопочка руководит солнечногорской гостиницей и считает, что некоторым особенным клиентам нужно делать значительную скидку, чтобы коротышечьи боги были благосклонны к её бизнесу.

Особенность клиентов определяется по их порядковому номеру заселения следующим образом: пусть n – номер заселения, тогда нужно подсчитать сумму всех целых чисел (от 1 до n), на которые n делится без остатка и, если эта сумма окажется нечётной, то данный гость получает скидку - он особенный. Например: если n=3, то 1+3=4 – не особенный гость; если n=4, то 1+2+4=7 - особенный.

Кнопочка не успевает выполнять все обязанности по гостинице и ей очень нужна программа, которая автоматизирует процесс вычисления особенных клиентов.

На вход подаётся:

в первой строке количество клиентов - целое положительное число - n [1; 1000],
в последующих n строках записаны через пробел номер клиента и имя клиента (имя не содержит пробела).
На выход нужно вывести на экран строки, в каждой из которых есть Номер и, через пробел, Фамилия особенного клиента. Строки нужно выдавать в порядке возрастания номеров клиентов. Кнопочка не успевает аккуратно вести журнал учёта посетителей, поэтому на вход строки будут подаваться не обязательно в порядке возрастания номеров.

Если не окажется ни одного особенного клиента, то следует вывести одну строку empty.

Sample Input 1:

12
1 Стекляшкин
2 Пилюлькин
3 Смекайло
4 Растеряйка
5 Молчун
6 Сахариныч
7 Винтик
8 Шпунтик
9 Пачкуля
10 Гусля
11 Винтик
12 Шпунтик
Sample Output 1:

1 Стекляшкин
2 Пилюлькин
4 Растеряйка
8 Шпунтик
9 Пачкуля
Sample Input 2:

4
1 Винтик
9 Пачкуля
100 Гусля
64 Шпунтик
Sample Output 2:

1 Винтик
9 Пачкуля
64 Шпунтик
100 Гусля
Sample Input 3:

1
81 Вовочка
Sample Output 3:

81 Вовочка
Sample Input 4:

2
90 Кузьмич
91 Петрович
Sample Output 4:

empty
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
using System;
using System.Collections.Generic;
 
namespace ConsoleApp24
{
    class Program
    {
        static void Main(string[] args)
        {
            int count = 0;
 
            int n = Convert.ToInt32(Console.ReadLine());//Количество
 
            Dictionary<int, string> countries = new Dictionary<int, string>(n);
 
            for (int i = 0; i < n; i++)
            {
                char hislo = Convert.ToChar(Console.Read());
                string name = Console.ReadLine();//Воод имени
                countries.Add(int.Parse(hislo.ToString()), name);     
            }
 
            if (n % 2 == 0)//не чётное
            {
                int j = 1 + n;
 
                if (j % 2 != 0)// не особеный гость
                {
                    Console.WriteLine("empty");
                }
            }
            else//чётное
            {
                int jk = 1 + 2 + n;
                if (jk % 2 == 0)// особеный гость
                {
                    count++;
                    string country = countries[count];
                    Console.WriteLine($"{country}");//Номер и имя 
                }
                else
                {
                    count--;
                }
            }
            Console.ReadKey();
        }
    }
}
Добавлено через 24 минуты
Уже луче но не могу вывести особенных клиентов как мне это сделать проблема моя в count++ но как без него быть если поиск идёт по номеру клиента и его выводит в конце когда ?
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
using System;
using System.Collections.Generic;
 
namespace ConsoleApp24
{
    class Program
    {
        static void Main(string[] args)
        {
            int count = 0;
 
            int n = Convert.ToInt32(Console.ReadLine());//Количество
 
            Dictionary<int, string> countries = new Dictionary<int, string>(n);
 
            for (int i = 0; i < n; i++)
            {
                char hislo = Convert.ToChar(Console.Read());
                string name = Console.ReadLine();//Воод имени
                countries.Add(int.Parse(hislo.ToString()), name);     
            }
 
            if (n % 2 == 0)//не чётное
            {
                int j = 1 + n;
 
                if (j % 2 != 0)// не особеный гость
                {
                    Console.WriteLine("empty");
                }
            }
            else//чётное
            {
                int jk = 1 + 2 + n;
                if (jk % 2 == 0)// особеный гость
                {
                    count++;
                }
                else
                {
                    count--;
                }
            }
 
            string country = countries[count];
            Console.WriteLine($"{count} {country}");//Номер и имя 
            Console.ReadKey();
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.01.2020, 02:33
Ответы с готовыми решениями:

Замена в словаре значения у ключа
Вот такой словарь static Dictionary&lt;string, string&gt; AllData = new Dictionary&lt;string, object&gt;(); AllData .Add(&quot;первый&quot;, null); ...

Одновременное заполнение ключа и значения в словаре
Добрый вечер. Прошу помощи. Не знаю, как с помощью foreach сделать &quot;параллельное&quot; заполнение ключа и значения в Dictionary. Прошу...

Процедура должна выводить сумму при вводе номера, но кроме суммы выводит еще что такого номера нет
procedure output; var nom:string; x:integer; begin reset(f); x:=0; writeln('Введите расчетный счет плательщика'); ...

5
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
06.01.2020, 08:18
kauakutsatsauts,
А зачем вы из символьного типа преобразуйте в число?
C#
1
2
char hislo = Convert.ToChar(Console.Read());
int r = int.Parse(hislo.ToString())//Например "Стекляшкин" число будет = 'C' 1057
Естественно будет у вас ошибка на что что ключ не существует.
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
06.01.2020, 13:36
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
using System;
using System.Collections.Generic;
using System.IO;
 
namespace ConsoleApplication103
{
    class Program
    {
        static void Main(string[] args)
        {
            // считываем файл с данными построчно
            string[] inputString = File.ReadAllLines("input.txt");
 
            // словарь для всех гостей
            Dictionary<int, string> clients = new Dictionary<int, string>();
 
            // начинаем со второй строки, там где начинается список клиентов
            // загружаем всех гостей в словарь.
            Console.WriteLine("Приехавшие гости:");
            for (int i = 1; i < inputString.Length; i++)
            {
                // берём каждую строку и разбиваем её в месте пробела на две строки,
                // первая  часть строки - номер
                int number = int.Parse(inputString[i].Split()[0]);
                // вторая часть строки - имя
                string name = inputString[i].Split()[1];
                clients.Add(number, name);
                Console.WriteLine($"{number} {name}");
            }
            Console.WriteLine();
 
            // создаём словарь для особенных гостей, словарь сортирует сам себя по значению ключа.
            SortedDictionary<int, string> specialClients = new SortedDictionary<int, string>();
            // вычисляем - кто из гостей "особенный" и заносим в этот словарь
            foreach (var client in clients)
            {
                int number = client.Key;
                int sum = 0;
                for (int i = 1; i < number; i++)
                {
                    if (number % i == 0) sum += i;
                }
                if (sum % 2 != 0) specialClients.Add(client.Key, client.Value);
            }
 
            // вывод
            Console.WriteLine($"Особенные гости {specialClients.Count}:");
            if (specialClients.Count != 0)
            {
                foreach (var client in specialClients)
                {
                    Console.WriteLine($"{client.Key} {client.Value}");
                }
            }
            else
            {
                Console.WriteLine("empty");
            }
 
        }
    }
 
}
0
42 / 15 / 1
Регистрация: 06.12.2019
Сообщений: 429
06.01.2020, 14:51  [ТС]
Что ж так сайт не принимает как это можно сделать по другому есть идей ?
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.Collections.Generic;
 
namespace ConsoleApplication13
{
    class Program
    {
        static void Main(string[] args)
        {
 
            int n = Convert.ToInt32(Console.ReadLine());
 
            Dictionary<int, string> clients = new Dictionary<int, string>(n);
 
            for (int i = 0; i < n; i++)
            {
                char hislo = Convert.ToChar(Console.Read());
                string name = Console.ReadLine();
                clients.Add(int.Parse(hislo.ToString()), name);
            }         
 
            SortedDictionary<int, string> specialClients = new SortedDictionary<int, string>();           
            foreach (var client in clients)
            {
                int number = client.Key;
                int sum = 0;
                for (int i = 1; i < number; i++)
                {
                    if (number % i == 0) sum += i;
                }
                if (sum % 2 != 0)
                {
                    specialClients.Add(client.Key, client.Value);
                }
            }
 
            Console.WriteLine($"{specialClients.Count}");
            if (specialClients.Count != 0)
            {
                foreach (var client in specialClients)
                {
                    Console.WriteLine($"{client.Key} {client.Value}");
                }
            }
            else
            {
                Console.WriteLine("empty");
            }
            Console.ReadKey();
        }
    }
 
}
Добавлено через 52 секунды
Говарит
Failed test #1 of 4. Runtime error


Unhandled Exception:
System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentExceptio n (System.ExceptionResource resource) [0x0000b] in <4dc8ec68b0964e099af86e50301f5f3c>:0
at System.Collections.Generic.Dictionary`2[TKey,TValue].Insert (TKey key, TValue value, System.Boolean add) [0x0007c] in <4dc8ec68b0964e099af86e50301f5f3c>:0
at System.Collections.Generic.Dictionary`2[TKey,TValue].Add (TKey key, TValue value) [0x00000] in <4dc8ec68b0964e099af86e50301f5f3c>:0
at ConsoleApplication103.Program.Main (System.String[] args) [0x0003e] in <dbfe8c4123b347928e09e7e81c295888>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentExceptio n (System.ExceptionResource resource) [0x0000b] in <4dc8ec68b0964e099af86e50301f5f3c>:0
at System.Collections.Generic.Dictionary`2[TKey,TValue].Insert (TKey key, TValue value, System.Boolean add) [0x0007c] in <4dc8ec68b0964e099af86e50301f5f3c>:0
at System.Collections.Generic.Dictionary`2[TKey,TValue].Add (TKey key, TValue value) [0x00000] in <4dc8ec68b0964e099af86e50301f5f3c>:0
at ConsoleApplication103.Program.Main (System.String[] args) [0x0003e] in <dbfe8c4123b347928e09e7e81c295888>:0
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
06.01.2020, 17:20
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static void Main(string[] args)
{
    Console.WriteLine("Введите кол-во гостей: ");
    int n = int.Parse(Console.ReadLine());
            
 
    Dictionary<int, string> clients = new Dictionary<int, string>(n);
 
    for (int i = 0; i < n; i++)
    {
        Console.WriteLine($"гость № {i+1}:");
                
        Console.Write("\tномер:");
        int hislo = int.Parse(Console.ReadLine());
        Console.Write("\tимя:");
        string name = Console.ReadLine();
        clients.Add(hislo, name);
    }
 
    //........всё остальное можно оставить
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
06.01.2020, 23:59
Лучший ответ Сообщение было отмечено kauakutsatsauts как решение

Решение

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
using System;
using System.Collections.Generic;
 
class Program
{
    static bool IsVip(int n)
    {
        int sum = 0;
 
        for (int i = 1; i <= n; i++)
        {
            if (n % i == 0)
                sum += i;
        }
 
        if (sum % 2 == 1)
            return true;
 
        return false;
    }
 
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());
        SortedDictionary<int, string> d = new SortedDictionary<int, string>();
 
        for (int i = 0; i < n; i++)
        {
            string[] s = Console.ReadLine().Split();
            if (IsVip(int.Parse(s[0])))
                d.Add(int.Parse(s[0]), s[1]);
        }
 
        if (d.Count == 0)
            Console.WriteLine("empty");
 
        foreach (var x in d)
            Console.WriteLine("{0} {1}", x.Key, x.Value);
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2020, 23:59
Помогаю со студенческими работами здесь

Составьте программу которая находит и выводит наименьший номер отрицательного элемента массива или сообщение, что такого элемента нет
1)Задан массив натуральных чисел размером 30 элементов.Составить программу получения из него другого массива, который будет содержать...

Что делать со значением первичного ключа только что созданной таблицы?
Здравствуйте. Есть таблица, в качестве первичного ключа у которой колонка ID, из которой мне нужно получать последнюю записанную сущность....

В поиске добавить код если нет такого значения в стринггрид то вывести ошибку такого значения нет, если находит то вывод
procedure TForm1.Button5Click(Sender: TObject); var i,j,k:integer;S:string; begin for i:=1 to sg.RowCount do begin if...

Что делать!Нет посещаемости с поисковиков(санкций нет)
Всем Здравствуйте!Создала сайт с большими надеждами. Вложила много труда. Не получив результата все забросила. Сейчас вернулась к своему...

Выводит ошибку, что делать
Суть задачи: Найти кол-во элемнов больше числа С , стоящих на диагонали. Написал код, компилирует и работало все, потом стал кое что...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru