Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 1
1

По массивам

11.03.2019, 21:47. Просмотров 580. Ответов 1

я не понимаю один единственный момент,как происходит, увеличение каждый раз счетчика длины?



Переделке подвергается цикл while. На псевдокоде суть переделки выглядит так:

while (есть ли еще фрагмент строки?)
добавить длину считанного фрагмента к длине строки
if (длина фрагмента строки не равна максимально возможной длине считываемой строки)
if (данная строка длинней других)
запомнить ее длину
запомнить ее
обнулить длину строки
Если длина считываемого фрагмента равна максимально возможной длине строки, то мы считываем следующий фрагмент, увеличивая каждый раз счетчик длины.


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  #include <stdio.h>
 
  #define MAXLINE 10 
 
  int getl(char line[], int maxline);
  void copy(char to[], char from[]);
 
  
  int main()
  {
      int len; 
      int tmp; 
      int max; 
      char line[MAXLINE]; 
      char longest[MAXLINE]; 
 
      max = 0;
      len = 0;
      while ((tmp = getl(line, MAXLINE)) > 0) {
          len += tmp;
          if (tmp != MAXLINE-1) {
              if (len > max) {
                  max = len;
                  copy(longest, line);
              }
              len = 0;
          }
      }
      if (max > 0) /* была ли хоть одна строка? */
          printf("\nlength=%d,%s", max, longest);
      return 0;
  }
 
  int getl(char s[], int lim)
  {
      int c, i;
 
      for (i = 0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i)
          s[i] = c;
      if (c == '\n') {
          s[i] = c;
          ++i;
      }
      s[i] = '\0';
      return i;
  }
 
  void copy(char to[], char from[])
  {
      int i;
 
      i = 0;
      while ((to[i] = from[i]) != '\0')
          ++i;
  }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2019, 21:47
Ответы с готовыми решениями:

Задание по одномерным массивам
Помогите решить задание. Т.к. я только начал изучать данный язык, трудно разобраться во всем. Буду...

По двум массивам построить третий
По двум массивам построить третий, элементы которого являются частным от деления элементов первого...

По двум одномерным массивам вычислить матрицу
Доброе время суток. Написать функцию, которая по двум заданным одномерным массивам (A размера m и...

По массивам
Возникла проблема: В ходе написания программы удобно использовать локальные переменные - они...

1
15 / 22 / 7
Регистрация: 18.02.2018
Сообщений: 109
17.03.2019, 00:54 2
Насколько я понял, счётчик длины это len.
Ты вызываешь функцию getl(), которая возвращает int (если функция используется только в main.c, то поставь static, пожалуйста).
tmp присваивается значение, которое возвращает getl(). Всё правильно?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2019, 00:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

По массивам...
Задан случайный массив. Нужно получить без повторений элементы, встречающиеся в массиве более...

по массивам
Для одномерного массива, состоящего из n вещественных чисел: а) найти минимальный по модулю...

По массивам....
Добрый вечер:).На носу итоговая сессия, к сожалению для допуска на нее не могу справится с заданием...

Задача по массивам
В массивах А, В и С каждый элемент разделить на среднее арифметическое элементов массива.

Программы по массивам
21 Дан массив, содержащий как положительные, так и отрицательные числа. Сформировать массив,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.