HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Флуд > Очередная тема о программировании
или DEAD MAN учит Си по университетской программе
Страницы (4): « 1 2 3 [4]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
DEAD MAN
Mono

Группа: Опытный
Дата регистрации: Oct 2005
Проживает: Tallinn
Сообщений: 1232
Возраст: 34

Рейтинг



Здрасте, снова вернулся за помощью.

Вот такое задание (обращаюсь к вам, поскольку идей ноль, а со стрингами я так и не могу пока научится работать):

Цитата:
Написать функцию, которая возвращает количество повторяющихся букв в строчке.
Прототип функции выглядит так:
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


Out.txt
Цитата:
3
7
6
0

Сообщить модератору | IP: Записан
Сообщение: 72882

Старое сообщение 24-02-2011 18:51
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33064
Нанёс повреждений: 392 ед.

Рейтинг



Писал я нечто подобное покойному смалл-диксу.
ЗЫ. Осторожно realloc

Вложение: strstr.rar (3.5 кб)
Этот файл был скачан 273 раз.
Дядя Миша проверил это вложение на вирусы 24-02-2011 в 19:34

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 72887

Старое сообщение 24-02-2011 19:34
-
DEAD MAN
Mono

Группа: Опытный
Дата регистрации: Oct 2005
Проживает: Tallinn
Сообщений: 1232
Возраст: 34

Рейтинг



Дядя Миша Ух, стена кода, да и ещё работа с памятью (чего мы пока не учили). Ладно, спасибо, буду курить, может смогу это в что-то более простое переписать.

Сообщить модератору | IP: Записан
Сообщение: 72894

Старое сообщение 24-02-2011 21:11
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33064
Нанёс повреждений: 392 ед.

Рейтинг



DEAD MAN ну я не умею писать просто, всегда руки чешутся апчхимизировать, а из-за этого страдает читабельность.
Да и реаллок еще этот...
Но сам код рабочий 100% и без утечек, я его на боундс-чекере отлаживал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 72895

Старое сообщение 24-02-2011 21:15
-
Scrama
СССР с интернетом и олигархами!

Дата регистрации: May 2006
Проживает: Прииртышье
Сообщений: 3737

Рейтинг



Награды
 
[1 награда]


std::vector<char>

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran

Сообщить модератору | IP: Записан
Сообщение: 72899

Старое сообщение 25-02-2011 03:36
- За что?
Qif_Qgame
Tripmine Maniac

Группа: Неопытный
Дата регистрации: Sep 2007
Проживает: Black Mesa
Сообщений: 1326
Возраст: 34

Рейтинг



Если прога еще нужна - вот версия попроще. Да и комментов понаписал - мама не горюй, понятно вроде должно быть любому.

C++ Source Code:
1
#include <conio.h>
2
#include <stdio.h>
3
#include <stdlib.h>
4
 
5
#define maxline 256//максимальное количество символов в строке
6
 
7
 
8
int DoubleCount( char* Line )				//наша функция
9
{
10
  int Counter=0, i;						//Counter - счетчик пар
11
  for ( i=1; Line[i]!=NULL; i++ )		//создаем цикл и посимвольно достаем из строки буквы
12
  {
13
    if ( Line[i]=='\n' )			//проверяем на символ конца строки
14
      return Counter;				//возвращаем значение счетчика если конец
15
 
16
    if ( Line[i-1]==Line[i] ) Counter++;	//сравниваем текущий и предыдущий символ
17
    }
18
    return Counter;						//возвращаем значение счетчика
19
  }
20
 
21
void main()
22
{
23
  FILE *iFile, *oFile;
24
  int DCount=0;							//переменная для хранения количества пар в строке
25
  char iLine[maxline];					//массив символов для хранения строки
26
 
27
  if ((iFile=fopen("CharCount.txt", "r"))==NULL)	//открываем файл, из которого считываем текст
28
  {												//и проверяем, открылся ли он
29
  printf("ERROR OPENING FILE");				//если нет, то пишем мессагу
30
  getch();
31
  exit (1);									//и выходим
32
}
33
else oFile=fopen("Out.txt", "w");				//если да, то открываем файл для записи
34
 
35
while (fgets(iLine, maxline, iFile)!=NULL)		//считываем строку в массив iLine размером maxline
36
{												//из файла iFile. делаем до тех пор, пока нет конца файла
37
DCount = DoubleCount( iLine );					//записываем в DCount значение, возвращаемое нашей ф-цией
38
fprintf(oFile,"%d\n",DCount);					//записываем в результирующий файл количество пар
39
}
40
 
41
fclose(iFile);									//закрываем файлы
42
fclose(oFile);
43
printf("Mission Complete!");
44
getch();										//ждем от пользователя нажатия перед завершением программы
45
}


