Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> readlines-не знаю 
V
    Опции темы
Domen
Дата 1.12.2009, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Доброго времени суток!
Не понимаю задания.Очень нужна помощь.Керниган.
Код

 #define NULL 0
  #define LINES 100 /* max lines to be sorted */

  main()    /* sort input lines */
  {
       char *lineptr[LINES]; /*pointers to text lines */
       int nlines;     /* number of input lines read */

       if ((nlines = readlines(lineptr, LINES)) >= 0)
       {
          sort(lineptr, nlines);
          writelines(lineptr, nlines);
       }
       else
          printf("input too big to sort\n");
  }

  #define MAXLEN 1000
  readlines(lineptr, maxlines) /* read input lines */
  char *lineptr[];       /* for sorting */
  int maxlines;
  {
       int len, nlines;
       char *p, *alloc(), line[MAXLEN];

       nlines = 0;
       while ((len = getline(line, MAXLEN)) > 0)
          if (nlines >= MAXLINES)
              return(-1);
       else
              if ((p = alloc(len)) == NULL)
               return (-1);
           else
              {
               line[len-1] = '\0'; /* zap newline */
            strcpy(p,line);
            lineptr[nlines++] = p;
              }
       return(nlines);
   }


 Перепишите функцию readlines таким образом, чтобы она
 помещала строки в массив, предоставляемый функцией main, а
 не в память, управляемую обращениями к функции alloc. На-
 сколько быстрее стала программа?


PM MAIL   Вверх
bsa
Дата 1.12.2009, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



что непонятного? нужно вместо использования памяти из "кучи" использовать память из "стека". Другими словами, вместо alloc использовать двумерный массив char.

Кстати, программа имеет устаревший вид: перед именем функции в ее объявлении/определении должен идти тип возвращаемого значения. Параметры функции должны указываться внутри круглых скобок,  а не после них:
Код
int readline(char *lineptr[], int maxlines)
{
...
}

PM   Вверх
Domen
Дата 1.12.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Спасибо.Всё ясно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.