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

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

23.08.2009, 02:45. Показов 8616. Ответов 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
25.08.2009, 18:38
Студворк — интернет-сервис помощи студентам
Кстати и следующий код делает тоже самое, только для чего-то в числовой формат переводит.
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
25.08.2009, 18:43
А что, в число не надо?

Добавлено через 1 минуту
Кстати про запятую забыл.
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')or(sf[i][j]=',')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
Босс
 Аватар для sheka
161 / 126 / 10
Регистрация: 03.06.2009
Сообщений: 750
25.08.2009, 18:44
Puporev, что не так??? все вроде правильно!

кстати, так как надо только переписать, то эти 2 строки
Pascal
1
2
3
4
val((copy(a,pos('=',a)+1,length(a)-pos('=',a))),b,c);
write(fout,b:0:5);
можна объеденить в одну:
write(fout,copy(a,pos('=',a)+1,length(a)-pos('=',a))));
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 18:44
А что, в число не надо?
Если просто переписать числа из файла в файл, то не надо. Но это неправильно. Нужно выбрать числа и присвоить их соответствующим переменным, произвести какие-то вычисления(автор не написала) и результат записать в файл.
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
25.08.2009, 18:46
Так с
Delphi
1
mass[i]
пусть действия производит. Какие конкретно я ж н знаю поєтому и не пишу. А запись в файл щас допишу.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 18:54
Вот вроде сейчас правильно.
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
35
36
37
38
39
40
41
uses crt;
var f,f1:text;
    name1,name2,s,s1:string;
    i,k:byte;
    a:array[1..8] of real;
    t,D,S,Lam,N,Mp,Msh,Mo,Mk:real;
    i,c:integer;
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);{читаем первую строку без числа}
for i:=1 to 8 do
 begin
  readln(f,s); {читаем следующие 8 строк}
  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);{копирум число}
  val(s1,a[i],c);{преобразуем в числовой формат, заносим в массив}
 end;
close(f);
D:=a[1]; S:=a[2]; Lam:=a[3]; N:=a[4]; {присваиваем значения переменным}
Mp:=a[5]; Msh:=a[6]; Mo:=a[7]; Mk:=a[8]];
{выполняем вычисления res:=.....}
write(f1,res);
close(f1);
write('Файл переписан!');
readln
end.
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
25.08.2009, 18:57
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
47
48
49
50
51
52
53
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] in ['0'..'9'])or(sf[i][j]=',')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);
 
write('Imya faila 2: ');
readln(fname);
assign(f,fname);
rewrite(f);
for i:=0 to num-1 do writeln(f,mass[i]);
CloseFile(f);
write('process comlete. Press Enter to contine...');
 
readln;
end.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 19:00
Galileopro, человек плохо помнит Паскаль, а уж с Делфи вряд ли вообще переведет, все таки кое что менять надо. Потом нет в Паскале динамических массивов, да и присваивание переменным Вы не написали.
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
25.08.2009, 19:02
Тем более размер файла неизвестен, поэтому сколько будет переменных никто не знает. Если там 200 строчек, то не объялять же 200 переменных)) Это не рационально.

Добавлено через 1 минуту
Цитата Сообщение от Puporev Посмотреть сообщение
Потом нет в Паскале динамических массивов,
А вот это проблема((
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 19:06
Если там 200 строчек, то не объялять же 200 переменных)) Это не рационально.
В примере 8 конкретных переменных с конкретными именами, вероятно параметры какой-то формулы. Если их в формуле 200, что вряд ли, то придется 200 присваивать или сразу брать значения из массива. У меня же сначала все в массив идет, затем присваивается. Но думаю их ровно 8.
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
25.08.2009, 19:14
Да я не против, что Ваш вариант лучше. Просто привел примерчик. Больно мне динамические массиві нравятся. Щас на Паскаль переведу)

Добавлено через 35 секунд
А насчет 8 переменных я понял спс)
0
Босс
 Аватар для sheka
161 / 126 / 10
Регистрация: 03.06.2009
Сообщений: 750
25.08.2009, 19:15
Зачем массивы и тому подобное? ведь можна так:
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
var fin,fout:text;
     b:real;
     a:string;
     c:integer;
 
