Змінюй хід війни! Допомагай ЗСУ!

Практика CШАРП, задания, примеры.

🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
Статус: Offline
Реєстрація: 06.08.2014
Повідом.: 57
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #1
Практика CШАРП, задания, примеры.

Здравствуйте, учу C# по книге Andrew Troelsen. "Pro C# 5.0 and the .NЕT 4.5 Framework". Опытные программисты нужна ваша помощь в составление заданий для закрепления. Самостоятельно не могу поставить задачу которая будет требовать тех знаний и навыков которые прохожу по мере чтение книги. Укажите задачи с конкретными условиями и целями и если возможно с темами по главам книги. И если есть люди которые могут себе позволить по времени курировать меня, отпишитесь и проверяйте мои работы.

На данный момент необходимы задачи для консольных приложений и форматирование строк.

Спасибо.
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #2
задачи для консольных приложений
это очень широко сказано, консольной программой можно сделать все, ну разве что ты имел ввиду класс Console, можешь смело забить на это, так писать на экран и читать с клавиатуры, вот и все

форматирование строк
ну будем надеяться что ты уже прошел кучу всего и знаешь про ветвление, циклы, массивы и т.д. возьми любой текст, разбей на предложения, в четных поменяй слова первое с последним, второе с предпоследним и т.д., в нечетных к словам где меньше 4 букв добавь спереди любой печатаемый символ, чтобы слово стало из 20 букв, в словах где 4 и больше букв добавь справа любой печатаемый символ, чтобы слово стало из 10 букв, если слово превышает 10, то прибавляй символ пока не станет 100 букв, после того как ты это сделал посчитай количество добавленных слева и справа, если они являются простыми числами, то разбей весь текст на куски, в которые есть только одна буква а, удали из первого куска четные символы, а с последнего нечетные, после чего выведи результат на консоль, чтобы в первой итерации было одно слово, во второй 2, в 3й три и т.д., последнюю итерацию выведи с нумерацией слов в ней

и хватит, а то я могу походу так вечно :)
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #3
ну будем надеяться что ты уже прошел кучу всего и знаешь про ветвление, циклы, массивы и т.д. возьми любой текст, разбей на предложения, в четных поменяй слова первое с последним, второе с предпоследним и т.д., в нечетных к словам где меньше 4 букв добавь спереди любой печатаемый символ, чтобы слово стало из 20 букв, в словах где 4 и больше букв добавь справа любой печатаемый символ, чтобы слово стало из 10 букв, если слово превышает 10, то прибавляй символ пока не станет 100 букв, после того как ты это сделал посчитай количество добавленных слева и справа, если они являются простыми числами, то разбей весь текст на куски, в которые есть только одна буква а, удали из первого куска четные символы, а с последнего нечетные, после чего выведи результат на консоль, чтобы в первой итерации было одно слово, во второй 2, в 3й три и т.д., последнюю итерацию выведи с нумерацией слов в ней

и хватит, а то я могу походу так вечно
Спасибо, буду над этим работать, как закончу появятся вопросы и необходимость в новых заданиях:)
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #4
и хватит, а то я могу походу так вечно
Пытался выполнить это задание и не выходит у меня, кину код, подскажите что не так.
string filepath = "D:\\Documents\\Programming\\MyProjects\\txt.txt";
StreamReader sr = File.OpenText(filepath);
string fulltext = sr.ReadToEnd();
Char[] charsfulltext = fulltext.ToCharArray();

Dictionary<int, string> dt = new Dictionary<int, string>();

int z = 1;

