#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();
}
Вхождения...
Народ, помогите решить такую задачу. Как найти количество вхождений подстроки a в строку b ?
прдлагаю написать прогу на асм'е или Глаголе , щоб в следущий раз непавадно было ...
прдлагаю написать прогу на асм'е или Глаголе , щоб в следущий раз непавадно было ...
__________________
С уважением, Ольга :)
[/QUOTE]
Извиняюсь за оффтоп, но сочетание сообщения и подписи великолепно. ;-)
мда..., а потом говорят что модераторы злые :).
2Zephyr
будь пожалуйста внимательней при оформлении тем. в следущий раз тему удалю, если не укажешь язык.
спасибо огромное за ответ.
тоже сорри, сорвалась :). правила плиз читай, верхнии темы(со статус важная) на форуме Студенты посмотри.
Код:
#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();
}
#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();
}
Кстати, на счет проверки валидности входных данных... :)
Последний раз пытался ввести по моему самый простой набор:
Код:
void main()
{
char a[] = "abcdabcghjabckabc";
char b[] = "";
int n = f(a, b);
printf("%s %s %d", a, b, n);
getch();
}
{
char a[] = "abcdabcghjabckabc";
char b[] = "";
int n = f(a, b);
printf("%s %s %d", a, b, n);
getch();
}
"Это было более недели тому назад, но я до сих пор" жду ответа от программы. :D
P.S. Заметь, не стал говорить про отвратительную читабельность кода.
Кстати, на счет проверки валидности входных данных... [/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;
}
{
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;
}
Код:
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;
}
{
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;
}
программе по всей видимости имеется баг. И если написать
...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;
}
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;
}
int f(char *string, char *str)
{
unsigned int n = strlen(str);
int cnt = 0;
while(string = strstr(string, str))
{
cnt++;
string+=n;
}
return cnt;
}
что ты вчера оператор for толком написать не смог, а сегодня всякие
assert-ы используешь?" :)
Уважаемые студенты, просьба в след. раз указывать уровень подготовки препода, чтоб знать врага хоть заочно;)