tmp_max = 0; //переменная для подсчета символов
if (str1[i] == ' ') continue; // если встретили пробел, пропускаем его, программа продолжается дальше.
for(j = 0;j < len;j ++){ //цикл, по всей длине строки
if (str1[i] == str1[j]) tmp_max ++; //если нашли одинаковые символы, увеличиваем счетчик
}
if (max < tmp_max) {max = tmp_max; c = str1[i];} //если максимальное, уже существующее значение
// меньше получившегося, то текущее становиться
// максимальным и запоминаем при каком символе
}
for(i = 0;i < len;i ++){ //цикл по всей длине строка
if (str1[i] == c) str2[i] = ' '; //если текущий символ равен чаще всего встречающемуся, заменяем
// его на пробел
else str2[i] = str1[i]; //если нет, проста записываем его в результирующую строку как есть
}
str2[i] = '\0'; //дописываем в конец результирующей строки признак конца строки
return 0;
}
3.1.10. Написать функцию, выполняющую поиск подстроки в строке. Строка и подстрока заданы в массивах символов. Результат функции – указатель на начало подстроки в строке или NULL.
Постановка задачи : Дана строка, состоящая из набора символов. Задача определить входит ли подстрока в эту строку.
Алгоритм: В функцию передаем строку(виде char массива),строку поиска, и их длины. Ищем в строке первый символ из подстроки поднимаем флаг и запоминаем позицию, далее смотрим если все символы подстроки совпадают с символами основной строки, следовательно строка найдена иначе возвращаемся на запомненный на ранее запомненную позицию и продолжаем поиск заново.
Текстпрограммы
int serch(char *array,char * search,int kol,kol_temp)
int pos_str;
j=0;
start=0; //флаг статуса (поднимается если найдено начало искомой подстроки)
pos=-1;
for(i=0;i<kol;i++){ //цикл перебирает все символы в строке
if(start==1){ //если первый символ совпал
if(j!=kol_temp){ //проверяем дошли или нет до
//конца искомой подстроки
if(array[i]==search[j]){j++}else //считаем кол-во
//совпавших символов
{start=0; j=0;i=pos; pos=-1;} //иначе сбрасываем флаг
}else break;
}
If((start==0)&&(array[i]==search[0])){start=1;j++;pos=i;} //если первый
// символ совпадает с текущим поднимаем флаг
}
printf("\nPos is %d",pos);
return pos; //возвращаем позицию найденной последовательности.
}
3.1.11. Написать функцию, определяющую в массиве максимальную длину последовательности расположенных подряд возрастающих значений, и возвращающую индекс ее начала.
Постановка задачи: Дан массив содержащий набор чисел типа integer . Определить в массиве максимальную длину последовательности расположенных подряд возрастающих значений, и возвратить индекс начала этой последовательности.
Описание Алгоритма: В функцию передаётся указатель на начало массива и кол-во элементов в этом массиве. Организуем цикл по всем элемента этого массива и если встречаем
int search(int *array,kol){
int i;
int kol;
int cycle;
int pos,el,el_max,pos_max;
cycle=0;
el_max=-1;
pos_max=0;
for(i=1;i<kol;i++){
if(cycle==0){
if(array[i]>array[i-1]){cycle=1;pos=i-1;el=2;}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.