foreach(Char c in charsfulltext)
{
string adg = c.ToString();

if ((adg == ".") || (adg == "?") || (adg == "!"))
{
dt[z] = dt[z] + adg;
z++;
}
else
{
dt[z]= dt[z] + adg;
}

dt[z]= dt[z] + adg; пишет "KeyNotFoundException не обработано"
Я вообще правильно подошел к вопросу посимвольной обработки? Пытался не использывать string вместо него StringBuilder, прочел в книги из-за не грамматного использыванния стринг можно память забить, так как каждый раз делают копию стринг переменной.
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #5
здесь ты пытаешься прочитать значение в несуществующем ключе. dictionary автоматически создает пару только при присваивании. тобиш есть два варианта:
1. перед dt[z] = dt[z] + adg;
написать dt[z] = String.Empty;
2. либо сделать то что подсказывает среда выполнения. обернуть зловещую строку в try...catch

P.S.

Ну и конечно есть 3й вариант - написать все не так криво, но это дело практики.
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #6
Dictionary<int, string> dt = new Dictionary<int, string>();//0 шт
int z = 1;
dt[z] = dt[z]/*обращение к несуществубющей записи*/ + adg;

Я вообще правильно подошел к вопросу посимвольной обработки?
ну в том что ты написал все равно все через строки идет
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7
Спасибо за помощь. Следующий вопрос у меня есть код которые выполняет чтение по символам и распределяет в массив предложения текста, индексы массива соответствую четное или нечетное предложение:
string filepath = "D:\\Documents\\Programming\\MyProjects\\txt.txt";
StreamReader sr = File.OpenText(filepath);
string fulltext = sr.ReadToEnd();
Char[] charsfulltext = fulltext.ToCharArray();

Dictionary<int, string> dt = new Dictionary<int, string>();

int z = 1;

dt[1] = String.Empty;
foreach(Char c in charsfulltext)
{
string adg = c.ToString();

if ((adg == ".") || (adg == "?") || (adg == "!"))
{
dt[z] += adg;
z++;
dt.Add(z, "");
}
else
{

dt[z]+= adg;
}

}

sr.Close();
Console.ReadKey();
Что стоит исправить, что здесь написано криво. И как я понимаю таким же образом мне надо дальше форматировать само предложение?
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #8
странные названия переменных, магическая строчка "dt[1] = String.Empty;", все в одном методе, криво сделана работа со стримридером, лишние преобразования типов

и почему Dictionary?
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #9
нафига делать на основе готового решения (которое я описал выше) какие-то свои догадки?

да, первый элемент ты проинициализировал. А остальные в цикле? Выше я имел ввиду не над foreach, а первое что нужно сделать в этом цикле. Но это не стабильный вариант. Правильно вообще будет обработать этот случай
if(!dt.ContainsKey(z))
{
dt[z] = String.Empty;
}
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #10
Хотел что бы номер ключа соответствовал номеру предложения, а в Dictionary я могу использовать тип string.
криво сделана работа со стримридером
Не знаю как еще прочесть файл, что исправить?
лишние преобразования типов
Я пробовал непосредственно char charsfulltext использывать в условие if но пишет
" Оператор "=="" не мождет применятся к операндам типа"char" и "string". ". Надо через ContainsKey?



да, первый элемент ты проинициализировал. А остальные в цикле? Выше я имел ввиду не над foreach, а первое что нужно сделать в этом цикле. Но это не стабильный вариант. Правильно вообще будет обработать этот случай
Цитата:
if(!dt.ContainsKey(z))
{
dt[z] = String.Empty;
}
Я использовал foreach так как хочу что перебрало элементы по символу и присваивало по номеру ключа все предложение, номер ключа поможет определить четное или не четное предложение, затем при обнаружение конца предложение создает новый ключ и инициализирует его, а первый ключ инициализировал так криво, не знаю как еще. А если в цикле foreach инициализировать через dt[z] = String.Empty; то в массиве остается только один элемент, последний.
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #11
Не знаю как еще прочесть файл, что исправить?
мсдн в помощь - через юсинг
" Оператор "=="" не мождет применятся к операндам типа"char" и "string". ". Надо через ContainsKey?
и почему ты решил конвертировать то что есть в стринги, а не сравнивать с чаром?

какая-то жесть наворачивается :) давай каждое самостоятельное действие в метод для начала, типа там получить строку из файла, разбить на предложения, обработать предложения, обработка четных предложений, обработка нечетных предложений и т.д.
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #12
и почему ты решил конвертировать то что есть в стринги, а не сравнивать с чаром?
У меня не получилось сравнить с чаром, это надо делать не так как я пытался? Через методы дикшинари, кстати дикшанари подходит для этого?
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #13
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #14
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #15
и проблеме с исключением конец
Я извиняюсь, но не понимаю как это сделать что бы оно так же перебирало,без эксепшена,не понимаю куда вставлять этот код:
if(!dt.ContainsKey(z))
{
dt[z] = String.Empty;
}
Форич все же нужен да? Что мне с этим ContainsKey делать?
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #16
if(!dt.ContainsKey(z))
{
dt[z] = String.Empty;
}

if ((adg == ".") || (adg == "?") || (adg == "!"))
{
dt[z] += adg;
z++;
}
else
{

dt[z]+= adg;
}
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #17
Сколько будет? :-)
int a,b,c = 1;
int result = a+++b---c++;
 
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #18
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #19
  • 🟢 12:31 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #20
а что будет с твоим кодом и этим, когда z станет равно 2?
if(!dt.ContainsKey(z)) это если там нет такого z оно его просто инициализирует?

Вот что у меня сейчас есть, этот код грамотный?
string filepath = "D:\\Documents\\Programming\\MyProjects\\txt.txt";
Dictionary<int, string> dt = new Dictionary<int, string>();
int z;
using (StreamReader sr = File.OpenText(filepath))
{
string fulltext = sr.ReadToEnd();
Char[] charsfulltext = fulltext.ToCharArray();
z = 1;
if(!dt.ContainsKey(z))
{
dt[z] = String.Empty;
}
foreach (char symbol in charsfulltext)
{
if ((symbol=='.') || (symbol=='?') || (symbol=='!'))
{
dt[z] += symbol;
z++;
dt.Add(z, "");
}
else
{
dt[z] += symbol;
}
}
 
Назад
Зверху Знизу