Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вхождения...

1.3K
13 ноября 2006 года
Zephyr
104 / / 03.05.2005
Народ, помогите решить такую задачу. Как найти количество вхождений подстроки a в строку b ?
242
13 ноября 2006 года
Оlga
2.2K / / 04.02.2006
убью ... ап стену ... большую и колючию
прдлагаю написать прогу на асм'е или Глаголе , щоб в следущий раз непавадно было ...
267
13 ноября 2006 года
Cutty Sark
1.2K / / 17.10.2002
[QUOTE=OlgaKr]убью ... ап стену ... большую и колючию
прдлагаю написать прогу на асм'е или Глаголе , щоб в следущий раз непавадно было ...
__________________
С уважением, Ольга :)
[/QUOTE]
Извиняюсь за оффтоп, но сочетание сообщения и подписи великолепно. ;-)
3.0K
13 ноября 2006 года
Мerlin
267 / / 25.07.2006
Код:
#include <stdio.h>
#include <string.h>
#include <conio.h>

int f(char *string, char *str)
{
  unsigned int n = strlen(str);
  if(strlen(string)<n)return 0;
  int cnt = 0;
  while(string = strstr(string, str))
  {
    cnt++;
    string+=n;
  }
  return cnt;
}

void main()
{
  char a[] = "abcdabcghjabckabc";
  char b[] = "abc";
  int n = f(a, b);
  printf("%s %s %d", a, b, n);
  getch();
}
242
13 ноября 2006 года
Оlga
2.2K / / 04.02.2006
а автор видать так и не понял, что язык программирования не указал.
мда..., а потом говорят что модераторы злые :).

2Zephyr
будь пожалуйста внимательней при оформлении тем. в следущий раз тему удалю, если не укажешь язык.
1.3K
14 ноября 2006 года
Zephyr
104 / / 03.05.2005
извините за ошибки. исправлюсь.
спасибо огромное за ответ.
242
14 ноября 2006 года
Оlga
2.2K / / 04.02.2006
тоже сорри, сорвалась :). правила плиз читай, верхнии темы(со статус важная) на форуме Студенты посмотри.
3
19 ноября 2006 года
Green
4.8K / / 20.01.2000
[QUOTE=Мerlin]
Код:
#include <stdio.h>
#include <string.h>
#include <conio.h>

int f(char *string, char *str)
{
  unsigned int n = strlen(str);
  if(strlen(string)<n)return 0;
  int cnt = 0;
  while(string = strstr(string, str))
  {
    cnt++;
    string+=n;
  }
  return cnt;
}

void main()
{
  char a[] = "abcdabcghjabckabc";
  char b[] = "abc";
  int n = f(a, b);
  printf("%s %s %d", a, b, n);
  getch();
}
[/QUOTE]
Кстати, на счет проверки валидности входных данных... :)
Последний раз пытался ввести по моему самый простой набор:
 
Код:
void main()
{
  char a[] = "abcdabcghjabckabc";
  char b[] = "";
  int n = f(a, b);
  printf("%s %s %d", a, b, n);
  getch();
}

"Это было более недели тому назад, но я до сих пор" жду ответа от программы. :D

P.S. Заметь, не стал говорить про отвратительную читабельность кода.
242
19 ноября 2006 года
Оlga
2.2K / / 04.02.2006
[quote=Green]
Кстати, на счет проверки валидности входных данных... [/quote]
а этим и студент может заняться. всего то иф изменить надо:
Код:
int f(char *string, char *str)
{
  unsigned int n = strlen(str);
[COLOR=red]  if(strlen(string)<n || n == 0)return 0;
[/COLOR]  int cnt = 0;
  while(string = strstr(string, str))
  {
    cnt++;
    string+=n;
  }
  return cnt;
}
3.0K
19 ноября 2006 года
Мerlin
267 / / 25.07.2006
[QUOTE=OlgaKr]а этим и студент может заняться. всего то иф изменить надо:
Код:
int f(char *string, char *str)
{
  int n = strlen(str);
[COLOR=red]  if(strlen(string)<n || n == 0)return 0;
[/COLOR]  int cnt = 0;
  while(string = strstr(string, str))
  {
    cnt++;
    string+=n;
  }
  return cnt;
}
[/QUOTE]Если ф-ия вызывается с неправильными входными данными, то это означает, что в основной
программе по всей видимости имеется баг. И если написать
...n == 0)return 0;, то этот баг будет незамечен. В нормальной
программе лучше бы написать
Код:
#include <assert.h>

int f(char *string, char *str)
{
  assert(string!=NULL);
  assert(str!=NULL);
  unsigned int n = strlen(str);
  assert(strlen(string) > 0);
  assert(n > 0);
  int cnt = 0;
  while(string = strstr(string, str))
  {
    cnt++;
    string+=n;
  }
  return cnt;
}
В студенческой
Код:
#include <assert.h>

int f(char *string, char *str)
{
  unsigned int n = strlen(str);
  int cnt = 0;
  while(string = strstr(string, str))
  {
    cnt++;
    string+=n;
  }
  return cnt;
}
assert можно добавить только если препод увидев его не спросит: "Как это так голубчик,
что ты вчера оператор for толком написать не смог, а сегодня всякие
assert-ы используешь?" :)
63
19 ноября 2006 года
Zorkus
2.6K / / 04.11.2006
Спросит, если сам знает, что это такое. А иначе побоится потерять репутацию, так что тут уже психология.
Уважаемые студенты, просьба в след. раз указывать уровень подготовки препода, чтоб знать врага хоть заочно;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог