Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ упорно выскакивает ошибка!

Автор: -katrin- 14.04.2005 14:48

здравствуйте,
написала прогу на Borland Pascal (решение маленькой задачки)

проблема1:
упорно не отображаются русские буквы (меняла настройку в реестре, установила keyrus, создала bat-файл для запуска кейруса и потом паскаля - не помогает!!!)

проблема2:
после написания и успешной компиляции при запуске выдает сообщение об ошибке 105 (я так поняла - для writeln, пч другого ничего нет подозрительного)
для файла, папки и диска НЕ стоит галочка "только чтение"!
как тут быть? что исправить?
помогите, пожалуйста, по возможности решить обе проблемы, буду очень благодарна

Автор: volvo 14.04.2005 14:53

-katrin-,
ошибка в 17 строке...
Здесь что, по-Вашему, телепаты? Код в студию!
Кстати, Run-Time Error #105 это "Файл не открыт для вывода". Rewrite присутствует?


Насчет первого вопроса - к тому, что есть в http://forum.pascal.net.ru/index.php?showtopic=779&view=findpost&p=8215 добавить нечего...

Автор: -katrin- 14.04.2005 15:01

задача:
для целого 1<=k<=99 напечатать фразу: "Мне К лет " (с возможными изменениями последнего слова).

текст

Код

program myAge;
var
    k: Integer;
    s,st: string;
begin
    write('Vvedite vash vozrast:');
    read(k);
    while (k<1) or (k>99) do
    begin
 writeln('Oshibka! Nuzhno vvesti chislo ot 1 do 99!');
 writeln('Vvedite vash vozrast:');
 read(k);
    end;

    case k of
 1 or 21 or 31 or 41 or 51 or 61 or 71 or 81 or 91: s:=' god';
 2 or 3 or 4 or 22 or 23 or 24 or 32 or 33 or 34 or 42 or 43 or 44 or 52 or 53 or 54 or 62 or 63 or 64 or 72 or 73 or 74 or 82
               or 83 or 84 or 92 or 93 or 94: s:=' goda';
    else
 s:=' let';
    end;
    Str(k, st);
       st:='Mne ' + st + s;
    writeln(st);
end.

Автор: volvo 14.04.2005 15:09

-katrin-, во-первых, Case оформлен неверно. Вот правильный вариант:

case k of
 1, 21, 31, 41, 51, 61, 71, 81, 91:
   s:=' god';

 2..4,
 22..24, 32..34, 42..44,
 52..54, 62..64, 72..74,
 82..84, 92..94:
   s:=' goda';

 else
   s:=' let';
end;
Ну а во вторых, этот код компилируется и работает как под BP так и под Turbo Pascal... Что-то непонятное у Вас творится...

P.S. А зачем вот это: Str(k, st); ?
Можно же просто вывести:
writeln('Mne ', k, s);

Автор: -katrin- 14.04.2005 15:22

volvo

спасибо! но все равно ошибку выдает unsure.gif

Автор: volvo 14.04.2005 15:32

А поточнее? На каком именно Write выдает ошибку? На самом первом? Или на каком-то из последующих? Возраст ввести дает?

Автор: Guest 14.04.2005 15:33

Runtime error 105 at 0001:0086

Автор: volvo 14.04.2005 15:38

Это мне НИЧЕГО не скажет... Это на Вашем компьютере есть такой адрес. У меня его нет. Локализуйте ошибку. Лучше всего - после КАЖДОЙ строки поставить Writeln('stroka #1'), и т.д. и посмотреть СКОЛЬКО он выводит строк. Адреса - понятие ОЧЕНЬ ненадежное...

Автор: -katrin- 14.04.2005 15:49

он ничего не пишет, после запуска сразу ошибку выдает

Автор: Guest 14.04.2005 16:16

Может библиотеку надо подключить, просто в вашем коде я этого не видел

Автор: volvo 14.04.2005 16:36

Интересно какую? Все функции используемые в программе входят в состав System.tpu, который подключается автоматически. Да, кроме этого если бы не хватало библиотеки, программа не прошла бы компиляцию, а она ее проходит.

Единственное, что приходит на ум сделать - это попробовать использовать:

Program myAge(input, output);
...
writeln(output, 'что-то');
readln(input, 'что-то еще');
, то есть воспользоваться стандартными каналами ввода-вывода. Интересно, сработает ли это?

Автор: -katrin- 15.04.2005 5:57

все та же runtime error 105
видимо паскаль косо поставился ...

Автор: volvo 15.04.2005 6:01

Попробуй установить Turbo Pascal, с ним не должно быть проблем... Программа - точно рабочая, я ее уже в каких компиляторах только не гонял...

Автор: -katrin- 15.04.2005 9:01

volvo
спасибо за помощь! :flowers:
попробую по-новой установить, если не поможет, турбопаскаль поищу