Меню

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

TheMaker

0 / 0 / 0

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

Сообщений: 4

1

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

11.05.2020, 20:24. Показов 2985. Ответов 7

Метки pascal abc (Все метки)


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

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
Program P1;
Type journal = record
   Fam: string[18];
   Rus: 2..5;
   Math: 2..5;
   Eng: 2..5
end;
Var list: array[1..8] of journal;
    i:integer; F1, F2: text;
Begin
  
  Assign(F1, 'C:10_М.txt');
  Assign(F2, 'C:SoFar.txt');
  Reset(F1);
  Rewrite(F2);
  ReadLn(F1); ReadLn(F1);
  
   For i:=1 to 8 do 
     ReadLn(F1, list[i].Fam, list[i].Rus, list[i].Math, list[i].Eng);
   For i:=1 to 8 do
     If (list[i].Rus=3) or (list[i].Math=3) or (list[i].Eng=3)then 
     begin
       WriteLn(list[i].Fam);
       WriteLn(F2, list[i].Fam)
     end;
  Close(F1); Close(F2);
end.

При этом программа выдает: «1.pas(19) : Ошибка времени выполнения: Входная строка имела неверный формат.»
Файл с таблицей прилагаю. Заранее премного благодарен.

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



0



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

64270 / 47569 / 32739

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

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

11.05.2020, 20:39

2

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

Файл с таблицей прилагаю

Спасибо и на этом.



0



Супер-модератор

6108 / 2847 / 1299

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

Сообщений: 5,738

Записей в блоге: 1

11.05.2020, 20:39

3

TheMaker, в файле C:10_М.txt обеспечьте, чтобы было 18 символов под фамилию + 19ый символ пробел:

Код

Иванов             3 4 5
Петров             3 3 3
Сидоров            3 4 5

Добавлено через 34 секунды
Так нельзя:

Код

Иванов 3 4 5
Петров 3 3 3
Сидоров 3 4 5



0



0 / 0 / 0

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

Сообщений: 4

11.05.2020, 21:18

 [ТС]

4

ildwine, так там предусмотрен абзац.
Т.е.

Иванов
3. 4. 5
Петров
2. 4. 3

Или есть смысл писать все 1 строкой?



0



ildwine

Супер-модератор

6108 / 2847 / 1299

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

Сообщений: 5,738

Записей в блоге: 1

11.05.2020, 21:26

5

Pascal
1
ReadLn(F1, list[i].Fam, list[i].Rus, list[i].Math, list[i].Eng);

Эта строка предусматривает, что данные находятся в одной строке через пробел.



0



0 / 0 / 0

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

Сообщений: 4

12.05.2020, 10:51

 [ТС]

6

ildwine, сделал так, как вы сказали, однако проблема не исчезла. Я пробовал и расстояние между цифрами уменьшить до 1 пробела — все одно и тоже.



0



ildwine

Супер-модератор

6108 / 2847 / 1299

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

Сообщений: 5,738

Записей в блоге: 1

12.05.2020, 13:03

7

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

Решение

У меня заработало, после того как я сформировал правильный файл.
И ещё нужно убрать строку:

Pascal
1
ReadLn(F1); ReadLn(F1);

10_М.txt

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
Program P1;
Type journal = record
   Fam: string[18];
   Rus: 2..5;
   Math: 2..5;
   Eng: 2..5
end;
Var list: array[1..8] of journal;
    i:integer; F1, F2: text;
Begin
  
  Assign(F1, 'D:10_М.txt');
  Assign(F2, 'D:SoFar.txt');
  Reset(F1);
  Rewrite(F2);
  
   For i:=1 to 8 do 
     ReadLn(F1, list[i].Fam, list[i].Rus, list[i].Math, list[i].Eng);
   For i:=1 to 8 do
     If (list[i].Rus=3) or (list[i].Math=3) or (list[i].Eng=3)then 
     begin
       WriteLn(list[i].Fam);
       WriteLn(F2, list[i].Fam)
     end;
  Close(F1); Close(F2);
end.



1



0 / 0 / 0

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

Сообщений: 4

14.05.2020, 17:09

 [ТС]

8

ildwine, спасибо за уделенное время.



0



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

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

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

строка (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 ). Понятно, как?

logo

    • Предмет:

      Информатика

    • Автор:

      jadynruiz464

    • Создано:

      3 года назад

    Ответы

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

  • algebra
    Алгебра

    2 минуты назад

    Помогите пожалуйста срочно! Спасайте! ​

  • algebra
    Алгебра

    7 минут назад

    Срочно спасайте пожалуйста! ​

  • geometriya
    Геометрия

    7 минут назад

    Обчислити площу трикутника за рисунком. срочно, с решением

  • algebra
    Алгебра

    7 минут назад

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

  • geometriya
    Геометрия

    7 минут назад

    Обчислити площу трикутника за рисунком. срочно с решением ​

Информация

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

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

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

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

  • 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

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

Раскрутка 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 пользователей и 5 гостей читают эту тему:

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

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

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

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Rdp после ввода пароля ошибка
  • Read matrix matlab ошибка