ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

09.01.2010, 01:55
|
|
Новичок
Регистрация: 12.12.2009
Сообщений: 10
Провел на форуме: 14658
Репутация:
0
|
|
Help!!!
помогите, мне с лабой
Написать програму что реализирует две функции с однаковіми именами но разными входящими данными(перегрузка).
Функция max, что находит максимальное значение из двух целых чисел и максимальное значения длиннейшего из слов предложения.
|
|
|

09.01.2010, 02:06
|
|
Новичок
Регистрация: 08.11.2005
Сообщений: 16
Провел на форуме: 115012
Репутация:
1
|
|
STIFFmaster, как то так
Код:
//фуникция для работы с числами
int max(int a, int b)
{
if (a>b) return a;
else return b;
}
//функция для работы со строкой
int max(char * c)
{
int a;
int max=1;
while (c!='\0')
{
if (c==' ')
if (a>max)
{
max=a;
a=0;
}
if (c!=' ')
a++;
c++;
}
}
З.ы. могут быть мелкие ошибки - давно на С++ не писал, плюс набирал прямо тут, нигде не проверял.
|
|
|

09.01.2010, 02:20
|
|
Новичок
Регистрация: 08.11.2005
Сообщений: 16
Провел на форуме: 115012
Репутация:
1
|
|
Life а какого черта ты сравниваешь каждый символ подстроки с текущим рассматриваемым символом в строке? ты тогда уж сравнивай со следующими. а еще лучше сделать проверку без привязки к количеству символов строке
да и в цикле конечное значение левое какое то
Код:
int k=0;
for ( int i=0; i<30; i++)
{
if (stroka[i]==podstroka[k])
k++;
if ((stroka[i]!=podstoka[k]) && (!k))
k=0;
if (k==strlen(podstroka))
cout<<i-k;
}
|
|
|

09.01.2010, 02:49
|
|
Banned
Регистрация: 07.01.2010
Сообщений: 132
Провел на форуме: 63422
Репутация:
8
|
|
Сообщение от KI11obyte
Life а какого черта ты сравниваешь каждый символ подстроки с текущим рассматриваемым символом в строке? ты тогда уж сравнивай со следующими. а еще лучше сделать проверку без привязки к количеству символов строке
да и в цикле конечное значение левое какое то
Код:
int k=0;
for ( int i=0; i<30; i++)
{
if (stroka[i]==podstroka[k])
k++;
if ((stroka[i]!=podstoka[k]) && (!k))
k=0;
if (k==strlen(podstroka))
cout<<i-k;
}
Спасибо, о то некак не мог додуматся....
|
|
|

09.01.2010, 03:36
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Dieselpro задача можно решить из критерия сходимости для последовательности. Для любого числа ε > 0 существует номер N такой, что при всех n > N и любых натуральных m выполняется неравенство |Xn+m - Xn| < ε.
То есть просто проверяем разность текущего и предыдущего значений функции (n - натуральные числа), если он меньше эпсилон, то мы нашли значение этого предела. Плюс поставить ограничение на количество итераций (достаточно большое) или ограничение на значение функции. По достижении которого прекращать поиск и говорить о пределе равном бесконечности или минус бесконечности
[Life] у KI11obyte немного неправильно, его функция не найдет строку 'abc' в строке 'aaabc'
PHP код:
int j=0;
for (int i=0; i<30 || !(stroka[i]); i++)
{
if (stroka[i]==podstroka[0])
for (j=0;j<0; i++)
{
if (!podstroka[i+j]) return 1;
if (!stroka[i+j]) return 0;
if (stroka[i+j]!=podstroka[j]) break;
}
}
return 0;
return 1 - заменить на сообщение что строка найдена, а return 0 - что нет, ну или оформить все в отдельную функцию. Ведь задание гласит - не использовать СТАНДАРТНЫЕ функции, а это будет собственная
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
Последний раз редактировалось Gifts; 09.01.2010 в 03:52..
|
|
|

09.01.2010, 03:54
|
|
Banned
Регистрация: 07.01.2010
Сообщений: 132
Провел на форуме: 63422
Репутация:
8
|
|
Спасибо Gifts, а то смотрю что написал KI11obyte - и сам думаю видать что-то не так...
а вот
int j=0;
for (int i=0; i<30 || !(stroka[i]); i++)
{
if (stroka[i]==podstroka[0])
for (j=0;j<0; i++)
{
if (!podstroka[i+j]) return 1;
if (!stroka[i+j]) return 0;
if (stroka[i+j]!=podstroka[j]) break;
}
}
return 0;
норм. спс.
|
|
|

09.01.2010, 04:06
|
|
Новичок
Регистрация: 08.11.2005
Сообщений: 16
Провел на форуме: 115012
Репутация:
1
|
|
Хммм.. а почему не найдет? вроде все норм. хотя если в цикле первое и второе условие поменять местами то будет лучше
|
|
|

09.01.2010, 04:15
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Мм, да, будет, но все равно - остается определенный класс подстрок, которые не будут найдены, например:
aaaaabcde
aaaabсde
Когда k будет установлен в ноль переменная i будет равна 4, и нам не хватит даже длины слова для поиска. Необходимо каждый раз возвращаться
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
|
|
|

09.01.2010, 04:19
|
|
Новичок
Регистрация: 08.11.2005
Сообщений: 16
Провел на форуме: 115012
Репутация:
1
|
|
Мда, ошибка (=
Хотел обойтись без вложенного цикла - получилось плохо (=
|
|
|

09.01.2010, 18:47
|
|
Новичок
Регистрация: 21.11.2006
Сообщений: 5
Провел на форуме: 29759
Репутация:
-1
|
|
Не лаба, но нужный для зачёта семинар по инфе...
Язык C.
Выполнить упражнения, следуя указаниям в doc-файле.
Очень прошу, к 11 января нужно.
задания http://saveimg.ru/show-image.php?id=a60ed786585359a3b067af75b6e6edf5
doc-файл http://slil.ru/28457448
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|