1) Дана строка, изображающая целое положительное число. Вывести сумму цифр этого
числа.
2)Даны строки S и S 0 . Найти количество вхождений строки S 0 в строку S.
3)Дана строка, состоящая из русских слов, набранных заглавными буквами и
разделенных пробелами (одним или несколькими). Найти количество слов,
которые содержат хотя бы одну букву «А».
4)Посчитать количество неповторяющихся символов строке
C#
(c#) Нужна помощь в работе со строками. (лучше если будет не само решение, а объяснение, спасибо)
1)
для начала нужно понимать, что строка это по сути просто массив символов (char[]).
а что такое char? по сути это тот же ushort (uInt16) или проще говоря целочисленное число.
так вооот... было бы не плохо этот массив символов превратить в массив цифр... но как это сделать?
мы знаем, что цифры в кодировке расположены по порядку... то есть если мы из символа цифры вычтем позицию символа '0' в нашей кодировки,
то получим 1 цифру, эквивалентную символу... но так как char это и есть число, то по сути мы просто может из каждого символа отнять '0' и получить массив цифр!
для компактности записи используем System.Linq и получим такую запись:
int result = str.Select(x => x - '0').Sum();
где:
str.Select(x => ...) - перебор всех символов спроки str, где и представление их в виде переменной x
(x => x - '0') - из каждого символа строки отнимает символ '0'
.Sum() - суммируем элементы получившегося массива.
все просто...
2)
задача может показаться сложной и требующей работы с циклами и множественным использованием IndexOf, но мы не будем решать ее в лоб...
по своей сути подсчет количества вхождений подстроки в строку ни чем не отличается от деления строки на слова...
просто представь, что S0 - пробел (разделитель), а все остальное просто текст, тогда в данной задаче нам необходимо посчитать количество пробелов...
но тут все просто! пробелов (разделителей) будет на 1 меньше, чем слов.
пишем:
int result = S.Split(S0).Length - 1;
где:
S.Split(S0) - деление строки на слова с разделителем S0
PS опять же это выражение точно будет работать на net core, но для net framework оно будет выглядеть примерно так:
int result = S.Split(new string[] { S0 }, StringSplitOptions.None).Length - 1;
все... я устал писать... если надо будет, то решение распишу попозже, пока только ответы:
3)
int result = str.Split().Where(x => x.Contains('А')).Count();
4)
int result = str.Distinct().Count();
для начала нужно понимать, что строка это по сути просто массив символов (char[]).
а что такое char? по сути это тот же ushort (uInt16) или проще говоря целочисленное число.
так вооот... было бы не плохо этот массив символов превратить в массив цифр... но как это сделать?
мы знаем, что цифры в кодировке расположены по порядку... то есть если мы из символа цифры вычтем позицию символа '0' в нашей кодировки,
то получим 1 цифру, эквивалентную символу... но так как char это и есть число, то по сути мы просто может из каждого символа отнять '0' и получить массив цифр!
для компактности записи используем System.Linq и получим такую запись:
int result = str.Select(x => x - '0').Sum();
где:
str.Select(x => ...) - перебор всех символов спроки str, где и представление их в виде переменной x
(x => x - '0') - из каждого символа строки отнимает символ '0'
.Sum() - суммируем элементы получившегося массива.
все просто...
2)
задача может показаться сложной и требующей работы с циклами и множественным использованием IndexOf, но мы не будем решать ее в лоб...
по своей сути подсчет количества вхождений подстроки в строку ни чем не отличается от деления строки на слова...
просто представь, что S0 - пробел (разделитель), а все остальное просто текст, тогда в данной задаче нам необходимо посчитать количество пробелов...
но тут все просто! пробелов (разделителей) будет на 1 меньше, чем слов.
пишем:
int result = S.Split(S0).Length - 1;
где:
S.Split(S0) - деление строки на слова с разделителем S0
PS опять же это выражение точно будет работать на net core, но для net framework оно будет выглядеть примерно так:
int result = S.Split(new string[] { S0 }, StringSplitOptions.None).Length - 1;
все... я устал писать... если надо будет, то решение распишу попозже, пока только ответы:
3)
int result = str.Split().Where(x => x.Contains('А')).Count();
4)
int result = str.Distinct().Count();
1)
using System;
namespace Answer {
class Program {
static private void Main() {
var number = "285637";
var sum = 0;
for (var i = 0; i < number.Length; ++i) {
sum += int.Parse(number[i].ToString());
}
Console.WriteLine($"{number} => {sum}");
Console.ReadKey();
}
}
}
using System;
namespace Answer {
class Program {
static private void Main() {
var number = "285637";
var sum = 0;
for (var i = 0; i < number.Length; ++i) {
sum += int.Parse(number[i].ToString());
}
Console.WriteLine($"{number} => {sum}");
Console.ReadKey();
}
}
}
1) Дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа.
Это нобелевская за формулировку! Возможно правильнее было написать.
Дана строка, издалека чем-то напоминающая целое положительное число. Вывести сумму цифр этого числа.
Это нобелевская за формулировку! Возможно правильнее было написать.
Дана строка, издалека чем-то напоминающая целое положительное число. Вывести сумму цифр этого числа.
Slava Yakovlev
ну.. какая есть )
Похожие вопросы
- Нужна помощь с задачей C#
- Нужна помощь с языком C#
- C#: С помощью каких библиотек/модулей можно узнать температуру ЦП, ГПУ, частоту и тд...
- Задача массивы c# , прошу помощи...
- Помогите решить задачу C#! С помощью switch case.
- Нужна помощь С#
- Зачем в C# нужны типы данных?
- Базовые классы C# Нужен код такой большой
- Нужна помощь с созданием первой игры на Unity
- Срочно нужна помощь по С#