Меню

Program1 pas 10 ошибка времени выполнения входная строка имела неверный формат

Ze7ra

0 / 0 / 0

Регистрация: 24.10.2015

Сообщений: 6

1

Входная строка имела неверный формат

27.04.2016, 22:43. Показов 37638. Ответов 7

Метки нет (Все метки)


Здравствуйте. Небольшая загвоздочка вышла, не понятная мне. Не мог бы кто-нибудь подсказать в чем дело, пожалуйста?
В программе с подключением внешнего файла, и считыванием значений из него, выползает ошибка «Входная строка имела не верный формат», какую строку указывал «неверной» пометила:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Program Ex2_2;
Uses Crt;
Var
  f: text;
  c: real;
Begin
  ClrScr;
  Assign(f, 'ex2.txt');
  Reset(f);
  Writeln('В последовательности:');
  While not eof(f) do
    begin
      Read(f, c); <- Вот эту
      Write(c, ' ');
    end;
  Writeln;
  Close(f);
End.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



93 / 11 / 23

Регистрация: 11.04.2016

Сообщений: 34

28.04.2016, 07:23

2

Файл покажите, на котором проверяли свой код. Есть у меня догадка, что дело именно в нём: скорее всего число типа real в нём записано не совсем верно.



0



Ze7ra

0 / 0 / 0

Регистрация: 24.10.2015

Сообщений: 6

28.04.2016, 12:55

 [ТС]

3

WindAndRain, да, дело, видимо в нем. Но что-то до меня не доходит как тогда исправить сам код или тип переменной, чтобы такой ошибки не выходило. Вот код самого файла:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Program Ex2_2;
Uses Crt;
Var
  f: text;
  c: real;
  p: char;
  n, i: integer;
Begin
  ClrScr;
  Assign(f, 'ex2.txt');
  Rewrite(f);
  Write('Сколько чисел в последовательности: '); Readln(n);
  p:=' ';
  For i:=1 to n do
    begin
      Write('Введите ', i, ' число:');
      Readln(c);
      Write(f, c, p);
    end;
  Writeln;
  Writeln('Файл заполнен');
  Close(f);
End.

Если что, прикреплю еще задание, которое нужно сделать. Помогать с ним не прошу, но очень хочется понять, что делать с этой ошибкой, спасибо:

«В текстовом файле записана непустая последовательность действительных чисел, разделенных пробелами (пробелов может быть больше одного). Написать функцию для нахождения наибольшего из этих чисел.»



0



318 / 208 / 162

Регистрация: 08.12.2015

Сообщений: 863

28.04.2016, 13:02

4

Вас же попросили,

Цитата
Сообщение от WindAndRain
Посмотреть сообщение

Файл покажите,

, и тогда дойдет хотя бы до нас, что вам ответить на вопрос «как исправить».
Имеется ввиду текстовый файл ваш с данными.



0



0 / 0 / 0

Регистрация: 24.10.2015

Сообщений: 6

28.04.2016, 13:08

 [ТС]

5

Я думала весь смысл был именно в коде, которым я заполняла файл, но ладно.
Текстовый файлик, состоящий всего из 15 цифр с пробелами:
8 9 6 5 4 78 54 21 9 85 35 21 48 65 97



0



0 / 0 / 0

Регистрация: 24.10.2015

Сообщений: 6

28.04.2016, 13:17

 [ТС]

6

Вот файл



0



318 / 208 / 162

Регистрация: 08.12.2015

Сообщений: 863

28.04.2016, 14:03

7

убрать пробел в конце строки. Нужно подправить чтение, чтобы не зависело от пробелов.



0



Puporev

Почетный модератор

64270 / 47569 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

28.04.2016, 15:29

8

Лучший ответ Сообщение было отмечено Ze7ra как решение

Решение

Читать текстовый файл с числами и пробелами

Pascal
1
2
3
4
5
6
7
Reset(f);
While not seekeof(f) do
 begin
  Read(f, c);
  Write(c:0:2,' ');//если числа вещественные
 end;
