Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2014, 19:28   #1
adrenalin142
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 20
По умолчанию Посчитатать количество элементов в строке(Pascal)

Друзья выручайте! Задача вроде простая, но что-то не вяжется решение.
Итак, первоначально задание было такое:
Спроектируйте, реализуйте и протестируйте на ObjectPascal
программу со следующей программной функцией:
- осуществляет запрос и ввод элементов множества в переменную
типа множество с клавиатуры терминала, осуществляет вывод значения переменной типа множество на устройство отображения;
- осуществляет запрос и ввод элементов в массив множеств с клавиатуры терминала,
- осуществляет вывод значения переменной типа массив множеств
на устройство отображения.
Выполнить для арабских цифр.

Окей, более менее справился, но дальше меня просят модернизировать программу, чтобы она еще считала количество символов, входящих в строку. Тоже вроде ничего сложного, ввожу функцию kol, но вот тут и начинается чепуха (или нет?) - мне на экран выводятся странные значения, хотя по идеи как я понимаю количество символов должно выводиться от 0 до 10.

Вот собственно текст программы с модернизацией:
Код:
program PSetInOut;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  Digits = 0..9;
//---------------------------------------------------------------------------
  Arabic = set of Digits;
//---------------------------------------------------------------------------
procedure ReadSet(var s: Arabic);
var
  i: Digits;
  answer: Char;
  r: Arabic;
begin
  r:= [0..9];
  repeat
    write('member of set  - 0..9: ');readln(i);
    if not(i in r) then
      begin
        writeln(i, ' - ilegal digit repeat input');
        answer:= #0
      end
    else begin
          Include(s,i);
          write('continue - <Enter>');
          readln(answer)
    end;
  until answer<>#13;
end;
//---------------------------------------------------------------------------
function WriteSet(s: Arabic): string;
var
  i: Digits;
  k:integer;
begin
  result:='';
  for i:= Low(Digits) to High(Digits) do
    if i in s then result:= result + Chr(i + ord('0'))+ ',';
end;

//---------------------------------------------------------------------------
function kol(s: string): integer;
var
  i,k:integer;
begin
readln(s);
k:=0;
for i:=1 to length(s) do
    inc(k);
end;
//---------------------------------------------------------------------------

var
  s: Arabic;
  answer: Char;
begin
  repeat
    readSet(s);
    writeln('s = ',WriteSet(s));
    write('continue - <Enter>');readln(answer)
  until answer<>#13;
  writeln('kol_el=', kol(WriteSet(s)));
  readln;
end.
adrenalin142 вне форума Ответить с цитированием
Старый 20.11.2014, 19:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
хотя по идеи как я понимаю количество символов должно выводиться от 0 до 10.
Нет не должно, потому что в твоей функции возврат результата не прописан.
И кстати зачем ее нужно было городить, если есть Length()?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2014, 19:57   #3
adrenalin142
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нет не должно, потому что в твоей функции возврат результата не прописан.
И кстати зачем ее нужно было городить, если есть Length()?
функция Length() вычисляет длину строки, а не считает количество символов
adrenalin142 вне форума Ответить с цитированием
Старый 20.11.2014, 20:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
функция Length() вычисляет длину строки, а не считает количество символов
Ну надеюсь тогда ты в курсе что строка это массив символов?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2014, 20:12   #5
adrenalin142
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну надеюсь тогда ты в курсе что строка это массив символов?
если я правильно уловил твою мысль, ты предлагаешь, ввести условие проверки вхождения элемента в строку?
adrenalin142 вне форума Ответить с цитированием
Старый 20.11.2014, 21:06   #6
adrenalin142
Пользователь
 
Регистрация: 26.04.2014
Сообщений: 20
По умолчанию

Все, получилось) Спасибо)
adrenalin142 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить количество нечетных элементов в каждой строке матрицы Great_Stuff Паскаль, Turbo Pascal, PascalABC.NET 3 10.12.2013 05:07
Дан массив A(n,m). Найти количество элементов в каждой строке, меньшего диагонального в этой строке. Proskurina Помощь студентам 5 03.03.2013 20:41
Определите сумму и количество отрицательных элементов в каждой четной строке диапазона relog Microsoft Office Excel 6 28.05.2011 19:40
Подсчитать в матрице количество элементов в строке, больше заданной величины (Турбо Паскаль) Дмитрий1992 Паскаль, Turbo Pascal, PascalABC.NET 4 21.12.2010 15:37
Дана матрица размера 5 x 10. В каждой строке найти количество элементов Executioner3 Помощь студентам 12 11.05.2010 16:27