Вот такое задание (обращаюсь к вам, поскольку идей ноль, а со стрингами я так и не могу пока научится работать):
Цитата:
Написать функцию, которая возвращает количество повторяющихся букв в строчке.
Прототип функции выглядит так:
code:int repeatCharCount( char * str);
максимальная длина строки - 256 символов.
Повторяющимися буквами считаются любые идущие друг за другом символа, например
В строчке "" ответ будет 0
В строчке "PARE uueks esimeheks valiti TTÜ ärikorralduse instituudi külalisprofessor Milvi Tepp" ответ будет 5, по одному в словах uueks,ärikorraldus,instituudi, külalisprofessor, Tepp
В строчке "12458756422457765497333457!!4:::" ответ будет 7, ибо 22,77,333,!!,:::
И да, в строчке "12__34___5" ответ будет 3
Ввод данных из файла "CharCount.txt", вывод в файл "Out.txt" где на каждую строчку ввода будет соответствовать строчка с числом.
CharCount.txt
Цитата:
12__34___5
12458756422457765497333457!!4:::
PARE uueks esimeheks valiti TTÜ ärikorralduse instituudi külalisprofessor Milvi Tepp
Mama myla ramy
Дядя Миша Ух, стена кода, да и ещё работа с памятью (чего мы пока не учили). Ладно, спасибо, буду курить, может смогу это в что-то более простое переписать.
DEAD MAN ну я не умею писать просто, всегда руки чешутся апчхимизировать, а из-за этого страдает читабельность.
Да и реаллок еще этот...
Но сам код рабочий 100% и без утечек, я его на боундс-чекере отлаживал.
И снова нуждаюсь в вас. Боюсь, что без чей-то помощи просто не осилю задание. Последний день сдачи - 31 марта.
Задание такое:
Цитата:
Генерируется матрица размером не меньше, чем 8 на 8, состоящая из 0 и 1 (в нашем случаи 0 - это пусто, 1 - есть мина). Единиц должно быть от 30% до 40% от всей матрицы. Выбирается случайная ячейка матрицы, на которую сбрасывается "парашютист". Этот "парашютист" может двигаться как Ладья в шахматах, но только на 1 клетку/ячейку за ход.
"Парашютист" делает шаг, проверяет клетку на наличие мины. Если мина есть - возвращается на предыдущую клетку, мины нет - остаётся на данной. В итоге"парашютист" должен найти выход из минного поля(или не найти, учень удивлюсь, если при случайной генерации выпадет так, что выход будет заблокирован) и вывести на экран результат о успешном завершении поиска. Функция поиска выхода, как я понял, должна быть рекурсивной. Так же программа должна выводить текущее положение "парашютиста" на матрице и состояние текущей клетки (есть мина/нет мины).
DEAD MAN писал: Генерируется матрица размером не меньше, чем 8 на 8, состоящая из 0 и 1
ну char matrix[8][8];
Цитата:
DEAD MAN писал: Единиц должно быть от 30% до 40% от всей матрицы
for( x = 0; x < 8; x++ )
for( y = 0; y < 8; y++ )
{
matrix[x][y] = (rand() & 1) ? 0 : 1;
}
Я правда хз, тут скорее будет вероятность 50%.
Цитата:
DEAD MAN писал: Выбирается случайная ячейка матрицы, на которую сбрасывается "парашютист".
x = rand() % 8;
y = rand() % 8;
Цитата:
DEAD MAN писал: "Парашютист" делает шаг, проверяет клетку на наличие мины. Если мина есть - возвращается на предыдущую клетку, мины нет - остаётся на данной.
ну тут корочи разные способы могут быть, но самый простой - проверить все восемь ячеек вокруг себя и отдать приоритет той, которая ближе всего к 0 по x, нулю по y либо к 8 по x, 8 по y. Из этих четырех приоритетов некоторые отменяются, поскольку в одном из полей может оказаться мина *Внимание, здесь мины!!!".
Далее, если все предпочтительные поля заняты, делается следующий проход - поиск ЛЮБОГО свободного поля без мины. Как легко увидеть, у данного алгоритма есть жирный баг - при некотором стечении обстоятельств парашутист начнет метаться между двумя соседними клетками. Но для начала и это неплохо.
Цитата:
DEAD MAN писал: Функция поиска выхода, как я понял, должна быть рекурсивной.
можно и рекурсивной, можно и просто в общем цикле вызывать MoveExecute();
sleep( 100 ); // ну чтоб не слишком быстро метался.
Цитата:
DEAD MAN писал: Так же программа должна выводить текущее положение "парашютиста" на матрице и состояние текущей клетки (есть мина/нет мины).
это предалагается в числах выводить или прямо матрицу рисовать средствами консоли?
Второй вариант чуть сложнее, но зато более красивый =)
Дядя Миша Ну с генерацией матрицы и сбросом парашютиста я разобрался, это не сложно. Мне проблемы доставляет само написание этой рекурсивной функции (уточнил, надо делать рекурсию). Мне бы найти зачатки кода или псевдокод.
Цитата:
Дядя Миша писал: рисовать средствами консоли
А есть команда, которая удаляет все записи в консоли? А так на самом деле достаточно только в численном виде выводить координаты.