Close(f);



1



Входная строка имела неверный формат паскаль

В программе работает все, кроме удаления записи из файла

Собственно сама ошибка:

строка (254) : Ошибка времени выполнения: Входная строка имела неверный формат.
В строке 254 находится (readln(menu);)

  • Вопрос задан более трёх лет назад
  • 2185 просмотров

если ты такой умный — покажи какую фразу вбить в гугля.

«pascal Ошибка времени выполнения: Входная строка имела неверный формат»
первые же три ссылки ведут на обсуждения различных вариантов возникновения данной проблемы.

пишу простую программку в паскале, до боли простую, нужно ввести скажем переменную а, объявляю ее типа как real.
var а : real;
когда скомпилировал свой код начинаю вводить данные (например значение для этой переменной 0,4) выдает ошибку: «входная строка имела неверный формат» если ввести целочисленные значения — все в норме, в чем проблема? разве тип real не включает в себя десятичные дроби ?
код программы (очень корявый, но писался чисто с целью применения на скорую руку)

program Rashet_VAH_dioda;
uses crt;
Var
a, Iz, Rst, Rd, m : real;
Io, U, Uc, Ic : integer;
const
e = 2.71;
Ft = 0.02566;
label 1;
begin
clrscr;
writeln (‘ Автор студент гр. 130611 Столяров А. Е. ‘);
1: writeln (‘введите прямой максимальный ток диода в амперах Io = ‘);
readln (Io);
writeln (‘ введите напряжение диода при температуре в вольтах 25С, Uc =’);
readln (Uc);
writeln (‘ введите ток диода при температуре в амперах 25С, Ic =’);
readln (Ic);
writeln (‘ введите напряжение расчетной точки в вольтах, U =’);
readln (U);
m := (Uc / Ln ( ((-1)*Io — Ic)/ (-1)*Io)) / Ft;
writeln (‘расчет m, m=’, m);
Iz := Io*(Exp((U/(m*Ft))*Ln(e)) — 1);
Writeln (‘значение тока Iz при заданном значении напряжения ‘,Iz);
Rst := Iz / U;
writeln (‘ Статическое сопротивление Rст = ‘, Rst);
Rd := (m*Ft)/(Io — Iz);
writeln (‘дифференциальное сопротивление Rдиф =’, Rd);
if Iz > Io then
begin
Writeln (‘максимальный ток превышен, диод красиво сгорел’);
goto 1 ;
end;
Writeln (‘для сброса и повторения нажмите 1’);
readln (a);
if a = 1 then goto 1;
End.

Программа читает файл и печатает содержимое на экран.

Но при попытке запустить PascalABC.NET говорит:

В чем может быть ошибка? Содержимое входного файла:

2 ответа 2

Рискну предположить, что readln гордо считал «mynamw 334» в s , и дальше не смог найти ничего похожего на i . Откуда ему знать, где заканчивается ваша строка и есть ли в ней пробелы? Попробуйте заменить это на просто readln(f, s); i := 100; и посмотреть, что будет.

Итак, проблему нашли. А можно переставить местами данные:

Если да, то всё получится с readln(f, i, s); .

Поскольку мы решили не менять формат, задача становится сложнее 🙂 Я бы считал всю строку в строковую переменную ( readln(f, line); ), а дальше нашёл бы в ней последний пробел (поиском с конца) и разделил по нему на s (подстрока от начала до позиции найденного пробела) и i (остаток строки, перевести в число с помощью StrToInt ). Понятно, как?

Наши новости:

Раскрутка Counter-Strike 1.6

Помощь в паскале

, сортировка массива пузырьком

Статус пользователя

looks12

сообщение
21.6.2014, 19:30

Сообщение
#1



Выдаёт ошибку:
Program1.pas(12) : Ошибка времени выполнения: Входная строка имела неверный формат.
Код:

