S
sikha
Люди добрые очень нужна помощь нужно расставить комментарии к данному коду на завтра надо помогите пожалуйста!!!!
Функция сравнивает по алфавиту два слова, ограниченные пробелом или концом строки. С ее использованием другая функция возвращает динамический массив указателей на слова во входной строке, отсартированные в алфавитном порядке (массив содержит указатели на слова в исходной строке!)
Функция сравнивает по алфавиту два слова, ограниченные пробелом или концом строки. С ее использованием другая функция возвращает динамический массив указателей на слова во входной строке, отсартированные в алфавитном порядке (массив содержит указатели на слова в исходной строке!)
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h> // ПОДКЛЮЧЕНИЕ БИБЛИОТЕК
#include <stdlib.h>
int i,j,x,y,k,sl; // ОБЪЯВЛЕНИЕ ЧЕГО ТО ТАМ
struct slovo
{
char sod[50];
int nomer;
};
void Kolvo(char str[]) // это типа функция
{
sl=1;
for(i=0; i<strlen(str); i++) //цикл for
{
if(str[i]==' ')
{
sl++;
}
}
}
char ** Func(char str[]) // функция ще одна
{
slovo *slova=(slovo*) malloc (sl*sizeof(slovo));
int ns=0;
k=0; y=0;
for(i=0; i<=strlen(str); i++)
{
if((str[i]==' ')||(str[i]=='\0'))
{ //тело функциии
for(j=ns; j<=i-1; j++)
{
slova[k].sod[y]=str[j];
y++;
}
slova[k].sod[y]='\0';
k++;
y=0;
ns=i+1;
}
}
char * str2=(char*) malloc ((strlen(str)+1)*sizeof(char));
char ** pos=(char**) malloc (sl*sizeof(char)); //не знаю как написать
int nom=-1;
char max[50];
str2[0]='\0';
strcat(str, " ");
for(k=0; k<50; k++)
{
max[k]=254;
}
for(y=0; y<sl; y++)
{
for(i=0; i<sl; i++)
{
if(strcmp(max,slova[i].sod)>=0)
{
nom=i;
for(k=0; k<strlen(slova[i].sod); k++)
{
max[k]=slova[i].sod[k];
}
max[k]='\0';
}
}
strcat(str2,slova[nom].sod);
strcat(str2," ");
pos[y]=strstr(str,slova[nom].sod);
for(k=0; k<50; k++)
{
max[k]=254;
slova[nom].sod[k]=255;
}
}
printf("\nОтсортированная строка \n");
puts(str2);
free(str2);
free(slova);
return(pos); // результат работы функции
}
void main() //главная функция
{
clrscr();
printf("Программа выводящая массив указателей на слова в строке, отсартированные по алфавиту\n");
int kol,sch;
char ** uk;
char stroka[101];
printf("Введите количество строк которое вы хотите ввести(в каждой не более 100 символов)\n");
scanf("%i",&kol);
getchar();
for(sch=1; sch<=kol; sch++)
{
printf("\n Введите %i-ю строку\n",sch);
gets(stroka);
Kolvo(stroka); //тело цикла
uk=Func(stroka);
printf("\Полученный массив указателей\n");
for(i=0; i<sl; i++)
{
printf("%p ", uk[i]);
}
printf("\n");
}
getch(); //завершение
}