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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2013, 16:35   #1
Crazy-kun
Пользователь
 
Аватар для Crazy-kun
 
Регистрация: 27.05.2013
Сообщений: 11
По умолчанию Строки

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

Подсчет цифр:
Код:
program schet;
var
    n,i:byte;
    t:text;
    x:string;
begin
    assign(t,'C:\text.txt');
    reset(t);
    read(t,x);
    n:=0;
    for i:=1 to length(x) do
        begin
            if (x[i]>='0') and (x[i]<='9') then inc(n);
        end;
    writeln('Digits in string: ',n);
end.
Вариант с функцией:
Код:
program schet;
var x:string;

function digit(s:string):integer;
var
    n,i:byte;
begin
    n:=0;
    for i:=1 to length(s) do
        begin
            if (s[i]>='0') and (s[i]<='9') then inc(n);
        end;
    digit:=n;
end;

begin
    writeln('Enter the string: ');
    readln(x);
    writeln('Digits in string: ', digit(x));
end.
Crazy-kun вне форума Ответить с цитированием
Старый 28.05.2013, 20:39   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

В FPC - все считает

Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 29.05.2013, 15:16   #3
Crazy-kun
Пользователь
 
Аватар для Crazy-kun
 
Регистрация: 27.05.2013
Сообщений: 11
По умолчанию Строки

Хмм, действительно считает. Что-то меня PascalABC обманывает.
Crazy-kun вне форума Ответить с цитированием
Старый 29.05.2013, 16:07   #4
Crazy-kun
Пользователь
 
Аватар для Crazy-kun
 
Регистрация: 27.05.2013
Сообщений: 11
По умолчанию

Решил запустить в оригинальном турбо паскале - висит окно выполнения, вырубается только по Ctrl+Break. Снова не найду причины.

Код:
program schet;
var
  x:string;
  t:text;
  z:integer;

function digit(s:string):integer;
var
  n,i:byte;
begin
  n:=0;
  for i:=1 to length(s) do
      if (s[i]>='0') and (s[i]<='9') then inc(n);
  digit:=n;
end;

Begin
  assign(t, 'C:\text.txt');
  reset(t);
  z:=0;
  while not EOF do
    begin
      readln(t,x);
      z:=z+digit(x);
    end;
  writeln('Digits in file: ',z);
  readln;
end.
Crazy-kun вне форума Ответить с цитированием
Старый 30.05.2013, 11:34   #5
Crazy-kun
Пользователь
 
Аватар для Crazy-kun
 
Регистрация: 27.05.2013
Сообщений: 11
По умолчанию

Разобрался сам. Забыл что процедуре EOF нужно передавать файловую переменную.
Crazy-kun вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10