program massbouble;
var
f:text;
buf:array [0..20] of integer;
i,j,z,temp:integer;
begin
assign(f,'input.txt');
reset(F);
i:=0;
while (not eof(f)) do
begin
read(f,buf[i]);
i:=i+1
end;
for j:=0 to i-1 do
for z:=0 to i-j-1 do
begin
if buf[z]<buf[z-1]
then
begin
temp:=buf[z];
buf[z]:=buf[z-1];
buf[z-1]:=temp;
end;
close(F);
end;
assign (f,'output.txt');
rewrite (F);
for j:=0 to i-1 do
write (f,buf[j]);
close (F);
end.

Отредактировал: looks12, — 21.6.2014, 19:32

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение

Цитировать сообщение

Статус пользователя

Revelation

сообщение
21.6.2014, 19:33

Сообщение
#2

Стаж: 10 лет

Сообщений: 1051

Благодарностей: 401

Полезность: 1075


Содержимое input.txt ?

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение

+

Цитировать сообщение

Статус пользователя

looks12

сообщение
21.6.2014, 19:37

Сообщение
#3

Стаж: 10 лет

Сообщений: 305

Благодарностей: 51

Полезность: 172

Меценат Меценат


Цитата(Revelation @ 21.6.2014, 20:33) *

Содержимое input.txt ?

20 19 18 1 5 2 4 3 6 8 7 9 17 15 16 10 12 11 13 14

Теперь
Program1.pas(18) : Ошибка времени выполнения: Индекс находился вне границ массива.

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение

+

Цитировать сообщение

Статус пользователя

looks12

сообщение
21.6.2014, 20:08

Сообщение
#4

Стаж: 10 лет

Сообщений: 305

Благодарностей: 51

Полезность: 172

Меценат Меценат


А где крутые хацкеры или дудосеры?

Отредактировал: looks12, — 21.6.2014, 20:08

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение

+

Цитировать сообщение

Статус пользователя

Predat0r

сообщение
21.6.2014, 20:09

Сообщение
#5

Стаж: 11 лет

Сообщений: 1245

Благодарностей: 375

Полезность: < 0


На cyberforum’e

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение

Поблагодарили 2 раз

+

Цитировать сообщение

Esecman

сообщение
21.6.2014, 20:19

Сообщение
#6

Стаж: 9 лет 1 месяц

Сообщений: 945

Благодарностей: 208

Полезность: 0


Цитата(Predat0r @ 21.6.2014, 21:09) *

На cyberforum’e

Оффтоп:
Predator,
Хах. Так ты же вроде хвастался, что Pascal учит логике и все такое.
А почему не выучил то?

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение

+

Цитировать сообщение

Статус пользователя

Predat0r

сообщение
21.6.2014, 21:04

Сообщение
#7

Стаж: 11 лет

Сообщений: 1245

Благодарностей: 375

Полезность: < 0


Цитата(Esecman @ 21.6.2014, 21:19) *

Хах. Так ты же вроде хвастался, что Pascal учит логике и все такое.

Как я мог такое сказать, если паскаль говн%?

Отредактировал: Predat0r, — 21.6.2014, 21:12

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение

Поблагодарили 4 раз

+

Цитировать сообщение

Статус пользователя

nsgenn

сообщение
22.6.2014, 5:17

Сообщение
#8

Стаж: 9 лет 9 месяцев

Сообщений: 885

Благодарностей: 561

Полезность: 667


как бэ символы, которые читаются имеют формат CHAR, а не Integer
индекс вне границ массива — естественно, ибо читается каждый символ:

(20) = 2символа + пробел =3
(19) = 2 +пробел = 3
и т.д..
зы. Еще у тебя «close» в цикле весит, отсюда еще одна ошибка

короче ошибок уйма

Отредактировал: nsgenn, — 22.6.2014, 5:28

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение

+

Цитировать сообщение

Статус пользователя

looks12

сообщение
22.6.2014, 8:10

Сообщение
#9