Правда без табуляции комменты смотрятся жутковато %)

__________________
При виде колоизации из дум3 Дядя Миша страшно кричит
Boom - круто! © Worker
[jqbros site]

Сообщить модератору | IP: Записан
Сообщение: 73097

Старое сообщение 27-02-2011 17:22
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33064
Нанёс повреждений: 392 ед.

Рейтинг



бьет Qif_Qgame по рукам. Не пиши макросы с нижнем регистре, не пиши макросы в нижнем регистре!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 73098

Старое сообщение 27-02-2011 17:28
-
Qif_Qgame
Tripmine Maniac

Группа: Неопытный
Дата регистрации: Sep 2007
Проживает: Black Mesa
Сообщений: 1326
Возраст: 34

Рейтинг



Пардон, ошибочка. Больше не буду.

__________________
При виде колоизации из дум3 Дядя Миша страшно кричит
Boom - круто! © Worker
[jqbros site]

Сообщить модератору | IP: Записан
Сообщение: 73122

Старое сообщение 27-02-2011 18:30
- За что?
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 35

Рейтинг



Дядя Миша, а кстати, почему ?

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

Сообщить модератору | IP: Записан
Сообщение: 73126

Старое сообщение 27-02-2011 18:50
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33064
Нанёс повреждений: 392 ед.

Рейтинг



fire64 потому что их в таком случае легко перепутать с функциями.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 73129

Старое сообщение 27-02-2011 19:02
-
DEAD MAN
Mono

Группа: Опытный
Дата регистрации: Oct 2005
Проживает: Tallinn
Сообщений: 1232
Возраст: 34

Рейтинг



Qif_Qgame О, большое спасибо! Просто идеально. Мог не утруждать себя, не писать комментарии, я бы и так разобрался.

Сообщить модератору | IP: Записан
Сообщение: 73135

Старое сообщение 27-02-2011 19:43
- За что?
DEAD MAN
Mono

Группа: Опытный
Дата регистрации: Oct 2005
Проживает: Tallinn
Сообщений: 1232
Возраст: 34

Рейтинг



И снова нуждаюсь в вас. Боюсь, что без чей-то помощи просто не осилю задание. Последний день сдачи - 31 марта.

Задание такое:

Цитата:
Генерируется матрица размером не меньше, чем 8 на 8, состоящая из 0 и 1 (в нашем случаи 0 - это пусто, 1 - есть мина). Единиц должно быть от 30% до 40% от всей матрицы. Выбирается случайная ячейка матрицы, на которую сбрасывается "парашютист". Этот "парашютист" может двигаться как Ладья в шахматах, но только на 1 клетку/ячейку за ход.
"Парашютист" делает шаг, проверяет клетку на наличие мины. Если мина есть - возвращается на предыдущую клетку, мины нет - остаётся на данной. В итоге"парашютист" должен найти выход из минного поля(или не найти, учень удивлюсь, если при случайной генерации выпадет так, что выход будет заблокирован) и вывести на экран результат о успешном завершении поиска. Функция поиска выхода, как я понял, должна быть рекурсивной. Так же программа должна выводить текущее положение "парашютиста" на матрице и состояние текущей клетки (есть мина/нет мины).


З.Ы. Программа всё ещё на том же C.

Сообщить модератору | IP: Записан
Сообщение: 74116

Старое сообщение 13-03-2011 12:25
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33064
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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 писал:
Так же программа должна выводить текущее положение "парашютиста" на матрице и состояние текущей клетки (есть мина/нет мины).


это предалагается в числах выводить или прямо матрицу рисовать средствами консоли?
Второй вариант чуть сложнее, но зато более красивый =)

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 74118

Старое сообщение 13-03-2011 12:54
-
DEAD MAN
Mono

Группа: Опытный
Дата регистрации: Oct 2005
Проживает: Tallinn
Сообщений: 1232
Возраст: 34

Рейтинг



Дядя Миша Ну с генерацией матрицы и сбросом парашютиста я разобрался, это не сложно. Мне проблемы доставляет само написание этой рекурсивной функции (уточнил, надо делать рекурсию). Мне бы найти зачатки кода или псевдокод.

Цитата:
Дядя Миша писал:
рисовать средствами консоли

А есть команда, которая удаляет все записи в консоли? А так на самом деле достаточно только в численном виде выводить координаты.

Сообщить модератору | IP: Записан
Сообщение: 74128

Старое сообщение 13-03-2011 15:30
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33064
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
DEAD MAN писал:
А есть команда, которая удаляет все записи в консоли?

system( "@cls\n" );
не?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 74139

Старое сообщение 13-03-2011 17:49
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 22:49. Новая тема    Ответить
Страницы (4): « 1 2 3 [4]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Флуд > Очередная тема о программировании
или DEAD MAN учит Си по университетской программе
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024