procedure deistviya(b:real);
begin
(*...*)
end;
 
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);
{вот так ----------------->}      deistviya(b);      {<----------------- вот так}
    end;
  close(fout);
  close(fin);
end.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 19:25
Зачем массивы и тому подобное?
Да потому что нужно получить значения из файла и провести с ними вычисления, а в другой файл записать только результат вычислений. Читайте все сообщения подряд.
0
Босс
 Аватар для sheka
161 / 126 / 10
Регистрация: 03.06.2009
Сообщений: 750
25.08.2009, 19:28
Ну можна и так.
(*спорим то не о чем*)
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 19:30
Да не можно, а нужно. Вот что пишет автор.
В программе нужно считать эти числа в соответствующие переменные,потом сделать вычисления и записать в другой файл.
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
25.08.2009, 20:31
Вот вроде перевел
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{$R-}
  Type
  mass=array[1..1] of real;
  sf=array[1..1] of String;
  ptr=^mass;
  ptr2=^sf;
  var
  D_a:ptr;
  D_a2:ptr2;
  i,j,k:integer;
a1,a2,a3,a4,a5,a6,a7,a8:real;
  f:Text;
  fName:String;
  s:String;
 
  begin
  write('FileName: ');
  readln(fName);
  assign(f,FName);
 
  GetMem(D_a,8);
  GetMem(D_a2,8);
  reset(f);
  for i:=0 to 7 do
  readln(f,D_a2^[i]);
  Close(f);
  for i:=0 to 7 do begin
  s:='';
  for j:=0 to Length(D_a2^[i])-1 do
  if(D_a2^[i][j] in ['0'..'9']) or (D_a2^[i][j]=',')then
  s:=s+D_a2^[i][j];
  D_a2^[i]:=s;
  val(D_a2^[i],D_a^[i],k);
  end;
a1:=D_a^[0];a2:=D_a^[1];a3:=D_a^[2];a4:=D_a^[3];a5:=D_a^[4];a6:=D_a^[5];a7:=D_a^[6];a8:=D_a^[7];
{Производим действия с переменніми a1,a2...}
  writeln('Next FileName: ');
  readln(fName);
  assign(f,fName);
  rewrite(f);
  for i:=0 to num-1 do writeln(f,D_a^[i]);
  close(f);
  write('Process complete. Press Enter to contine...');
 
  FreeMem(D_a,8);
  FreeMem(D_a2,8);
  readln;
  end.
0
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 8
25.08.2009, 20:31  [ТС]
А зачем его копировать с паскаля?? Сохраните программу,откройте папку с экзешником и откройте название проги.pas файл в блокноте и будет Вам счастье

У меня вопрос к местным гуру))
Решила таки попробывать еще один пример ,который Вы мне подсказали...там есть строка
Pascal
1
2
uses
  SysUtils;
только вот,паскаль ругается,говорит что не хватает библиотеки... я так понимаю этот кусок предназначен для делфи... а не подскажетет как тогда можно заменить строку

Pascal
1
mass[i]:=StrToFloat(sf[i]);
чтобы она была именно паскалевкой?

или ,если я не права и эту библиотеку нужно просто скачать,небогли бы выложить,в гугле ничего толкового не нашла.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2009, 20:37
А зачем его копировать с паскаля?? Сохраните программу,откройте папку с экзешником и откройте название проги.pas файл в блокноте и будет Вам счастье
Не понял, к чему это?
2
uses
SysUtils;Это написано в консоли Дельфи, это Вам не пойдет.
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
25.08.2009, 20:38
Цитата Сообщение от manticorra Посмотреть сообщение
а не подскажетет как тогда можно заменить строку
Pascal
1
mass[i]:=StrToFloat(sf[i]);
чтобы она была именно паскалевкой?
как-то так:
Pascal
1
val(sf[i],mass[i],Code);
0
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
25.08.2009, 20:38
Pascal
1
2
var k:integer;
val(sf[i],mass[i],k);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.08.2009, 20: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?
В некоторых случаях, например в астрономических расчетах, чтобы не потерять точность арифметические операции можно делать с числами...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
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