Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 4
1

Неверный числовой формат при вводе

17.05.2017, 15:26. Показов 3264. Ответов 7

Author24 — интернет-сервис помощи студентам
ЭТО В УЧЕБНИКЕ
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 Examen;
Type results = record
  Fam: string|15|;
  Rus: 2. .5;
  Alg: 2. .5;
  Phiz: 2 . . 5
End;
Var list: array|1..30| of results; {Массив записей}
     i: Integer; FI, F2: text;
Begin
  Assign(Fl, 'E:\10_a.txt'); {Связывание FI с файлом 10_a.txt}
  Assign(F2, 'E:\Best.txt'); {Связывание F2 с файлом Best.txt}
  Reset(F1);{Открытие файла FI для чтения}
  Rewrite(F2);{Открытие файла F2 для записи}
  ReadLn(Fl); ReadLn(Fl); {Пропуск 2 строк в файле F1}
{Цикл ввода из файла F1}
  For i:=1 То 30 Do
  ReadLn(FI,list|i|.Fam, list|i|.Rus, list|i|.Alg, list|i|.Phiz);
{Цикл отбора отличников и вывода их фамилий}
  For i:=1 То 30 Do If (list|i|.rus=5) and (list|i|.alg=5)and (list|i|.phiz=5}
         Then
             Begin
               WriteLn(list|i|.fam}; {Вывод фамилии на экран}
               WriteLn(F2, list|i|.fam) {Запись фамилии в файл F2}
            End;
 Close(Fl); Close(F2){Закрытие файлов}
End.
МОЙ ШЕДЕВР(Помогите найти ошибку):
Миниатюры
Неверный числовой формат при вводе  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2017, 15:26
Ответы с готовыми решениями:

Неверный числовой формат при вводе
Нужна помощь

Неверный числовой формат
Книга: ОСНОВЫ Турбо-Паскаля. Фаронов В.В. 1992 год. Пример 11: (стр. 79). Программа вводит два...

Ошибки при работе с динамическим массивом: неверный числовой формат при вводе
Выдаёт ошибку "неверный числовой формат при вводе" и "попытка разыменовать нулевой указатель"

Ошибка — неверный числовой формат
uses crt; const n=3; type tel=record; nom:string; dolg:integer; imya:string; ...

7
442 / 371 / 132
Регистрация: 09.09.2011
Сообщений: 1,339
17.05.2017, 16:51 2
ну во первых у вас ABC pascal - на freepascal это программа даже не скомпилируется.

на сколько я понимаю у вас файл с исходными данными не верного формата. фамилии и оценки на разных строках.

на мой взгляд должно быть так:

1. стр | <шапка>
2. стр | <пустая строка>
3. стр | <фамилия> <оценки>
4. стр | <фамилия> <оценки>
...
32 стр | <фамилия> <оценки>
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.05.2017, 17:01 3
Цитата Сообщение от nulor Посмотреть сообщение
МОЙ ШЕДЕВР
А выложить свой шедевр не картинкой а текстом ума не хватило?
0
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 4
17.05.2017, 17:19  [ТС] 4
Таблица содержит данные с фамилиями и оценками 30 учеников класса. Обратите внимание на то, что фамилии записываются в отдельных строках. Необходимость этого связана с реализацией алгоритма (см. далее): при вводе символьной строки прочитывается полностью очередная строка текстового файла до признака EOLN. При этом фамилии должны содержать не более 15 символов

Добавлено через 4 минуты
Простите

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 ex1;
type results=record
 Fam: string[15];
 Rus: 2..5;
 Alg: 2..5;
 Phiz: 2..5
end;
var list: array[1..30] of results;
    i: integer; F1, F2: text;
begin
 assign(F1, '10_b.txt');
 assign(F2, 'Best.txt');
 reset(F1);
 rewrite(F2);
 readln(F1); readln(F1);
 for i:=1 to 30 do
  readln(F1, list[i].Fam, list[i].Rus, list[i].Alg, list[i].Phiz);
 for i:=1 to 30 do
  if (list[i].rus=5) and (list[i].alg=5) and (list[i].phiz=5)
  then
  begin
   writeln(list[i].fam);
   writeln(F2, list[i].fam)
  end;
 close(F1); close(F2)
end.
Добавлено через 8 минут
1. стр | <шапка>
2. стр | <пустая строка>
3. стр | <фамилия> <оценки>
4. стр | <фамилия> <оценки>
...
32 стр | <фамилия> <оценки>
И так тоже пытался, ошибка та же самая
0
442 / 371 / 132
Регистрация: 09.09.2011
Сообщений: 1,339
17.05.2017, 23:50 5
это какая то специфика ABC Pascal, лучше в том разделе спрашивать.

