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

Тема в разделе "Общие вопросы по С и С++", создана пользователем sikha, 22 май 2008.

  1. sikha

    sikha Гость

    Люди добрые очень нужна помощь нужно расставить комментарии к данному коду на завтра надо помогите пожалуйста!!!!



    Функция сравнивает по алфавиту два слова, ограниченные пробелом или концом строки. С ее использованием другая функция возвращает динамический массив указателей на слова во входной строке, отсартированные в алфавитном порядке (массив содержит указатели на слова в исходной строке!)




    Код (Text):
    #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();                                                             //завершение


    }
     
  2. shisik

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    Судя по тому, что не можешь объяснить назначение строк, код писался не тобой. Может у автора и спросишь?
     
  3. sikha

    sikha Гость

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

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    Вообще-то каменты пишутся просто глядя на код. Т.е. достаточно понимать синтаксис, чтоб понять работу программы и соответственно написать комментарии.
     
  5. sikha

    sikha Гость

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

    Посмотри так? -)
     
  6. shisik

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    Писал быстро, поэтому могут быть ошибки.
    Код (Text):
    #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(); //задержка консоли

    }
     
  7. sikha

    sikha Гость

    ээээммм..... Спасибо тебе огромное мужик!!!!!!!!!!!
     
Загрузка...

Поделиться этой страницей