Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 28.08.2015, 13:00   #1 (permalink)
Asya_inter
Member
 
Аватар для Asya_inter
 
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Выводятся не все символы

Пожалуйста, подскажите! Не выводятся русские буквы, а так всё работает.
Код:
var
  f2,f:text;
  c:char;
  s:array[char] of integer;
begin
   assign(f,'input.txt'); 
   reset(f);
   
   while not eof(f) do begin
    while not eoln(f) do begin
     read(f,c);
     s[c]:=s[c]+1;
    end;
    readln(f);
   end;
   assign(f2,'K3.txt');
   Rewrite(f2);
   
   for c:=#0 to #255 do
    if s[c]<>0 then writeln(f2,c:4,':',s[c]);
  
   close(f);
   close(f2);
   end.
Asya_inter вне форума   Ответить с цитированием

Старый 28.08.2015, 13:00
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Посмотрите похожие топики, может что то проясниться

Word, непонятные символы и иероглифы
Отсортировать символы по убыванию частот
Паскаль, символы и строки
Напишите функцию, преобразующую символы табуляции в последовательность из n пробелов
После переустановки ОС не печатаются некоторые символы
Периодически не печатаются символы

Старый 28.08.2015, 13:16   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Чем просматриваете текстовый документ? Кодировку менять пробовали? Прикрепите файлы input.txt и K3.txt к следующему сообщению.
Без содержимого файла input.txt сложно понять, почему что-то работает не так, как вы задумали.


Насколько я понял, программа считает сколько раз каждый символ встречается в тексте. Тут опять таки проблема может быть в кодировке текста, если используется не ASCII, то в массив просто не попадут символы русского алфавита, так как их номера в кодовой таблице имеют значение больше 255.

Вот примеры текстовых файлов в кодировке CP866, которая подходит к вашему листингу:
input.txt
K3.txt
Собственно, все правильно считается, если правильно задачу перед машиной ставить.
Создать исходный файл в нужной кодировке можно как при помощи самого FreePascal, так и программой Notepad++.
__________________
Убить всех человеков!

Последний раз редактировалось AlexZir; 28.08.2015 в 13:52 Причина: добавил файлы
AlexZir вне форума   Ответить с цитированием
Старый 28.08.2015, 13:56   #3 (permalink)
Asya_inter
Member
 
Аватар для Asya_inter
 
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо! Сейчас попробую разобраться. А вот, вводимые мной данные файлы:
Вложения
Тип файла: txt input.txt (31 байт, 595 просмотров)
Тип файла: txt K3.txt (96 байт, 585 просмотров)
Asya_inter вне форума   Ответить с цитированием
Старый 28.08.2015, 13:58   #4 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Ставьте Notepad++ и формируйте исходные файлы к заданиям с его помощью.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 28.08.2015, 14:02   #5 (permalink)
Asya_inter
Member
 
Аватар для Asya_inter
 
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

AlexZir, теперь это понятно стало. А подскажите как не кодировку файла подстроить под кодировку программы, а наоборот? То есть, что-то в коде значит нужно поменять? И возможно ли это? Теперь понятно, что можно через Notepad++. А что, если нет такого редактора и нет возможности его скачать (если предположить такую ситуацию). То как быть?
Asya_inter вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 28.08.2015, 14:04   #6 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Это вполне возможно. В FreePascal есть функции преобразования кодировки текста. Смотрите справку, там все описано. И да, вам нужно будет внести изменения в код.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 28.08.2015, 14:08   #7 (permalink)
Asya_inter
Member
 
Аватар для Asya_inter
 
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо! Попробую это осуществить! А на pascalABC.NET возможно? А то в таком виде, как было если запускать, то результат тот же.
Asya_inter вне форума   Ответить с цитированием
Старый 28.08.2015, 17:18   #8 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Вот что по поводу PascalABC.Net из справки:
Цитата:
Символьный тип char занимает 2 байта и хранит Unicode-символ. Символы реализуются типом System.Char платформы .NET.
Стандартные подпрограммы работы с символами представлены здесь.
Члены класса char приведены здесь.
Для преобразования между символами и их кодами в кодировке Windows (CP1251) используются стандартные функции Chr и Ord:
Chr(n) - функция, возвращающая символ с кодом n в кодировке Windows;
Ord(с) - функция, возвращающая значение типа byte, представляющее собой код символа c в кодировке Windows.
Для преобразования между символами и их кодами в кодировке Unicode используются стандартные функции ChrUnicode и OrdUnicode:
ChrUnicode(w) - возвращает символ с кодом w в кодировке Unicode;
OrdUnicode(с) - возвращает значение типа word, представляющее собой код символа c в кодировке Unicode.
Кроме того, выражение #число возвращает Unicode-символ с кодом число (число должно находиться в диапазоне от 0 до 65535).
Аналогичную роль играют явные преобразования типов:
char(w) возвращает символ с кодом w в кодировке Unicode;
word(с) возвращает код символа c в кодировке Unicode.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 28.08.2015, 19:05   #9 (permalink)
Asya_inter
Member
 
Аватар для Asya_inter
 
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо за информацию! Попробую - может получится.
Asya_inter вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Метки
free pascal, задача, помогите "чайнику"


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 10:34.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.