Добавлено через 6 часов 23 минуты
вот такой код:

Кликните здесь для просмотра всего текста
Delphi
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
program ex1;
 
{$mode objfpc}{$H+}
 
uses {$IFDEF UNIX} {$IFDEF UseCThreads}
  cthreads, {$ENDIF} {$ENDIF}
  Classes, sysutils { you can add units after this };
 
type
  results = record
    Fam: string[15];
    Rus: Integer;
    Alg: Integer;
    Phiz: Integer;
  end;
var
  list: array[1..30] of results;
  i: integer;
  F1, F2: Text;
begin
  Assign(F1, '10_b.txt');
  Assign(F2, 'Best.txt');
  reset(F1);
  rewrite(F2);
  readln(F1);
  readln(F1);
  for i := 1 to 30 do begin
    readln(F1, list[i].Fam);
    readln(F1, list[i].Rus, list[i].Alg, list[i].Phiz);
  end;
  for i := 1 to 30 do
    if (list[i].rus = 5) and (list[i].alg = 5) and (list[i].phiz = 5) then
    begin
      writeln(list[i].fam);
      writeln(F2, list[i].fam);
    end;
  Close(F1);
  Close(F2);
end.


для такого исходного файла:
Кликните здесь для просмотра всего текста
Фамилия Русский язык Алгебра Физика

Антонов
4 5 5
Андреева
5 3 4
Боброва
5 5 5
Антонов
4 5 5
Андреева
5 3 4
Боброва
5 5 5
Антонов
4 5 5
Андреева
5 3 4
Боброва
5 5 5
Антонов
4 5 5
Андреева
5 3 4
Боброва
5 5 5
Антонов
4 5 5
Андреева
5 3 4
Боброва
5 5 5
Антонов
4 5 5
Андреева
5 3 4
Боброва
5 5 5
Антонов
4 5 5
Андреева
5 3 4
Боброва
5 5 5
Антонов
4 5 5
Андреева
5 3 4
Боброва
5 5 5
Антонов
4 5 5
Андреева
5 3 4
Боброва
5 5 5
Антонов
4 5 5
Андреева
5 3 4
Боброва
5 5 5

выдает такой результирующий файл:
Кликните здесь для просмотра всего текста
Боброва
Боброва
Боброва
Боброва
Боброва
Боброва
Боброва
Боброва
Боброва
Боброва
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7792 / 4616 / 2829
Регистрация: 22.11.2013
Сообщений: 13,112
Записей в блоге: 1
18.05.2017, 09:37 6
nulor,
по предложенному файлу данных:
1а) убрать в стр.15 второй ReadLn(f1), иначе он вычитает строку с первой фамилией
1б) или в файле добавить строку до 1-й фамилии
2) в файле нет данных на 30 персон, или цикл до 3-х, или читать сколько есть, не более 30:
Pascal
16
17
18
19
20
21
  n:=0;
  while (n<=30) and not SeekEoF(f1) do begin
    Inc(n);
    with list[n] do ReadLn(f1, Fam, Rus, Alg, Phiz);
  end;
  for i:=1 to n do ...
0
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 4
18.05.2017, 14:08  [ТС] 7
Код
uses {$IFDEF UNIX} {$IFDEF UseCThreads}
  cthreads, {$ENDIF} {$ENDIF}
  Classes, sysutils
Модули не найдены
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7792 / 4616 / 2829
Регистрация: 22.11.2013
Сообщений: 13,112
Записей в блоге: 1
18.05.2017, 14:53 8
Цитата Сообщение от nulor Посмотреть сообщение
Модули не найдены
Просто уберите эти строки, следующий за ними код их не использует.
0
18.05.2017, 14:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2017, 14:53
Помогаю со студенческими работами здесь

При вводе s1 и s2 пишет неверный интервал
При вводе s1 и s2 пишет неверный интервал... почему? даже если числа в строго указанном...

Неверный формат DateTime при десериализации
Здравствуйте, Вот какая проблема возникает при десериализации. Есть такой вот кусок данных ...

Неверный формат при чтении из файла
суть программы в том чтобы разделить студентов по оценкам program studeblkmlk; type ...

Неверный формат даты при добавлении в бд
Добавляю записи в бд Порой во входной строке, в поле, где есть дата - попадается кривое значение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru