Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
25 / 25 / 32
Регистрация: 08.01.2011
Сообщений: 185
1

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

06.04.2014, 20:08. Показов 1058. Ответов 6
Метки нет (Все метки)

Даны 2 ряда действительных чисел в текстовом документе
Чем должны отделяться друг от друга числа чтобы программа их смогла считать?
в документе прописал:
2.5
2.4
Вот так программа заработала нормально
а когда дописал:
2.5 1.9
2.4 1.5
Вылетает ошибка что входная строка имеет неверный формат
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2014, 20:08
Ответы с готовыми решениями:

Крестики-нолики: как написать код для того, чтобы программа могла объявить победителя?
И да, поле 5 на 5. Сам код: #include <iostream> #include <locale.h> #include <Windows.h> using...

В каком виде хранить данные в БД?
Допустим у меня есть БД одежды. У меня есть таблица одежды и таблица цвета. Одежда может быть...

В каком виде хранить данные?
Добрый вечер. Для приложения нужно хранить кое-какие данные, допустим : Страны и города. Идея была...

В каком виде хранить данные сайта?
Доброго времени суток! Почитал я и другие темы в "Найдены похожие темы:" но ответа на похожие...

6
9 / 9 / 16
Регистрация: 07.03.2014
Сообщений: 202
07.04.2014, 14:57 2
Вы скорее всего их считываете в переменную типа integer, а т.к. в переменную считывается вся строка, а не число, то в переменную типа integer нельзя записать "2.5 1.9" т.к. это уже строка, а не число. Решить эту проблему можно так, писать каждое число с новой строки или считывать числа в переменную типа string, но тогда на экран будет выводиться "2.5 1.9". Можно еще одним способ, но он громоздкий, пишем в файле числа в строчку, через запятую(2.5, 1.9,), после последнего числа обязательно должна быть запятая иначе оно не прочитается, сама программа будет такой:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var f:text;
s,m:string;
a:real;
b:integer;
begin
assign(f,'C:\ник\1.txt');
reset(f);//открываем файл для чтения
while not eof(f) do begin //пока не конец файла f
readln(f,s);//прочитать строку файла f в s
while (pos(',',s)<>0) do begin//пока в строке есть символ ','(если запятой в строке не будет, то pos(',',s) будет равно 0)
m:=copy(s,1,(pos(',',s)-1));//записать в переменную m отрезок строки s, начиная с элемента 1 и заканчивая элементом перед ','
delete(s,1,(pos(',',s)+1));//удаляет отрезок из строки, НО НЕ ИЗ ФАЙЛА, начиная с первого элемента и, заканчивая элементом ',' и плюс еще один, чтобы убрать пробел. Удаление нужно, потому что функция "pos" ищет позицию только первого встретившегося элемента
val(m,a,b);//преобразует нашу строку(число) в переменную a вещественного типа
writeln(a);//выводит на экран наше число
end;
end;
close(f);
end.
Но намного проще писать каждое число с новой строчки
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31466 / 20513 / 7988
Регистрация: 22.10.2011
Сообщений: 35,637
Записей в блоге: 7
07.04.2014, 15:12 3
Цитата Сообщение от qiwi Посмотреть сообщение
Вылетает ошибка что входная строка имеет неверный формат
Можно посмотреть на код, читающий данный файл, или мы должны догадываться, как именно он выглядит?

Цитата Сообщение от Nikakula Посмотреть сообщение
Решить эту проблему можно так, писать каждое число с новой строки или считывать числа в переменную типа string
А считывать read(f, var_real_1, var_real_2) не пробовал никогда? Не надо привязываться к строкам, еще раз: нужно видеть, как именно происходит чтение, только потом можно говорить, что лучше, а что хуже...
1
9 / 9 / 16
Регистрация: 07.03.2014
Сообщений: 202
07.04.2014, 19:22 4
Может вы, модераторы, будете, тогда, вообще сами везде отвечать, вы все время не довольны моими ответами, все я вам не так программы пишу, а в прошлой теме так вообще удалили мой ответ и ответили сами
1
25 / 25 / 32
Регистрация: 08.01.2011
Сообщений: 185
07.04.2014, 22:14  [ТС] 5
Код проще некуда
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program sfdf;
const m=3;
n=70;
var f:text;
    i,j:word;
    a,r:real;
    b:array[1..100,1..100] of real;
begin
assign(f,'1.txt');
reset(f);
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
   read(f,a);
    write(a:4:2,'  ');
  b[i,j]:=a;
    end;
 writeln;
 end;
значения m n менял

Добавлено через 22 минуты
Цитата Сообщение от UI Посмотреть сообщение
А считывать read(f, var_real_1, var_real_2) не пробовал никогда?
А как это реализовать, если количество считываемых чисел 50+
Цитата Сообщение от Nikakula Посмотреть сообщение
Но намного проще писать каждое число с новой строчки
скажем так, дан файл в котором 2-3 ряда по 50+ чисел и это нужно считать и вывести на экран
не совсем удобно
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31466 / 20513 / 7988
Регистрация: 22.10.2011
Сообщений: 35,637
Записей в блоге: 7
08.04.2014, 13:56 6
Лучший ответ Сообщение было отмечено qiwi как решение

Решение

Цитата Сообщение от qiwi Посмотреть сообщение
Вылетает ошибка что входная строка имеет неверный формат
Эта ошибка при приведенном выше коде и содержимом файла вылетает по одной-единственной причине: в файле просто не хватает данных.

Вообще чтение из файла двумерного массива проще реализовать так:
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
program sfdf;
 
const
  m = 3;
  n = 70;
 
var
  f: text;
  i, j: word;
  a, r: real;
  b: array[1..100, 1..100] of real;
 
begin
  assign(f, '1.txt');
  reset(f);
  
  i := 0; 
  while not seekeof(f) do
  begin
    inc(i); j := 0;
    while not seekeoln(f) do
    begin
      read(f, a);
      write(a:4:2, '  ');
      inc(j);
      b[i, j] := a;
    end;
    readln(f);
    writeln;
  end;
end.
, это заполнит только те элементы массива, на которые в файле хватило значений. И ошибки вылетать не будут.
1
25 / 25 / 32
Регистрация: 08.01.2011
Сообщений: 185
08.04.2014, 18:24  [ТС] 7
Сработало! огромное спасибо!!!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2014, 18:24

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

Где и в каком виде лучше всего хранить данные, загруженные из БД
Здравствуйте. При загрузке страницы, происходит обращение к бд, таким образом я получаю некоторую...

В каком каталоге хранить данные, чтобы при обновлении приложения они сохранились
или при обновлении ничто никуда не исчезает?

Программа тестирования: как продумать ее логику и где и в каком виде хранить файлы вопросов
есть такая дилемма: хочу написать приложение. в нем будет набор вопросов и варианты ответов на них....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru