Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/43: Рейтинг темы: голосов - 43, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 8

Из файла извлечь числа в переменные типа real

23.08.2009, 02:45. Показов 8614. Ответов 48
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я на Паскале программировала еще в школе,а щас нужно решить одну задачку.
Итак,суть проблемы.
Имеется файл с расширением .dat,он имеет вид:

Это файл 1
d=4,2
b=7,00001

Как из него извлечь числа в переменные типа real? То есть в программе объявлены 2 переменные var1 и var2 туда и нужно записать числа из файла.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.08.2009, 02:45
Ответы с готовыми решениями:

Функция, подсчитывающая сумму отрицательных элементов типа Real из текстового файла
Здравствуйте, уважаемые программисты, помогите решить задачу: Условие - Описать функцию, подстчитывающую сумму отрицательных элементов...

Число типа real (6 байт). Сделать структуру данных которая показала бы значение каждого байта этого числа
Люди очень срочно, прошу помогите. Дано число типа Real (6 байт). Зделать структуру данных которая позволит узнать что записано в...

Попытка присвоить переменной типа integer выражение типа real
Здравствуйте! Моя задача: Найти сумму всех n-значных чисел, кратных k (1 ≤ п ≤ 4). Я составила программу, но выдает ошибку "Попытка...

48
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.08.2009, 09:22
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var f:file of real;
     d,b:real;
     fname:string;
begin
write('Imya faila: ');readln(fname);
assign(f,fname);
reset(f);
read(f,d);
read(f,b);
write('d+b=',d+b:0:5);
close(f);
readln
end.
0
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 8
23.08.2009, 12:28  [ТС]
Хм...Странный все -таки Паскаль...)
Я просто на си шарпе уже несколько лет.. Спасибо большое за ответ!)
0
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 8
25.08.2009, 17:15  [ТС]
пишет неверный тип файла...
я понять не могу просто... в файле и строки и числа... если принимать его за строку... то в принципе можно взять все символы после '=' и записать в отдельную строку,а потом привести строку к типу real
Может быть это делается проще?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 17:18
Покажите пару строчек из файла и объясните, что Вам нужно получить. Файл видимо текстовый, я писал для типизированного файла вещественных чисел.
0
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 8
25.08.2009, 17:37  [ТС]
Файл:

Pascal
1
2
3
Студент Петров Вася
d=0.12
f=0.12
и дальше еще перечисление переменных.
Программа должна работать с этими числами и делать вычисления.Нужно достать только само число,т е присвоить переменным в программе эти значения из файла.
У меня получилось считывать файл без ошибки,но чило которое оказывается в переменной неверное.. получается прога за число берет 'd=' и поэтому выдает ерунду
0
Босс
 Аватар для sheka
161 / 126 / 10
Регистрация: 03.06.2009
Сообщений: 750
25.08.2009, 17:40
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Чуть модернизировал пример Puporevа.
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
var f:text;
     d,b:real;
     fname:string;
     s:string;
     c:char;
     dop:integer;
begin
write('Imya faila: ');readln(fname);
assign(f,fname);
reset(f);  (*открыть файл*)
 
readln(f); (*пропустить первую строку*)
read(f,c,с); (*считать первые 2 ненеужные символа новой строки*)
s:=''; (*число в виде string;*)
while not eoln(f) do (*пока не конец строки*)
  begin
  read(f,c); (*считываем новый символ*)
  s:=s+c; (*и дописываем его к числу*)
  end;
val(s,b,dop); (*перевести рядок s в число b*)
 
readln(f);
read(f,c);read(f,c);
s:='';
while not eoln(f) do
  begin
  read(f,c);
  s:=s+c;
  end;
val(s,d,dop);
   
write('d+b=',d+b:0:5);
close(f);
readln
end.
Должно работать
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 17:42
Поскольку в файле разным образом сочетаются строковые и числовые переменные, нужно точное содержание файла. Затем читать построчно, строки не содержащие нужной информации пропускать, нужные строки парсить.
0
 Аватар для Monkey_2
36 / 36 / 9
Регистрация: 11.02.2009
Сообщений: 84
25.08.2009, 17:43
Delphi
1
2
3
4
5
6
7
8
9
 assign(f,a);
  reset(f);
  readln(f,a);
  val((copy(a,pos('=',a)+1,length(a))),x1,c);
  readln(f,a);
  val((copy(a,pos('=',a)+1,length(a))),x2,c);
  readln(f,a);
  val((copy(a,pos('=',a)+1,length(a))),pog,c);
  close(f);

я вроде както так делал
1
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 17:46
Мужики. Пожалуйста не торопитесь, пусть автор даст точное задание. Если кто не знает как писать, лучше не лезьте. Вот это что за чушь?
Pascal
1
2
3
assign(f,a);
  reset(f);
  readln(f,a);
0
 Аватар для Monkey_2
36 / 36 / 9
Регистрация: 11.02.2009
Сообщений: 84
25.08.2009, 17:47
паскаль это а нечюш

Delphi
1
2
3
var f:text;
    a:string;
    c:integer;x1,x2,pog:real
1
Босс
 Аватар для sheka
161 / 126 / 10
Регистрация: 03.06.2009
Сообщений: 750
25.08.2009, 17:52
Цитата Сообщение от Monkey_2 Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
9
assign(f,a);
 reset(f);
 readln(f,a);
 val((copy(a,pos('=',a)+1,length(a))),x1,c);
 readln(f,a);
 val((copy(a,pos('=',a)+1,length(a))),x2,c);
 readln(f,a);
 val((copy(a,pos('=',a)+1,length(a))),pog,c);
 close(f);
