Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.08.2017, 20:48   #1
Ольга Качурина
Новичок
Джуниор
 
Регистрация: 13.08.2017
Сообщений: 2
Печаль HELP! Помогите новичку

Добрый день! Помогите, пожалуйста, новичку в решение задачек:

Подсчитать количество знаков препинания в строке, считанной из текстового поля. Удалить их.

Рекомендации к выполнению:

Данную задачу можно выполнить, обрабатывая строку как массив символов. Чтобы подсчитать, сколько раз в строке встречается некоторый символ, например "," нужно завести переменную-счетчик, каждый символ исходной строки сравнивается с заданным (","), в случае совпадения, переменная-счетчик увеличивается на 1. Ниже приведен код данной программы:

код

В задаче 2 требуется подсчитать сколько раз в строке встречаются знаки препинания , а не только запятая. Поэтому код нужно выполнить несколько раз, при этом вместо знака ", " подставлять другие знаки. Очевидно, что в этом случае код будет длинным. Для упрощения кода все знаки препинания можно запомнить в массив: string[] punctuation_marks = { ".", ",", "!", "?", ";", ":", "-"}; и уже для каждого элемента массива выполнять проверку. Код программы будет представлять собой два вложенных цикла.

Для удаления знаков препинания из строки можно использовать аналогичный алгоритм.

Эту задачу можно решить другим способом, используя методы класса string:

int index = str2.IndexOf(punctuation_marks[j]);// переменная index будет равна позиции искомого знака препинания (для того чтобы найти все знаки препинания этот метод нужно вызывать в цикле).

Если данного символа в строке нет, то переменная index будет равна -1. Таким образом, для подсчета количества знаков препинания в строке переменную count нужно увеличивать на 1 в том случае, если index!=1.

Для удаления знаков препинания можно использовать метод string remove(int index, int count), который возвращает строку, удалив из исходной строки count символов начиная с index. Например:

string str="это пример";

str= str.Remove(3, 7);// переменная str стала равна "'это"

Для решения задачи 2 метод должен вызываться после вызова метода int index = str2.IndexOf(punctuation_marks[j]); после проверки условия:

if (index != -1)
{
count++;
str2 = str2.Remove(index, 1);//
}





3. Создать массив слов из строки, введенной в текстовое поле.

Рекомендации к выполнению:

Самый простой способ выполнения задачи это использовать метод string [] split(char param); которая разделяет исходную строку на части по символу param и возвращает их в виде массива строк:

string [] words;

words = str3.Split(' ');

В примере массив words будет состоять из слов строки str3, так как в методе split в качестве параметра указан символ пробела.



4. Написать программу рисующую узор, который состоит из 50 вложенных друг в друга квадратов. Использовать несколько (3) цветов.

пример выполнения задания

пример выполнения задания 4.

Рекомендации к выполнению:

Для построения 50 квадратов нужно использовать цикл. По рисунку видно, что каждый квадрат отличается координатами и размером, причем на постоянную величину. Пусть координаты левого верхнего угла для каждого квадрата будут сдвигаться на некоторую величину d, размер квадрата будет уменьшаться на 2*d. Тогда тело цикла будет таким (индекс i нумерует квадраты):

g.DrawRectangle(new Pen(myColor[j]), d * i, d * i, panel1.Width - 2 * d * i, panel1.Width - 2 * d*i);

Для первого квадрата координаты верхнего левого угла будут (d, d), а сторона panel1.Width - 2 * d, для второго квадрата координаты верхнего левого угла будут (2*d, 2*d), т.е. сдвинуться на d от верхнего левого угла предыдущего квадрата, сторона второго квадрата будет panel1.Width - 4 * d, т.е. меньше на 2*d первого квадрата и т.д.

Величину d можно вычислить разными способами. Например, если d=panel1.Width/(2*50), то 50 квадратов заполнят всю панель.

Для того, чтобы квадраты рисовались разными цветами можно создать массив из 3 цветов: Color [] myColor={Color.Aqua, Color.Pink, Color.Black}; и использовать новый индекс j, который будет меняться в теле цикла вместе с индексом i. При рисовании квадратов первым параметром необходимо указывать цвет в виде new Pen(myColor[j]), при этом переменную j надо увеличивать в цикле на 1 и проверять, меньше ли она длины массива myColor. В противном случае, значение j сбрасывается в 0.



5. Построить гистограмму по данным, введенным пользователем. Входные данные - 3 целых числа.



пример выполнения задания 5

Рекомендации к выполнению:

Входные данные к программе:

int d=20; // отступы между столбиками диаграммы
//числа, введенные пользователем
int a;
int b;
int c;

Для построения диаграммы необходимо вычислить ширину одного столбика и единичный отрезок (т.е. если пользователь ввел 3, 5, 7 - то длины столбиков диаграммы будут соответственно 3 единичных отрезка, 5 и 7 единичных отрезков). Данные вычисления можно выполнить по следующим формулам:

int w = (panel2.Width - 4 * d) / 3; // ширина столбика гистограммы - из ширины панели вычитаю отступы и делю на число столбиков
int ed = panel2.Height / (a + b + c);// высота единичного отрезка

Далее рисуются сами столбики, учитывая, что точка (0,0) находится в верхнем левом углу.

Для построения первого столбика, ширина - w, высота - a * ed, верхняя левая вершина имеет координаты (d, panel2.Height - a * ed).g.FillRectangle(Brushes.Cyan, d, panel2.Height - a * ed, w, a * ed);

Аналогично можно построить два остальных столбика диаграммы.





6. Написать программу для построения декартовой системы координат. Пользователь вводит максимальные и минимальные значения по осям.

Рекомендации к выполнению:

Входные данные:
xmin, xmax - отрезок оси абсцисс, на котором будет построен график.
ymin, ymax - отрезок оси ординат, на которых будет построен график.

Основные этапы решения задачи:

Вычисление длин единичных отрезков dx и dy по формулам:
dx=panel1.width/(xmax-xmin);
dx=panel1.hight/(ymax-ymin);
Вычисление координат точки начала координат в области построения по формуле:
x0=-dx * xmin;
y0=dy * ymax;
Построение координатных осей.
ось абсцисс: отрезок с концами в точках (0, y0) и (panel1.width, y0);
ось ординат: отрезок с концами в точках (x0, 0) и (x0, panel1.Height);
Построение линий сетки.
Добавление подписей на осях и рисование стрелок на осях.
Ольга Качурина вне форума
Старый 13.08.2017, 21:21   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вы не перепутали "помогите" и "сделайте за меня"?

Назовите нормально тему, покажите свои наработки, конкретные вопросы и т.п.

Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите новичку!!! <<Strelok>> Общие вопросы C/C++ 1 12.10.2009 20:09
Помогите новичку. Lukash11111 Gamedev - cоздание игр: Unity, OpenGL, DirectX 12 12.07.2009 19:13
Помогите Новичку! transport Помощь студентам 4 05.02.2009 00:51
помогите новичку fox_root Общие вопросы Delphi 1 15.12.2006 19:10