powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / подпрограммы.(процедуры). Написать программу.
8 сообщений из 8, страница 1 из 1
подпрограммы.(процедуры). Написать программу.
    #38443866
Snake95
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дан текстовый файл (можно использовать Z:\procedure.txt). Подсчитать количество латинских букв в файле (маленькие и большие буквы считать одинаковыми). Вывести на экран в столбик последовательно все буквы латинского алфавита. Напротив каждой буквы напечатать ряд из звездочек, длина которого равна количеству данной буквы в файле. Подсказка: для подсчета букв в файле используйте массив, индексы. Тема подпрограммы. язык паскаль.
...
Рейтинг: 0 / 0
подпрограммы.(процедуры). Написать программу.
    #38444074
Snake95
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программа выдает черный экран я не знаю как исправить.
Program rezo;
var
f:text;
mass: array['A'..'Z'] of integer;
k:char;
k1:char;
Procedure stamp (l:integer);//подпрограмма, которая печатает ряд звездочек заданной длины//
var
n:byte;
begin
for n:=1 to l do
write('*');
writeln;
end;
begin
Assign(f,'C:/procedure.txt');
Reset(f);
While not eof (f) do
begin
If (k>= 'A') and (k<= 'z') then //считывается то что является буквой//
begin
read (f, k1);
k1:=upcase(k1);
mass[k1]:=mass[k1]+1;
end;
For k1 := 'A' to 'Z'do
stamp(mass[k1]);
end;
close(f);
end.
...
Рейтинг: 0 / 0
подпрограммы.(процедуры). Написать программу.
    #38444240
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А просто надо больше читать хелп. Ну и косяков бы поменьше:
- в процедуре Assign имя файла должно подчиняться ограничениям DOS (8.3 символов), а у вас - девять; ну и прямой слэш до кучи
- почему в подпрограмме у вас параметр L - целое (2 байта) а переменная N - один байт? а если каких либо символов будет больше 255? больше 32767?
- почему вы обрабатываете переменную K1, а сравниваете "с буквой" - переменную K?
- почему у вас вывод "звёздочек" находится внутри цикла чтения из файла? по идее, у вас он будет исполняться после считывания/обработки каждого символа и где вывод самих "буковок"?

С учётом всего этого, код мог бы выглядеть так:
Код: pascal
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.
Program rezo;

var
 f:text;
 mass: array['A'..'Z'] of integer;
 k:char;

Procedure stamp (l:word);
var
 n:word;
begin
 for n:=1 to l do
 write('*');
end;

begin

 {$I-}
 Assign(f,'c:\proc.txt');
 Reset(f);
 {$I+}
 if IOResult <> 0 then begin Writeln('Проблема с доступом к файлу'); ReadLn; halt(1) end;

 Repeat
  Read(f,k);
  k:=UpCase(k);
  If (k>= 'A') and (k<= 'Z') then mass[k]:=mass[k]+1
 Until eof(f);
 close(f);

 writeln;
 For k := 'A' to 'Z' do
 begin
  write(k,' ');
  stamp(mass[k]);
  writeln
 end;

 readln;
end.

...
Рейтинг: 0 / 0
подпрограммы.(процедуры). Написать программу.
    #38448316
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM- в процедуре Assign имя файла должно подчиняться ограничениям DOS (8.3 символов), а у вас - девять; ну и прямой слэш до кучи


Это кто тебе такое сказал? В Reset() можно отдать полное имя файла с путем. В более новых паскалях (Virtual Pascal, Free Pascal, Delphi) - с длиной имени файла можно в общем случае вообще не заморачиваться.
...
Рейтинг: 0 / 0
подпрограммы.(процедуры). Написать программу.
    #38448492
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterЭто кто тебе такое сказал?Мы так близко знакомы?
DarkMasterВ Reset() можно отдать...Я увидел студента и TP/BP. Ибо "чОрный экран". Откуда вы там рассмотрели Delphi и альтернативки - я не в курсе. Как и то, что "В Reset() можно отдать полное имя файла". А хелп BP говорит прямо:
Declaration:
procedure Assign(var f; String);
...
FileName consists of a name of up to eight characters, optionally followed by a period and an extension of up to three characters. The maximum length of the entire file name is 79 characters.
...
Declaration:
procedure Reset(var F [: File; Recsize: Word ] );
...
Рейтинг: 0 / 0
подпрограммы.(процедуры). Написать программу.
    #38448794
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Snake95If (k>= 'A') and (k<= 'z') then //считывается то что является буквой//

Это некорректно. В этот диапазон попадают и прочие символы.
Смотри таблицу здесь http://ru.wikipedia.org/wiki/ASCII
...
Рейтинг: 0 / 0
подпрограммы.(процедуры). Написать программу.
    #38448806
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

1) Приведенный исходник может нормально быть откомпилирован в TP/BP/VP/FP/Delphi.
2) Если бы обломился reset() - была бы какая-то ругань на экране (у него оператор не обернут ни в try..except и в {$I-/+}), а не черный экран, который возникал потому, что студент заплутал между переменными K и K1 - может все ж таки Дельфи?.
3) С учетом постановки задачи (нужно подсчитать буковки)
- расширить массив до 'A'..'z' - т.е. учитывать буквы без учета регистра.
- использовать F:file of AnsiChar или F:File of Char

P.S. Ничего личного ;)
...
Рейтинг: 0 / 0
подпрограммы.(процедуры). Написать программу.
    #38449132
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

1) Может быть откомпилирован, я не спорю, ибо это и наблюдал.

2) Черный экран мог быть, а ругани могло и не быть (зависит от настроек IDE) - и именно на Reset(). Поскольку функция вызывала Exception.

DarkMasterрасширить массив до 'A'..'z' - т.е. учитывать буквы без учета регистра.Snake95(маленькие и большие буквы считать одинаковыми)
Ну и файл можно было определить хоть байтовым бинарником - лишь бы в алгоритме было понимание, что считывается...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / подпрограммы.(процедуры). Написать программу.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]