ну да, конечно
только маленькое замечание: кроме того, что сказал Puporev assign(f,fname);
val((copy(a,pos('=',a)+1,length(a)))-pos('=',a),pog,c);
1
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 8
25.08.2009, 17:52  [ТС]
дан файл
в файле содержится:

Delphi
1
2
3
4
5
6
7
8
9
Двигун КАМАЗ 740; авт.
D=   0.12
S=   0.12
Lam= 0.275
N=   2500
Mp=  3.35
Msh= 3.35
Mo=  0.31
Mk=  6.6
В программе нужно считать эти числа в соответствующие переменные,потом сделать вычисления и записать в другой файл. Проблема только в том что не могу вынуть числа. Нужно учитывать, что числа могут менятся.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 17:57
В другой файл как записать, только числа и все? И, в строку или в столбик?
1
 Аватар для Monkey_2
36 / 36 / 9
Регистрация: 11.02.2009
Сообщений: 84
25.08.2009, 17:57
вам че а ненравится? это изначально путь к файлу ,после того как его открыли, че добру проподать и для других вещей сгодится,этот кусок записывает данные из файла
x1=-5
x2=5
Погр=0.001

сам курсачь делал все робатало норм
1
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 8
25.08.2009, 18:01  [ТС]
Так же,в столбик.
Вся проблема в этих числах..
sheka Твой первый пример попробывала,не получается,щас второй пробую...

Получилось!!!!! Спасибо ребята))
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 18:07
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
uses crt;
var f,f1:text;
    name1,name2,s,s1:string;
    i,k:byte;
begin
clrscr;
write('Введите имя исходного файла: ');
readln(name1);
name1:=name1+'.txt';
assign(f,name1);
reset(f);
write('Введите имя нового файла: ');
readln(name2);
name2:=name2+'.txt';
assign(f1,name2);
rewrite(f1);
readln(f,s);
while not eof(f) do
 begin
  readln(f,s);
  for i:=1 to length(s) do
  if s[i] in ['0'..'9'] then
   begin
    k:=i;
    break;
   end;
  s1:=copy(s,k,length(s)-k+1);
  writeln(f1,s1);
 end;
close(f);
close(f1);
write('Файл переписан!');
readln
end.
0
Босс
 Аватар для sheka
161 / 126 / 10
Регистрация: 03.06.2009
Сообщений: 750
25.08.2009, 18:34
мой пример работает, просто неверное вы там где вводится имя файла не ввели его расширение
assign(f,fname+'.txt');
и только для примера про васю петрова или как там его.

Добавлено через 19 минут
вот пример Monkey_2, подогнаный под задание. Только,manticorra, поставте во входном файле перед всеми числами =.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var fin,fout:text;
     b:real;
     a:string;
     c:integer;
begin
  write('Imya faila in: ');readln(a);
  assign(fin,a+'.txt');
  write('Imya faila out: ');readln(a);
  assign(fout,a+'.txt');
  reset(fin);
  rewrite(fout);
  while not eof(fin) do
    begin
      readln(fin,a);
      val((copy(a,pos('=',a)+1,length(a)-pos('=',a))),b,c);
      write(fout,b:0:5);
    end;
  close(fout);
  close(fin);
end.
Monkey_2 +1! уж больно мне твой пример понравился
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 18:37
Да, я не то написал, понял считать как прочитать и записать.
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
25.08.2009, 18:38
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
40
41
42
43
44
45
46
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
var f:Textfile;
     mass:array of real;
     sf:array of String;
     fname:string;
     num,i,j:integer;
     s:String;
begin
write('Imya faila: ');
readln(fname);
assign(f,fname);
num:=0;
reset(f);
while(not EOF(f))do begin
readln(f);
inc(num);
end;
closeFile(f);
SetLength(mass,num);
SetLength(sf,num);
reset(f);
for i:=0 to num-1 do
readln(f,sf[i]);
closeFile(f);
 
 for i:=0 to num-1 do begin
 s:='';
  for j:=0 to Length(sf[i])-1 do
if(sf[i][j]='0')or(sf[i][j]='1')or(sf[i][j]='2')or(sf[i][j]='3')or(sf[i][j]='4')
or(sf[i][j]='5')or(sf[i][j]='6')or(sf[i][j]='7')or(sf[i][j]='8')or(sf[i][j]='9')then
 s:=s+sf[i][j];
 sf[i]:=s;
 mass[i]:=StrToFloat(sf[i]);
 end;
 
 for i:=0 to num-1 do
writeln(mass[i]:0:3);
 
readln;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.08.2009, 18:38
Помогаю со студенческими работами здесь

Попытка присвоить переменной типа integer выражение типа real
Здравствуйте форумчане. Написала программу для замены элементов массива после максимального элемента на 0. Нужно исправить код,...

Чтение файла с данными типа real. Тип real в билдере или как его "обойти"?
Читаю файл в структуру, double Fdat; struct STR { ... } rec

Даны четыре переменные A1, A2, A11, A22 типа real. Нужно сравнить их между собой
Даны четыре переменные A1, A2, A11, A22 типа real. Нужно сравнить их между собой и если есть совпадение то присвоить Ax это значение. Ио...

Embarcadero RAD Studio XE.Равные переменные типа real оказываются для Embarcadero не равными
Все переменные типа real.Вне зависимости от действительного равенства full становится false Например Код full:=true; ...

Как преобразовать числа типа Decimal к Real?
В некоторых случаях, например в астрономических расчетах, чтобы не потерять точность арифметические операции можно делать с числами...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru