|
|
|
подпрограммы.(процедуры). Написать программу.
|
|||
|---|---|---|---|
|
#18+
Дан текстовый файл (можно использовать Z:\procedure.txt). Подсчитать количество латинских букв в файле (маленькие и большие буквы считать одинаковыми). Вывести на экран в столбик последовательно все буквы латинского алфавита. Напротив каждой буквы напечатать ряд из звездочек, длина которого равна количеству данной буквы в файле. Подсказка: для подсчета букв в файле используйте массив, индексы. Тема подпрограммы. язык паскаль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2013, 16:58 |
|
||
|
подпрограммы.(процедуры). Написать программу.
|
|||
|---|---|---|---|
|
#18+
Программа выдает черный экран я не знаю как исправить. 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2013, 19:13 |
|
||
|
подпрограммы.(процедуры). Написать программу.
|
|||
|---|---|---|---|
|
#18+
А просто надо больше читать хелп. Ну и косяков бы поменьше: - в процедуре 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2013, 23:09 |
|
||
|
подпрограммы.(процедуры). Написать программу.
|
|||
|---|---|---|---|
|
#18+
AndreTM- в процедуре Assign имя файла должно подчиняться ограничениям DOS (8.3 символов), а у вас - девять; ну и прямой слэш до кучи Это кто тебе такое сказал? В Reset() можно отдать полное имя файла с путем. В более новых паскалях (Virtual Pascal, Free Pascal, Delphi) - с длиной имени файла можно в общем случае вообще не заморачиваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2013, 13:55 |
|
||
|
подпрограммы.(процедуры). Написать программу.
|
|||
|---|---|---|---|
|
#18+
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 ] ); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2013, 15:18 |
|
||
|
подпрограммы.(процедуры). Написать программу.
|
|||
|---|---|---|---|
|
#18+
Snake95If (k>= 'A') and (k<= 'z') then //считывается то что является буквой// Это некорректно. В этот диапазон попадают и прочие символы. Смотри таблицу здесь http://ru.wikipedia.org/wiki/ASCII ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2013, 17:37 |
|
||
|
подпрограммы.(процедуры). Написать программу.
|
|||
|---|---|---|---|
|
#18+
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. Ничего личного ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2013, 17:41 |
|
||
|
подпрограммы.(процедуры). Написать программу.
|
|||
|---|---|---|---|
|
#18+
DarkMaster, 1) Может быть откомпилирован, я не спорю, ибо это и наблюдал. 2) Черный экран мог быть, а ругани могло и не быть (зависит от настроек IDE) - и именно на Reset(). Поскольку функция вызывала Exception. DarkMasterрасширить массив до 'A'..'z' - т.е. учитывать буквы без учета регистра.Snake95(маленькие и большие буквы считать одинаковыми) Ну и файл можно было определить хоть байтовым бинарником - лишь бы в алгоритме было понимание, что считывается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2013, 01:03 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=51&tid=1341609]: |
0ms |
get settings: |
14ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
3ms |
| others: | 214ms |
| total: | 386ms |

| 0 / 0 |