Стаж: 10 лет

Сообщений: 305

Благодарностей: 51

Полезность: 172

Меценат Меценат


Цитата(nsgenn @ 22.6.2014, 6:17) *

как бэ символы, которые читаются имеют формат CHAR, а не Integer
индекс вне границ массива — естественно, ибо читается каждый символ:

(20) = 2символа + пробел =3
(19) = 2 +пробел = 3
и т.д..
зы. Еще у тебя «close» в цикле весит, отсюда еще одна ошибка

короче ошибок уйма

Спасибо, но уже нашёл и исправил ошибки.
Да паскаль не радость на задача была поставлена и её надо было решить.

Отредактировал: looks12, — 22.6.2014, 8:11

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение

+

Цитировать сообщение

Статус пользователя

nsgenn

сообщение
22.6.2014, 8:44

Сообщение
#10

Стаж: 9 лет 9 месяцев

Сообщений: 885

Благодарностей: 561

Полезность: 667


Цитата(looks12 @ 22.6.2014, 10:10) *

Да паскаль не радость на задача была поставлена и её надо было решить.

Вы еще с асмом не знакомились. Попривыкали к халявному алфавиту ))

Отредактировал: nsgenn, — 22.6.2014, 8:45

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение

+

Цитировать сообщение

Статус пользователя

looks12

сообщение
22.6.2014, 9:09

Сообщение
#11

Стаж: 10 лет

Сообщений: 305

Благодарностей: 51

Полезность: 172

Меценат Меценат


Цитата(nsgenn @ 22.6.2014, 9:44) *

Вы еще с асмом не знакомились. Попривыкали к халявному алфавиту ))

В KOI-то века знакомился с данным господином.

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение

+

Цитировать сообщение

0 пользователей и 3 гостей читают эту тему:

logo

    • Предмет:

      Информатика

    • Автор:

      jadynruiz464

    • Создано:

      3 года назад

    Ответы

    Знаешь ответ? Добавь его сюда!

  • drugie-predmety
    Другие предметы

    5 минут назад

    Как называется канал мужика, который играл на chees.com?

  • istoriya
    История

    30 минут назад

    Помогите пожалуйста с историей

  • angliiskii-yazyk
    Английский язык

    30 минут назад

    Очень срочно дам 25 сегодня здавать!!!
    WB p8 ex 1-2

  • algebra
    Алгебра

    35 минут назад

    Допоможіть будь ласка!!!!

  • algebra
    Алгебра

    35 минут назад

    СРОЧНООООО!!!! Подайте вираз у вигляді чотирьох множників: х³-25x³+x²-25.​

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Вы не можете общаться в чате, вы забанены.

Чтобы общаться в чате подтвердите вашу почту
Отправить письмо повторно

Вопросы без ответа

  • fizika
    Физика

    4 часа назад

    Помогите с физикой -https://n.fcd.su/Luv

  • himiya
    Химия

    5 часов назад

    Рсаположить металлы, которые могут быть использованы в качестве анодного покрытия на стальном изделии, в порядке усиления защитных свойств:1) Zn 2) Cr 3) Ni 4) Ag 5) Mn

    1) 12345

    2) 5123

    3) 215

    4) 512

Топ пользователей

  • avatar

    Fedoseewa27

    22808

  • avatar

    Sofka

    7419

  • avatar

    zlatikaziatik

    5659

  • avatar

    vov4ik329

    5111

  • avatar

    DobriyChelovek

    4625

  • avatar

    olpopovich

    3461

  • avatar

    TheDenty

    3258

  • avatar

    dobriykaban

    2540

  • avatar

    Udachnick

    1867

  • avatar

    ViktoriaBell0

    1740

Войти через Google

или

Запомнить меня

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

Выберите язык и регион

Русский

Россия

English

United States

zoom

How much to ban the user?

1 hour
1 day

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Progr emerg cambio бмв ошибка
  • Progdvb ошибка построения графа