0 / 0 / 1
Регистрация: 28.09.2015
Сообщений: 7

Есть названия трёх городов. Вывести самое длинное и короткое названия, количество символов в них

16.10.2015, 10:24. Показов 3100. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обязательный старт - запись названий в строку, или в отдельные строки. При таком выполнении появляется ошибка: "ссылка на объект не указывает на экземпляр объекта, строка 39". Вопрос, как лучше исправить программу? Если нет, может кто подскажет другой алгоритм. Что делать, если названия одинаковые по длине?
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Cons
{
    class Program
    {
        static void Main(string[] args)
        {
            string str;     
            string[] arrStr = new string[50];
            
            Console.WriteLine("Введите через запятую названия трёх городов без побелов");
            str = Console.ReadLine();
            
            string[] split = str.Split(new Char[] { ','});
 
           
            int i = 0;
            string name1 = arrStr[0];
            string name2 = arrStr[0];
            foreach (string s in split)
            {
                if (s.Trim() != "")
                {
                    Console.WriteLine(s);
                    arrStr[i] = s;
                    i++;
                }
            }
 
            int max = arrStr[0].Length;
            int min = arrStr[0].Length;
 
            for (int j = 0; i < arrStr.Length; j++) {
                if (max < arrStr[j].Length)
                {
                    max = arrStr[j].Length;
                    name1 = arrStr[j];
                }
 
                if (min > arrStr[j].Length)
                {
                    min = arrStr[j].Length;
                    name2 = arrStr[j];
                }
 
            }
            Console.WriteLine("Самое длинное название: {0}, Количество символов: {1}", name1, max);
            Console.WriteLine("Самое короткое название: {0}, Количество символов: {1}", name2, min);
            Console.ReadKey();
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.10.2015, 10:24
Ответы с готовыми решениями:

Найти самое длинное и самое короткое слово и количество символов в них
Помогите решить задачи на строки.на стандартные операции и функции для строк 1.В предложении разделенным пробелами: а)Найти количество...

Вывести на экран самое длинное и самое короткое название городов
1.&quot;составить программу на языке Turbo Pascal и блок схему к ней:вывести на экран таблицу перевода из градусов по шкале Цельсия в градусы по...

Вывод на экран названия стран, для которых в базе записано самое большое и самое маленькое количество городов
Есть программа с данными структур (простейшая база данных) : Город : страна, название, население, площадь. city.country, city.name,...

6
4 / 4 / 0
Регистрация: 21.06.2011
Сообщений: 25
16.10.2015, 10:55
Цитата Сообщение от Maggie_001 Посмотреть сообщение
for (int j = 0; i < arrStr.Length; j++) {
у вас опечатка.. Вы используете J, а сравниваете I

А нет, поторопился

Добавлено через 6 минут
Вот так будет работать:
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
class Program
    {
        static void Main(string[] args)
        {
            string str;
 
            Console.WriteLine("Введите через запятую названия трёх городов без побелов");
            str = Console.ReadLine();
 
            string[] split = str.Split(new Char[] { ',' });
            string[] arrStr = new string[split.Length];
 
            int i = 0;
            string name1 = arrStr[0];
            string name2 = arrStr[0];
            foreach (string s in split)
            {
                if (s.Trim() != "")
                {
                    Console.WriteLine(s);
                    arrStr[i] = s;
                    i++;
                }
            }
 
            int max = arrStr[0].Length;
            int min = arrStr[0].Length;
 
            for (int j = 0; j < arrStr.Length; j++)
            {
                if (max < arrStr[j].Length)
                {
                    max = arrStr[j].Length;
                    name1 = arrStr[j];
                }
 
                if (min > arrStr[j].Length)
                {
                    min = arrStr[j].Length;
                    name2 = arrStr[j];
                }
 
            }
            Console.WriteLine("Самое длинное название: {0}, Количество символов: {1}", name1, max);
            Console.WriteLine("Самое короткое название: {0}, Количество символов: {1}", name2, min);
            Console.ReadKey();
        }
    }
0
11 / 11 / 12
Регистрация: 18.09.2015
Сообщений: 39
16.10.2015, 11: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
        static void Main(string[] args)
        {
            GetGoroda();
            Console.ReadLine();
        }
 
        static int Max;
        static int Min;
        static String[] Goroda;
        static int[] LengGoroda;
        static void GetGoroda()
        {
            Goroda = new String[3] { "Город111", "Город22", "Город3" };
            LengGoroda = Goroda.Select(GetMaxLength).ToArray();
            Max = LengGoroda.Max();
            Min = LengGoroda.Min();
            String[] Temp = Goroda.Where(WriteGoroda).ToArray();
        }
 
        static int GetMaxLength(String Gorod)
        {
            return Gorod.Length;
        }
 
        static bool WriteGoroda(String Gorod, int Index)
        {
            if (LengGoroda[Index] == Max)
                Console.WriteLine("Max =" + Gorod + " " + Gorod.Length);
            if (LengGoroda[Index] == Min)
                Console.WriteLine("Min =" + Gorod + " " + Gorod.Length);
            return true;
        }
0
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
16.10.2015, 11:09
Жесть какая-то, зачем так сложно?
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
static void Main(string[] args)
{
    Console.WriteLine("Введите через запятую названия трёх городов без побелов:");
    string[] cities = Console.ReadLine().Split(',');
 
    int minLen = 255;
    int maxLen = 0;
    string minCity = "";
    string maxCity = "";
 
    for (int i = 0; i < cities.Length; i++)
    {
        if(cities[i].Length < minLen)
        {
            minLen = cities[i].Length;
            minCity = cities[i];
        }
        if (cities[i].Length > maxLen)
        {
            maxLen = cities[i].Length;
            maxCity = cities[i];
        }
    }
 
    Console.WriteLine("Самое длинное название: {0}, Количество символов: {1}", maxCity, maxLen);
    Console.WriteLine("Самое короткое название: {0}, Количество символов: {1}", minCity, minLen);
 
    Console.ReadLine();
}
0
11 / 11 / 12
Регистрация: 18.09.2015
Сообщений: 39
16.10.2015, 11:14
Exerion, Если будут два одинаковых по длинне города твоя прога не сработает))

Добавлено через 2 минуты
Я делал бы так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        static void Main(string[] args)
        {
            GetGorodaLambda();
            Console.ReadLine();
        }
 
        
 
        static void GetGorodaLambda()
        {
            String[] Goroda = new String[3] { "Город11", "Город22", "Город3" };
            int iMax = Goroda.Select((Gor) => Gor.Length).Max();
            int iMin = Goroda.Select((Gor) => Gor.Length).Min();
            String[] Temp = Goroda.Where((Gor, ind) => 
            {
                if (Gor.Length == iMax)
                    Console.WriteLine("Max =" + Gor + " " + Gor.Length);
                if (Gor.Length == iMin)
                    Console.WriteLine("Min =" + Gor + " " + Gor.Length);
                return true;
            }).ToArray();
        }
0
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
16.10.2015, 13:28
Futu, в задании ни слова не сказано что делать в случае с одинаковой длинной, так что это уже проблемы заказчика.
0
11 / 11 / 12
Регистрация: 18.09.2015
Сообщений: 39
16.10.2015, 14:18
Exerion, это же маленький пример, пример чего-то большего, к примеру будет не длинна названия, а кол-во предприятий. и в рейтинге наибольшее кол-во предприятий победит один город, хотя и у другого тоже наибольшее кол-во предприятий а он просто вылетит из вашей программы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.10.2015, 14:18
Помогаю со студенческими работами здесь

Подсчитать количество предложений во всех файлах и вывести на экран самое короткое и самое длинное предложения
Напишите программу, которая открывает текстовый файл-список, содержащий имена файлов по одному на строке. Программа подсчитывает количество...

Вывести самое короткое (длинное) слово в предложении (если таких слов несколько, то вывести первое из них)
Дана строка-предложение на русском языке. Вывести самое короткое (длинное) слово в предложении (если таких слов несколько, то вывести...

Дана строка символов. Слова в строке отделяются одним пробелом. Поменять местами самое длинное и самое короткое слово
8. Дана строка символов. Слова в строке отделяются одним пробелом. Поменять местами самое длинное и самое короткое слово. не могу...

Вывести строку по словам, найти самое длинное и самое короткое слово
• Дана строка S. Вивисты его послов и сказать которое дольше и которое меньше слово.

Вывести на экран самое длинное и самое короткое название города
1) запрашивает названия трех городов; 2) проверяет, чтобы все они были разной длины, если это не так, то выводит соответствующее...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru