Комментарии к программе!

  • Автор темы sikha
  • Дата начала
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();															 //завершение 


}
 
S

shisik

Судя по тому, что не можешь объяснить назначение строк, код писался не тобой. Может у автора и спросишь?
 
S

sikha

Автар сам их не поставил я с куратором сидел делал! Он сказал чтоб я сам написал коменты тока я что то уже все забыл к чертям могу пару коментов но!!!
 
S

shisik

Вообще-то каменты пишутся просто глядя на код. Т.е. достаточно понимать синтаксис, чтоб понять работу программы и соответственно написать комментарии.
 
S

sikha

вот давай тогда я щас напишу коменты а ты скажешь правильные или нет?!!!!??

Посмотри так? -)
 
S

shisik

Писал быстро, поэтому могут быть ошибки.
Код:
#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; //в строке минимум 1 слово (если нет пробелов)
for(i = 0; i < strlen(str); i++) { //перечисляем все символы
if(str[i] == ' ') { //если очередной символ - пробел
sl++; //значит дальше новое слово
}
}
}

char ** Func(char str[]) //функция сортировки
{
slovo *slova = (slovo*) malloc(sl * sizeof(slovo)); //выделяем память для sl слов
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]; //заполняем данными слово номер k
y++; //переход к следующему символу в слове
}
slova[k].sod[y] = '\0'; //все строки в С завершаются нулём
k++; //переходим к следующему слову
y = 0; //начинаем с символа номер 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]; //строка в 50 символов
str2[0] = '\0'; //для начала новая строка пустая
strcat(str, " "); //добавляем к строке пробел в конце
for(k = 0; k < 50; k++) { //заполняем строку
max[k] = 254; //символами с кодом 254
}
for(y = 0; y < sl; y++) { //циклы для 
for(i = 0; i < sl; i++) { //сортировки
if(strcmp(max, slova[i].sod) >= 0) { //если строка меньше или равна max
nom = i; //присваиваем номер
for(k = 0; k < strlen(slova[i].sod); k++) { //копируем в max 
max[k] = slova[i].sod[k]; //все символы из строки
}
max[k] = '\0'; //все строки в С завершаются нулём
}
}
strcat(str2, slova[nom].sod); //добавляем в str2 слово

strcat(str2, " "); //и пробел
pos[y] = strstr(str, slova[nom].sod); //в массив строк записываем указатель на начало слова в строке str
for(k = 0; k < 50; k++) { //заполняем все символы
max[k] = 254; //значениями 254
slova[nom].sod[k] = 255; //и 255
}
}
printf("\nОтсортированная строка \n"); //сообщение
puts(str2); //выводим отсортированную строку
free(str2); //освобождаем память массива строк
free(slova); //освобождаем память массива слов
return(pos); //возвращаем массив указателей на начала слов

}

void main() //главная функция
{
clrscr(); //очищаем экран
printf("\nПрограмма выводящая массив указателей на слова в строке, отсартированные по алфавиту\n"); //вывод описания программы
int kol, sch; //переменные для количества строк и счётчик для цикла
char **uk; //массив - результат
char stroka[101]; //
printf("Введите количество строк которое вы хотите ввести(в каждой не более 100 символов)\n"); //запрос количества строк
scanf("%i", &kol); //ввод количества строк в переменную 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(); //задержка консоли

}
 
S

sikha

ээээммм..... Спасибо тебе огромное мужик!!!!!!!!!!!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!